Shell built-in time
We often use time command to measure the executing time of a program. It will print program's real, user and sys time respectively.
However, our commonly used 'time' is just a shell (bash, zsh) built-in command (same kind as 'cd', 'pwd' and etc). In some use cases, information it delivers is too few to satisfy our needs.
$ time tar zcf linux-stable.tar.gz linux-stable
real 2m39.398s
user 2m32.908s
sys 0m11.556s
GNU time
Here, we will turn to another rarely used, but quite useful time command - GNU time. This command is usually located under /usr/bin in most Linux distributions. Other than what shell built-in 'time' can show, GNU time prints more verbose system information like CPU usage, page fault, context switch and etc.
#=> show GNU time version
$ /usr/bin/time --version
GNU time 1.7
#=> print in shell built-in time sytle
$ /usr/bin/time -p tar zcf linux-stable.tar.gz linux-stable
real 169.08
user 158.96
sys 12.19
#=> print verbosely
$ /usr/bin/time -v tar zcf linux-stable.tar.gz linux-stable
Command being timed: "tar zcf linux-stable.tar.gz linux-stable"
User time (seconds): 155.18
System time (seconds): 11.18
Percent of CPU this job got: 103%
Elapsed (wall clock) time (h:mm:ss or m:ss): 2:41.20
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): 5088
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 790
Voluntary context switches: 109556
Involuntary context switches: 26354
Swaps: 0
File system inputs: 3932480
File system outputs: 2333728
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0