В предыдущей статье мы рассказывали о базовой оценке производительности новых серверов в нашем облачном проекте на примере теста Гилёва для 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ГБ полезного пространства на диске С

Какими тестами будем проверять?

Ограничимся здесь следующим набором тестов:

  1. Sysbench
  2. 7zip
  3. 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.

Ну и, конечно же, не стоит забывать о преимуществах виртуализации в целом (более высокая плотность размещения сервисов, снижение капитальных и операционных затрат, оптимизация энергопотребления, скорость развёртывания и восстановления сервисов).

Надеюсь, статья была для вас интересной и полезной. Ну а мы пошли добавлять этот хост в наш кластер!

Комментарии (5)