[comp.unix.questions] time command output

drich@klaatu.lanl.gov (David Rich) (01/29/90)

What do the numbers mean in the output of the (csh) time
command? The documentation simply says that you get user,
system and elapsed time (along with a "utilization" percentage).
How do these numbers relate to each other (typically, user and
system don't add up to elapsed)? What are the other numbers?
pf=page faults? io?

In general, what do these numbers say about a particular
application?

e.g., 52.7u 15.4s 1:59 56% 0+3092k 33+0io 102pf+0w

Dave
--
David Rich
Military Systems Analysis Group (A-5)
MS F602
Los Alamos National Laboratory
Los Alamos, NM 87545

Phone: (505) 665-0726
Email: dor@lanl.gov

jik@athena.mit.edu (Jonathan I. Kamens) (02/02/90)

In article <DRICH.90Jan29082947@klaatu.lanl.gov>, drich@klaatu.lanl.gov
(David Rich) writes:
> What do the numbers mean in the output of the (csh) time
> command? The documentation simply says that you get user,
> system and elapsed time (along with a "utilization" percentage).
> How do these numbers relate to each other (typically, user and
> system don't add up to elapsed)? What are the other numbers?
> pf=page faults? io?

A message I've saved up from a while back:

Subject: csh "time" fields
From: dvk@sei.cmu.edu (Daniel Klein)
Newsgroups: net.unix
Subject: csh "time" fields
Date: 17 Oct 86 16:35:27 GMT
Date-Received: 18 Oct 86 05:04:12 GMT
Sender: netnews@sei.cmu.edu
Organization: Carnegie-Mellon University, SEI, Pgh, Pa
Lines: 58
Keywords: csh, time, undocumented features

Experienced people, read this too.  It may prove interesting!  A description
of an undocumented 'csh' feature follows, along with a description of the
fields in the 'csh' time command.

The first field is user CPU time, in seconds.
The second field is system CPU time, in seconds.
The third field is elapsed time, in minute:seconds.
The fourth field is the ratio of CPU time/elapsed time.
The fifth field is the measure of memory usage (text size+data size), in
    KBytes of memory (this is ru_ixrss and ru_idrss from <sys/resource.h>)
The sixth field is a measure of I/O activity (input+output), in "blocks"
    (this is ru_inblock and ru_oublock, respectively)
The seventh field is the number of hard page faults you generated and the
    number of swap outs of your process (ru_majflt and ru_nswap respectively)


Now for the undocumented feature!  It turns out that the "time" command
prints out the times via a printf-like string, which by default is the string
"%Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww" (I'll explain the fields in a second).
According to the 'csh' man page, you can set the shell variable "time" to be
a number, and if any command takes longer than that many seconds, it will
print the times fields as above.  What is undocumented is that you can have a
second field to the "time" variable, which is the format string to use.  So
if you just wanted to print the user and system times, and the text and data
sizes of your image (and nothing else), you could tell the shell:

        set time = (5 "%Uu %Ss %X+%Dk")

This would print the required fields if the command ran longer than 5 seconds.

Now, what do all the fields (there are more) stand for?

        %U      user cpu time
        %S      system cpu time
        %E      elapsed (wall clock) time
        %P      percentage utilization (cpu_time/elapsed_time)
        %X      text_size/cpu_second (ru_ixrss/cpu_time)
        %D      data_size/cpu_second ((ru_idrss+ru_isrss)/cpu_time)
        %K      image_size/cpu_second ((ru_ixrss+ru_idrss+ru_isrss)/cpu_time)
        %M      maximum image size (ru_maxrss/2  -- I don't know why /2)
        %I      number of input blocks (ru_inblock)
        %O      number of output blocks (ru_oublock)
        %F      number of hard page faults (ru_majflt)
        %R      number of page reclaims (ru_minflt)
        %W      number of swap-outs (ru_nswap)

The values for %X, %D, and %K are pretty useless, since they often have
values of 0 (all of the resource size variables are generally monotonically
increasing, and I think the attempt was made to give a value akin to
kilo-core seconds, but it doesn't work well for anything by I/O bound jobs,
since it uses integer division!).  Hope all this helps.
--
==-------------==-------------==-------------==-------------==-------------==
Daniel V. Klein, who recently gave up a lucrative job as a freelance consultant
to go work for the warmongering SEI, and is, frankly, enjoying himself.

                ARPA:   dvk@sei.cmu.edu
                USENET: ucbvax!dvk@sei          (questionable link)

Jonathan Kamens			              USnail:
MIT Project Athena				11 Ashford Terrace
jik@Athena.MIT.EDU				Allston, MA  02134
Office: 617-253-8495			      Home: 617-782-0710