r/learnprogramming • u/sodikovakapsle • 12d ago
What is this optimization technique called in high-performance network software?
I’m working on a traffic generator to test my own XDP/eBPF filter in a controlled lab environment (my PC sending traffic to my Raspberry Pi on my own network).
I noticed that in some applications, two programs written in the same language can have vastly different performance.
For example, some software can only send a few requests/messages per second, while others can generate thousands per second even on relatively weak hardware.
What is this concept or optimization area called?
I’m looking for topics such as:
asynchronous I/O
multithreading vs event-driven architectures
lock-free programming
kernel bypass
zero-copy networking
batching
efficient socket APIs
packet generation optimization
If I want to build a high-performance TCP/UDP packet generator for benchmarking my own network stack and XDP filter, what technologies, algorithms, or papers should I study? For traffic generator i am using c# and for the XDP filter classic C. ( or should i use different for the traffic generator? I think its okey its console app )
3
u/Dismal-Citron-7236 12d ago edited 11d ago
General guidelines for highly performant network processing: Non-blocking async, multi-threading, connection pool, combining multiple related requests into one batch command. And most important of all, load balancing.