LinuxマシンのCPU負荷とは一体何で、なぜ気にするのですか?

真剣に、私は自分自身にそれを言いました。 実際、LinuxサーバーのCPU負荷の概念については基本的に理解していましたが、最近学んだことがいくつかあり、世界と共有したいと思いました。

topコマンドを実行すると、ボックスの1分5分と15分のCPU負荷平均を取得できることを誰もが知っていると思います。 誰が気にしますか? 使用されているCPUリソースの量を教えてくれるので、使用されているCPUの割合について知りたいのは明らかです。 しかし、このCPU負荷平均メトリックは何ですか?

CPU負荷平均についてすべて知っている人にとっては、負荷平均が役立つかどうかについての私の哲学的意見を述べるブログの部分にスキップしたいと思うかもしれません。 残りの皆さんのために、CPU負荷の平均が実際に何であるかを簡単に説明しましょう。

CPU負荷は、CPU時間を使用している、または使用したいプロセスの数、またはCPUを使用する準備ができているキューに入れられたプロセスの数です。 これは、実行キューの長さと呼ばれることもあります。 たとえば、1つのCPUと1つのコアがあるとします。 負荷平均が1の場合、それは容量に達していることを意味し、それ以上のものはキューに入れ始めます。 平均CPU負荷が5の場合、容量が半分になり、より多くの負荷をかける余地があることを意味します。 しかし、Cevin、私は1つのCPUを持っていません、私は2つのCPUを持っています。 いい視点ね! 最近CPUを1つしか持っていないのは誰ですか? 私ではありません、それは確かです! では、2つのCPUが容量に達する原因となる負荷平均数はどれくらいになるでしょうか。 場合によります。

各CPUにはいくつのコアがありますか? 各コアは平均1の負荷を処理できます。これは、コアの容量が不足していることを意味します(つまり、コアで実行されているプロセスが1つあり、待機しているプロセスはありません)。100は2%の容量であると考えてください。 4つの物理CPUがあり、それぞれに8つのコアがあり、合計で8つのコアがあります。 ええと? 重要なのは、コアが8つある場合、平均CPU負荷が8になる可能性があるため、容量が不足するということです。 このシナリオでは、8未満の場合は容量が不足し、XNUMXを超える場合はキューに入れられます。

もう100つの問題、つまりコアの数を超える負荷は、プロセスがキューに入れられていることを示していますが、キューに入れられている作業の種類については何も示していません。 キューに入れられたジョブの中には、CPU要件が非常に高く、実行に時間がかかるものもあれば、要求をスケジュールしてからCPUを譲るジョブもあります。 「ランプの高速道路には100台の車両が並んでいます」と言っているようなものです。 それらのXNUMX台の車両が気の利いたバイクまたは巨大なセミトレーラーである場合、それは大きな違いを生みます。 そのため、負荷が高く、CPU使用率が低い可能性があります。

CPUの負荷は明確になりましたか? 驚くばかり!

次に、質問のXNUMX番目の部分、「なぜ気にするのか」について説明します。 これは私の意見では、質問の最も重要な部分です。 これが答えです。 準備はできたか?…

それを待つ…。

それを待つ…

場合によります!

それは実際には、そのホストが何を担当しているか、そしてワークロードが何であるかに依存します。 そのホストが時間に敏感な情報をパブリック消費、さらにはプライベート消費に配信することを担当している場合は、CPUコアあたりの負荷平均を1より大きくしたくないはずです。 そのホストが、終了時に気にしない作業のキューの処理を担当している場合は、コアあたり平均1を超える負荷を許容できる可能性があります。 注:1日24時間の平均負荷がXNUMXを超える場合、ホストが追いつくことはありません(キャプテンに感謝します)。

CPU負荷平均

上記は、4つのコアを持ち、負荷のラインにまたがっているサーバーの例ですが、時間に敏感ではないジョブを処理しているだけなので、問題ありません。

CPU負荷平均-2

上記は、時間に敏感で、16の負荷容量の範囲内にある情報を処理している16コアのサーバーの例です。

サーバーの目的を把握し、責任を持って監視します。