Sens wyjścia z sar w systemie AIX


11

Próbuję zrozumieć niektóre dane pobrane z SAR. Mam trzy główne pytania na ten temat. Na koniec chciałbym ustalić, ile procesorów było bezczynnych przy każdym interwale próbkowania w klastrze serwerów.

  1. Wiele procesorów nie pojawia się w każdym wpisie. Czy jest to oczekiwane i co to dokładnie oznacza? Czy to jest związane z # 2?
  2. Są nieużywane linie (CPU = U). Dokumentacja mówi „U wskazuje niewykorzystanej zdolności całego systemu”. Naprawdę nie mogę znaleźć dokładnej definicji „ogólnosystemowej nieużywanej pojemności” ani żadnej definicji. Nie jestem pewien, jak zinterpretować wiersz, który mówi coś takiego: „nieużywana pojemność była w 70% bezczynna”.
  3. Wreszcie nie jestem pewien, w jaki sposób obliczana jest linia -lub all. Sądzę, że jest to średnia wszystkich procesorów, ale kiedy wykonuję matematykę na wszystkich procesorach, otrzymuję zupełnie inną odpowiedź niż to, co jest na tej linii. Czy ktoś może mi dokładnie powiedzieć, co należy do tych obliczeń? Patrząc uważnie na to pokrewne pytanie dotyczące SAR , wydaje się, że system-wideprocent bezczynności jest sumą iloczynu procentu bezczynności każdego procesora i wartości „physc”. Niestety nie mam physc% lub entc% (zakładając, że istnieje), więc nie mogę tego zweryfikować na podstawie własnych danych. Jeśli to prawda, czy to oznacza, że ​​potrzebuję physcwartości, aby naprawdę zrozumieć procent bezczynności?

Oto kilka przykładów tego, co widzę. Wszystkie pochodzą z tego samego dnia.

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

Te dane są generowane przez uruchamiany skrypt: sar -P ALL 1 1Następnie uruchamia polecenie awk. Nie jestem dobry w awk, ale są to wyraźnie ważne części:

Filtr: /System|AIX|^$|%/ {next}

Analizować: {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)}

Wydaje się to poprawne w oparciu o to, co niewiele rozumiem o awk i co widzę na podstawie przykładów wyników.

Jeśli założę, że brakujące wartości są równe zero dla przypadku 2, średnia wynosi 21, co wydaje się nieco spójne z przypadkiem 1. Jednak jeśli przyjmę takie założenie dla przypadku 3, otrzymam 24%, co jest całkowicie sprzeczne z 85% wartość procentowa podana przez sar dla ogólnego bezczynności procesora.

Oto wykres przechwyceń z całego dnia (co 30 sekund):

wprowadź opis zdjęcia tutaj

Kiedy jest bardzo mało czasu bezczynności dla całego systemu, korelacja między średnim czasem bezczynności procesora a bezczynnością dla całego systemu jest prawie idealna. Jednak wraz ze wzrostem „ogólnosystemowego” czasu bezczynności korelacja staje się znacznie słabsza. Praca nad założeniem, że są to maszyny deterministyczne, mówi mi, że dane, które posiadam, nie dają pełnego obrazu. Ale ile mnie to obchodzi?

Nie do końca rozumiem, dlaczego niektóre procesory nie są zgłaszane w każdym punkcie, ale te, których brakuje, nie są równomiernie rozmieszczone, jak pokazano w powyższych przykładach. Również po przeczytaniu tego podręcznika uważam, że muszą to być logiczne procesory i że bez physcliczb myślę, że niewiele mogę zrobić z tymi wartościami. Próbowałem użyć tej Uwartości w różnych równaniach, ale nie znalazłem nic sensownego. Nie jest nawet dla mnie jasne, że ogólny procent bezczynności można przyjąć według wartości nominalnej.

UWAGA : Coś jest nie tak z przechwytywaniem tych danych z sar to całkowicie poprawna odpowiedź na nr 1, jeśli tak jest, zawsze powinna ona wrócić.


Jakie polecenie uruchamiasz, aby uzyskać ten wynik? Nie wygląda jak standardowe sar -P ALLwyjście.
Szwajcarski

@Swiss Pochodzi ze skryptu, którego nie napisałem. Wywołuje, sar -P ALL 1 1a następnie używa awk do wybicia numeru procesora, a następnie użytkownika, systemu, oczekiwania IO i procentu bezczynności. Dodam więcej informacji do twojej odpowiedzi.
JimmyJames,

