명령줄에서 "시간"을 사용할 때 "시스템 시간"이란 무엇입니까?

명령줄에서 "시간"을 사용할 때 "시스템 시간"이란 무엇입니까?

저는 Ubuntu 14.04의 표준 터미널에서 스크립트 타이밍을 맞추는 데 익숙합니다 time.Perl

나는 가지고있다읽다그것은 real time스톱워치 시간입니다. 저는 사용자로서 프로그램이 시작될 때부터 프로그램이 종료될 때까지 실행되는 시간을 살펴봅니다. 그러나 나는 무엇 user을 언제 이해하지 못합니다 sys. time맨 페이지는 아무리 말해도 모호합니다.

real시대는 서로 다르지만 user그것이 무엇 sys을 나타내는지는 명확하지 않습니다.

내 스크립트에서는 차이점을 확인하기 위해 C++와 Perl[1]을 벤치마킹하고 있으며 실제로 어떤 데이터를 얻고 있는지 알고 싶습니다. 예제 출력은 다음과 같습니다.

real    0m24.198s
user    0m23.120s
sys     0m1.030s

기본 시간 형식이 사용자에게 무엇을 알려주는지 자세히 설명해 주실 수 있나요? 저는 Linux를 처음 접했으므로 너무 많은 가정을 하지 마십시오.

real[1] 흥미롭게도 내 벤치마크에서 C++는 시간 측면에서 Perl보다 훨씬 빠르지만 sys시간 차이는 크지 않으며 C++는 실제로 sysPerl보다 더 많은 시간을 사용합니다. 그래서 나는 그들이 무엇을 의미하는지 알고 싶습니다.

답변1

~에서위키피디아:

  • 사용자 시간 및 시스템 시간

"사용자 CPU 시간"이라는 용어는 처음에는 약간 오해의 소지가 있을 수 있습니다. 명확히 말하면, 총 CPU 시간은 CPU가 프로그램을 위해 어떤 작업을 수행하는 데 소비한 시간과 CPU가 프로그램을 대신하여 커널에 대한 시스템 호출을 수행하는 데 소비한 시간의 조합입니다. 프로그램이 배열을 반복하면서 사용자 CPU 시간이 누적됩니다. 반면, 프로그램이 exec나 fork와 같은 시스템 호출을 수행하면 시스템 CPU 시간이 누적됩니다.

  • 실시간 대 CPU 시간

이 문서에서 "실시간"이라는 용어는 스톱워치를 사용하는 것과 마찬가지로 경과된 "벽시계" 시간을 의미합니다. 총 CPU 시간(사용자 시간 + 시스템 시간)은 이 값보다 크거나 작을 수 있습니다. 프로그램이 대기하는 데 시간이 걸리고 전혀 실행되지 않을 수 있으므로(사용자 모드 또는 시스템 모드에서) 실제 시간은 총 CPU 시간보다 길 수 있습니다. 프로그램은 CPU 시간(사용자 및 시스템)이 time 명령으로 보고된 값에 추가되는 하위 프로세스를 생성할 수 있으므로 총 CPU 시간이 실제 시간보다 클 수 있습니다.

관련 정보