Red-HatベースのLinuxの出力がDebianベースのLinuxで別々に解釈できるかどうか疑問に思います。
質問をより具体的にするために私が求めているのは、top
Red-Hatシステムコマンドの最初の行にある「負荷平均」を解釈する方法と、公式文書のroコードを使用してこれを確認する方法を理解することです。
[このトピックにアクセスするにはいくつかの方法があり、すべて質問に対する回答として受け入れられます。]
可能なアプローチの1つは、この情報が正式に記録された場所を見つけることです。別のアプローチは、特定のディストリビューションでビルドされたコードバージョンと現在開発中のバージョンを
見つけることです。私が得るコマンド出力は次のようになります。top
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
この場合、どのように説明する必要がありますか?負荷平均値?
私は読み込み平均がある文書ソースからの最後の瞬間であり、別の文書ソースから100を掛けて説明する必要があることに気づきました。
したがって、質問は次のようになります。
0.02%ですか、2%ですか?
ドキュメントソースとバージョン:
最初の星は
TOP(1) Linux User’s Manual TOP(1) NAME top - display Linux tasks
出典:
man top
私のRedHatディストリビューションには、
Ubuntuにもロード平均を記述しない「作業」バージョンがあります。
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html2番目は次から始まります。
TOP(1) User Commands TOP(1) NAME top top - display Linux processes
これは次から始まります:
TOP(1) NAME top - display and update information about the top cpu processes
これ最初man top
RHEL
1 つは in または in でわかるように、online ubuntu documentation
出力形式の説明はありません。負荷平均)に興味があります。
これ第二1つは、負荷平均が過去1分に関連しているという簡単な説明が含まれていますが、その値は説明されていません!
2番目のソースを直接引用しています。
2a稼働時間と負荷平均
このセクションは、以下を含む単一行で構成されています。
表示モードに応じたプログラムまたはウィンドウ名、
現在時刻、および前回のブート後の
時間
長
したがって、この説明が実際に正しい場合は、負荷平均は約最後の1分であることを理解すれば十分です。
ただし、数値の形式は説明しません。
内部に第三説明すると、次のようになります。
負荷平均値を指定するときは、100を掛ける必要があります。
この説明は、0.02が0.02%ではなく2%を意味することを示しています。しかし、これは正しいですか?また、すべてのLinuxディストリビューションとは異なる実装にも適用されますかtop
?
この質問に対する答えを見つけるためにオンラインで検索してコードを探してみました。しかし、top
RHELに関連するバージョンが2つ以上あることがわかりました!そしてbuiltin-top.c
再建top.c
。コードの冒頭のお知らせに記載されているように、両方ともRed-Hatの著作権で保護されているため、RHELがそのうちの1つを使用することは論理的なようです。
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
それで、多くのコードを調べる前に、CPU負荷がどのように解釈されるのかを正確に理解するためにどこに集中する必要があるのかを知りたいと思いました。
以下の回答に記載されている情報に基づいて、個人的な検索に加えて、以下を発見しました。
- 私が
top
使用するものはprocps-3.2.8パッケージに含まれています。を使用して確認できますtop -v
。 - 公式ウェブサイトからダウンロードしたバージョンでは、このツールは(Linux機能を利用せずに)ファイルから直接情報を取得する
procps-3.2.8
ようです。uptime
procfs
/proc/loadavg
getloadavg()
- この
top
コマンドはその機能も使用しませんgetloadavg()
。私はこれが実際に負荷平均を表示するツールとtop
同じことをすることを確認しました。実際にファイルから情報を取得するuptime
ツールの機能を呼び出します。uptime
したがって、すべてがファイルを指しています!したがって、生成されたファイルを正確に理解するためには、カーネルコードを読んでファイルがどのように作成されるかを理解する必要があります。procfs
/proc/loadavg
/proc/loadavg
load average
top
loadavg
答えの1つには、3つの価値を理解しやすく説明する素晴らしい記事もありますloadavg
。
したがって、すべての回答が同じように便利で役に立ちますが、その記事に対する回答を表示します。
http://www.linuxjournal.com//article/9001私の質問に対する「答え」として。お寄せいただきありがとうございます!
また、質問で最高および平均負荷の理解loadavg
、計算位置を指すカーネルソースコードへのリンクを見つけました。なぜなら、それがどのように機能するのかを説明する巨大なコメントがあるようです。そしてコードのこの部分も同じですC
!
コードへのリンクは次のとおりです。http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
もう一度申し上げますが、私はいかなる形の盗作もしたくありません。完全性のためにこの内容を追加するだけです。繰り返します。カーネルコードへのリンクは、以下のいずれかの回答で見つけました。最高および平均負荷の理解。
ベストアンサー1
CPUロードは、実行キューの長さ、つまり実行を待つプロセスキューの長さです。
このuptime
コマンドを使用すると、通常表示される最後の1分、最後の5分、最後の15分の実行キューの平均長を表示できますtop
。
ロード値が高いとは、実行キューが長いことを意味します。値が低いとは、長さが短いことを意味します。したがって、1分の負荷平均が0.05の場合、その1分間に実行キューに実行待機中のプロセスが平均0.05個あったことを意味します。それはパーセンテージではありません。 AFAIK、これはすべてのUnicesで同じです(一部はI / Oを待つプロセスを計算するわけではありませんが、Linuxはそうだと思います。OpenBSDもしばらくカーネルスレッドのみを計算するため、ロードは常に1以上です)。
Linuxtop
ユーティリティはカーネルからロード値を取得して書き込みます/proc/loadavg
。確認するprocps-3.2.8
、私達は見た:
- 負荷平均を表示するに
sprint_uptime()
は、この関数を呼び出しますtop.c
。 - この関数はに存在
proc/whattime.c
しloadavg()
ますproc/sysinfo.c
。 LOADAVG_FILE
負荷平均を読み取るには、この機能をオンにするだけです。LOADAVG_FILE
以前はと定義されていました"/proc/loadavg"
。