Hi Geoff,
23/12/2024 17:37 keltezéssel, Geoff Steckel írta:
On 12/23/24 11:20 AM, Gábor LENCSE wrote:
Under Linux, one can use the isolcpus kernel command line
parameter to exclude certain cores from the scheduler.
I use the DPDK rte_eal_remote_launch() function to start a thread on
an isolated CPU core.
Is there anything similar under OpenBSD?
Is there any reason why multiple processes with shared memory segments
won't work as well?
In my experience there's little if any performance difference.
For example, FD.io VPP using DPDK can process about an order of
magnitude higher number of packets per second than the Linux kernel
using interrupts. You can check the details in this paper:
M. Kosák, and G. Lencse, "Performance Comparison of IP Packet Forwarding
Solutions", /2024 47th International Conference on Telecommunications
and Signal Processing (TSP)/, Virtual Conference, July 10-12, 2024, pp.
243-248. DOI: 10.1109/TSP63128.2024.10605773
Revised version in PDF
<http://www.hit.bme.hu/~lencse/publications/TSP-2024-Melinda.pdf>
For DPDK, it is essential to have an exclusively used CPU core to keep
up high CPU cache hit rate.
Unless the application is truly SIMD, the additional security
and ease of debugging pay off quickly.
In my experience, OpenBSD does a good job spreading compute
bound processes over all available CPUs.
Be that as it may, my experience with OpenBSD IP packet forwarding is
different. According to the Changelog of OpenBSD 7.2, "Activated
parallel IP forwarding, starting 4 softnet tasks but limiting the usage
to the number of CPUs." On the one hand, this was a highly relevant
improvement. However, on the other hand, it still imposes a significant
limitation on the utilization of modern CPUs having 16 or 32 cores.
BTW: is there a way to increase the number of the softnet tasks from 4
to a higher number (e.g., making it equal to the number of CPU cores)?
Best regards,
Gábor