hi
ハードウェア割り込みの処理に費やされた時間です。ハードウェア割り込みは、ハードウェア デバイス (ネットワーク カード、キーボード コントローラー、外部タイマー、ハードウェア センサーなど) が CPU に何かを通知する必要がある場合 (データの到着など) に生成されます。
これらは非常に頻繁に発生する可能性があり、実行中に現在の CPU を本質的にブロックするため、カーネル ハードウェア割り込みハンドラーはできるだけ高速かつ単純になるように記述されています。
長いまたは複雑な処理を行う必要がある場合、これらのタスクはメカニズム呼び出し softirqs
を使用して延期されます .これらは個別にスケジュールされ、任意の CPU で実行でき、同時に実行することもできます (ハードウェア割り込みハンドラーには当てはまりません)。
現在の CPU をブロックしているハード IRQ に関する部分と、softirqs
に関する部分 どこでも実行できるということは正確には正しくありません。制限がある可能性があり、一部のハード IRQ が他のものを中断する可能性があります。
例として、ネットワークカードからの「データ受信」ハードウェア割り込みは、単に「カード ethX をサービスする必要がある」という情報をどこかに保存し、softirq
をスケジュールすることができます。 . softirq
実際のパケット ルーティングをトリガーするものになります。
si
これらの softirqs
で費やされた時間を表します .
softirq
についてよく読んでください メカニズム (少し歴史もあります) は Matthew Wilcox の I'll Do It Later:Softirqs, Tasklets, Bottom Halfs, Task Queues,Work Queues and Timers (PDF、64k) です。
st
、「盗む時間」は、仮想化環境でのみ関連します。これは、実際の CPU が現在の仮想マシンで使用できなかった時間を表します — ハイパーバイザーによってその VM から「盗まれた」(別の VM を実行するため、または独自のニーズのために)。
IBM の CPU 時間アカウンティング ドキュメントには、仮想化環境でのスチール時間と CPU アカウンティングに関する詳細情報が記載されています。 (これは zSeries タイプのハードウェアを対象としていますが、一般的な考え方はほとんどのプラットフォームで同じです。)
- us - ユーザー空間で費やされた時間
- sy - カーネル空間で費やされた時間
- ni - niced ユーザー プロセスの実行に費やされた時間 (ユーザー定義の優先度)
- id - アイドル操作に費やされた時間
- wa - IO 周辺機器 (ディスクなど) の待機に費やされた時間
- hi - ハードウェア割り込みルーチンの処理に費やされた時間。 (周辺ユニットが CPU からの注意を必要とするときはいつでも、文字通りラインを引いて、CPU にサービスを提供するよう信号を送ります)
- si - ソフトウェア割り込みルーチンの処理に費やされた時間。 (コードの一部、割り込みルーチンを呼び出します...)
- st - ハイパーバイザーが (仮想マシンから盗まれた) 別のプロセッサーにサービスを提供している間に、仮想 CPU による非自発的な待機に費やされた時間
「st」の値は、AWS の T2.micro EC2 インスタンスを使用して簡単に説明できます。
AWS のドキュメントでは、VCPU あたり 10% のベースライン パフォーマンスしか得られないことがわかります。これは、多くの CPU 時間を消費するプロセスがある場合、VCPU の 10% しか使用できないため、「st」値は約 90 のままであることを意味します。他の値の合計は約 10 のままです。
そのため、AWS はハイパーバイザーを使用して、一定量のコンピューティング パワーへのアクセスのみを許可しています。低層タイプのインスタンスのみを使用しているため、意図的に速度が低下します。
これにより、物事が少し理解しやすくなることを願っています。