runqueueがCPUのオンを待っているプロセスの数+現在実行中のプロセスの数で、waitqueueがI / Oを待っているプロセスの数である場合、vmstat出力でBがRより大きいことはI / Oがあることを意味します。 CPU制限ではない制限はありますか?下のリンクの内容が反対なので混乱しています...http://nonfunctiontestingtools.blogspot.com/2013/03/vmstat-output-explained.html?m=1
「実行可能スレッド(r)をCPU数で割った値が1より大きい場合 - >可能なCPUボトルネック(CPUが十分である場合)、(r)をCPU数(稼働時間の論理CPU)と比較する必要があります。 )より多くのスレッド)ブロックされたプロセス列(b)では、より大きな数字は、遅いディスク(r)が常に(b)より高くなければならないことを示します。
答え1
b
in より高い数字はr
CPU が多くアイドル状態であることを意味するので混同されます。文書には「I/O ボトルネックがあることを意味する」必要があります。
ページにはr
CPU数よりも高く設定しないでください。これはかなり誇張されています。これは単にCPUが完全に利用され、一部のスレッドが待機していることを意味します。一般的に大きな問題ではありません。
最後に、リンクされた文書が時々そうであるようにスレッドとプロセスを混同しないでください。r
列は、b
プロセス数ではなくスレッド数を示します。すべてのプロセスが単一スレッドであるわけではありません。
答え2
私の考えでは、この文章は完全に混乱しているようです。
その時点で、r > num_cpus
システム全体を(その瞬間)CPUにバインドされていると見なすのが合理的です。
r > b
しかし、特別な意味はないようです。
別のソースでは、「[the]列にゼロ以外の数字が表示され続ける場合は、さらに調査b
を行うことができますiostat
」と提案しています。複数のIOキューが使用されていることを知らない限り、この状況をIOバインディングシステムを暗示すると考える方が合理的です。 。
iostat
%util
各ディスクデバイスに1つの列が含まれています。つまり、%util
100の場合、デバイスは常に1つ以上のプロセスが待機していることを意味します。 avgqu-sz
どのくらいの要求が待っているかを示します。
AIO を使用するプログラムは、一度に複数の要求を送信できます。これは主にMySQL InnoDBなどのデータベースで使用されます。ほとんどのプログラムはキャッシュをサポートしていないため、Linux AIOを使用しません。