답변:
여전히 top 에서 할 수 있습니다 . top 이 실행되는 동안 키보드에서 '1'을 누르면 코어 당 CPU 사용량이 표시됩니다.
특정 프로세스가 특정 사용자 계정으로 실행되도록하여 표시되는 프로세스를 제한하고 유형 'u'를 사용하여 해당 사용자로 제한합니다.
top
, man
페이지 말한다 top -1
하지만 불평! 별도의 CPU 사용량이 표시 top -1 -n 1
되는 단일 반복을 얻는 것이 좋을 것 top
입니다.
당신이 사용할 수있는:
mpstat -P ALL 1
각 코어가 얼마나 많이 사용되는지 보여주고 매초마다 자동으로 업데이트됩니다. 출력은 다음과 같습니다 (쿼드 코어 프로세서에서).
10:54:41 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
10:54:42 PM all 8.20 0.12 0.75 0.00 0.00 0.00 0.00 0.00 90.93
10:54:42 PM 0 24.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 74.00
10:54:42 PM 1 22.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 76.00
10:54:42 PM 2 2.02 1.01 0.00 0.00 0.00 0.00 0.00 0.00 96.97
10:54:42 PM 3 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.00
10:54:42 PM 4 14.15 0.00 1.89 0.00 0.00 0.00 0.00 0.00 83.96
10:54:42 PM 5 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.00
10:54:42 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10:54:42 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
이 명령은 원래 질문에 대답하지 않습니다. 즉, 특정 프로세스에 대한 CPU 코어 사용량을 표시하지 않습니다.
사용할 수 있습니다 ps
.
예 : 듀얼 코어 CPU에서 두 개의 사용중인 스레드가있는 파이썬 프로세스 :
$ ps -p 29492 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
29492 29492 1 0.0
29492 29493 1 48.7
29492 29494 1 51.9
(PSR은 스레드가 현재 할당 된 CPU ID입니다.)
스레드가 동일한 CPU 코어에서 실행되고 있음을 알 수 있습니다 (GIL 때문에).
자이 썬에서 동일한 파이썬 스크립트를 실행하면 스크립트가 두 코어를 모두 사용하고 있음을 알 수 있습니다 (그리고 거의 유휴 상태 인 다른 많은 서비스 또는 스레드가 있음).
$ ps -p 28671 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
28671 28671 1 0.0
28671 28672 0 4.4
28671 28673 0 0.6
28671 28674 0 0.5
28671 28675 0 2.3
28671 28676 0 0.0
28671 28677 1 0.0
28671 28678 1 0.0
28671 28679 0 4.6
28671 28680 0 4.4
28671 28681 1 0.0
28671 28682 1 0.0
28671 28721 1 0.0
28671 28729 0 88.6
28671 28730 1 88.5
출력을 처리하고 각 CPU 코어의 총 CPU를 계산할 수 있습니다.
안타깝게도이 접근 방식은 100 % 신뢰할 수없는 것 같습니다. 때로는 첫 번째 경우 두 작업 스레드가 각 CPU 코어로 분리 된 것으로보고되거나 후자의 경우 두 스레드가 켜져있는 것으로보고됩니다. 같은 코어 ..
ps
솔루션은 내가 필요했던 거의 무엇을 원래의 질문을 요청 정확히 무엇을 던져 일부 bash는 함께 : 코어 당 특정 프로세스의 사용보고
이것은 멀티 스레드 프로세스 의 코어 당 사용량도 보여줍니다 .
다음과 같이 사용하십시오. cpustat`pgrep processname``pgrep otherprocessname` ...
#!/bin/bash
pids=()
while [ $# != 0 ]; do
pids=("${pids[@]}" "$1")
shift
done
if [ -z "${pids[0]}" ]; then
echo "Usage: $0 <pid1> [pid2] ..."
exit 1
fi
for pid in "${pids[@]}"; do
if [ ! -e /proc/$pid ]; then
echo "Error: pid $pid doesn't exist"
exit 1
fi
done
while [ true ]; do
echo -e "\033[H\033[J"
for pid in "${pids[@]}"; do
ps -p $pid -L -o pid,tid,psr,pcpu,comm=
done
sleep 1
done
참고 : 이러한 통계는 마지막 X 초가 아닌 프로세스 수명을 기반으로 하므로 카운터를 재설정하려면 프로세스를 다시 시작해야합니다.
이 문제가 있었는데 여기서 비슷한 답을 찾았 습니다 .
방법은 top
원하는 방식 으로 설정 한 다음 W
(대문자 W) 를 누르는 것 입니다. 이것은 top
의 현재 레이아웃을 $ HOME / .toprc의 구성 파일에 저장합니다.
top
다른 구성으로 여러 개의을 실행하려는 경우 작동하지 않을 수 있습니다.
따라서 내가 생각하는 작업을 통해 다음 중 하나를 수행하여 다른 구성 파일에 쓰기 / 다른 구성 파일을 사용할 수 있습니다.
1) 바이너리 이름 바꾸기
ln -s /usr/bin/top top2
./top2
이제 .top2rc
$ HOME에 기록됩니다.
2) $ HOME / .binary-name.rc 파일에 구성 파일을 기록하므로 $ HOME을 다른 경로로 설정하십시오.
HOME=./
top
이제 .toprc
현재 폴더에 기록됩니다.
다른 사람들의 주석을 사용하여 다양한 사용량 계정을 맨 위에 추가하면 해당 정보에 대한 배치 출력을 만들 수 있으며 후자는 스크립트를 통해 정보를 통합합니다. 스크립트만큼 간단하지는 않지만 나중에 놓쳤을 수도있는 상태를 나중에 요약하고 캡처 할 수 있도록 모든 프로세스를 제공하기 위해 top을 찾았습니다.
나는 perf stat
당신이 필요 하다고 생각했습니다 .
--cpu=list
옵션 을 지정할 때 프로세스의 특정 사용법을 보여줍니다 . 다음은 perf stat --cpu=0-7 --no-aggr -- make all -j
명령을 사용하여 프로젝트를 빌드하는 CPU 사용량을 모니터링하는 예입니다 . 출력은 다음과 같습니다.
CPU0 119254.719293 task-clock (msec) # 1.000 CPUs utilized (100.00%)
CPU1 119254.724776 task-clock (msec) # 1.000 CPUs utilized (100.00%)
CPU2 119254.724179 task-clock (msec) # 1.000 CPUs utilized (100.00%)
CPU3 119254.720833 task-clock (msec) # 1.000 CPUs utilized (100.00%)
CPU4 119254.714109 task-clock (msec) # 1.000 CPUs utilized (100.00%)
CPU5 119254.727721 task-clock (msec) # 1.000 CPUs utilized (100.00%)
CPU6 119254.723447 task-clock (msec) # 1.000 CPUs utilized (100.00%)
CPU7 119254.722418 task-clock (msec) # 1.000 CPUs utilized (100.00%)
CPU0 8,108 context-switches # 0.068 K/sec (100.00%)
CPU1 26,494 context-switches (100.00%)
CPU2 10,193 context-switches (100.00%)
CPU3 12,298 context-switches (100.00%)
CPU4 16,179 context-switches (100.00%)
CPU5 57,389 context-switches (100.00%)
CPU6 8,485 context-switches (100.00%)
CPU7 10,845 context-switches (100.00%)
CPU0 167 cpu-migrations # 0.001 K/sec (100.00%)
CPU1 80 cpu-migrations (100.00%)
CPU2 165 cpu-migrations (100.00%)
CPU3 139 cpu-migrations (100.00%)
CPU4 136 cpu-migrations (100.00%)
CPU5 175 cpu-migrations (100.00%)
CPU6 256 cpu-migrations (100.00%)
CPU7 195 cpu-migrations (100.00%)
왼쪽 열은 특정 CPU 인덱스이고 가장 오른쪽 열은 CPU 사용량입니다. --no-aggr
옵션을 지정하지 않으면 결과가 함께 집계됩니다. 이 --pid=pid
옵션은 실행중인 프로세스를 모니터링하려는 경우 도움이됩니다.
더 많은 기밀 정보를 제공하는 -a --per-core
또는 -a perf-socket
너무 시도 하십시오.
의 사용법에 대한 자세한 내용 perf stat
은이 자습서에서 볼 수 있습니다. perf cpu statisticperf help stat
은 옵션의 의미 에도 도움이됩니다.
I
를 눌러 Irix 모드 로 전환 할 수도 있습니다 ( Solaris 모드 와 반대 ). 때on
비율이 프로세스 목록에 표시하는을 기준으로 CPU 스레드 . 때off
(가) 비율이 상대적으로 표시되는 것을 특징으로, CPU 전체 용량 (즉, 모든 스레드 - 일명 모든 코어).