I / O와 CPU를 기록하는`time`과 같은 것이 있습니까?


18

프로세스의 실행 시간을 꽤 빠르게 모니터링 할 수 있습니다 time.

x@y ~ $ time foo

real        0m14.299s
user        0m4.770s
sys         0m0.440s

STDOUT에 기록 된 인수의 I / O 및 CPU 사용량에 대해 동일한 데이터를 얻을 수있는 방법이 있습니까? 간단한 명령이나 유틸리티 time가 이상적입니다. 여기서 실행하려는 항목의 인수를 전달합니다.

x@y ~ $ stats foo

wallclock runtime     0m14.299s
I/O reads             290,420 KB
I/O writes            239,429 KB
peak CPU usage        18.62%
mean CPU usage        1.44%
# etc.

답변:


25

시스템의 시간 매뉴얼 페이지를 보면 일부 구현에는 I / O, CPU 및 메모리 통계 (-f)를 포함하는 형식 옵션이 있습니다.

예를 들어 GNU time와 함께 -v사용 가능한 모든 정보 (여기서는 Linux)가 표시됩니다.

/usr/bin/time -v ls

Command being timed: "ls"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 3664
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 273
Voluntary context switches: 2
Involuntary context switches: 2
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0

BSDs사용 -l하는 대신.

이것은 실제 /usr/bin/time프로그램이며 일부 쉘에서 bash제공하는 키워드는 사용자가 호출 하는 키워드가 아닙니다 time pipeline.


4
zshtime키워드를 (로 $TIMEFMT) 구성 하여 해당 정보를 제공 할 수도 있습니다 .
Stéphane Chazelas

1
이것이 바로 내가 원하는 것입니다. 완전한! 또한이 게시물의 편집자에게 납치 command time -v ...이후 로 실행해야한다고 설명해 주셔서 감사합니다 . bashtime
John Feminella

4

이 명령 strace은 유용 할 수 있습니다. 추적 -c은 시스템 호출의 수 또는 하위 집합으로 만 제한 할 수 있습니다 .

-e trace=set
      Trace  only  the  specified set of system calls.  The -c option is
      useful for determining which  system  calls  might  be  useful  to
      trace.   For  example,  trace=open,close,read,write  means to only
      trace those four system calls.  Be careful when making  inferences
      about  the  user/kernel  boundary if only a subset of system calls
      are being monitored.  The default is trace=all.

답변 에서는 시스템 호출 수를 계산하는 데 사용합니다. 어떤 것이 당신에게 처리량에 대한 요약 분석을 줄지 모르겠지만, strace는 awk요약 할만한 수치를 산출 할 수 있습니다 .


strace다른 시스템 호출의 상대 시간을 측정하는 것이 유용하지만 범용 타이머로는 사용하지 않을 것입니다. perf샘플링 주파수 옵션을 사용하면 훨씬 빠르거나 덜 침입 적입니다.
Marcin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.