-
Notifications
You must be signed in to change notification settings - Fork 1
Optimizations
Ilya Baldin edited this page Jan 24, 2025
·
8 revisions
Linux kernel provides multiple send- and receive- side optimization options to improve the performance of streaming applications. E2SAR implements a number of these options that can be mixed and matched to the needs of a given application. Note that the availability of the optimizations depends on the version of the kernel and libraries available at the time E2SAR was built. Available optimizations can be listed using get_Optimizations() call, optimizations can be selected using select_Optimizations() call, selected optimizations can be queried using get_SelectedOptimizations() and is_SelectedOptimization() calls.
- sendmmsg - takes advantage of
sendmmsg()system call if available to send all buffers/packets of a single event with a single call, rather thansendmsg()used by default for every buffer. Available on Linux on any recent distribution. - liburing - if
liburingis installed and the Linux kernel is relatively recent (5.15.x and above), uses asynchronous calls to submit buffers/packets for sending. Maps buffer space and file descriptors into the kernel to cut down on overhead.
- liburing - if
liburingis installed and the Linux kernel is relatively recent (5.15.x and above), uses asynchronous calls to receive data. Maps buffer space and file descriptors into the kernel to cut down on overhead. - CPU core pinning - provides the ability to pin the receive process threads to a specific set of cores to take advantage of NUMA affinity between the NIC device and those cores.