Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We are running computing jobs with GridEngine. Every jobs returns 3 different times:

  • Wall clock time
  • User time
  • CPU time

What are the differences between these three? Which of these three is most suitable to compare the performance of two applications/scripts

share|improve this question
up vote 8 down vote accepted

Wall clock time is the actual amount of time taken to perform a job. This is equivalent to timing your job with a stopwatch and the measured time to complete your task can be affected by anything else that the system happens to be doing at the time.

User time measures the amount of time the CPU spent running your code. This does not count anything else that might be running, and also does not count CPU time spent in the kernel (such as for file I/O).

CPU time measures the total amount of time the CPU spent running your code or anything requested by your code. This includes kernel time.

The "User time" measurement is probably the most appropriate for measuring the performance of different jobs, since it will be least affected by other things happening on the system.

share|improve this answer
    
Typo? "can be affected" should be negative "cannot be affected" in the first paragraph? – Basil Bourque Mar 13 at 17:31
    
@BasilBourque: Thanks, I've clarified that sentence. – Greg Hewgill Mar 13 at 17:34
    
Whoa, fast response! Please reject my pending edit. – Basil Bourque Mar 13 at 17:35

From Wikipedia:

The term 'user CPU time' can be a bit misleading at first. To be clear the total time (real CPU time), is the combination of the amount of time the CPU spends performing some action for a program and the amount of time the CPU spends performing system calls for the kernel on the program's behalf. When a program loops through an array, it is accumulating user CPU time. Conversely, when a program executes a system call such as exec or fork, it is accumulating system CPU time

Wall clock time is the actual time taken by a computer to complete a task. It is the sum of three terms: CPU time, I/O time, and the communication channel delay (e.g. if data are scattered on multiple machines). In contrast to CPU time, which measures only the time during which the processor is actively working on a certain task, wall time measures the total time for the process to complete. The difference between the two consists of time that passes due to programmed delays or waiting for resources to become available.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.