저는 서버 애플리케이션의 로드를 현실적으로 이해하려고 노력하고 있습니다. 애플리케이션은 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
)
그런 다음 htop
CPU를 소비하기 위해 거듭제곱을 반복적으로 수행하는 무의미한 프로그램을 사용하여 이 동작을 비교했습니다. 출력은 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
의 개별 프로세스 라인이 htop
CPU 시각화보다 훨씬 더 높은 사용률을 보고하는 이유는 무엇입니까 htop
?
일찍부터 조사를 시작했는데CPU 사용률에 대한 이 게시물, 이는 이전에 이해했던 내용을 반복하는 것 같습니다. CPU 사용률은 입니다 <process_clock>/<wall_clock>
. 에서 커널 및 사용자 항목을 숨기거나 표시할 수 있다는 것을 알고 있지만 htop
이것이 시각화의 활용도가 아래 목록에 있는 프로세스 항목의 합계보다 높고 그 반대가 아닌 이유에 대한 답이 되기를 바랍니다.
미리 감사드립니다!
편집하다:
- 운영 체제: CentOS 7
- 서버: AWS t2.medium 인스턴스
또한 AWS의 XEN 하이퍼바이저에서 CPU 도난에 대해 읽었습니다.여기htop
, 확장상의 이유로 리소스 사용량을 실제로 이해하는 더 효율적인 방법으로 CloudWatch를 사용하는 것이 좋습니다. 그러나 이 링크에서는 내가 할 수 없다는 것을 알 수 있으므로 특정 프로세스에 대해 과도한 CPU 소비가 보고되는 이유가 여전히 궁금합니다. 프로세스의 CPU% 합계가 일정량을 초과하는데, 이 게시물에 설명된 차이를 보면 안 됩니다.