home

Сравнение производительности файловых операций Linux CentOS8 на железе (baremetal), KVM, Hyper-V 2012

Раньше уже проверяли производительность PostgreSQL в зависимости от числа ядер и встал вопрос, насколько влияет использование разных средств виртуализации на производительность.

Тестовое окружение[править]

  • 2 процессора Xeon E5-2690v2 (в каждом 10 ядер, 20 потоков). В сумме 20 ядер и 40 HT-потоков частотой 3 ГГц и 3.6 ГГц TurboBust;
  • ОЗУ 128 ГБ;
  • Дисковая система: RAID 10 из 4 SSD Intel SSD DC S3500 по 800ГБ на контроллере Adaptec 6805 (контроллер имеет производительность где-то на уровне 30-40 тыс. IOPS. Но в процессе тестирования в основном бенчмарк генерировал нагрузку в 2000 IOPS, т.е. сильно меньше потолка контроллера;

На этом сервере последовательно устанавливались и тестировались:

  • Hyper-V в Windows Server 2012 (первое поколение ВМ) 2 ГБ vRAM;
  • CentOS8 baremetal;
  • KVM под управлением CentOS8 2 ГБ vRAM.

Методика тестирования[править]

Тест проводился с помощью sysbench на одиночном файле в 50ГБ с вариацией:

  • числа потоков (--num-threads), коэффициента чтения к записям от 0.1 до 10 для случайного ввода-вывода;
  • числа потоков (--threads) для последовательных чтения и записи.

Стоит отметить, что в некоторых случаях чтение фактически шло из ОЗУ, поэтому надо относится критично к показателям чтения.

Подготовка:

sysbench --file-total-size=50G --file-num=1 fileio prepare

Результаты[править]

Полные результаты здесь: https://elibsystem.ru/sites/default/files/user/ars/blog/performance/virtualization_sysbench/server_benchmark.ods

Последовательное чтение[править]

Видно, что baremetal читает из ОЗУ. Можно допустить, что VM тоже читают из ОЗУ (скорость в 2 ГБ/c являются характерными для такого чтения), просто память vRAM была выделена в 2ГБ и оказалась на одном канале.

sysbench-seqread.png

Последовательная запись[править]

sysbench-seqwr.png

Случайные операции в один поток[править]

sysbench-randrw-threads1.png

Случайные операции в 20 потоков[править]

sysbench-randrw-threads20.png

Случайные операции в 38 потоков[править]

sysbench-randrw-threads38.png

Обсуждение результатов[править]

Операции чтения идут из ОЗУ и неадекватно отражают производительность системы. ОЗУ на хосте 128 ГБ больше тестового размера файла в 50 ГБ.

По производительности Hyper-V и KVM часто близки, причем KVM быстрее на последовательных операциях и медленнее на случайных.

Производительность на железе (baremetal) часто заметно больше производительности в виртуальных средах, особенно при большом числе потоков. Скорость по всем основным операциям: IOPS, throuthput, latency.