Some days after unboxing one of our NetApp AFF A700s, I’ve done some performance benchmark:
To utilize this controller, I needed:
- 16x VMware VM and 16 different hypervisors, each VM:
- 2 Cores, 4 GB RAM
- Windows 7
- 10 GbE Connection
- IOmeter with 50 works, each 4k Blocksize, 100% Read, 100% Sequential
Without limitation, one A700s controller made about 382.000 IOPS. This means 764.000 IOPS for a 4U HA-System. Not bad! 😉
Workload ID IOPS Throughput Latency --------------- ------ -------- ---------------- ---------- vol_test_data.. 5500 382008 184.50MB/s 198.00us vol_test_data.. 5500 382400 184.70MB/s 196.00us vol_test_data.. 5500 381691 184.24MB/s 198.00us vol_test_data.. 5500 381314 184.08MB/s 197.00us vol_test_data.. 5500 382587 184.84MB/s 201.00us vol_test_data.. 5500 385484 185.99MB/s 198.00us vol_test_data.. 5500 380424 183.67MB/s 197.00us vol_test_data.. 5500 381304 184.05MB/s 194.00us
I couldn’t test the throughput, because the A700s has 4x 10 GbE uplink to the switches and the switches for the hole 10-Node Cluster have only 4x 10 GbE, too.
After testing unlimited, I wanted to test the new Adaptive QoS feature:
1 TB Volume, Adaptive QoS Performance (1000/TB, Peak 5000/TB):
Workload ID IOPS Throughput Latency --------------- ------ -------- ---------------- ---------- vol_test_data.. 5500 5007 2.59MB/s 76.73ms vol_test_data.. 5500 5012 3.01MB/s 68.74ms vol_test_data.. 5500 5014 2.72MB/s 73.09ms vol_test_data.. 5500 5009 2.90MB/s 72.57ms vol_test_data.. 5500 5012 2.90MB/s 73.69ms
5 TB Volume, Adaptive QoS Performance (1000/TB, Peak 5000/TB):
Workload ID IOPS Throughput Latency --------------- ------ -------- ---------------- ---------- vol_test_data.. 5500 25051 12.52MB/s 14.09ms vol_test_data.. 5500 25034 12.49MB/s 14.14ms vol_test_data.. 5500 25024 12.53MB/s 14.09ms vol_test_data.. 5500 25004 12.69MB/s 14.08ms vol_test_data.. 5500 25074 12.49MB/s 14.14ms
10 TB Volume, Adaptive QoS Performance (1000/TB, Peak 5000/TB):
Workload ID IOPS Throughput Latency --------------- ------ -------- ---------------- ---------- vol_test_data.. 5500 49856 24.62MB/s 6.88ms vol_test_data.. 5500 50011 24.72MB/s 6.86ms vol_test_data.. 5500 50012 24.76MB/s 6.88ms vol_test_data.. 5500 49908 24.68MB/s 6.88ms vol_test_data.. 5500 49883 24.74MB/s 6.88ms
1 TB Volume, Adaptive QoS Ultra (5000/TB, Peak 25000/TB):
Workload ID IOPS Throughput Latency --------------- ------ -------- ---------------- ---------- vol_test_data.. 5500 24981 12.45MB/s 14.32ms vol_test_data.. 5500 25011 12.50MB/s 14.18ms vol_test_data.. 5500 25002 12.52MB/s 14.42ms vol_test_data.. 5500 25014 12.54MB/s 14.32ms vol_test_data.. 5500 24982 12.47MB/s 14.38ms
5 TB Volume, Adaptive QoS Ultra (5000/TB, Peak 25000/TB):
Workload ID IOPS Throughput Latency --------------- ------ -------- ---------------- ---------- vol_test_data.. 5500 125151 61.41MB/s 2.41ms vol_test_data.. 5500 125123 61.35MB/s 2.37ms vol_test_data.. 5500 125300 61.37MB/s 2.38ms vol_test_data.. 5500 124780 61.24MB/s 2.42ms vol_test_data.. 5500 124913 61.18MB/s 2.40ms vol_test_data.. 5500 124956 61.28MB/s 2.38ms vol_test_data.. 5500 124963 61.24MB/s 2.38ms
10 TB Volume, Adaptive QoS Ultra (5000/TB, Peak 25000/TB):
Workload ID IOPS Throughput Latency --------------- ------ -------- ---------------- ---------- vol_test_data.. 5500 249716 121.83MB/s 1004.00us vol_test_data.. 5500 249808 121.89MB/s 996.00us vol_test_data.. 5500 249664 121.80MB/s 1021.00us vol_test_data.. 5500 249774 121.83MB/s 1027.00us vol_test_data.. 5500 249672 121.84MB/s 1012.00us vol_test_data.. 5500 249682 121.76MB/s 997.00us vol_test_data.. 5500 249806 121.80MB/s 1001.00us
Conclusion:
Adaptive QoS works like a charm, much better than the “normal” QoS.
For benchmarking I’ve used “allocated-space” as Peak IOPS Allocation, otherwise I had to create up to 10 TB of useless data in the volume(s). For later real usage, we better will use “used-space”, means the customer gets only the performance for the data he really uses and not performance for the size of the volume.
You maybe also want to define a Absolute Minimum IOPS, otherwise the customer gets minimal IOPS until he has consumed more data. For example, with the 1000IOPS/TB policy, he will only get 1 IOPS while consuming 1 GB of data. 50 oder 100 should be a good value for Minimum IOPS in my opinion.
Hi. What version of ONTAP did you run?
9.3P4 – the newest 9.3 these days 🙂