Поведение использования процессора AIX
Мы сталкиваемся со странной (для нас) ситуацией, связанной с управлением использованием процессора. У нас есть lpar с 2 до 4 онлайн ядрами. В то время как рабочая нагрузка приложения достигает пика, загрузка ЦП составляет 100% (70% пользователей + 30% ядра) и физическое распределение 2,5 ядра. Я ожидаю увидеть большее физическое распределение с меньшим использованием. Это рационально? Должны ли мы определить какой-либо порог?
С Уважением,
1 ответ
То, что вы описываете, это нормальное поведение. Чтобы отдельный 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 правильно использует эту терминологию. Физическая вещь, которую вы вставляете в розетку - это "модуль".