数日前、WeChatグループの人とこの問題について話し合い、pidstatの%waitがioを待機しているかどうかについて説明しました。
当時、pidstatには待機カウンターがないように見えるという曖昧さがありました。しかし、mpstatのtop waと%iowaitでの長年の判断経験に基づいています。私はioを待っていると言いました。
私はまた、私が間違った判断をした場合、次に会うときに、彼にフラワーワインを飲むように勧めると言いました(あなたが思うフラワーワインではありません、
)。
私が言ったことを確認するために、私はサーバーでそれをチェックしました。一見関係ありません、結果はこのカウンターを待っていません! !
私は今混乱しています、なぜ私はこのカウンターを持っていないのですか?
しかし、質問をするこのクラスメートのインターフェースはこのようなものです。
もう一回待ちます。そして、この待機は実際にpidstatの-uCPUパラメーターに出力されます。
pidstatによるCPU出力の待機が表示されますが、mpstatのiowaitおよび上部のwaに対応していません。
上の図からわかるように、mpstatによって出力された%iowaitには値がありませんが、pidstatの%waitには比較的高い値があります。同時に出力されるデータは大きく異なりますが、これは確かに奇妙なことです。
それで私は彼の環境のバージョンが何であるか尋ねました。彼はsysstat11.5.5のバージョンが見られると言った。私の環境で出力するpidstatは10.1.5です。yumを使用してCentos8および7にインストールする場合、そのような高バージョンはありません。
技術のパラノイアに沿って、説明が間違っているかどうかを調べる必要があると思います!
分析プロセスを見てください。
カウンター値が正しくない理由を理解するには、最初にそれらが同じ意味を持っているかどうかを知る必要があります。
いくつかのコマンドのパラメーター値が異なるため、topとmpstatは長年使用されてきました。次に、最初にこれらのカウンターのヘルプがどのように定義されているかを確認します。
一番上のわはこのように説明されています。
wa, IO-wait : time waiting for I/O completion
mpstatのiowaitはこんな感じです。
%iowait
Show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.
これは、上記の2つのカウンターが明示的にIOの待機を示しているため、CPUでの待機がIOを待機していると判断する理由でもあります。
だが! ! !私の誤解のターニングポイントが来ました。
最新バージョンのsysstatをインストールした後、pidstatで待機の説明が表示されました。