Системный Администратор (Сисадмин)
14.2K subscribers
1.85K photos
1.82K videos
92 files
1.96K links
Настройка серверов Windows, Linux, сетевое оборудование Cisco Systems, D-Link, HP, Huawei, Juniper, MikroTik. Книги и мануалы для сисадминов.
По всем вопросам @evgenycarter

РКН clck.ru/3KoGJ3
Download Telegram
🏎 Разгоняем 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

📲 Мы в MAX

👉 @sysadminof
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133