Linuxで質問を実行すると、top
次のような結果が表示されます。
CPU使用量情報行の1つは次のとおりです。
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時間の割合」と言います。
しかし、これは実際に何を意味しますか?誰かがそれをより明確にすることができますか?
他の人が同じコンテンツを検索するのに役立つ可能性があるため、すべてをリストus
しsy
ました。ni
この情報はマニュアルページにはありません。
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
答え1
hi
ハードウェア割り込みの処理に費やされた時間。ハードウェア割り込みは、ハードウェアデバイス(ネットワークカード、キーボードコントローラ、外部タイマー、ハードウェアセンサなど)がCPUにいくつかの信号を送信する必要がある場合(データ到着など)によって発生します。
このような状況は非常に頻繁に発生する可能性があり、実行中に現在のCPUを本質的にブロックするため、カーネルハードウェア割り込みハンドラはできるだけ早く簡単に作成されます。
長い処理または複雑な処理を完了する必要がある場合は、メカニズム呼び出しを使用してこれらの操作を延期できますsoftirqs
。独立してスケジュールされ、すべてのCPUで実行でき、同時に実行することもできます(ハードウェア割り込みハンドラの場合はどちらも該当しません)。
softirqs
ハードIRQが現在CPUをブロックしてどこからでも実行できるという部分は完全に正確ではなく、制限があり、一部のハードIRQは他のハードIRQを妨げる可能性があります。
たとえば、ネットワークカードの「データ受信」ハードウェア割り込みは、「ネットワークカードethXにサービスが必要です」という情報をどこかに保存して予約できますsoftirq
。これはsoftirq
実際のパケットルーティングをトリガします。
si
これに費やされた時間を示しますsoftirqs
。
Matthew Wilcoxのメカニズムsoftirq
(そしていくつかの歴史)のための良い資料です。後でします:Softirqs、Tasklets、Bottom Halfes、Task Queues、Work Queues and Timers(PDF、64k)。
st
、「盗用時間」は、仮想化された環境でのみ関連しています。これは、現在の仮想マシンで物理CPUが利用できなかった時間を示します。つまり、ハイパーバイザーによって仮想マシンで CPU が「盗まれた」ことです (他の仮想マシンを実行するため、または独自の必要に応じて)。
これCPU時間統計IBMの資料は、仮想化環境で盗まれた時間とCPU計算に関する詳細情報を提供します。 (zSeriesタイプのハードウェアを対象としていますが、一般的なアイデアはほとんどのプラットフォームで同じです。)
答え2
- us - ユーザー空間で費やした時間
- sy - カーネル空間で費やした時間
- ni - ユーザープロセスの実行にかかる時間(ユーザー定義の優先順位)
- id - アイドル操作に費やされた時間
- wa - IOペリフェラル(ディスクなど)を待つのにかかる時間
- hi - ハードウェア割り込みルーチンの処理に費やされた時間。 (周辺機器がCPUの注意を必要とするたびにラインを引き、CPUにサービスを提供するように指示します。)
- si - ソフトウェア割り込みルーチンの処理に費やされた時間。 (割り込みルーチンを呼び出すコード...)
- st - ハイパーバイザーが他のプロセッサをサービスしている間に仮想CPUが非自発的に待機するのに費やした時間(仮想マシンから盗む)
答え3
「st」値は、AWSのT2.micro EC2インスタンスを使用して簡単に説明できます。
内部にAWS ドキュメント各VCPUは基準性能の10%しか得られないことがわかります。つまり、CPU時間を大量に消費するプロセスがある場合、VCPUの10%しか使用できないため、「st」値は約90に保たれます。他の値の合計は約10に維持される。
そのため、AWS はハイパーバイザーを使用して特定の量のコンピューティングパフォーマンスにのみアクセスできるようにします。低レベルタイプのインスタンスのみを使用しているため、意図的に遅くなります。
これが状況をより簡単に理解できることを願っています。