runq-szはsarでどのように計算されますか?

runq-szはsarでどのように計算されますか?

出力について質問したいですsar -q。誰でも私が理解するのを手伝ってくれたらとても感謝しますrunq-sz

8 cpu threadsCPUスレッドが開いているシステムがあります RHEL 7.2

[ywatanabe@host2 ~]$ cat /proc/cpuinfo | grep processor | wc -l
8

sar -q 以下は私のシステムの結果ですrunq-sz低いと比較してldavg-1

                runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
05:10:01 PM         0       361      0.29      1.68      2.14         0
05:11:01 PM         0       363      1.18      1.61      2.08         2
05:12:01 PM         0       363      7.03      3.15      2.58         1
05:13:01 PM         0       365      8.12      4.15      2.96         1
05:14:01 PM         3       371      7.40      4.64      3.20         1
05:15:01 PM         2       370      7.57      5.26      3.51         1
05:16:01 PM         0       366      8.42      5.90      3.84         1
05:17:01 PM         0       365      8.78      6.45      4.16         1
05:18:01 PM         0       363      7.05      6.40      4.28         2
05:19:02 PM         1       364      8.05      6.74      4.53         0
05:20:01 PM         0       367      7.96      6.96      4.74         1
05:21:01 PM         0       367      7.86      7.11      4.93         1
05:22:01 PM         1       366      7.84      7.31      5.14         0

From は実行キュー内のジョブ数を表すman sarと考えられ、その状態は次のとおりです。runq-szジョブの実行のR状態に対応しますps

          runq-sz
                 Run queue length (number of tasks waiting for run time).

それは実際に何を意味するのかrunq-sz

答え1

このマニュアルページには、このプロパティの詳細な説明があります。

q-sz 実行

CPUの実行を待っているメモリ内のカーネルスレッドの数。通常、この値は2より小さくなければなりません。常に高い値は、システムがCPUにバインドされている可能性があることを意味します。

結果の解釈

多くの「メトリック」の場合と同様に、パフォーマンスの問題があるかどうかを解釈するには、それらを一緒に使用する必要があります。この特定のインジケータは、システムにCPU時間が足りないかどうかを示します。

そして、load1、5、15は、プロセスが実行キューにあるが、強制的にランタイムを待たなければならないことを意味します。 load1、5、15変数は、システムの全体的な傾向と待機中のプロセスが多いかどうか(負荷の増加)と下向きの傾向を示します。ただし、プロセスがロード1、5、15を待つことができるさまざまな状況があります。通常、負荷が1,5,15倍高い場合、I / Oはブロックされます。

runq-sz では CPU 時間を待つことができます。

引用する

答え2

この記事はGoogleに初めて掲載され、上記の最後の回答は承認済みとしてマークされます。

答えは参考資料を提供し、テキストを引用します。ソラリスマンページ。しかし、OPの質問はRHEL 7。実行可能なプロセスレポートは、SolarisとLinuxで異なる方法で処理されます。

  • Solarisは、実行を待っているプロセスの数を示す指標としてロード/キューの平均を使用することを好みます。

  • Linuxは、実行中のプロセス数と実行中のプロセス数を示す指標として、ロード平均/キューを使用する傾向があります。

  • runq-szinのLinux表現は、sar -q現在実行中のプロセス数+待機中のプロセス数を意味する可能性が高いです。

8スレッドインスタンスのOPの元の例を参照すると、runq-sz8未満はこの点で最適なパフォーマンスを表します。

私は、低runq-szと高がloadavg一種の詰まりや睡眠過程を示す可能性があることに同意します。 OPの例sar出力blocked列にこれを部分的に見ることができます。

答え3

稼働時間は、最後の1分、5分、15分の負荷平均を提供します。ただし、稼働時間sar中にシステムロードの即時スナップショットを取得することはできません。 (sarおよび)はすべてuptime同じロード情報を報告します。

ldavg-1  -> last 1 minute
ldavg-5  -> last 5 minutes
ldavg-15 -> last 15 minutes.

runq-sz CPU が必要または CPU を待っているプロセスの数。

これは負荷平均と相関関係がありますが(負荷が高い場合はCPU枯渇が可能です)、直接的な相関関係はありません。

待機中 - >プロセスは無制限のリソースを待ちます(プロセスが長時間待機するため、負荷平均が非常に高い可能性があります)。

キュー内のプロセスは、キューにCPUをインポートするプロセスです。つまり、CPU を 100% 待って CPU が使用可能になったら、一部を取得します。つまり、CPUが不足しています。

これにより、sar -qCPU 不足(キューサイズが非常に大きい)があるかどうかを理解できます。稼働時間とldavg-#を介してシステム負荷に関するアイデアを得ることができ、キューサイズが高いというヒントを得ることもできます。

お役に立てば幸いです。

答え4

Linuxについて次のように述べました。

  • 負荷平均 = 実行中のプロセス + 待機中のプロセス
  • runq-sz = 実行中のプロセス + 待機中のプロセス

これは意味する負荷平均そしてq-sz 実行実行中のプロセスを含める

では、違いは何ですか?待機プロセスそしてキュープロセスどうぞ?

たとえば、説明できますか(最初の行runq-sz = 10)?

20コア(40スレッド)サーバー用です。

ldavg-1> runq-szは、多くのプロセスがリソース(I / Oなど)を待っていることを意味しますか?

06:10:01      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
06:20:02           10      1696     28.95     30.21     28.25
06:30:02            8      1672     25.93     27.57     27.78
06:40:02            8      1707     31.82     35.37     32.88
06:50:01            9      1707     28.90     31.06     31.89

私のサーバーのCPU使用率は非常に低いです。 80%アイドル状態です。

CPU使用量

挨拶、

関連情報