web-dev-qa-db-ja.com

Linuxの「トップ」コマンド:us、sy、ni、id、wa、hi、si、st(CPU使用率)とは何ですか?

Linuxでtopを発行すると、次のような結果が得られます。

Screenshot of top

行の1つには、次のように表されるCPU使用率情報があります。

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

私はそれらのそれぞれの定義を知っていますが(はるか下)、これらのタスクの正確な意味を理解していません。

  • hi-ハードウェア割り込みの処理はどういう意味ですか?
  • si-サービスソフトウェアの割り込みの意味
  • st-彼らは、「ハイパーバイザーが別のプロセッサ(または)仮想マシンから盗まれた%CPU時間を処理している間の仮想CPUによる非自発的待機のCPU時間」であると言います。

しかし、それは実際にはどういう意味ですか?誰かがもっと明確にできますか?

ussyniなどをすべて記載しました。他の人が同じものを検索するのに役立つ可能性があるためです。この情報はマニュアルページにはありません。

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user Nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine
206
its_me

hiは、ハードウェア割り込みの処理に費やされた時間です。ハードウェア割り込みは、CPUに何かを通知する必要がある場合(データの到着など)に、ハードウェアデバイス(ネットワークカード、キーボードコントローラー、外部タイマー、ハードウェアセンサーなど)によって生成されます。

これらは非常に頻繁に発生する可能性があり、また実行中は基本的に現在のCPUをブロックするため、カーネルハードウェア割り込みハンドラーは可能な限り高速かつ単純になるように作成されています。

長時間または複雑な処理を実行する必要がある場合、これらのタスクはsoftirqsメカニズムコールを使用して延期されます。これらは独立してスケジュールされ、任意のCPUで実行でき、同時に実行することもできます(ハードウェア割り込みハンドラーには当てはまりません)。

現在のCPUをブロックするハードIRQに関する部分、およびどこでも実行できるsoftirqsに関する部分は、正確ではなく、制限があり、一部のハードIRQが他のIRQに割り込む可能性があります。

例として、ネットワークカードからの「データ受信」ハードウェア割り込みは、「カードethXをサービスする必要がある」という情報をどこかに格納し、softirqをスケジュールするだけです。 softirqは、実際のパケットルーティングをトリガーするものです。

siは、これらのsoftirqsで費やされた時間を表します。

softirqメカニズム(ちょっとした歴史もある)についての良い読みは、Matthew Wilcoxの 後でやります:Softirqs、タスクレット、ボトムハーフ、タスクキュー、ワークキュー、タイマー =(PDF、64k)。

st、「スチールタイム」は、仮想化環境にのみ関連します。これは、現在の仮想マシンが実際のCPUを使用できなかった時間を表します—ハイパーバイザーによって(別のVMを実行するため、または独自のニーズのために)そのVMから)盗まれました。

IBMの CPU時間アカウンティング ドキュメントには、仮想化環境でのスチール時間とCPUアカウンティングに関する詳細情報があります。 (zSeriesタイプのハードウェアを対象としていますが、一般的な考え方はほとんどのプラットフォームで同じです。)

96
Mat
  • us-ユーザー空間で費やされた時間
  • sy-カーネル空間で費やされた時間
  • ni-nicedユーザープロセスの実行に費やされた時間(ユーザー定義の優先度)
  • id-アイドル操作に費やされた時間
  • wa-待機に費やした時間IO周辺機器(例:ディスク)
  • hi-ハードウェア割り込みルーチンの処理に費やされた時間。 (周辺装置がCPUから注意を求めているときはいつでも、文字通り回線を引き、CPUに信号を送ります)
  • si-ソフトウェア割り込みルーチンの処理に費やされた時間。 (コードの一部、割り込みルーチンを呼び出します...)
  • st-ハイパーバイザーが別のプロセッサー(仮想マシンから盗まれた)にサービスを提供している間、仮想CPUによる非自発的な待機に費やされた時間
20
Simon Rigét

「st」の値は、AWSのT2.micro EC2インスタンスを使用して簡単に説明できます。

AWSドキュメント では、VCPUあたりのベースラインパフォーマンスが10%しか得られないことがわかります。これは、CPU時間を大量に消費するプロセスがある場合、VCPUの10%しか使用できないため、「st」値は約90のままであることを意味します。他の値の合計は約10のままです。

そのため、AWSはハイパーバイザーを使用して、一定量のコンピューティングパワーへのアクセスのみを許可しています。低階層タイプのインスタンスのみを使用しているため、意図的に速度が低下します。

これで少しわかりやすくなればいいのですが。

2
draufunddran