@@ -112,6 +112,41 @@ The `apps/` folder contains two simple examples: a [ping-pong](apps/pingpong) an
UDPDK runs in two separate processes: the primary is the one containing the application logic (i.e. where syscalls are called), while the secondary (*poller*) continuously polls the NIC to send and receive data. The packets are exchanged between the application and the poller through shared memory, using lockless ring queues.
## Performance
We compare UDPDK against standard UDP sockets in terms of throughput and latency.
**Environment**
Two identical servers are connected point-to-point on a 10G interface. Their specs are:
*CPU:* Intel Xeon E5-2640 @2.4GHz
*RAM:* 64GB
*OS:* Ubuntu 18.04
*Kernel:* 4.15.0
*NIC:* Intel X710 DA2 10GbE
*NIC driver:* VFIO (DPDK) or i40e (normal sockets)
**Throughput**
We measure the maximum throughput achieved varying the packet size.
The latter is inclusive of the UDP, IP and MAC headers.
As shown in the picture, UDPDK is up to **18x better** than traditional sockets.
It should be noted that UDPDK saturates the 10G connection, which unfortunately is all we had: a 40G inferface would make it definitely shine!