良いプロセスで発生した負荷を除いて負荷平均を返す方法はありますか?
複数のLinuxサーバーの負荷を確認し、負荷が最も少ないサーバーにジョブを送信するロードバランシングメカニズムがあります。すべてのサーバーの負荷が高すぎるため、負荷分散でサーバーを選択できないシナリオがあります。しかし、サーバーは多くのプロセスを処理しているため、平均負荷が高いにもかかわらず、他のジョブを送信することは依然として「安全」であることがわかりました。
説明が必要な場合はお知らせください。ありがとうございます。
ベストアンサー1
ps
Nice値が0以下の実行/実行可能状態のすべてのプロセスを一覧表示するスクリプトを直接作成できます。使用する必要がある特定の構文はバージョンによって異なりますps
。次のように動作します。
ps -eo state,nice | awk 'BEGIN {c=0} $2<=0 && $1 ~ /R/ { c++ } END {print c-2}'
実行中にps
すべてのプロセスのレベルstate
とレベルを収集nice
し、出力をawk
カウント変数にパイプし、c
2番目の列(nice)が0以下で、最初の列にR(実行可能を意味)が含まれている場合はそれをインクリメントします。完了したら、値からc
2を引いた値を印刷します。 ps および awk コマンドは、コマンドの実行中にほぼ常に実行可能と見なされるため、2 を引くことになります。最終結果は、スクリプトの実行中に実行できるプロセスの数(それ自体と実行中のプロセスを除く)を示す数値です。nicely
これは本質的にコンピュータの瞬間的な負荷です。コンピュータの一般的な負荷平均を確認するには、このプログラムを定期的に実行し、1分、5分、15分にわたって平均を計算できます。