@ Swiss Edytowałem przykład, aby lepiej odzwierciedlić wygląd skryptu.
JimmyJames,

czy możesz podać dane wyjściowe sar -P ALLbezpośrednio, a nie dane wyjściowe tego skryptu? To niestandardowy skrypt i nikt nie może ci powiedzieć, co robi, nie widząc go.
Szwajcarii,

@Siss niestety nie mogę. Widzę skrypt i jego wynik. Czy jest coś, czego brakuje w opisie tego, co mogę wyjaśnić?
JimmyJames

Odpowiedzi:


4

Podane dane wyjściowe wyglądają inaczej niż standardowe sar -P ALLlub sar -udane wyjściowe. Nie jestem pewien, czy ręcznie go sformatowałeś, czy używasz innego narzędzia, ale myślę, że jest wystarczająco dużo informacji, aby to rozgryźć.

Oto ważna informacja uzyskana ze strony podręcznika użytkownika dla sar

Uwaga: na maszynach SMP procesor, który nie ma żadnej aktywności (0,00 dla każdego pola) jest wyłączonym (offline) procesorem.

Ponieważ działasz w klastrze, wydaje się dość bezpieczne założenie, że używasz maszyn SMP.

Należy zauważyć, że w przykładach 2 i 3 tylko 12 z 24 rdzeni raportuje statystyki. Jeśli założysz, że rdzenie te są wyłączone, jak wspomniano na stronie podręcznika, statystyki mają sens.

Zaktualizujmy twoje dane w następujący sposób, aby wskazać wyłączony rdzeń za pomocą -

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  | -

Następnie możemy użyć następujących elementów do obliczenia średnich (jest to szybki oneliner, który napisałem, jestem pewien, że można by napisać coś lepszego).

$ 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

Zauważ, że liczba rdzeni w przykładach 2 i 3 wynosi 12, a średnie pasują do tego, co widać na przykładowym wyjściu.

Wygląda na to, że w pewnym momencie między pierwszym a drugim przypadkiem połowa rdzeni procesora została wyłączona.

Szybkie podsumowanie twoich pytań:

  1. Brak danych prawdopodobnie oznacza, że ​​rdzeń procesora jest wyłączony.
  2. UŚredniej linii jest inna niż Uw tym podręczniku. U, O których mowa w manualu powinno pokazać się w kolumnie Procesor ID.
  3. Podane przez Ciebie dane wyjściowe są inne niż standardowe sardane wyjściowe i nie ma wystarczającej ilości informacji, aby określić, do czego odnoszą się średnie Ulub allśrednie wiersze. Jednak pierwsza liczba wydaje się być bezczynnym% na aktywnych rdzeniach.

„Zauważ, że liczba rdzeni w przykładach 2 i 3 wynosi 12, a średnie pasują do tego, co widzisz w przykładowym wyniku”. Przepraszam, mogłem nie być jasne, obliczyłem średnią z liczb. To nie pochodzi od Sar. Wartości Ui allpochodzą z sar jako wierszy. Wyłamałem je w swojej odpowiedzi, ponieważ zasadniczo różnią się one od wartości procesora od tego, co rozumiem.
JimmyJames,

Jeśli rdzenie są wyłączone, to dlaczego czas bezczynności dla całego systemu jest o wiele krótszy w przypadku 2 niż w przypadku 3? Próbuję zrozumieć, w jaki sposób mogą mieć prawie taki sam średni czas bezczynności na tym samym 12 procesorach, a mimo to ogólnosystemowy czas bezczynności może być całkowicie rozbieżny.
JimmyJames,

Widzę, że gdy maszyny są pod stałym obciążeniem, widzę dane wyjściowe z każdego procesora. Sugeruje mi to, że masz rację, że są one wyłączone. Walczę tylko z tym, w jaki sposób bezczynność całego systemu odnosi się do bezczynności nie wyłączonego procesora.
JimmyJames,

Zaktualizowałem swoje pytanie kilkoma zmianami, aby wyjaśnić problem. Patrząc na przypadek 2, jeśli 12 procesorów jest wyłączone, a procent sys-bezczynności oparty jest na wszystkich 24,% bezczynności nie może spaść poniżej 50%. Biorąc pod uwagę, że mam 15%, oznacza to, że sys idle% musi ignorować wyłączone procesory, prawda?
JimmyJames
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.