diff options
author | root <root@rshg047.dnsready.net> | 2011-07-10 23:13:07 +0000 |
---|---|---|
committer | root <root@rshg047.dnsready.net> | 2011-07-10 23:13:07 +0000 |
commit | 139460a7a8b085588b699c488fd19b166db18a74 (patch) | |
tree | c7ef8dc756803db980465dd7bc9186f9c642aa50 /extra/time | |
parent | d1e588afc2779754c0abd1122ecf4f8e3c863d7a (diff) |
Sun Jul 10 23:13:07 UTC 2011
Diffstat (limited to 'extra/time')
-rw-r--r-- | extra/time/PKGBUILD | 19 | ||||
-rw-r--r-- | extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch | 72 | ||||
-rw-r--r-- | extra/time/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch | 32 |
3 files changed, 119 insertions, 4 deletions
diff --git a/extra/time/PKGBUILD b/extra/time/PKGBUILD index 78d5a7d61..8b1a81e6e 100644 --- a/extra/time/PKGBUILD +++ b/extra/time/PKGBUILD @@ -1,22 +1,33 @@ -# $Id: PKGBUILD 109750 2011-02-12 13:42:27Z stephane $ +# $Id: PKGBUILD 131069 2011-07-10 01:00:33Z stephane $ # Maintainer: Stéphane Gaudreault <stephane@archlinux.us> # Contributor: Daniel J Griffiths <ghost1227@archlinux.us> # Contributor: damir <damir@archlinux.org> pkgname=time pkgver=1.7 -pkgrel=4 +pkgrel=5 pkgdesc="Utility for monitoring a program's use of system resources" arch=('i686' 'x86_64') url="http://www.gnu.org/directory/time.html" license=('GPL') depends=('glibc') install=time.install -source=(http://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('e38d2b8b34b1ca259cf7b053caac32b3') +source=(http://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz + time-1.7-Recompute-CPU-usage-at-microsecond-level.patch + time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch) +sha1sums=('dde0c28c7426960736933f3e763320680356cc6a' + 'fff80e05dd41f0a59bb1f49d1c6e581d5e8e92e5' + 'b2a909e1d92f7af1bc99a4524ad84d467ed79a06') + build() { cd "${srcdir}/${pkgname}-${pkgver}" + + # cf https://bugzilla.redhat.com/show_bug.cgi?id=527276 + patch -Np1 -i ../time-1.7-Recompute-CPU-usage-at-microsecond-level.patch + + # cf https://bugzilla.redhat.com/show_bug.cgi?id=702826 + patch -Np1 -i ../time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch ./configure --prefix=/usr --infodir=/usr/share/info make diff --git a/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch b/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch new file mode 100644 index 000000000..008f46c53 --- /dev/null +++ b/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 + diff --git a/extra/time/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch b/extra/time/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch new file mode 100644 index 000000000..1f68f9b1b --- /dev/null +++ b/extra/time/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch @@ -0,0 +1,32 @@ +From ad24a929bdcc15abae14a64ea21b821bcd8cb030 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com> +Date: Wed, 11 May 2011 15:19:11 +0200 +Subject: [PATCH] ru_maxrss is in kilobytes on Linux + +Since 2.6.32 Linux returns ru_maxrss in kilobytes. Not in pages. + +See http://lists.gnu.org/archive/html/bug-gnu-utils/2008-12/msg00047.html +for discussion. +--- + time.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/time.c b/time.c +index d15fee4..43aec0b 100644 +--- a/time.c ++++ b/time.c +@@ -395,7 +395,11 @@ summarize (fp, fmt, command, resp) + ptok ((UL) resp->ru.ru_ixrss) / MSEC_TO_TICKS (v)); + break; + case 'M': /* Maximum resident set size. */ ++#ifdef __linux__ ++ fprintf (fp, "%ld", resp->ru.ru_maxrss); ++#else + fprintf (fp, "%lu", ptok ((UL) resp->ru.ru_maxrss)); ++#endif + break; + case 'O': /* Outputs. */ + fprintf (fp, "%ld", resp->ru.ru_oublock); +-- +1.7.4.4 + |