GNU/Linux >> Linux の 問題 >  >> Linux

Linux のトップ コマンド:us、sy、ni、id、wa、hi、si、st (CPU 使用率) は?

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

これにより、物事が少し理解しやすくなることを願っています。


Linux
  1. LinuxでのChownコマンドとは何ですか?その使用方法

  2. Linux用の私のトップ10ターミナルショートカット

  3. Linux コマンド ライン スイッチと引数の標準はありますか?

  1. 初心者と専門家のための10のLinuxコマンドチュートリアル

  2. LinuxコマンドラインでCPU使用率を取得するために利用できる方法は何ですか?

  3. Linux test -a コマンド テストとは何ですか?

  1. Linuxで最も高いメモリとCPU使用率で上位のプロセスを検索する

  2. Linux Catコマンド:使用法と例

  3. Linux Sedコマンド:使用法と例