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% 합계가 일정량을 초과하는데, 이 게시물에 설명된 차이를 보면 안 됩니다.

관련 정보