CPU 시간과 CPU 사용량은 어떻게 동일합니까?


23

에 대한 위키 백과 페이지에서 CPU 시간 , 그것은 말한다

CPU 시간은 클럭 틱 또는 초 단위로 측정됩니다. 종종 CPU 시간을 CPU 용량의 백분율 (CPU 사용량이라고 함)로 측정하는 것이 유용합니다.

지속 시간을 백분율로 대체하는 방법을 이해하지 못합니다. 내가 볼 때 top,하지 않는 %CPU것을 말해 MATLAB내 코어의 2.17를 사용?

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
18118 jasl      20   0 9248400 261528  78676 S 217.2  0.1   8:14.75 MATLAB      

의문

CPU 사용량을 더 잘 이해하려면 CPU 사용량을 어떻게 직접 계산합니까?


'1'을 누르면서 코어마다 더 세분성을 모으기 위해 '상단'이 열려 있습니다.
피터

그게 넘버원 ( 1)입니다.
Michael Hampton

리눅스가이 명령 줄 요청으로 각 프로세서가 얼마나 바쁜지 보여줍니다. mpstat -P ALL 5 3 멀티 프로세서 상태 5 초 3 간격으로 들어갑니다. 코어 수로보고 된 % CPU를 나누어 평균 CPU Busy %를 얻습니다. iostat -xm 5 3 enter는 사용 가능한 코어 / CPU 수를 알려줍니다.
Wilson Hauck

답변:


32

CPU 시간은 이산 시간 조각 (틱)으로 할당됩니다 . 특정 수의 시간 조각에 대해 CPU는 사용 중이고 다른 시간에는 사용하지 않습니다 (유휴 프로세스로 표시됨). 아래 그림에서 CPU는 10 개의 CPU 슬라이스 중 6 개를 사용 중입니다. 6/10 = .60 = 통화 중 시간의 60 % (따라서 유휴 시간 40 %)

여기에 이미지 설명을 입력하십시오

비율 "숫자 또는 100 개로 분할 어떤 부분의 특정 숫자로 표현 율"로 정의된다. 따라서이 경우 해당 부분은 이산 시간 조각이며 무언가는 사용중인 시간 조각 대 유휴 시간 조각입니다.

CPU가 GHz로 작동하기 때문에 (초당 수십억 사이클). 운영 체제는 그 시간을 틱이라고하는 더 작은 단위로 슬라이스합니다. 그들은 실제로 1/10 초가 아닙니다. 윈도우의 틱 비율은 1 초에 천만 틱 이며 Linux에서는 sysconf(_SC_CLK_TCK)(보통 초당 100 틱)입니다.

이와 같이 사용 top중인 CPU주기는 사용자 시간 및 시스템 시간과 같은 비율로 세분화됩니다. 에서 top리눅스 및 Windows에서 성능 모니터, 당신은 종종 합계가 100 % * the_number_of_cpu_cores 때문에 100 %를 넘어 디스플레이를 얻을 것이다.

운영 체제에서는 이러한 소중한 슬라이스를 프로세스에 할당 하는 것이 스케줄러의 작업이므로 스케줄러가이를보고합니다.


1
시간 조각은 10 억분의 1 초로 측정되지 않습니다. 그들은 그렇게 짧지 않습니다. 그것들은 0.1ms와 10ms 사이 일 가능성이 높습니다. API에서 시간 값의 해상도는 타이머 인터럽트 속도와 다릅니다. Linux의 일부 API 호출에는 시간이 나노초로 지정되어 있지만 타이머 인터럽트를 자주 원하지 않습니다. 초당 백만 번의 인터럽트가 발생한 경우 모든 CPU 시간을 컨텍스트 스위치에 소비합니다.
kasperd

2
당신은 1000 틱을 의미합니까? 모든 Linux 시스템은 1000 틱 (EL5 및 EL6)이거나 1000 틱 + 틱리스 (EL7)입니다. 아니면 다른 의미가 있습니까?
Michael Hampton

1
매뉴얼 페이지에 "해당 변수는 더 이상 사용되지 않습니다."라고 표시되어 있습니다. 나는 그것이 신뢰할 수 있다고 생각하지 않습니다. /boot/config-2.6.32에서 커널 구성을 확인했습니다. 이번 달에 무엇이든 ...
Michael Hampton

1
아하, 그들은 동일하게보고되지 않았습니다. CLK_TCK는 사용자 공간에 대해 명시 적으로 조정 된 값이며 커널이 실제로 사용하는 틱 수에 관계없이 항상 100입니다. SO (에 좋은의 설명을 찾을 수 1 , 2 )
마이클 햄프 턴

2
또한 API 호출이 참조하는 Windows "틱"은 Windows 타이머 인터럽트 주파수 와 같지 않으므로 실제로 비교할 수는 없습니다.
Michael Hampton

15

CPU 시간은 프로세스가 CPU를 사용하는 시간입니다. CPU를 백분율로 변환하는 것은 통과 한 실시간 양으로 나누어 수행됩니다.

따라서 2 초 동안 1 초의 CPU 시간을 사용하는 프로세스가 있으면 CPU의 50 %를 사용합니다.

MATLAB 프로세스의 경우 217 %는 마지막 샘플 간격에서 초당 2.17 초의 CPU 시간을 사용했음을 나타냅니다. 효과적으로 2 개의 CPU 코어를 독점하고 1/3을 차지합니다.


5
또는 CPU 8 개 중 25 %를 사용하고 아홉 번째 부분을 사용하고있을 수 있습니다.
밥 자비스-복직 모니카
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.