On Tue, Apr 24, 2012 at 02:33:15PM -0700, Matthew Dempsky wrote:
> On Thu, Apr 19, 2012 at 7:26 AM, Marc Espie <es...@nerim.net> wrote:
> > On Thu, Apr 19, 2012 at 02:57:57PM +0100, Stuart Henderson wrote:
> >> On 2012/04/19 15:42, Marc Espie wrote:
> >> > Yeah, the only issue so far is that the make-wrapper process is C code, 
> >> > so
> >> > it needs to be compiled and deployed on every host
> >>
> >> we ship with a wrapper in base ;)
> >>
> >> /usr/bin/time -l
> >
> > Up to a point. This means parsing the log files to find that entry.
> 
> Nah, just direct time's output to a different file:
> 
> $ cat logtime
> #!/bin/sh
> fn="$1"; shift
> exec /usr/bin/time -l sh -c 'exec "$@" 2>&9 9>&-' -- "$@" 9>&2 2>"$fn"
> $ ./logtime time.out sh -c 'echo stdout; echo stderr >&2'
> stdout
> stderr
> $ cat time.out
>         0.00 real         0.00 user         0.00 sys
>        504  maximum resident set size
>          0  average shared memory size
>          0  average unshared data size
>          0  average unshared stack size
>        146  minor page faults
>          0  major page faults
>          0  swaps
>          0  block input operations
>          0  block output operations
>          0  messages sent
>          0  messages received
>          0  signals received
>          0  voluntary context switches
>          0  involuntary context switches
> 
> :)
Well, yuck, this makes for ways too many extra processes just for that.
If I have to deploy code, it's almost as easy to compile an extra program
on the fly...

> > It's feasible,
> > but not really nice... and /usr/bin/time will fail on some signals.
> 
> Hm, how so?

when you kill a job, you want to report current rss to extract stats later.
/usr/bin/time will die without having reported anything on at least
some current signals, namely it only catches INT and QUIT...

Reply via email to