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


Reply via email to