htop は、ビジュアライゼーションで CPU% が低いプロセスについて高い CPU% を報告します。

htop は、ビジュアライゼーションで CPU% が低いプロセスについて高い CPU% を報告します。

私はサーバーアプリケーションの負荷を現実的に理解しようとしています。アプリケーションはTCP接続から大量のデータを読み取ります。を使用してCPU使用率を確認すると、プロセスはhtop高い(85〜100%)CPU%を頻繁に報告しますが、CPUの可視化数値はhtopはるかに低くなります。報告されたCPU%top

サンプル出力 - ユーザーtom pid 26655/26656のプロセスはCPU%が96.2であるのに対し、CPU 1の6.9%、CPU 2の37.4%のみを使用し、合計CPU使用率は44.3%であるようです。


  1  [|||                       6.9%]   Tasks: 48, 128 thr; 2 running
  2  [||||||||||||||           37.4%]   Load average: 0.06 0.10 0.09
  Mem[|||||||||||||||||||1.10G/3.70G]   Uptime: 1 day, 15:16:55
  Swp[                         0K/0K]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
26655 tom        24   4 3216M 63832 13056 S 96.2  1.6  0:33.24 java -jar java_go
26656 tom        24   4 3216M 63832 13056 R 96.2  1.6  0:32.31 java -jar java_go
  986 jerry      20   0 3576M  594M 18268 S 18.3 15.7  4h13:46 java -Dcom.sun.ma
 1479 jerry      20   0 3576M  594M 18268 S 16.3 15.7  3h37:02 java -Dcom.sun.ma
26881 tom        20   0  129M  2392  1540 R  1.0  0.1  0:00.08 htop

プロセスを実行すると、timeユーザー時間とシステム時間を加えた値が実際の時間よりはるかに少なく、視覚化がより正確であることがわかります。

real    1m26.787s
user    0m32.344s
sys     0m23.024s

( user + sys / real = 0.6380)

次に、htopCPUを消費するために重複を繰り返し実行する無意味なプログラムを使用して、この動作を比較しました。出力はhtop期待したものに近いです。問題のプロセスはCPUの105%を消費し、視覚化にはCPU 1の100%が使用されていることが示されます。ただし、報告されたCPU使用率は105%ですが、合計CPU%は102.2%にすぎません。


  1  [||||||||||||||||||||||||100.0%]   Tasks: 46, 117 thr; 2 running
  2  [|||                       2.2%]   Load average: 0.39 0.11 0.08
  Mem[|||||||||||||||||||1.06G/3.70G]   Uptime: 1 day, 15:12:23
  Swp[                         0K/0K]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
25636 tom        20   0  122M  4604  2032 R 105.  0.1  0:16.32 /usr/bin/python .
  986 jerry      20   0 3576M  595M 18268 S 10.5 15.7  4h13:18 java -Dcom.sun.ma
 1479 jerry      20   0 3576M  595M 18268 R  9.1 15.7  3h36:35 java -Dcom.sun.ma
25714 tom        20   0  129M  2360  1540 R  1.4  0.1  0:00.04 htop
 1298 groot      20   0  173M 67784 11240 S  0.7  1.7  0:04.67 splunkd -p 8089 s
 1247 groot      20   0  173M 67784 11240 S  0.7  1.7  9:11.01 splunkd -p 8089 s

topの個々のプロセスラインがhtopCPUビジュアライゼーションよりはるかに高い使用率を報告するのはなぜですかhtop

早くから調査を始めました。CPU使用率に関するこの記事、これは以前に理解していた内容を繰り返すようです。 CPU使用率はです<process_clock>/<wall_clock>。では、カーネルとユーザーエントリを非表示または表示できることを知っていますが、htopこれがビジュアライゼーションの使用率が下のリストのプロセスエントリの合計よりも高く、その逆ではない理由に対する答えになることを願っています。

よろしくお願いします!

編集する:

  • オペレーティングシステム:CentOS 7
  • サーバー: AWS t2.medium インスタンス

また、AWSのXENハイパーバイザーでCPU盗難についても読みました。ここhtop、拡張の理由から、リソース使用量を実際に理解するためのより効率的な方法としてCloudWatchを使用することをお勧めします。しかし、このリンクでは私ができないことがわかるので、特定のプロセスに対して過度のCPU消費が報告される理由はまだ疑問に思います。プロセスのCPU%の合計が一定量を超えているため、この記事に記載されている違いを見てはいけません。

関連情報