Здійснення сенсу виходу з sar на AIX


11

Я намагаюся зрозуміти деякі дані, отримані з SAR. У мене є три основні питання з цього приводу. Зрештою, я хотів би визначити, скільки процесорів простоювали на кожному інтервалі вибірки через кластер серверів.

  1. Багато процесорів відображаються не в кожному записі. Це очікується і що саме це означає? Це пов’язано з №2?
  2. Є невикористані рядки (CPU = U). У документації зазначається, що "U вказує на невикористану ємність для системи". Насправді я не можу знайти точне визначення поняття "Невикористана ємність для всієї системи" або взагалі будь-яке визначення. Я не впевнений, як інтерпретувати рядок, який говорить щось на кшталт "невикористана ємність була на 70% простою".
  3. Нарешті, я не впевнений у тому, як обчислюється -або allлінія. Я думаю, що це середнє значення для всіх процесорів, але коли я виконую математику для всіх процесорів, я отримую зовсім іншу відповідь, ніж те, що знаходиться на цій лінії. Хтось може сказати мені, що саме входить до цього розрахунку? При уважному розгляді цього пов'язаного питання щодо SAR виявляється, що system-wideвідсоток простою - це сума добутку відсотка непрацюючого процесора та значення "physc". На жаль, у мене немає physcабо 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, якщо це так, він завжди повинен повертатися.


Яку команду ви виконуєте, щоб отримати цей вихід? Це не схоже на стандартний sar -P ALLвихід.
Швейцарія

@Swiss Це виходить із сценарію, який я не писав. Він дзвонить, sar -P ALL 1 1а потім використовує awk, щоб вивести число процесора, а потім відсоток користувача, системи, IO-чакання та простою. Я додам більше інформації до вашої відповіді.
JimmyJames

@Swiss Я відредагував приклад, щоб більш відображати, як виглядає вихід сценарію.
JimmyJames

Ви можете надати sar -P ALLбезпосередньо вихід , а не вихід цього сценарію? Це нестандартний сценарій, і ніхто не може сказати вам, що він робить, не бачачи його.
Швейцарський

@Swiss, на жаль, не можу. Я бачу сценарій і його вихід. Чи є щось відсутнє в описі того, що він робить, що я можу уточнити?
JimmyJames

Відповіді:


4

Вихід, який ви надали, виглядає відмінним від стандартного sar -P ALLабо sar -uвихідного. Я не впевнений, чи ви відформатували його вручну, чи ви запускаєте його через інший інструмент, але я думаю, що є достатньо інформації, щоб це зрозуміти.

Ось важлива інформація, отримана зі сторінки man для sar

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

Оскільки ви працюєте в кластері, вам здається досить безпечним припустити, що ви використовуєте машини SMP.

Зауважте, що в прикладах 2 і 3 лише 12 з 24 ядер ведуть статистику. Якщо припустити, що ці сердечники вимкнено, як це було зазначено на сторінці man, то статистика має сенс.

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

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на вкладці сторінки мають відображатися під стовпцем ідентифікатора процесора.
  3. Вихід, який ви надали, відрізняється від стандартного sarвиводу, і недостатньо інформації, щоб визначити, на що Uабо allв середньому рядку посилаються. Здається, що перше число є активним% на активних ядрах.

"Зверніть увагу, що кількість ядер у прикладах 2 та 3 дорівнює 12, а середні показники відповідають тому, що ви бачите у своєму прикладі виводу." Вибачте, я, можливо, не зрозуміла, я обчислила середнє з чисел. Це не йде від сар. Значення Uі allзначення походять від sar як рядки. Я вирішив їх у своїй відповіді, оскільки вони принципово відрізняються від значень процесора, наскільки я розумію.
JimmyJames

Якщо сердечники відключені, чому у режимі очікування на загальний рівень системи настільки менше, ніж у випадку 3? Я намагаюся зрозуміти, як вони можуть мати приблизно однаковий середній час простою через один і той же 12 процесор, і все-таки час роботи в режимі очікування повністю розходиться.
JimmyJames

Я бачу, що коли машини знаходяться під постійним навантаженням, я бачу вихід кожного процесора. Це підказує мені, що ви правильні, що вони вимкнено. Я просто борюся з тим, як системний режим холостого ходу відноситься до холостого ходу невідключеного процесора.
JimmyJames

Я уточнив своє запитання з кількома змінами, щоб уточнити проблему. Таким чином, дивлячись на випадок 2, якщо 12 процесорів вимкнено, а відсоток безсистемного виходу базувався на всіх 24, режим холостого ходу не міг опуститися нижче 50%. Отже, враховуючи, що у мене 15%, це означає, що sys idle% повинен ігнорувати відключені процесори, правда?
JimmyJames
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.