Анализ производительности виртуальной машины
vCPU
pCPU (physical CPU) - физический процессор
vCPU (virtual CPU) — это одно или несколько цельных ядер pCPU, часть мощности физического процессора, созданная программным обеспечением виртуализации для обеспечения работы виртуальной машины
Источник: https://wek.ru/upravlenie-perepodpiskoj-v-chastnom-oblake
Ядра — это самостоятельные вычислительные блоки в архитектуре процессоров
Ядро выполняет команду последовательно. Если нагрузить одно ядро несколькими последовательностями задач, оно будет переключаться между ними по завершению каждой.
Ресурсы ядра разделяются по потокам, что позволяет обрабатывать параллельно несколько последовательностей команд
Потоком обработки называют выделенную область внутри физического ядра процессора
На уровне операционной системы каждый поток воспринимается как отдельный вычислительный центр
Даже самые интенсивные задачи не используют 100% ЦП все время. По этой причине vCPU иногда рассматривают не как отдельный процессор, а как часть времени, проведенного в ядре процессора.
vCPU — это виртуальный процессор
От количества ядер виртуального процессора зависит количество потоков
Гипервизор может нарезать vCPU и отдавать его виртуальным машинам. Основная задача — правильно распределить время физических CPU между vCPU.
Оценить производительность vCPU можно на примере параметра CPU Usage, который показывает процент использования CPU за заданный период времени
Если ядра виртуальной машины стабильно нагружаются до 80% и выше, то такие показатели говорят о том, что она близка или находится на пике своей нагрузки
Как вариант, увеличить количество vCPU или же мигрировать ВМ на сервер с более производительными процессорами.
Ядра виртуальной машины не должны нагружаться до своего пика, всегда должен быть запас (в 40-50%)
Нет единой формулы для расчета vCPU, в данном рассчете используется эмпирический путь
Переподписка
Благодаря переподписке каждое ядро может быть разделено, это позволяет выделить виртуальной машине не целое ядро pCPU, а лишь его часть, точнее часть времени работы этого ядра
Переподписка — разделение ядра физического процессора на части, позволяющее выделить виртуальной машине меньшее количество pCPU
Гостевая операционная система, будет думать, что имеет полный доступ ко всем выделенным ресурсам, по факту гипервизор будет скрытным образом динамически изменять объем ресурсов, выделенных для гостевой операционной системы, в зависимости от их текущей загрузки
В режиме переподписки необходимо оценить использование физической памяти виртуальной машиной и назначить ей соответствующий объем памяти
При запуске гостевой ОС выделяется память виртуальной машине. В режиме переподписки часть физической памяти у виртуальной машины может быть вытеснена. Для этого используется фиктивный захват физической памяти гостевой ОС, реализуемый с помощью специального агента. Агент передает информацию о захваченных страницах гипервизору, который может затем перераспределить их в пользу другой виртуальной машины. Управление фиктивным захватом физической памяти критически важно для эффективной работы гостевой ОС и всей системы в целом.
Недостаточное количество фиктивно занятой памяти приводит к вытеснению других виртуальных машин, что снижает их производительность. Другими словами, если фиктивно захваченной памяти недостаточно, система начинает вытеснять другие виртуальные машины для освобождения дополнительной физической памяти
Чрезмерный фиктивный захват, в свою очередь, приводит к росту страничных промахов гостевой ОС.
Страничный промах — это ситуация, когда процессор пытается получить доступ к странице памяти, которая не находится в физической памяти на данный момент. Чем больше страниц физической памяти изымается, тем больше увеличивается нагрузка на остальные страницы системы. Следует проанализировать, сколько ресурсов требуется в среднем для работы текущих виртуальных машин, а также сколько ресурсов используется при повышенной нагрузке и сравнивать это с лимитом ресурсов, доступных по подписке.
В ситуации, когда активность на одной виртуальной машине не мешает работе другой виртуальной машины, скорость выполнения задач будет выше.
Благодаря соотношению 1:1 между vCPU и pCPU задержки и конкуренция за ресурсы снижаются
Выделение равного количества физических ядер для виртуальных ядер высвобождает ресурсы и исключает возможность их переподписки
При наличии большего количества vCPU на одном pCPU ресурсы могут быть ограничены и привести к конкуренции за вычислительную мощность. Это может снизить производительность отдельных приложений и вызвать небольшие задержки
При использовании соотношения 2:1 и более, понижается уровень доступности. Например, если у одного из серверов сбоит один pCPU, будет недоступно сразу несколько виртуальных машин, что вызовет проблему для приложений и пользователей
При повышенной загрузке машины уменьшается доступная вычислительная мощность, из-за чего на каждую виртуальную машину приходится меньше мощности
Источник: https://wek.ru/upravlenie-perepodpiskoj-v-chastnom-oblake
CPU Steal Time
CPU Steal Time - время в течении которого виртуальная машина должна была получить ресурсы от хостовой ОС
Причин возникновения steal:
Высокая загруженность хоста виртуализации, что может быть спровоцировано системными задачами хоста или же большим количеством других виртуальных машин, которые тоже его нагружают. В таком случае увеличение количества vCPU никак не поможет в решении этой проблемы, от этого ВМ никак не станет производительнее
Уровни производительности vCPU
При создании виртуальной машины необходимо выбирать уровень производительности vCPU
Уровень производительности определяет долю вычислительного времени физических ядер, которую гарантирует vCPU
Виртуальные машины с уровнем производительности меньше 100% имеют доступ к вычислительной мощности физических ядер как минимум на протяжении указанного процента от единицы времени.
При уровне производительности 20% ВМ будет иметь доступ к физическим ядрам как минимум 20% времени — 200 миллисекунд в течение каждой секунды. Тактовая частота процессора в это время не ограничивается и соответствует выбранной платформе
ВМ с уровнем производительности меньше 100% предназначены для приложений, не требующих высокой производительности и не чувствительных к задержкам
Источник: https://cloud.yandex.ru/ru/docs/compute/concepts/performance-levels
Источники
Связанные темы
Оптимизация запросов в Postgresql
Использование модуля pg_stat_statements в postgresql