web-dev-qa-db-ja.com

AIX上のsarからの出力を理解する

SARから取得したいくつかのデータを理解しようとしています。これについて3つの主な質問があります。最終的には、サーバーのクラスター全体の各サンプリング間隔でアイドル状態だったCPUの数を確認したいと思います。

  1. CPUの多くは、すべてのエントリに表示されているわけではありません。これは予想されることであり、それは正確にはどういう意味ですか? #2と関係がありますか?
  2. 未使用の行があります(CPU = U)。 documentation は、「Uはシステム全体の未使用容量を示す」と述べています。 「システム全体の未使用容量」の正確な定義や、実際にはまったく定義が見つかりません。 「未使用の容量が70%アイドル状態でした」などの行を解釈する方法がわかりません。
  3. 最後に、_-_またはall行の計算方法がわかりません。それはすべてのCPUの平均だと思いますが、すべてのCPUで計算すると、その行にあるものとは大きく異なる答えが得られます。誰かがその計算に何が入るのか正確に教えてもらえますか?この SARに関する質問 を詳しく見ると、_system-wide_アイドル率は、各CPUのアイドル率と「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%と完全に対立します。全体的なCPUアイドルに対してsarによって与えられたパーセント値。

これは、1日のキャプチャ(30秒ごと)のグラフです。

enter image description here

「システム全体」のアイドル時間がほとんどない場合、平均CPUアイドルと「システム全体」のアイドルの間の相関はほぼ完全です。しかし、「システム全体」のアイドル時間が増えると、相関関係は非常に弱くなります。これらが決定性チューリングマシンであるという仮定に基づいて作業すると、私が持っているデータが全体像を示していないことがわかります。しかし、私はどのくらい気にしますか?

一部のCPUが各時点で報告されない理由を完全には理解していませんが、上記の例にあるように、欠落しているCPUが均等に分散されていません。また、これを読んで redbook 、これらは論理CPUである必要があり、physc番号がないと、私にできることはあまりないと思います。これらの値。さまざまな方程式でU値を使用しようとしましたが、意味のあるものは見つかりませんでした。全体的なアイドル率を額面どおりに取得できるかどうかは、私にはわかりません。

[〜#〜]注[〜#〜]:sarからのこのデータのキャプチャに問題があります#1の完全に有効な答えです、その場合は常に戻る必要があります。

11
JimmyJames

提供した出力は、標準のsar -P ALLまたはsar -u出力とは異なって見えます。手作業でフォーマットしたのか、別のツールで実行しているのかはわかりませんが、これを理解するのに十分な情報があると思います。

sarのマニュアルページから取得した重要な情報は次のとおりです。

注:SMPマシンでは、アクティビティーがまったくない(すべてのフィールドで0.00)プロセッサーは、使用不可(オフライン)プロセッサーです。

クラスターで実行しているため、SMPマシンを使用していると想定するのはかなり安全なようです。

例2と3では、24個のコアのうち12個だけが統計を報告していることに注意してください。マニュアルページに記載されているように、これらのコアが無効になっていると仮定すると、統計は理にかなっています。

-で無効になっているコアを示すために、次のようにデータを更新しましょう。

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であり、平均は例の出力に表示されるものと一致することに注意してください。

最初のケースと2番目のケースの間のある時点で、CPUコアの半分が無効になっているようです。

あなたの質問の簡単な要約:

  1. データが欠落しているということは、おそらくプロセッサコアが無効になっていることを意味します。
  2. 平均行のUは、そのマニュアルページのUとは異なります。 manページで参照されているUは、プロセッサーID列の下に表示されます。
  3. 提供した出力は標準のsar出力とは異なり、平均的な行のUまたはallが何を参照しているかを判断するのに十分な情報が提供されていません。ただし、最初の数値はアクティブコアのアイドル%のようです。
4
Swiss