diff options
author | Britney Fransen <brfransen@gmail.com> | 2016-10-25 14:58:41 (GMT) |
---|---|---|
committer | Britney Fransen <brfransen@gmail.com> | 2016-10-25 14:58:41 (GMT) |
commit | 8d29737682e67ca7276fae0b1e8e69578ce61428 (patch) | |
tree | 4cc01d92c820214a4e5249575eb7f5ccd6c142bb /abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch | |
parent | db8bcbe3926e77c0144204beda14dee25a388d39 (diff) | |
parent | 927a8f226e532ba2187e8a9c9292453c3896f571 (diff) | |
download | linhes_pkgbuild-8d29737682e67ca7276fae0b1e8e69578ce61428.zip linhes_pkgbuild-8d29737682e67ca7276fae0b1e8e69578ce61428.tar.gz linhes_pkgbuild-8d29737682e67ca7276fae0b1e8e69578ce61428.tar.bz2 |
Merge branch 'testing'
Diffstat (limited to 'abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch')
-rw-r--r-- | abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch b/abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch new file mode 100644 index 0000000..008f46c --- /dev/null +++ b/abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch @@ -0,0 +1,72 @@ +From 0d743a7d946fe176a07baf2586a6af0e867fd89c Mon Sep 17 00:00:00 2001 +From: H.J. Lu <hongjiu.lu@intel.com> +Date: Wed, 11 May 2011 16:19:55 +0200 +Subject: [PATCH] Recompute CPU usage at microsecond level + +If job finishes quickly, miliseconds arithmetic rounds to zero. If +that happens, recalculate CPU usage ratio with microsecond accuracy +to raise chance to get non-zero values. +--- + resuse.h | 2 ++ + time.c | 15 +++++++++++++++ + 2 files changed, 17 insertions(+), 0 deletions(-) + +diff --git a/resuse.h b/resuse.h +index 992143f..7a3ee66 100644 +--- a/resuse.h ++++ b/resuse.h +@@ -33,9 +33,11 @@ struct timeval + #if HAVE_SYS_RUSAGE_H + /* This rusage structure measures nanoseconds instead of microseconds. */ + # define TV_MSEC tv_nsec / 1000000 ++# define TV_USEC tv_nsec / 1000 + # include <sys/rusage.h> + #else + # define TV_MSEC tv_usec / 1000 ++# define TV_USEC tv_usec + # if HAVE_WAIT3 + # include <sys/resource.h> + # else +diff --git a/time.c b/time.c +index 43aec0b..96cfdde 100644 +--- a/time.c ++++ b/time.c +@@ -326,6 +326,8 @@ summarize (fp, fmt, command, resp) + { + unsigned long r; /* Elapsed real milliseconds. */ + unsigned long v; /* Elapsed virtual (CPU) milliseconds. */ ++ unsigned long ru; /* Elapsed real microseconds. */ ++ unsigned long vu; /* Elapsed virtual (CPU) microseconds. */ + + if (verbose) + { +@@ -350,6 +352,17 @@ summarize (fp, fmt, command, resp) + v = resp->ru.ru_utime.tv_sec * 1000 + resp->ru.ru_utime.TV_MSEC + + resp->ru.ru_stime.tv_sec * 1000 + resp->ru.ru_stime.TV_MSEC; + ++ if (r == 0 && v == 0) ++ { ++ ru = resp->elapsed.tv_usec; ++ vu = resp->ru.ru_utime.TV_USEC + resp->ru.ru_stime.TV_USEC; ++ } ++ else ++ { ++ ru = 0; ++ vu = 0; ++ } ++ + while (*fmt) + { + switch (*fmt) +@@ -408,6 +421,8 @@ summarize (fp, fmt, command, resp) + /* % cpu is (total cpu time)/(elapsed time). */ + if (r > 0) + fprintf (fp, "%lu%%", (v * 100 / r)); ++ else if (ru > 0) ++ fprintf (fp, "%lu%%", (vu * 100 / ru)); + else + fprintf (fp, "?%%"); + break; +-- +1.7.4.4 + |