Почему виртуальная машина тормозит: процессор, диск или перевыделение
У торможения три частые причины, и каждая видна в своём месте. Добавлять ядра до того, как найдена верная, обычно только ухудшает дело.
AtlasPVE ·
Эта статья отвечает на
- proxmox вм тормозит
- proxmox перевыделение vcpu
- какая вм грузит процессор
- что такое io delay в proxmox
- сколько ядер дать вм
Когда виртуальная машина начинает тормозить, первый порыв, это дать ей больше ядер. Обычно это не помогает, а иногда делает хуже. Сначала нужно отделить, откуда идёт торможение.
Перевыделение: когда сумма vCPU превышает ядра
Число vCPU, розданных машинам на сервере, может превышать число физических потоков. Это нормально и обычно безвредно, потому что машины не работают одновременно. Но если они нагружаются вместе, они выстраиваются в очередь. Изнутри в этот момент процессор выглядит свободным, тогда как машина ждёт своей очереди. Добавление ядер здесь удлиняет очередь, а не сокращает её.
Узкое место на одном ядре
Часть работы ложится на одно ядро и застревает там. На машине с восемью ядрами общая загрузка может выглядеть низкой, пока одно ядро стоит в потолке. Добавление ядер здесь ничего не меняет; ответ состоит в том, чтобы разделить работу или выбрать конфигурацию с более высокой производительностью одного ядра.
Ожидание диска
Если кривая процессора спокойна, а машина всё равно медленная, смотреть нужно на диск. Сервер отдельно измеряет время, проведённое в ожидании данных. Когда это значение растёт, проблема не в вычислениях, а в ожидании; тип диска, настройка кеша и другие машины на том же диске вступают в игру.
В каком порядке смотреть
Сначала сравните сумму vCPU с физическими потоками, затем посмотрите нагрузку по ядрам, и только потом время ожидания диска. Все три измерения находятся на стороне хоста; изнутри машины эти три состояния различить нельзя.
Источники
Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.