Прежде всего хочу выразить благодарность компании Rikor и Олегу лично за предоставленные платформы для тестирования. По прежнему вы можете взять на тест Marvell Armada XP для себя и в дальнейшем, как тестер, оставить их у себя в пользовании за символическую плату. Как и обещал в прошлой статье Сервер на ARM? Made in Russia! — привожу тесты производительности серверов на процессорах ARM. Так как ARM это процессор сделанный по технологии System-On-Chip, то заострим наше внимание на производительности процессора.
На просторах всемирной паутины много тестов, но все они для нас, как фантастическое путешествие на Марс — как проводились, какой именно ревизии процессор (или просто другого производителя), какой софт использовался не ясно. А тут — сервера перед нами, остается только протестировать.
Тестовые стенды:
1) Core2 Quad:
ОС: CentOS release 5.7
Процессор: 4-х ядерный Intel® Core(TM)2 Quad CPU Q9450 @ 2.66GHz
ОЗУ: MemTotal 3939800kB
2) Atom D510:
ОС: Ubuntu 12.04.3
Процессор: 4-х ядерный Intel® Atom(TM) CPU D510 @ 1.66GHz
ОЗУ: MemTotal 4032060kB
3) Marvell Armada XP:
ОС: Ubuntu 12.04.3
Процессор: 4-х ядерный Marvell PJ4Bv7 Processor rev 2 (v7l)
ОЗУ: MemTotal 8019640 kB
Жесткие диски во всех трех стендах WD black. ОЗУ в Core 2 Quad и Atom D510 стоит максимальное количество.
sysbench — тест процессора
Тест запускался в 4 потока и в 10000 запросов к процессору.
total time: 2.5107s
total number of events: 10000
total time taken by event execution: 10.0303
per-request statistics:
min: 0.95ms
avg: 1.00ms
max: 487.26ms
approx. 95 percentile: 0.95ms
total time: 37.6966s
total number of events: 10000
total time taken by event execution: 150.7424
per-request statistics:
min: 9.18ms
avg: 15.07ms
max: 39.05ms
approx. 95 percentile: 15.09ms
total time: 67.4705s
total number of events: 10000
total time taken by event execution: 269.7890
per-request statistics:
min: 26.66ms
avg: 26.98ms
max: 57.05ms
approx. 95 percentile: 27.10ms
OLTP тестирование — производительность MySQL с sysbench
Сначала создаем innoDB таблицу на 10000 записей. Командой
sysbench —test=oltp —mysql-table-engine=innodb —oltp-table-size=10000 —mysql-user=root —mysql-password=root —db-driver=mysql —test=oltp prepare
Затем команда
sysbench --num-threads=8 --max-requests=500 --oltp-table-size=10000 --mysql-user=root --mysql-password=root --db-driver=mysql --test=oltp run
выполнит тест с 8 клиентами (максимальное количество запросов — 500) на таблице, которая была создана на предыдущем этапе.
Вывод тестов:
Number of threads: 8
Random number generator seed is 0 and will be ignored
Threads started!
OLTP test statistics:
queries performed:
read: 7028
write: 2008
other: 1004
total: 10040
transactions: 502 (93.89 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 9036 (1690.02 per sec.)
other operations: 1004 (187.78 per sec.)
General statistics:
total time: 5.3467s
total number of events: 502
total time taken by event execution: 42.2692s
response time:
min: 57.34ms
avg: 84.20ms
max: 129.67ms
approx. 95 percentile: 100.21ms
Threads fairness:
events (avg/stddev): 62.7500/0.66
execution time (avg/stddev): 5.2836/0.03
Number of threads: 8
Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
Using «BEGIN» for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 500
Threads started!
Done.
OLTP test statistics:
queries performed:
read: 7000
write: 2500
other: 1000
total: 10500
transactions: 500 (361.28 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 9500 (6864.24 per sec.)
other operations: 1000 (722.55 per sec.)
Test execution summary:
total time: 1.3840s
total number of events: 500
total time taken by event execution: 11.0083
per-request statistics:
min: 8.47ms
avg: 22.02ms
max: 55.15ms
approx. 95 percentile: 39.44ms
Threads fairness:
events (avg/stddev): 62.5000/1.87
execution time (avg/stddev): 1.3760/0.00
Для сравнения возьмем три показателя: transactions (транзакции), read/write requests (запросы чтения/записи), other operations (другие операции).
Значение deadlocks не берем, т.к. оно одинаково на обоих платформах и равно нулю.
Архивация информации с помощью 7zip
Архивировать будем 1ГБ случайно созданных данных.
du -sh /tmp/ramfs/file
1.0G /tmp/ramfs/file
time 7za a dummy -mmt=4 -txz -so /tmp/ramfs/file | dd of=/dev/null
p7zip Version 9.20 (locale=C,Utf16=off,HugeFiles=on,4 CPUs)
Scanning
Creating archive stdout
Everything is Ok
2093146+15 records in
2093159+1 records out
1071697500 bytes (1.1 GB) copied, 160.375 seconds, 6.7 MB/s
real 2m40.376s
user 8m11.635s
sys 0m5.290s
p7zip Version 9.20 (locale=C,Utf16=off,HugeFiles=on,4 CPUs)
Scanning
Creating archive stdout
Everything is Ok
2097252+15 records in
2097263+1 records out
1073798860 bytes (1.1 GB) copied, 557.429 s, 1.9 MB/s
real 9m17.434s
user 34m46.120s
sys 0m26.012s
p7zip Version 9.20 (locale=C,Utf16=off,HugeFiles=on,4 CPUs)
Scanning
Creating archive stdout
Everything is Ok
2097249+17 records in
2097263+1 records out
1073798860 bytes (1.1 GB) copied, 578.709 s, 1.9 MB/s
real 9m38.713s
user 32m26.630s
sys 0m21.290s
Тесты компрессии и декомпресси в 7zip
p7zip Version 9.20 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)
RAM size: 3847 MB, # CPU hardware threads: 4
RAM usage: 850 MB, # Benchmark threads: 4
Dict Compressing | Decompressing
Speed Usage R/U Rating | Speed Usage R/U Rating
KB/s % MIPS MIPS | KB/s % MIPS MIPS
22: 8950 339 2569 8706 | 117613 397 2675 10611
23: 7510 294 2604 7651 | 115900 398 2666 10606
24: 8044 326 2653 8649 | 113672 398 2651 10546
25: 7424 311 2728 8477 | 112064 399 2642 10538
— Avr: 317 2638 8371 398 2659 10575
Tot: 358 2648 9473
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)
RAM size: 3937 MB, # CPU hardware threads: 4
RAM usage: 850 MB, # Benchmark threads: 4
Dict Compressing | Decompressing
Speed Usage R/U Rating | Speed Usage R/U Rating
KB/s % MIPS MIPS | KB/s % MIPS MIPS
22: 1895 312 591 1843 | 34517 398 782 3114
23: 1871 317 602 1906 | 34142 399 783 3124
24: 1845 325 610 1984 | 33684 399 783 3125
25: 1794 331 618 2048 | 30397 354 806 2858
— Avr: 321 605 1945 388 788 3055
Tot: 354 697 2500
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)
RAM size: 7831 MB, # CPU hardware threads: 4
RAM usage: 850 MB, # Benchmark threads: 4
Dict Compressing | Decompressing
Speed Usage R/U Rating | Speed Usage R/U Rating
KB/s % MIPS MIPS | KB/s % MIPS MIPS
22: 1662 282 573 1616 | 45116 394 1034 4070
23: 1645 286 587 1676 | 44412 393 1033 4064
24: 1636 291 604 1759 | 43816 394 1032 4065
25: 1626 296 628 1856 | 43331 396 1029 4074
— Avr: 288 598 1727 394 1032 4068
Tot: 341 815 2898
Для графика возьмем среднее значение скорости компрессии и декомпрессии.
Тестирование производительности с Openssl speed
За счёт мультипроцессорности (4 одновременно запущенных процесса) бенчмарка вывод не читаемый, но суть заключается в расчётё различных типов шифрования. Здесь нам важно общее время выполнения задания и последняя часть вывода программы.
built on: Tue Feb 7 05:45:53 EST 2012
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,16,int) aes(partial) blowfish(ptr2)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -I/usr/kerberos/include -DL_ENDIAN -DTERMIO -Wall -DMD32_REG_T=int -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DOPENSSL_USE_NEW_FUNCTIONS -fno-strict-aliasing -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used:
real 7m21.644s
user 0m0.002s
sys 0m0.001s
built on: Tue Jun 4 07:26:06 UTC 2013
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_NO_TLS1_2_CLIENT -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
real 16m37.958s
user 0m0.016s
sys 0m0.000s
built on: Tue Jun 4 07:43:19 UTC 2013
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr)
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_NO_TLS1_2_CLIENT -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DGHASH_ASM
real 16m39.221s
user 0m0.010s
sys 0m0.010s
С помощью Phoronix Test Suite протестируем процессоры наших платформ
Installed: pts/polybench-c-1.0.2
PolyBench-C Test Configuration
Test:
1: 3 Matrix Multiplications
2: Correlation Computation
3: Covariance Computation
4: Test All Options
Enter Your Choice:
System Information
Hardware:
Processor: Intel Atom D510 @ 1.66GHz (4 Cores), Motherboard: Intel D510MO, Chipset: Intel N10 Family DMI, Memory: 2 x 2048 MB DDR2-800MHz, Disk: 320GB Hitachi HTS54323, Graphics: Intel N10 Family IGP, Audio: Realtek ALC662 rev1, Network: Realtek RTL8111/8168B
Software:
OS: Ubuntu 12.04, Kernel: 3.8.0-29-generic (x86_64), Display Driver: intel, Compiler: GCC 4.6, File-System: ext4, Screen Resolution: 1280x800
Would you like to save these test results (Y/n):
Estimated Run-Time: 10 Minutes
PolyBench-C 3.2:
pts/polybench-c-1.0.2 [Test: 3 Matrix Multiplications]
Test 1 of 3
Estimated Trial Run Count: 3
Estimated Test Run-Time: 4 Minutes
Estimated Time To Completion: 10 Minutes
Started Run 1 @ 15:58:43
Started Run 2 @ 16:06:02
Started Run 3 @ 16:13:16 [Std. Dev: 0.08%]
Test Results:
432.50632214546
431.82482385635
432.36951303482
Average: 432.23 Seconds
PolyBench-C 3.2:
pts/polybench-c-1.0.2 [Test: Correlation Computation]
Test 2 of 3
Estimated Trial Run Count: 3
Estimated Test Run-Time: 4 Minutes
Estimated Time To Completion: 7 Minutes
Started Run 1 @ 16:20:34
Started Run 2 @ 16:21:03
Started Run 3 @ 16:21:32 [Std. Dev: 0.80%]
Test Results:
27.11058306694
26.767813205719
26.717456102371
Average: 26.87 Seconds
PolyBench-C 3.2:
pts/polybench-c-1.0.2 [Test: Covariance Computation]
Test 3 of 3
Estimated Trial Run Count: 3
Estimated Time To Completion: 4 Minutes
Started Run 1 @ 16:22:05
Started Run 2 @ 16:22:36
Started Run 3 @ 16:23:05 [Std. Dev: 4.04%]
Started Run 4 @ 16:23:34 [Std. Dev: 3.70%]
Started Run 5 @ 16:24:05 [Std. Dev: 3.66%]
Started Run 6 @ 16:24:37 [Std. Dev: 4.24%]
Test Results:
29.076143026352
26.863905906677
27.619282960892
28.831228017807
29.238312959671
26.504108190536
Average: 28.02 Seconds
real 55m28.781s
user 25m44.476s
sys 0m1.728s
Installed: pts/polybench-c-1.0.2
PolyBench-C Test Configuration
Test:
1: 3 Matrix Multiplications
2: Correlation Computation
3: Covariance Computation
4: Test All Options
Enter Your Choice:
System Information
Hardware:
Processor: Marvell- PJ4Bv7 rev 2 (4 Cores), Motherboard: Marvell Armada XP GP Board, Memory: 8192MB, Disk: 640GB JMicron H/W RAID
Software:
OS: Ubuntu 12.04, Kernel: 3.2.40-1-armadaxp (armv7l), Compiler: GCC 4.6, File-System: ext4
Would you like to save these test results (Y/n):
Estimated Run-Time: 7 Minutes
PolyBench-C 3.2:
pts/polybench-c-1.0.2 [Test: 3 Matrix Multiplications]
Test 1 of 3
Estimated Trial Run Count: 3
Estimated Test Run-Time: 3 Minutes
Estimated Time To Completion: 7 Minutes
Started Run 1 @ 15:58:14
Started Run 2 @ 16:05:08
Started Run 3 @ 16:11:51 [Std. Dev: 1.06%]
Test Results:
409.0100030899
400.97810292244
407.59055900574
Average: 405.86 Seconds
PolyBench-C 3.2:
pts/polybench-c-1.0.2 [Test: Correlation Computation]
Test 2 of 3
Estimated Trial Run Count: 3
Estimated Test Run-Time: 3 Minutes
Estimated Time To Completion: 5 Minutes
Started Run 1 @ 16:18:44
Started Run 2 @ 16:19:26
Started Run 3 @ 16:20:08 [Std. Dev: 0.10%]
Test Results:
39.603915929794
39.637764930725
39.679361104965
Average: 39.64 Seconds
PolyBench-C 3.2:
pts/polybench-c-1.0.2 [Test: Covariance Computation]
Test 3 of 3
Estimated Trial Run Count: 3
Estimated Time To Completion: 3 Minutes
Started Run 1 @ 16:20:53
Started Run 2 @ 16:21:35
Started Run 3 @ 16:22:17 [Std. Dev: 0.03%]
Test Results:
39.610389947891
39.589015960693
39.614406108856
Average: 39.60 Seconds
real 53m46.279s
user 24m14.830s
sys 0m1.350s
Выводы из тестов каждый может сделать для себя сам. Наши выводы, что ARM на уровне Atom D510. При этом ARM потребляет значительно меньше энергии и имеет неплохой потенциал, так как адаптация под архитектуру только начинается да и все мы ждем с нетерпением Aarch64 (ARM64).
В следующей статье планируем привести результаты тестирования работы различных приложений на платформе ARM. В планах различные панели управления
Автор: biz