Ostinato for MacOS Maximum Transmit Rate
Update (2021): Ostinato now supports 10G, 25G and 40Gbps line-rate rate traffic using the Turbo Transmit add-on.
In my last post, I presented results for a maximum transmit rate performance test on the Ostinato 0.9 Live ISO. I intended to repeat that for all platforms, but life got in the way.
I got some time today, so I did a test on MacOS with the same Ostinato 0.9 version as the Live ISO.
I configured a single stream, again same as earlier -
- Protocols: Mac, Ethernet II, IPv4, UDP, Pattern
- Source and Destination Mac addresses populated with the actual Mac addresses of the source and sink
- Source and Destination IP addresses populated with the actual IP addresses of the source and sink
- Packets/sec: 0
- Number of packets: 10 (default)
- After this stream: Goto first
Performance figures
Here are the numbers -
Packet Size | Max Rate (Kpps) | Max Rate (Mbps) |
---|---|---|
64 | 755 | 507 |
128 | 695 | 823 |
256 | 448 | 989 |
512 | 233 | 992 |
1024 | 119 | 994 |
1518 | 81 | 997 |
Mbps rate was calculated using the below formula to take into account the ethernet line overhead of 20 bytes (1 byte SFD + 7 byte preamble + 12 byte inter-packet gap) -
Rate (in Mbps) = (PacketSize + 20) * kppsRate * 8 / 1000
Specs
Software
- Ostinato 0.9 - for MacOS
- macOS Sierra Version 10.12.6
Hardware
- MacBook Pro
- Processor: Intel Core i7 @ 2.5GHz (4-core), Hyperthreading on
- RAM: 16GB
- Thunderbold to Gigabit Ethernet Adaptor
Observations
- Max line rate (well - quite close to it) is reached for 256 byte packets and larger, same as the Live ISO
- For smaller packet sizes, the MacOS version performs better (64 - 507Mbps, 128 - 823Mbps) than the Linux ISO (64 - 403Mbps, 128 - 702Mbps)
- Although the underlying hardware and OS is different, I think the primary reason for the better performance is because of the OS - with Linux, only one core reaches 100% CPU during the test, but with MacOS (which is based on BSD) two processes show usage >= 100% - drone and kernel_task.
- Looking at per core CPU usage/history in activity monitor, 4 (out of 8 vCPUs) show usage between 50 to 60%
- I can’t seem to figure out how to see per thread CPU usage or the associated core for a thread to dissect futher - (if you know how to get this info, please share in the comments below)
Leave a Comment