Осмысление вывода sar в AIX

11

Я пытаюсь понять некоторые данные, которые были извлечены из SAR. У меня есть три основных вопроса по этому поводу. В конечном счете, я хотел бы определить, сколько процессоров простаивают в каждом интервале выборки на кластере серверов.

  1. Многие из процессоров не отображаются в каждой записи. Это ожидается и что именно это означает? Это связано с № 2?
  2. Есть неиспользуемые линии (CPU = U). В документации сказано: «U указывает на неиспользуемую емкость всей системы». Я не могу найти точное определение «неиспользуемой емкости всей системы» или вообще никакого определения. Я не уверен, как интерпретировать строку, которая говорит что-то вроде «неиспользованная емкость была на 70% простаивала».
  3. Наконец, я не уверен, как рассчитывается строка -или all. Я думаю, что это среднее значение для всех процессоров, но когда я делаю математику для всех процессоров, я получаю совершенно иной ответ, чем то, что находится в этой строке. Может кто-нибудь сказать мне точно, что входит в этот расчет? Если внимательно присмотреться к этому связанному вопросу о SAR, то выясняется, что system-wideпроцент простоя представляет собой сумму произведений процента простоя каждого ЦП и значения «Physc». К сожалению, у меня нет значения physcor entc% (при условии, что оно есть), поэтому я не могу проверить это своими собственными данными. Если это правильно, значит ли это, что мне нужны physcзначения, чтобы по-настоящему понять процент простоя?

Вот несколько примеров того, что я вижу. Это все из одного дня.

CPU | Idle    CPU | Idle    CPU | Idle
----------    ----------    ----------
0   | 8       0   | 15      0   | 17
1   | 25      1   | 94      1   | 32
2   | 79      2   | 100     2   | 97
3   | 62      3   | 99      3   | 71
4   | 5       4   | 13      4   | 5
5   | 7       5   | 13      5   | 23
6   | 6       6   | 99      6   | 71
7   | 7       7   | 44      7   | 98
8   | 11      8   | 12      8   | 48
9   | 17      12  | 0       12  | 38
10  | 33      16  | 12      16  | 37
11  | 64      20  | 3       20  | 42
12  | 6        U  | 95       U  | 97
13  | 6        -  | 15       -  | 85
14  | 6       
15  | 6       
16  | 12      
17  | 15      
18  | 62      
19  | 69      
20  | 7       
21  | 7       
22  | 6       
23  | 7       
 U  | 80       
 -  | 15       

case 1: avg(24): 22
case 2: avg(12): 42
case 3: avg(12): 48

Эти данные создаются скриптом, который запускается: sar -P ALL 1 1затем запускается команда awk. Я плохо разбираюсь в awk, но это важные части:

Фильтр: /System|AIX|^$|%/ {next}

Разбираем: {k=0;if(NR==7) k=1} {sub("^-", "all", $1); cpu=$(1+k); user=$(2+k); sys=$(3+k); io=$(4+k); idle=$(5+k)}

Это кажется правильным, основываясь на том, что я мало понимаю о awk и что я вижу из примеров вывода.

Если я предполагаю, что все пропущенные значения равны нулю для случая 2, среднее значение равно 21, что кажется несколько соответствующим случаю 1. Однако, если я сделаю это предположение для случая 3, я получу 24%, что полностью расходится с 85% процентное значение, данное sar для общего простоя процессора.

Вот график снимков за полный день (каждые 30 секунд):

введите описание изображения здесь

Когда очень мало «общесистемного» времени простоя, корреляция между средним временем простоя процессора и «общесистемным» временем простоя почти идеальна. Но по мере того, как увеличивается время простоя системы, корреляция становится намного слабее. Работая в предположении, что это детерминированные машины, это говорит мне о том, что имеющиеся у меня данные не дают полной картины. Но насколько я забочусь?

Я не совсем понимаю, почему некоторые процессоры не сообщаются в каждой точке, но те, которые отсутствуют, распределяются неравномерно, как видно из приведенных выше примеров. Также, прочитав эту книгу , я понял , что это должны быть логические процессоры, и что без physcцифр я думаю, что я мало что могу сделать с этими значениями. Я пытался использовать Uзначение в различных уравнениях, но я не нашел ничего разумного. Мне даже не ясно, что общий процент простоя может быть принят за чистую монету.

ПРИМЕЧАНИЕ : что-то не так с получением этих данных от sar - полностью верный ответ для # 1, если это так, он всегда должен возвращаться.

