SARから抽出したいくつかのデータを理解しようとしています。これには3つの主な質問があります。最終的には、サーバークラスタでサンプリング間隔ごとにアイドル状態のCPU数を確認したいと思います。
- すべての項目に多くのCPUが表示されるわけではありません。これが期待されるか。これは正確に何を意味しますか?これは#2に関連していますか?
- 未使用の行があります(CPU = U)。これ文書「Uはシステム全体で使用されていない容量を示します」と言います。 「システム全体で使用されていない容量」の正確な定義や定義が実際に見つかりません。 「使用しない容量は70%が空いている」という言葉をどのように解釈すべきかわかりません。
-
最後に、ORall
行がどのように計算されるのかわかりません。私はこれがすべての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の欠損値がすべて0であると仮定すると、平均は21であり、これはケース1とある程度一致するようです。しかし、ケース3についてこの仮定をすると、24%が得られます。これは、sarが提供するCPUアイドル率の合計値85%と完全に一致しません。
以下は、1日の漁獲量のグラフです(30秒ごと)。
「システム全体」アイドル時間が非常に小さい場合、平均CPUアイドル時間と「システム全体」アイドル時間との間の相関はほぼ完璧です。しかし、「システム全体」のアイドル時間が増加するにつれて、相関は弱くなります。これが決定論的な機械であると仮定すると、これは私が持っているデータが完全な画像を提供しないことを示しています。しかし、私はどれほど気になりますか?
上記の例に示すように、一部のCPUがすべての時点で報告されていない理由は完全には理解されていませんが、欠落しているCPUは均等に分布していません。また、この記事を読んで赤い本、私はこれらが論理CPUであるに違いないと思います。数字がなければphysc
値にできることがないと思います。私はこの値をさまざまな方程式に使ってみましたU
が、意味のあるものが見つかりませんでした。アイドル率全体が額面のまま受け入れられるかどうかはわかりません。
ノート:sarでこのデータをキャプチャする際に問題があります。これは#1に対する完全に有効な答えです。この場合は常に返す必要があります。
答え1
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 | -
次に、次を使用して平均を計算できます。 (これは私が書いた単純な1行です。より良い内容を書くことができると確信しています。)
$ 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コアの半分が無効になっているようです。
質問の簡単な要約:
- データ損失は、プロセッサコアが無効になっていることを意味できます。
U
平均行の内容は、U
このマニュアルページの内容とは異なります。マニュアルページの参照は、U
プロセッサID列の下に表示する必要があります。- あなたが提供する出力は標準出力とは異なり、平均または参照項目を
sar
決定するのに十分な情報を提供しません。最初の数字はアクティブコアのアイドル率であるようです。U
all