Я обнаружил кое-что, что меня удивило. На аппаратном узле OpenVZ большая нагрузка, скажем, 210 (у него доступно много ядер ЦП, но 210 по-прежнему высока, как для этого сервера). Но аппаратный узел работает нормально. Согласно top
75% ЦП находится в режиме ожидания, производительность в порядке. Но затем я понял, что один из многих контейнеров на этом HW-узле имеет нагрузку ~ 200, и когда я нахожусь в этом контейнере (vzctl enter container_id
) есть огромное отставание всего, что я делаю.
Итак, контейнер использует все назначенные ему ресурсы, и поэтому внутри него есть задержка при выполнении любой команды и т. Д. Но аппаратный узел в порядке, производительность в порядке, есть свободная память, мощность процессора и использование диска низкое , в соответствии с top
, iostat
и подобные инструменты, и я даже чувствую, что HW-узел не перегружен, все работает гладко. Но нагрузка ~ 210.
Кто-то сказал мне, что это потому, что аппаратный узел OpenVZ суммирует нагрузки из всех контейнеров вместо того, чтобы сообщать о собственной нагрузке. Это правда? Если да, то почему? Это сильно вводит в заблуждение. Если нет, то почему HW-узел имеет такую высокую нагрузку, но фактически не перегружен?
OpenVZ работает так, как задумано, и сконфигурирован таким образом, чтобы содержать контейнер с высокими требованиями в своих пределах, не затрагивая других в том же поле.
Средняя нагрузка неудивительна, поскольку хост видит все процессы из всех контейнеров и соответственно рассчитывает LA. Должно быть около 200 «задушенных» процессов, выполнение которых занимает больше времени из-за ограничений ЦП.