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
Here are the numbers -
|Packet Size||Max Rate (Kpps)||Max Rate (Mbps)|
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
- Ostinato 0.9 - for MacOS
- macOS Sierra Version 10.12.6
- MacBook Pro
- Processor: Intel Core i7 @ 2.5GHz (4-core), Hyperthreading on
- RAM: 16GB
- Thunderbold to Gigabit Ethernet Adaptor
- 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)