possible duplicate:
what wall-clock-time, user-cpu-time, , system-cpu-time in unix?
the following program run command , display various values how time used:
#include <iostream> #include <sys/times.h> using namespace std; static void pr_times(clock_t, struct tms *, struct tms *); static void do_cmd(char *); int main(int argc, char *argv[]) { int i; setbuf(stdout, null); (i = 1; < argc; i++) do_cmd(argv[i]); /* once each command-line arg */ exit(0); } static void do_cmd(char *cmd) /* execute , time "cmd" */ { struct tms tmsstart, tmsend; clock_t start, end; int status; printf("\ncommand: %s\n", cmd); if ((start = times(&tmsstart)) == -1) /* starting values */ cout << "times error" << endl; if ((status = system(cmd)) < 0) /* execute command */ cout << "system error" << endl; if ((end = times(&tmsend)) == -1) cout << "times error" << endl; pr_times(end-start, &tmsstart, &tmsend); exit(status); } static void pr_times(clock_t real, struct tms *tmsstart, struct tms *tmsend) { static long clktck = 0; if (clktck == 0) /* fetch clock ticks per second first time */ if ((clktck = sysconf(_sc_clk_tck)) < 0) cout << "sysconf error" << endl; printf(" real: %7.2f\n", real / (double) clktck); printf(" user: %7.2f\n", (tmsend->tms_utime - tmsstart->tms_utime) / (double) clktck); printf(" sys: %7.2f\n", (tmsend->tms_stime - tmsstart->tms_stime) / (double) clktck); printf(" child user: %7.2f\n", (tmsend->tms_cutime - tmsstart->tms_cutime) / (double) clktck); printf(" child sys: %7.2f\n", (tmsend->tms_cstime - tmsstart->tms_cstime) / (double) clktck); }
here's example of output:
real: 1.44 user: 0.00 sys: 0.00 child user: 0.03 child sys: 0.00
the real time how time total has elapsed, correct? other values?
real time time measured wall clock, is, time between instant process spawned until ended. user time how cpu time spent on process in user mode, , sys cpu time spent in os while performing actions requested process.
to provide different examples of means, when process calls sleep(10)
, real time spent in process grows 10 seconds, no actual work done process itself, neither user nor sys time incremented. calls operating system, reading or writing disk, acquiring or releasing memory or other os operation imply cpu busy working in system process, add sys time (and real time), not add user time. complex mathematical calculation performed inside process take user time (process time) not spent cpu cycles in os, add user time (and real time), not sys time.
Comments
Post a Comment