Назад | Перейти на главную страницу

Поведение при загрузке ЦП в AIX

Мы столкнулись со странной (для нас) ситуацией с управлением загрузкой процессора. У нас есть lpar с 2-4 онлайн-ядрами. Во время пика нагрузки приложения загрузка ЦП составляет 100% (70% пользователь + 30% ядро), а физическое выделение - 2,5 ядра. Я ожидал увидеть большее физическое распределение при меньшем использовании. Это рационально? Должны ли мы определять какой-либо порог?

С Уважением,

Вы описываете нормальное поведение. Чтобы отдельный LPAR AIX получил еще несколько физических процессоров (сверх минимальных разрешений), ему необходимо выполнить реальный код. Было бы странно, если бы вы увидели повышенную нагрузку (в вашем случае намного больше 8).

Есть способы постоянно выделять процессоры для LPAR, но статически, а не динамически:

  • использовать выделенные процессоры или
  • увеличьте свой минимум (теперь вы используете общий с минимум 2, вы можете увеличить, например, до 2,5).

Нет настройки, гарантирующей, что на пике использование никогда не достигнет 100%, и по уважительной причине. У вас сложилось впечатление, что для назначения 2,5 существуют накладные расходы, и эти накладные расходы уменьшились бы, если бы LPAR получил 2,8 (и сохранял некоторое время), это всего лишь впечатление.

Фактически LPAR получает процессор (выше 2.0, который он всегда получает) в каждый квантовый период времени, и накладные расходы постоянны; накладные расходы такие же: увеличиваются до 2,5 для первого кванта, до 3,1 для второго кванта и обратно до 2,0 для третьего кванта. Поскольку мы находимся на втором такте, LPAR требуется больше, но LPAR не должен ничего явно запрашивать; если LPAR все еще выполняет код, это неявно понимается (гипервизором машины), что ему необходимо продолжать работу без прерывания (без переключения LPAR из процессора). Гипервизор наблюдает за процессорами и говорит: «Хммм, этот LPAR все еще выполняет код, давайте подождем и посмотрим, я дам ему столько, сколько смогу, и выкину его из процессора, только когда его время закончится». Он дошел до 3.1 либо потому, что гипервизор принудительно его отключил, либо он выполнил все, и каждый процесс вошел в sleep (). Если у машины достаточно свободной мощности, и LPAR пытается выполнить код, для которого требуется 4.0, ему разрешается запускать 4.0 мгновенно (без прерывания на 2.0 или где-либо еще), пока не достигнет 4.0, и только тогда происходит прерывание.

В этом примере сохранение значения 3.1 для многих квантов будет означать, что вы зря тратите драгоценную мощность машины; если в результате вы можете увидеть использование 90%, что означает, что теперь вы тратите 10% своих денег. Ничего более.

Процедура не похожа на то, что LPAR использует 2.0, затем запрашивает больше, использует 0,1, затем запрашивает больше, использует еще 0,1 и т.д. Это не работает. Он получает дополнительные 0,1 без запроса просто потому, что он все еще загружает процессоры своей рабочей нагрузкой; дополнительных накладных расходов нет.

100% использование - это нормально.

PS. Что за слово «ядро»? То, что обрабатывает машинный код, называется «процессором», и мир AIX правильно использует эту терминологию. Физическая вещь, которую вы подключаете к розетке, - это «модуль».