A small UDP client/server module that simulates online game-like traffic and measures throughput, packet loss, jitter, and ping. It also includes optional CPU and Memory load threads to see how local resource contention affect network behavior.
Have gcc installed.
sudo apt install build-essential
If running UDP server/client on different machines but same LAN replace SERVER_IP in udp_client.c with the server's lan ip.
If running UDP server/client on localhost, seperate network noise can be artificially simulated using tc netem:
sudo tc qdisc add dev lo root netem delay 8ms 3ms loss 0.5% rate 50mbit
Restore after running tests:
sudo tc qdisc del dev lo root
make
To test CPU or memory microbenchmark.
./benchmark --cpu 100000000 # can put desired iterations value
./benchmark --mem 512 # can put desired memory size in MB
To run udp server and client (run server first on one terminal and then client on a different terminal).
./benchmark --udp_server
./benchmark --udp_client
# Server and client with background load
./benchmark --udp_server --with_cpu 100000000 --with_mem 512
./benchmark --udp_client --with_cpu 100000000 --with_mem 512