이름을 기반으로 추측 할 수 있지만 UNIX의 벽 시계 시간, 사용자 CPU 시간 및 시스템 CPU 시간은 무엇입니까?
user-cpu 시간은 사용자 코드를 실행하는 데 걸리는 시간입니까? 커널 cpu 시간은 특권 작업 (예 : IO to disk)이 필요하기 때문에 커널에서 보낸 시간입니까?
이 측정 시간은 몇 시간입니까?
그리고 벽시계 시간은 실제로 프로세스가 CPU에 소비 한 시간 (초)입니까, 아니면 이름이 오해의 소지가 있습니까?
이름을 기반으로 추측 할 수 있지만 UNIX의 벽 시계 시간, 사용자 CPU 시간 및 시스템 CPU 시간은 무엇입니까?
user-cpu 시간은 사용자 코드를 실행하는 데 걸리는 시간입니까? 커널 cpu 시간은 특권 작업 (예 : IO to disk)이 필요하기 때문에 커널에서 보낸 시간입니까?
이 측정 시간은 몇 시간입니까?
그리고 벽시계 시간은 실제로 프로세스가 CPU에 소비 한 시간 (초)입니까, 아니면 이름이 오해의 소지가 있습니까?
답변:
벽시계 시간은 벽의 시계 (또는 스톱워치)가 프로세스 시작과 '지금'사이에 경과 한 것으로 측정하는 시간입니다.
사용자 CPU 시간과 시스템 CPU 시간은 사용자 코드에서 보낸 시간과 커널 코드에서 보낸 시간의 양과 거의 같습니다.
단위는 초 (마이크로 초 또는 나노초 일 수있는 1 초)입니다.
벽시계 시간은 프로세스가 CPU에서 소비 한 시간 (초)이 아닙니다. CPU의 전원 켜기를 기다리는 데 소요 된 시간 (다른 프로세스가 실행되는 동안)을 포함하여 경과 시간입니다.
CPUtime = #clock_cycles / clock_rate을 계산하는 것은 경과 시간을 계산하는 것과 같을 수 없습니다. CPU 시간에서 경과 시간을 얻을 수 있는지 알고 있습니까?
read()또는 getpid())을 수행하면 커널은 프로그램 대신 코드를 실행합니다. 커널은 또한 선점 형 멀티 태스킹을 처리하여 다른 프로그램이 차례대로 실행되도록하고 일반적인 하우스 키핑 작업을 수행하여 시스템을 원활하게 실행합니다. 이 코드는 '커널 코드'( '커널 모드')에서 실행됩니다. 이것은 작성한 코드 및 실행 한 사용자 라이브러리 (시스템 C 라이브러리 포함)와 다릅니다.
벽시계 시간 : 컴퓨터의 내부 시계에 따라 경과 한 시간으로 외부 세계의 시간과 일치해야합니다. 이것은 CPU 사용량과 아무 관련이 없습니다. 참고로 제공됩니다.
사용자 CPU 시간과 시스템 시간 : 정확히 당신이 생각하는 것. I을 포함 시스템 호출, / O는 다음과 같은 호출 read, write커널 코드와 그것을 실행에 점프에 의해 실행되는 등.
벽시계 시간 <CPU 시간이면 프로그램을 병렬로 실행하는 것입니다. 벽시계 시간> CPU 시간이면 디스크, 네트워크 또는 기타 장치를 기다리는 것입니다.
모든 것은 SI 당 초 단위로 측정됩니다 .
time [WHAT-EVER-COMMAND]
real 7m2.444s
user 76m14.607s
sys 2m29.432s
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 24
실제 또는 벽시계
실제 7m2.444s
24 코어 프로세서가있는 시스템에서이 cmd / process는 완료하는 데 7 분 이상이 걸렸습니다. 그것은 주어진 모든 코어와 가장 가능한 병렬 처리를 활용함으로써 가능합니다.
사용자
사용자 76m14.607s
cmd / process는이 많은 양의 CPU 시간을 활용했습니다. 다시 말해, 단일 코어 CPU가 장착 된 시스템에서 실제 사용자와 사용자는 거의 동일하므로 동일한 명령을 완료하는 데 ~ 76 분이 소요됩니다.
sys
시스템 2m29.432s
컨텍스트 전환, 리소스 할당 등을 포함하여이 cmd를 실행하기 위해 커널이 모든 기본 / 시스템 레벨 작업을 실행하는 데 걸리는 시간입니다.
참고 :이 예에서는 명령이 병렬 처리 / 스레드를 사용한다고 가정합니다.
자세한 매뉴얼 페이지 : https://linux.die.net/man/1/time
(user + sys) / real그것을 표현하고 있습니다.