🏎 Разгоняем KVM: Тюнинг производительности «Из коробки» KVM предлагает безопасные и совместимые настройки, но они - враг высокой производительности.
«Из коробки» KVM предлагает безопасные и совместимые настройки, но они - враг высокой производительности. Если ваша БД тормозит или сеть не выдает гигабит, скорее всего, проблема не в железе, а в том, как виртуалка с ним общается.
Вот «святая троица» настроек для High Performance.
1. VirtIO: Забудьте про эмуляцию
По умолчанию гипервизор может подсовывать машине эмулируемую сетевую карту (например, e1000) или IDE-диск. Это создает огромный оверхед: CPU тратит такты на то, чтобы притворяться старым железом.
Решение: Используйте паравиртуализированные драйверы VirtIO. Они позволяют гостевой ОС знать, что она виртуальная, и общаться с гипервизором напрямую.
▪️Диски: Используйте шину VirtIO (или VirtIO-SCSI).
▪️Сеть: Модель адаптера virtio.
Как проверить в XML (virsh edit):
<target dev='vda' bus='virtio'/>
<model type='virtio'/>
Важно: Для Windows-гостей понадобятся драйверы virtio-win.iso.
2. Дисковый кэш и I/O
Если вы используете LVM или raw-файлы, стандартный кэш Linux может создавать лишние копии данных в RAM.
Решение:
1. Cache mode: Ставим none. Это отключает кэширование на хосте (Direct I/O). VM сама управляет своим кэшем, что быстрее и безопаснее для баз данных.
2. IO mode: Ставим native. Использует нативный Linux AIO (Asynchronous I/O).
<driver name='qemu' type='raw' cache='none' io='native'/>
3. CPU Pinning (Привязка ядер)
Самый мощный буст для процессорозависимых задач.
По умолчанию планировщик Linux перекидывает потоки vCPU виртуалки между любыми физическими ядрами хоста. Это убивает L1/L2/L3 кэш процессора (Context Switching).
Решение: Жестко привязать виртуальные ядра к физическим.
Пример для 4-ядерной VM (привязываем к ядрам 2,3,4,5 физического хоста):
<cputune>
<vcpupin vcpu='0' cpuset='2'/>
<vcpupin vcpu='1' cpuset='3'/>
<vcpupin vcpu='2' cpuset='4'/>
<vcpupin vcpu='3' cpuset='5'/>
</cputune>
Pro Tip: Не используйте "ядро 0" хоста — оставьте его для самого гипервизора и системных прерываний.
🚀 Чек-лист для максимальной скорости:
1. Драйверы: Только VirtIO (net + blk).
2. Диски: Формат RAW (или LVM volume), кэш none.
3. CPU: Pinning + режим host-passthrough (чтобы VM видела все инструкции процессора, включая AES-NI и AVX).
4. Память: Если у вас сотни Гб RAM, включите Hugepages (страницы по 2Mb или 1Gb вместо 4Kb), чтобы разгрузить таблицу страниц памяти.
А вы заморачиваетесь с тюнингом или для ваших задач хватает дефолтных настроек?
#sysadmin #kvm #performance #tuning #linux #virtio
👉 @sysadminof