TX ring patch for tcpreplay
Often in network software tests there are troubles with stress-testing on rates higher than 100Mbit/s. One of most popular utility tcpreplay has bottleneck, that doesn't allow me to get rates higher than 500Mbit/s on 4Gb RAM, Core 2 Quad 2.7Ghz, Intel i82571 (e1000e) 1Gb NIC.
To fix this problem I've decided to implement TX ring buffer for sending data to the network card.
I've modified tcpreplay and get rate about ~900Mbit in result!. Also it reduced CPU usage on about ~25%. There is result patch for 3.4.3 version, but I hope its usable for other versions.
TX ring technology is true Jedi magic that mmap TX ring directly into the userspace. Thats allow to inplement zero-copy scheme for the data transmission process and totaly reduce system calls of send().
TX ring ioctl calls was included in Linux vanilla kernel at 2.6.31 version. Older kernels should be patched.
To fix this problem I've decided to implement TX ring buffer for sending data to the network card.
I've modified tcpreplay and get rate about ~900Mbit in result!. Also it reduced CPU usage on about ~25%. There is result patch for 3.4.3 version, but I hope its usable for other versions.
TX ring technology is true Jedi magic that mmap TX ring directly into the userspace. Thats allow to inplement zero-copy scheme for the data transmission process and totaly reduce system calls of send().
TX ring ioctl calls was included in Linux vanilla kernel at 2.6.31 version. Older kernels should be patched.
