Low level performance measurements on Arndale

To get a feeling for the suitability of Arndale as a server platform, I took some bandwidth and performance measurements.

Clock scaling

The Arndale employs clock scaling to save power when CPU utilization is low, and when the chip is overheating. These measurements show that the CPU scaling is also affecting the I/O speed, at least on the eMMC channel.

# echo 1700000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 
# hdparm -tT /dev/mmcblk0

/dev/mmcblk0:
 Timing cached reads:   2382 MB in  2.00 seconds = 1193.83 MB/sec
 Timing buffered disk reads: 132 MB in  3.01 seconds =  43.79 MB/sec

When the CPU is forced to run at maximum speed, the max sustained throughput is ~44 MB/s. However, when the CPU is allowed to scale down, the throughput drops to ~29 MB/s.

# echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 
# hdparm -tT /dev/mmcblk0

/dev/mmcblk0:
 Timing cached reads:   1914 MB in  2.00 seconds = 958.98 MB/sec
 Timing buffered disk reads:  86 MB in  3.02 seconds =  28.50 MB/sec

It appears the scaling framework does not recognize I/O load as trigger to scale up performance. Whether other peripherals (SATA,USB) are affected in a similar way still needs to be investigated.

Iperf

TCP performance using a Belkin F5D5055 USB Gigabit Ethernet Adapter (ASIX AX88178)

Base line #1: Unidirectional, Belkin connected to OSX host

ard@ards-mac-mini:~$ iperf -c 192.168.0.12 -t 60
------------------------------------------------------------
Client connecting to 192.168.0.12, TCP port 5001
TCP window size: 84.0 KByte
------------------------------------------------------------
[  4] local 192.168.0.4 port 39242 connected with 192.168.0.12 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-60.0 sec  2.25 GBytes   322 Mbits/sec

Base line #2: Full duplex, Belkin connected to OSX host

ard@ards-mac-mini:~$ iperf -c 192.168.0.12 -t 60 -d -w 42K
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 84.0 KByte
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 192.168.0.12, TCP port 5001
TCP window size: 84.0 KByte
------------------------------------------------------------
[  6] local 192.168.0.4 port 39240 connected with 192.168.0.12 port 5001
[  5] local 192.168.0.4 port 5001 connected with 192.168.0.12 port 57369
[ ID] Interval       Transfer     Bandwidth
[  6]  0.0-60.0 sec  1.69 GBytes   242 Mbits/sec
[  5]  0.0-60.0 sec   567 MBytes  79.3 Mbits/sec

Arndale: Unidirectional

ard@ards-mac-mini:~$ iperf -c arndale.local -t 60
------------------------------------------------------------
Client connecting to arndale.local, TCP port 5001
TCP window size: 84.0 KByte
------------------------------------------------------------
[  4] local 192.168.0.4 port 39261 connected with 192.168.0.12 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-60.0 sec  1.38 GBytes   198 Mbits/sec

Arndale: Full duplex

ard@ards-mac-mini:~$ iperf -c arndale.local -t 60 -d
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to arndale.local, TCP port 5001
TCP window size: 82.3 KByte (default)
------------------------------------------------------------
[  6] local 192.168.0.4 port 39230 connected with 192.168.0.12 port 5001
[  5] local 192.168.0.4 port 5001 connected with 192.168.0.12 port 49321
[ ID] Interval       Transfer     Bandwidth
[  6]  0.0-60.1 sec   834 MBytes   117 Mbits/sec
[  5]  0.0-60.1 sec   631 MBytes  88.1 Mbits/sec

Arndale: Full duplex with CPU cap @ 800 MHz

ard@ards-mac-mini:~$ iperf -c arndale.local -t 60 -d
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to arndale.local, TCP port 5001
TCP window size: 86.8 KByte (default)
------------------------------------------------------------
[  6] local 192.168.0.4 port 39225 connected with 192.168.0.12 port 5001
[  5] local 192.168.0.4 port 5001 connected with 192.168.0.12 port 49319
[ ID] Interval       Transfer     Bandwidth
[  6]  0.0-60.0 sec   787 MBytes   110 Mbits/sec
[  5]  0.0-60.1 sec   351 MBytes  49.0 Mbits/sec

So the overall throughput is significantly lower than what the interface can sustain, this is likely due to CPU contention.

ArndaleLowLevelPerformanceMeasurements (last modified 2013-02-14 11:45:01)