Linux, Unix의 CPU 사용률에 대해..
글쓴이: holecjh / 작성시간: 금, 2016/04/08 - 1:48오후
Linux에서 top 명령어를 치면 아래처럼 나옵니다.
top - 13:37:51 up 3 days, 17:14, 3 users, load average: 0.07, 0.10, 0.09 Tasks: 81 total, 1 running, 80 sleeping, 0 stopped, 0 zombie Cpu(s): 7.5%us, 0.4%sy, 0.0%ni, 92.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1914436k total, 1829000k used, 85436k free, 159936k buffers Swap: 1015804k total, 768k used, 1015036k free, 932484k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19232 1424 1224 S 0.0 0.1 0:01.08 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
여기서 각 프로세스의 CPU 사용률이 나오는데 이 수치의 정확한 의미가 뭔가요? (CPU% 부분)
그리고, 만약 전체 CPU 사용률이 10% 면 그 10% 중 특정 프로세스가 점유하는 %를 나타내려면 어찌해야 하는지..
예를들어 윈도우 tasklist의 경우 전체 cpu 사용률이 각 프로세스의 cpu 사용율을 더하면 100%가 되는걸로 알고 있는데..(작업관리자에서도 그렇게 보이구..)
Linux, Unix는 정확한 의미를 모르겠습니다.
도와주세요.
Forums:
man top 해보시면 다음의 설명이
man top 해보시면 다음의 설명이 나옵니다.
top을 실행시키면 매3초마다 자동으로 화면을 갱신합니다. 또는 space를 누르면 바로 갱신하죠.
%CPU는 가장 마지막으로 갱신한 순간 부터, 현재 갱신한 순간까지의 시간동안 각 프로세스에게 소모된 CPU시간을 %로 나타내어 보여줍니다.
가령, 최근 3초동안,
init이 CPU를 2초 썼고,
kthreadd가 CPU를 1초 썼으면
init의 %CPU는 66.6%일것이고,
kthreadd의 %CPU는 33.3%이겠죠.
그런데, 위에 나와있듯이
어느 프로그램이 multi threading으로 다수의 쓰레드를 돌리고 있으며, 여러개의 CPU core가 돌아가고 있는 true SMP환경에서 top프로그램이 thread모드로 돌아가고 있는게 아니라면
합이 100%를 넘을수 있습니다.
예를들어,
program A가 3개의 쓰레드를 돌리고 있고, 최근 3초동안 3개의 다른CPU core가 각각의 쓰레드를 개별적으로 돌렸다면,
top은 최근 3초동안, program A가 CPU를 9초동안 사용한것으로 인식합니다.
따라서, %CPU는 300%가 되겠죠.
대문자 H를 누르면, 프로세스별 CPU%가 아니라, 쓰레드별 CPU%를 보여주므로 한개의 쓰레드가 CPU를 100%이상 쓰는 순간은 나타나지 않습니다.
답변 감사드립니다.!!그러면..
그럼 말씀하신 3쓰레드의 프로세스의 CPU 사용률이 최고 300% 까지 간다면 CPU코어수 랑은 관련이 없는 건가요..?
현재 1코어짜리에서 top에서 H를 누르고 보고 있으면 각 쓰레드(현재 5개)에서 99% 인데 H를 off하고 보면 하나가 99%로 나와서요..
이게 만약 4코어 짜리에서는 400%로 보이나요..?
400%로 나오면.. 코어수로 나누어서 보는게 맞는 건지..
제가 이해를 못한 것 같아 죄송합니다. ㅠㅠ
댓글 달기