Nea
never allocate
Starting Point
servers are memory hungry
most requests die young
The Idea
give each request handler an arena
bound arena size
bound # of arenas
The Idea
useful properties of this idea
isolation
reliability
efficiency
Limitations
no free lunch and all that
cannot stream
output
peak = average
memory consumption
cannot scale
IO
request handlers are io-heavy
database IO
network IO
Control
we must be in control of all allocation
custom global allocator
custom async executor/reactor
Current State
work in progress
async with http/2 using mio/hyper
a custom allocator using one mmap call
Future Work
before the end of the year
benchmark (hard)
write handlers in roc
Questions
Nea tightly bounds web server memory consumption
- efficient
- reliable
- isolates failure
- does not scale
- cannot stream
- peak = average memory
What is NTP?
What is NTP?
Why ntpd-rs?
Implementing NTP in a modern language
Social
Technical
Why ntpd-rs?
benefits of rust
tooling
crates.io
no segfaults
Why ntpd-rs?
project setup
pure core
effectful shell
Why ntpd-rs?
contributing back
pub struct hwtstamp_config {
pub flags: ::c_int,
pub tx_type: ::c_int,
pub rx_filter: ::c_int,
}
Libc
Tokio
Project History
April 2022
start ISRG project
November 2022
NTS
April 2023
security audit
alpha release
Project History
Summer 2023
macOS/freeBSD/musl support
Fall 2023
1.0 release
Future
NTPv5
Packaging
work in progress
try ntpd-rs today
early adopters welcome
Summary
A Protocol for synchronizing Time over the Network
essential for consistency and security
ntpd-rs is looking for early adopters
Folkert de Vries - Tweede Golf - Roc - github.com/folkertdev
Nea
By folkert de vries
Nea
- 29