SARから取得したいくつかのデータを理解しようとしています。これについて3つの主な質問があります。最終的には、サーバーのクラスター全体の各サンプリング間隔でアイドル状態だったCPUの数を確認したいと思います。
-
_または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秒ごと)のグラフです。
「システム全体」のアイドル時間がほとんどない場合、平均CPUアイドルと「システム全体」のアイドルの間の相関はほぼ完全です。しかし、「システム全体」のアイドル時間が増えると、相関関係は非常に弱くなります。これらが決定性チューリングマシンであるという仮定に基づいて作業すると、私が持っているデータが全体像を示していないことがわかります。しかし、私はどのくらい気にしますか?
一部のCPUが各時点で報告されない理由を完全には理解していませんが、上記の例にあるように、欠落しているCPUが均等に分散されていません。また、これを読んで redbook 、これらは論理CPUである必要があり、physc
番号がないと、私にできることはあまりないと思います。これらの値。さまざまな方程式でU
値を使用しようとしましたが、意味のあるものは見つかりませんでした。全体的なアイドル率を額面どおりに取得できるかどうかは、私にはわかりません。
[〜#〜]注[〜#〜]:sarからのこのデータのキャプチャに問題があります#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 | -
次に、以下を使用して平均を計算できます(これは私が書いた簡単なワンライナーであり、もっと良いものを書くことができると確信しています)。
$ 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
とは異なります。 manページで参照されているU
は、プロセッサーID列の下に表示されます。sar
出力とは異なり、平均的な行のU
またはall
が何を参照しているかを判断するのに十分な情報が提供されていません。ただし、最初の数値はアクティブコアのアイドル%のようです。