JimmyJames
источник
Какую команду вы используете, чтобы получить этот вывод? Это не похоже на стандартный sar -P ALLвывод.
швейцарский
@ Swiss Это из сценария, который я не написал. Он вызывает, sar -P ALL 1 1а затем использует awk для определения номера процессора, а затем проценты пользователя, системы, IO-wait и idle. Я добавлю больше информации к вашему ответу.
JimmyJames
@ Swiss Я отредактировал пример, чтобы больше отражать то, как выглядит вывод скрипта.
JimmyJames
могли бы вы предоставить вывод sar -P ALLнапрямую, а не вывод этого скрипта? Это нестандартный сценарий, и никто не может сказать вам, что он делает, не видя его.
Швейцарский
@ К сожалению, я не могу. Я вижу сценарий и его вывод. Чего не хватает в описании того, что он делает, чтобы я мог уточнить?
JimmyJames

Ответы:

4

Предоставленный вами вывод выглядит иначе, чем стандартный sar -P ALLили sar -uвыходной. Я не уверен, что вы отформатировали его вручную или запускаете через другой инструмент, но я думаю, что там достаточно информации, чтобы понять это.

Вот важная информация, полученная из справочной страницы для sar

Примечание. На машинах SMP процессор, который вообще не выполняет никаких действий (0,00 для каждого поля), является отключенным (автономным) процессором.

Поскольку вы работаете в кластере, кажется вполне безопасным предположить, что вы используете SMP-машины.

Обратите внимание, что в примерах 2 и 3 только 12 из 24 ядер сообщают статистику. Если вы предполагаете, что эти ядра отключены, как упомянуто на странице руководства, тогда статистика имеет смысл.

Давайте обновим ваши данные следующим образом, чтобы указать отключенное ядро ​​с -

0   | 8       0   | 15      0   | 17
1   | 25      1   | 94      1   | 32
2   | 79      2   | 100     2   | 97
3   | 62      3   | 99      3   | 71
4   | 5       4   | 13      4   | 5
5   | 7       5   | 13      5   | 23
6   | 6       6   | 99      6   | 71
7   | 7       7   | 44      7   | 98
8   | 11      8   | 12      8   | 48
9   | 17      9   | -       9   | -
10  | 33      10  | -       10  | -
11  | 64      11  | -       11  | -
12  | 6       12  | 0       12  | 38
13  | 6       13  | -       13  | -
14  | 6       14  | -       14  | -
15  | 6       15  | -       15  | -
16  | 12      16  | 12      16  | 37
17  | 15      17  | -       17  | -
18  | 62      18  | -       18  | -
19  | 69      19  | -       19  | -
20  | 7       20  | 3       20  | 42
21  | 7       21  | -       21  | -
22  | 6       22  | -       22  | -
23  | 7       23  | -       23  | -

Затем мы можем использовать следующее, чтобы вычислить средние значения (я написал это краткое предложение, я уверен, что можно написать что-то лучшее).

$ awk '{idle = $3; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 22.208333  Cores: 24
$ awk '{idle = $6; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 42.000000  Cores: 12
$ awk '{idle = $9; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 48.250000  Cores: 12

Обратите внимание, что число ядер в примерах 2 и 3 равно 12, и средние значения соответствуют тому, что вы видите в выходных данных вашего примера.

Похоже, что в какой-то момент между вашим первым и вторым делом половина ядер вашего процессора была отключена.

Краткое резюме по вашим вопросам:

  1. Отсутствие данных, вероятно, означает, что ядро ​​процессора отключено.
  2. UВ средней линии, отличается от Uв том , что человек странице. UУпоминается в справочной странице должны отображаться в колонке процессор ID.
  3. Выход вы предоставили отличается от стандартного sarвыхода и нет достаточной информации для определения того, что Uили allна средней линии см. Первый номер, по-видимому, является незанятым% на активных ядрах.
швейцарцы
источник
«Обратите внимание, что количество ядер в примерах 2 и 3 равно 12, и средние значения соответствуют тому, что вы видите в выходных данных вашего примера». Извините, возможно, я не был ясен, я рассчитал среднее из чисел. Это не от Сар. UИ allзначения поступают из сар в виде линий. Я разбил их в своем ответе, так как они принципиально отличаются от значений процессора, насколько я понимаю.
JimmyJames
Если ядра отключены, почему время простоя в масштабе всей системы намного меньше в случае 2, чем в случае 3? Я изо всех сил пытаюсь понять, как они могут иметь почти одинаковое среднее время простоя на тех же 12 процессорах, и, тем не менее, время простоя в масштабе всей системы будет совершенно различным.
JimmyJames
Я вижу, что когда машины находятся под постоянной нагрузкой, я вижу результаты работы каждого процессора. Это подсказало бы мне, что вы правы, что они отключены. Я просто борюсь с тем, как общесистемный режим простоя относится к простоям не отключенного процессора.
JimmyJames
Я уточнил свой вопрос с несколькими изменениями, чтобы прояснить проблему. Итак, если посмотреть на случай 2, если 12 процессоров отключены, а процент системного простоя основан на всех 24, процент простоя не может опуститься ниже 50%. Итак, учитывая, что у меня 15%, это означает, что sys idle% должен игнорировать отключенные процессоры, верно?
JimmyJames