Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

システム負荷と負荷平均を理解する

topなどのツール 、 uptime w AppSignalのホストメトリクスは、負荷平均と呼ばれるメトリクスを報告します 。このメトリックは、システムにかかっている負荷について、複数の時間枠で平均して示します。

$ uptime
10:14:14 up 60 days, 17:42,  1 user,  load average: 0.44, 0.28, 0.25

通常、負荷平均は、 uptime の例のように、3つの数値として表示されます。 その上。結果の最後にある3つの数値は、直前の平均負荷を示しています( 0.44 )、過去5分間( 0.28 )、および最後の15( 0.25

AppSignalでは、負荷の平均は過去8時間は分単位で表示され、それより長い時間枠では1時間ごとに表示されます。

システム負荷

これらの負荷平均が何を示しているか(およびいつ警告するか)を理解するには、まず、システム負荷を理解する必要があります。 意味、およびそれがどのようにカウントされるか。

システムの負荷は、基本的に、任意の時点でアクティブなプロセスの数です。アイドル状態の場合、負荷は0です。プロセスが開始すると、負荷は1ずつ増加します。終了するプロセスは、負荷を1ずつ減少させます。実行中のプロセスに加えて、キューに入れられたプロセスもカウントされます。したがって、1つのプロセスがCPUをアクティブに使用していて、2つが順番を待っている場合、負荷は3です。

プロセスの寿命が短いため、負荷は急速に変動し、ミリ秒単位で0から5にジャンプして、次の瞬間に再び戻る可能性があります。この変動性があるため、時間の経過に伴う平均負荷を確認する方が便利です。これにより、システムにかかっている負荷の概要がわかりやすくなります。

平均負荷

システム負荷がどのようにカウントされるかがわかったので、負荷平均を確認できます。これまで見てきたように、システムにかかる負荷は通常、時間の経過に伴う平均として表示されます。

一般に、シングルコアCPUは一度に1つのプロセスを処理できます。 1.0の平均負荷は、1つのコアが100%の時間ビジーであることを意味します。負荷平均が0.5に低下した場合、CPUは50%の時間アイドル状態になっています。

負荷平均が1.5に上昇すると、CPUは常にビジー状態でしたが、他の1つのプロセスが(平均して)50%の時間待機していたため、CPUは処理できる以上の作業を行っていました。

論理プロセッサ

一般的な経験則では、負荷の平均はマシン内のプロセッサの数を超えてはなりません。プロセッサの数が4の場合、負荷は通常4.0未満にとどまるはずです。

これは論理プロセッサに関連していることに注意してください CPU上の実際の物理的なものの代わりに。ハイパースレッディングなどのソフトウェアの抽象化により、論理プロセッサまたは処理スレッドの数は、物理プロセッサコアの数よりも多くなる可能性があります。

Linuxで論理プロセッサの数を確認するには、 / proc / cpuinfoにリストされているプロセッサの数を数えます。 、またはgrepプロセッサ/proc / cpuinfo | wc -l <​​/ code> 、プロセッサライン数を自動的に出力します。

Macでは、 sysctlに問い合わせることができます sysctl -n hw.ncpu を使用して、論理プロセッサの数を直接計算します。 。

複数の論理プロセッサを備えたシステムの場合、より多くの同時プロセスを実行できるため、負荷平均が高くなる可能性があります。 2つのCPUコアを備えたマシンでは、平均負荷2.0は、両方のCPUが100%使用され、2つのプロセスが平均してアクティブであることを意味します。

👋Rubyパフォーマンス監視チェックリストにある他のRuby(on Rails)パフォーマンス記事をご覧ください。

平均負荷の読み取り

これはプロセスの絶対数の平均であるため、適切な負荷平均とは何か、いつ警告するかを判断するのは難しいように思われる場合があります。一般に、各CPUコアは一度に1つのプロセスを処理できるため、論理プロセッサごとに1.0を超えるまで、システムが過負荷になることはありません。デュアルコアシステム(ハイパースレッディングなし)では、2.0になります。

通常、直前の時点で負荷平均がコアあたり1.0を超えていれば問題ありませんが、5分または15分の平均で負荷が上昇している場合は問題がある可能性があります。

ヒント :AppSignalの異常検出を使用して、負荷平均が一定期間特定の値を超えた場合にアラートを開くことができます。ウォームアップ設定を使用すると、たとえば、負荷が1.5を超えた状態が15分間続くと、メッセージが送信されます。

負荷の平均についての質問に答えましたか、それともまだはっきりしていない部分がありますか? @AppSignalまでお気軽にお知らせください。もちろん、この記事がどのように気に入ったか、または別のテーマについてもっと知りたい場合は、ぜひお知らせください。


  1. Rubyでの挿入ソートを理解する

    注:これは、Rubyを使用したさまざまなソートアルゴリズムの実装を検討するシリーズのパート4です。パート1ではバブルソート、パート2では選択ソート、パート3ではマージソートについて説明しました。 データを並べ替えるためのさまざまな方法を引き続き検討するため、挿入並べ替えに目を向けます。挿入ソートが好きな理由はたくさんあります!まず、挿入ソートは安定です。 、これは、等しいキーを持つ要素の相対的な順序を変更しないことを意味します。 インプレースアルゴリズムでもあります 、は、並べ替えられた要素を格納するための新しい配列を作成しないことを意味します。最後に、挿入ソートは、すぐにわかるように、実

  2. Linuxでのシェル初期化ファイルとユーザープロファイルについて

    Linuxはマルチユーザーのタイムシェアリングシステムであり、複数のユーザーがログインしてシステムを使用できることを意味します。また、システム管理者は、ソフトウェアのインストール/更新/削除、実行できるプログラム、表示/編集できるファイルなど、さまざまなユーザーがシステムを操作する方法のさまざまな側面を管理するタスクを持っています。 Linuxでは、システム全体(グローバル)とユーザー固有(個人)の構成を使用するという2つの主要な方法でユーザーの環境を作成または維持することもできます。通常、Linuxシステムを操作する基本的な方法はシェルであり、シェルは、ユーザーログインが成功した後の初期化