Integrasi Komputer    
   
Daftar Isi
(Sebelumnya) CPU socketCPython (Berikutnya)

CPU time

CPU Time on Single CPU Multi Tasking System
  CPU color time for program P1

CPU time (or CPU usage, process time) is the amount of time for which a central processing unit (CPU) was used for processing instructions of a computer program, as opposed to, for example, waiting for input/output (I/O) operations.

The CPU time is often measured in clock ticks or seconds. CPU time is also mentioned as percentage of the CPU's capacity at any given time on multi-tasking environment. That helps in figuring out how a CPU’s computational power is being shared among multiple computer programs.

In contrast, elapsed real time (or simply real time, or wall clock time) is the time taken from the start of a computer program until the end as measured by an ordinary clock. Elapsed real time includes I/O time and all other types of waits incurred by the program.

Contents

Unix commands for CPU time

top's display of the CPU time of various processes on a Unix-like (GNU/Linux) system

Unix command top

The Unix command top provides CPU time, priority, elapsed real time, and other information for all processes and updates it in real time.

Unix command time

The Unix command time prints CPU time and elapsed real time for a Unix process.

% time nextPrimeNumber 30000007Prime number greater than 30000007 is 300000230.327u 0.010s 0:01.15 28.6% 0+0k 0+0io 0pf+0w

This process took a total of 0.337 seconds of CPU time, out of which 0.327 seconds was spent in user space, and the final 0.010 seconds in kernel mode on behalf of the process. Elapsed real time was 1.15 seconds.

The following is the source code of the application nextPrimeNumber which was used in the above example.

#include <stdio.h>#include <stdlib.h> int isPrimeNumber(unsigned long int n){  int i;  for(i=2; i<=(n>>1); i++) if(n%i==0) return 0;  return 1;} int main(int argc, char *argv[]){  unsigned long int argument = strtoul(argv[1], NULL, 10), n = argument;  while(!isPrimeNumber(++n));   printf("Prime number greater than %d is %d\n", argument, n);  return 0;}

POSIX functions clock() and getrusage()

POSIX functions clock() and getrusage() can be used to get CPU time consumed by any process in a POSIX environment. If the process is multithreaded, the CPU time is the sum for all threads.

Total CPU time

On multi-processor machines, a computer program can use two or more CPUs for processing using parallel processing scheduling. In such situations, the notion of total CPU time is used, which is the sum of CPU time consumed by all of the CPUs utilized by the computer program.

CPU time and elapsed real time

Elapsed real time is always same or more than CPU time for computer program which use only one CPU for processing. If no wait is involved for I/O or other resources, elapsed real time and CPU time are very similar.

CPU time and elapsed real time for parallel processing technology

If a program uses parallel processing, total CPU time for that program would be more than its elapsed real time. (Total CPU time)/(Number of CPUs) would be same as elapsed real time if work load is evenly distributed on each CPU and no wait is involved for I/O or other resources.

Example: A software application executed on a Hexa-core processor creates three Unix processes for fulfilling the user requirement. Each of these three processes creates two threads, enumerating a total of 6 working threads. Computation is distributed evenly on the 6 independent threads. If no wait for resources is involved, total CPU time is expected to be six times the elapsed real time.

See also

References

(Sebelumnya) CPU socketCPython (Berikutnya)