В предыдущей статье мы рассказывали о базовой оценке производительности новых серверов в нашем облачном проекте на примере теста Гилёва для 1С и 7zip в физической «нативной» среде.
Теперь же, когда мы подготовили серверы для работы в нашем виртуализованном кластере, можем поделиться результатами тестов в сравнении с результатами аналогичных тестов при установке ОС на физический сервер без использования виртуализации. Таким образом, постараемся увидеть есть ли снижение производительности и насколько оно критично (если есть). Итак, давайте начинать!
Сначала опишем что с чем сравнивали в рамках нашего небольшого эксперимента.
Физический сервер использовался один и тот же — Dell PowerEdge R640 (2x Intel Xeon Gold 6242R, 12x64GB DDR4 3200MHz, 2x240GB SSD) в заводской сборке. ОС, в которой проводились тесты, была одинаковой на физическом сервере и на виртуальной машине далее — это CentOS 8 (4.18.0-240.1.1.el8_3.x86_64). Для тестов в виртуальной среде использовали VMware ESXi 6.7.0, build 15160138.
Что касается характеристик сравниваемых конфигураций, получаем следующее:
1. Физический сервер:
- 2 процессора по 20 физических / 40 виртуальных ядер (Hyper-Threading)
- 768 ГБ оперативной памяти (на самом деле объём критической роли не играет)
- Около 240ГБ полезного пространства на диске С
2. Виртуальная машина:
- 2 виртуальных процессора по 40 виртуальных ядер
- 64 ГБ оперативной памяти (достаточный объём для тестов)
- Около 200ГБ полезного пространства на диске С
Какими тестами будем проверять?
Ограничимся здесь следующим набором тестов:
- Sysbench
- 7zip
- Geekbench
Важный момент: все тесты проводились с включенным Turbo Boost и параметрами максимальной производительности в BIOS. Режим энергопотребления для ESXi — Balanced (по умолчанию).
Итак, какие же получились результаты:
1. «sysbench --test=cpu --num-threads=40 run»
На физическом сервере...
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 40
Initializing random number generator from current time
Prime numbers limit: 10000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 47238.17
General statistics:
total time: 10.0009s
total number of events: 472487
Latency (ms):
min: 0.68
avg: 0.85
max: 1.46
95th percentile: 0.99
sum: 399892.63
Threads fairness:
events (avg/stddev): 11812.1750/824.36
execution time (avg/stddev): 9.9973/0.00
На виртуальной машине...
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 40
Initializing random number generator from current time
Prime numbers limit: 10000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 46474.85
General statistics:
total time: 10.0009s
total number of events: 464850
Latency (ms):
min: 0.74
avg: 0.86
max: 53.87
95th percentile: 1.01
sum: 398802.05
Threads fairness:
events (avg/stddev): 11621.2500/1156.95
execution time (avg/stddev): 9.9701/0.02
Если коротко, результаты можно оформить в следующую таблицу:
Параметр | Сервер | ВМ | Разница |
---|---|---|---|
Events per second | 47238.17 | 46474.85 | -1.62% |
Latency (avg) | 0.85 ms | 0.86 ms | +1.2% |
Не такая уж большая разница… Посмотрим, что дальше.
2. 7zip
На физическом сервере...
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,80 CPUs Intel(R) Xeon(R) Gold 6242R CPU @ 3.10GHz (50657),ASM,AES-NI)
Intel(R) Xeon(R) Gold 6242R CPU @ 3.10GHz (50657)
CPU Freq: - - - - - - - - -
RAM size: 772271 MB, # CPU hardware threads: 80
RAM usage: 17650 MB, # Benchmark threads: 80
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 219383 7214 2959 213417 | 2433655 7750 2678 207532
23: 207598 7028 3010 211518 | 2418901 7873 2660 209301
24: 204763 7174 3069 220162 | 2364952 7826 2652 207568
25: 198526 7168 3162 226669 | 2384016 7909 2682 212138
---------------------------------- | ------------------------------
Avr: 7146 3050 217941 | 7839 2668 209135
Tot: 7493 2859 213538
На виртуальной машине...
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,80 CPUs Intel(R) Xeon(R) Gold 6242R CPU @ 3.10GHz (50657),ASM,AES-NI)
Intel(R) Xeon(R) Gold 6242R CPU @ 3.10GHz (50657)
CPU Freq: 3769 3775 3772 3772 3773 3771 3772 3772 3772
RAM size: 64134 MB, # CPU hardware threads: 80
RAM usage: 17650 MB, # Benchmark threads: 80
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 190208 6089 3039 185035 | 2001333 6449 2646 170665
23: 179252 5785 3157 182637 | 2077835 6995 2570 179789
24: 184889 6251 3181 198793 | 2069792 7037 2582 181662
25: 192625 6794 3237 219932 | 2157590 7441 2580 191990
---------------------------------- | ------------------------------
Avr: 6230 3154 196599 | 6981 2595 181027
Tot: 6605 2874 188813
Результаты кратко:
Параметр | Сервер | ВМ | Разница |
---|---|---|---|
Total CPU usage % | 7493 | 6605 | -11.8% |
Total R/U MIPS (normalized 100% CPU usage) | 2859 | 2874 | +0.5% |
Total MIPS | 213538 | 188813 | -11.6% |
Здесь результаты уже интереснее. Видим, что MIPS напрямую коррелирует с показателем Usage. Возможно, 7zip как-то учитывает частоту процессора, которую определяет гостевая ОС. Так как Turbo Boost — аппаратная технология, она не транслируется на уровень ОС виртуальных машин, а доступна лишь гипервизору. Однако, фактическая используемая частота каждого ядра ВМ может легко достигать значений частот в режиме Turbo Boost. Это видно в esxtop.
3. Последний у нас на очереди сегодня — Geekbench 5. Смотрим, что получилось.
→ Физический сервер
→ Виртуальная машина
Параметр | Сервер | ВМ | Разница |
---|---|---|---|
Single-Core Score | 1186 | 1052 | -11.3% |
Multi-Core Score | 31093 | 28872 | -7.1% |
Вот такие получились результаты. Какие-то конкретные выводы отсюда сделать сложно. Можно лишь заметить, что итоговая производительность конкретного приложения зависит от многих факторов и не всегда правильно настроенная виртуальная среда и гостевая ОС дадут просадку в производительности, как мы видим на примере результатов Sysbench.
Ну и, конечно же, не стоит забывать о преимуществах виртуализации в целом (более высокая плотность размещения сервисов, снижение капитальных и операционных затрат, оптимизация энергопотребления, скорость развёртывания и восстановления сервисов).
Надеюсь, статья была для вас интересной и полезной. Ну а мы пошли добавлять этот хост в наш кластер!