Build terabit scale distributed systems without a PhD in DPDK
The traditional I/O frameworks can’t keep up with 400 GbE NICs or PCIe5 NVMe drives. The industry has solved this with various acceleration SDKs such as DPDK, RDMA, XLIO, io_uring, VFIO, etc. All great, all incompatible. Hardware support is fragmented. Development requires understanding many different complex, low-level frameworks. The cost of swapping out hardware vendors is high.
I’ve created an open source event-driven I/O framework named libevpl to solve this problem. Build your distributed system against libevpl once, then leverage any supported network or storage backend SDK without code modifications. libevpl provides a familiar sockets-like API that will be familiar to most developers without sacrificing the performance that the underlying acceleration SDKs provide. libevpl reduces the cost to adopt novel acceleration strategies. That benefits both developers and vendors.
Benchmark results from the lab:
- ~400 Gbps from a single core with RDMA
- Over 200 Gbps from a single core over a single TCP connection
- ~400 Gbps using four cores with one TCP socket each
- 2.2µs avg round trip latency for 64B RPCs at QD=1
- 70 million 64B RPC ops/sec on one server while maintaining <7 µs avg RTT
Currently supported backends:
- RDMA via libibverbs (Infiniband and RoCE)
- NVIDIA XLIO Ultra API for TCP sockets on NVIDIA NICs
- io_uring for block I/O and TCP via linux kernel (soon with zero-copy RX)
- VFIO-NVMe for ultra-low latency NVMe driven directly from user-space
- Traditional BSD sockets as a widely supported fallback option
Develop on your laptop and deploy to an HPC cluster.
Source on GitHub Find documentation at chimeraproject.io/libevpl