On Tue, Mar 30, 2010 at 2:24 AM, Feng Yang <fy...@redhat.com> wrote:
> This patch do following things:
> 1. Update sar command in start function in /profilers/sar/sar.py,
> because when i manual run '/usr/bin/sar -o %s %d 0' command, help
> message is show up. Sames count number could not be 0, so use default
> count.

The problem here is that the sar command changed its behavior: if you
check man pages for older versions of sar (see
http://linux.die.net/man/1/sar), you'll see:

"The default value for the count parameter is 1. If its value is set
to zero, then reports are generated continuously."

For newer versions of sar like the ones shipped in recent Fedoras, the
behavior is conflicting. From the man page:

"If the interval parameter is specified without the count parameter,
then reports are generated continuously."

So, it's clear here that we have to handle the differences, otherwise
the profiler won't work on older systems.

> 2. Put os.kill in sar.py into try block to avoid traceback.
> Sometimes it tried to kill an already terminated process which can
> cause a traceback.

It just occurred to me that since we're using subprocess, we can use
the terminate() method of the subprocess object, that doesn't raise
exceptions when the process already returned, instead of just picking
the PID and sending a sigterm on that PID. I just sent a version of
this patch that does things the way I explained, and plan on change
the subprocess part for the kvm_stat test profiler as well.

> Signed-off-by: Feng Yang <fy...@redhat.com>
> ---
>  client/profilers/sar/sar.py |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/client/profilers/sar/sar.py b/client/profilers/sar/sar.py
> index fbe0639..e10156f 100644
> --- a/client/profilers/sar/sar.py
> +++ b/client/profilers/sar/sar.py
> @@ -21,14 +21,17 @@ class sar(profiler.profiler):
>         logfile = open(os.path.join(test.profdir, "sar"), 'w')
>         # Save the sar data as binary, convert to text after the test.
>         raw = os.path.join(test.profdir, "sar.raw")
> -        cmd = "/usr/bin/sar -o %s %d 0" % (raw, self.interval)
> +        cmd = "/usr/bin/sar -o %s %d " % (raw, self.interval)
>         p = subprocess.Popen(cmd, shell=True, stdout=logfile, \
>                              stderr=subprocess.STDOUT)
>         self.pid = p.pid
>
>
>     def stop(self, test):
> -        os.kill(self.pid, 15)
> +        try:
> +            os.kill(self.pid, 15)
> +        except OSError:
> +            pass
>
>
>     def report(self, test):
> --
> 1.5.5.6
>
> _______________________________________________
> Autotest mailing list
> autot...@test.kernel.org
> http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
>



-- 
Lucas
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to