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