parent
2483c3dd13
commit
11b41caf7e
3 changed files with 3 additions and 107 deletions
|
@ -1,72 +0,0 @@
|
||||||
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
|
|
||||||
--- resuse.h
|
|
||||||
+++ 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
|
|
||||||
--- time.c
|
|
||||||
+++ 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
|
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
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
|
|
||||||
--- time.c
|
|
||||||
+++ 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
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
# Template file for 'time'
|
# Template file for 'time'
|
||||||
pkgname=time
|
pkgname=time
|
||||||
version=1.7
|
version=1.8
|
||||||
revision=7
|
revision=1
|
||||||
build_style=gnu-configure
|
build_style=gnu-configure
|
||||||
short_desc="The GNU time program for measuring cpu resource usage"
|
short_desc="The GNU time program for measuring cpu resource usage"
|
||||||
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
||||||
homepage="http://directory.fsf.org/project/time"
|
homepage="http://directory.fsf.org/project/time"
|
||||||
license="GPL-2"
|
license="GPL-2"
|
||||||
distfiles="$GNU_SITE/$pkgname/$pkgname-$version.tar.gz"
|
distfiles="$GNU_SITE/$pkgname/$pkgname-$version.tar.gz"
|
||||||
checksum=e37ea79a253bf85a85ada2f7c632c14e481a5fd262a362f6f4fd58e68601496d
|
checksum=8a2f540155961a35ba9b84aec5e77e3ae36c74cecb4484db455960601b7a2e1b
|
||||||
|
|
||||||
# Required by wait3(2) with musl
|
# Required by wait3(2) with musl
|
||||||
CFLAGS="-D_GNU_SOURCE"
|
CFLAGS="-D_GNU_SOURCE"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue