실시간 비디오 인코딩을 위한 vlc 프로세스를 갖춘 서버가 있습니다.
다음은 (프로세서 표시) 및 (스레드 표시) top
의 출력입니다.1
H
top - 15:50:26 up 42 min, 1 user, load average: 2.64, 2.60, 2.45
Tasks: 130 total, 7 running, 123 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.3%sy, 72.2%ni, 26.8%id, 0.0%wa, 0.0%hi, 0.7%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 56.0%ni, 44.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 2.6%us, 0.0%sy, 9.4%ni, 87.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.3%st
Cpu3 : 0.0%us, 0.0%sy, 35.9%ni, 64.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 35.0%ni, 65.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 2.6%us, 0.0%sy, 0.0%ni, 97.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 0.0%us, 0.6%sy, 18.0%ni, 81.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 4.9%us, 0.0%sy, 0.0%ni, 95.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 533064k total, 233000k used, 300064k free, 4832k buffers
Swap: 2097144k total, 0k used, 2097144k free, 40516k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5841 videoenc 20 0 674m 119m 8228 R 8.0 22.9 2:32.50 vlc
5840 videoenc 20 0 674m 119m 8228 S 4.7 22.9 1:49.53 vlc
5843 videoenc 20 0 674m 119m 8228 R 4.7 22.9 1:45.36 vlc
22787 videoenc 30 10 674m 119m 8228 R 4.7 22.9 0:00.14 vlc
22788 videoenc 30 10 674m 119m 8228 S 2.0 22.9 0:00.06 vlc
22789 videoenc 30 10 674m 119m 8228 R 1.3 22.9 0:00.04 vlc
5838 videoenc 20 0 674m 119m 8228 S 0.7 22.9 0:08.14 vlc
22790 videoenc 30 10 674m 119m 8228 S 0.7 22.9 0:00.02 vlc
22791 videoenc 30 10 674m 119m 8228 S 0.7 22.9 0:00.02 vlc
top
다음은 ( 1
및 제외 H
) 의 결합된 출력입니다 .
top - 16:01:09 up 52 min, 1 user, load average: 3.88, 3.74, 3.10
Tasks: 110 total, 1 running, 109 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.2%us, 0.1%sy, 35.2%ni, 63.2%id, 0.1%wa, 0.0%hi, 0.0%si, 0.1%st
Mem: 533064k total, 234136k used, 298928k free, 5208k buffers
Swap: 2097144k total, 0k used, 2097144k free, 40992k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5825 videoenc 20 0 674m 119m 8228 S 305 22.9 98:59.58 vlc
1 root 20 0 10328 736 616 S 0 0.1 0:00.08 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0
5 root 15 -5 0 0 0 S 0 0.0 0:00.04 events/0
6 root 15 -5 0 0 0 S 0 0.0 0:00.00 khelper
8 root 15 -5 0 0 0 S 0 0.0 0:00.00 xenbus
10 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/1
11 root 15 -5 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1
12 root 15 -5 0 0 0 S 0 0.0 0:00.02 events/1
13 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/2
14 root 15 -5 0 0 0 S 0 0.0 0:00.00 ksoftirqd/2
15 root 15 -5 0 0 0 S 0 0.0 0:00.02 events/2
16 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/3
17 root 15 -5 0 0 0 S 0 0.0 0:00.00 ksoftirqd/3
질문은 다음과 같습니다.
모든 %CPU의 합이 %ni의 합과 같지 않은 이유는 무엇입니까? VLC가 없이 실행될 때 왜 '좋은' 로드를 생성합니까?renice
답변1
VLC의 스레드 중 하나 또는 인코딩에 사용하는 라이브러리 중 하나는 아마도 setpriority()를 사용하여 생성된 스레드의 우선 순위/좋음을 변경하고 있을 것입니다.
답변2
CPU %를 단일 CPU의 백분율로 표시하는 Irix 모드에서 TOP를 실행 중입니다. "I"를 눌러 CPU %를 모든 CPU의 백분율로 표시하는 Solaris 모드로 전환합니다.
답변3
매뉴얼 페이지에서 :
CPU 상태 CPU 상태는 요약 영역에 표시됩니다. 항상 백분율로 표시되며 지금부터 마지막 새로 고침까지의 시간을 나타냅니다.
us - 사용자 CPU 시간
CPU가 좋지 않은 사용자 프로세스를 실행하는 데 소비한 시간입니다.
ni - Nice CPU 시간
CPU가 nice된 사용자 프로세스를 실행하는 데 소비한 시간입니다.%CPU는 전부이고 ni는 단지 좋은 rtime입니다.