저는 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++는 실제로 sys
Perl보다 더 많은 시간을 사용합니다. 그래서 나는 그들이 무엇을 의미하는지 알고 싶습니다.
답변1
~에서위키피디아:
- 사용자 시간 및 시스템 시간
"사용자 CPU 시간"이라는 용어는 처음에는 약간 오해의 소지가 있을 수 있습니다. 명확히 말하면, 총 CPU 시간은 CPU가 프로그램을 위해 어떤 작업을 수행하는 데 소비한 시간과 CPU가 프로그램을 대신하여 커널에 대한 시스템 호출을 수행하는 데 소비한 시간의 조합입니다. 프로그램이 배열을 반복하면서 사용자 CPU 시간이 누적됩니다. 반면, 프로그램이 exec나 fork와 같은 시스템 호출을 수행하면 시스템 CPU 시간이 누적됩니다.
- 실시간 대 CPU 시간
이 문서에서 "실시간"이라는 용어는 스톱워치를 사용하는 것과 마찬가지로 경과된 "벽시계" 시간을 의미합니다. 총 CPU 시간(사용자 시간 + 시스템 시간)은 이 값보다 크거나 작을 수 있습니다. 프로그램이 대기하는 데 시간이 걸리고 전혀 실행되지 않을 수 있으므로(사용자 모드 또는 시스템 모드에서) 실제 시간은 총 CPU 시간보다 길 수 있습니다. 프로그램은 CPU 시간(사용자 및 시스템)이 time 명령으로 보고된 값에 추가되는 하위 프로세스를 생성할 수 있으므로 총 CPU 시간이 실제 시간보다 클 수 있습니다.