Re: [Autotest] [PATCH] Update sar command and handle OSError error.

2010-03-31 Thread Feng Yang
Hi, Lucas

Thanks very much!


- "Lucas Meneghel Rodrigues"  wrote:

> From: "Lucas Meneghel Rodrigues" 
> To: "Feng Yang" 
> Cc: autot...@test.kernel.org, kvm@vger.kernel.org
> Sent: Thursday, April 1, 2010 9:27:44 AM GMT +08:00 Beijing / Chongqing / 
> Hong Kong / Urumqi
> Subject: Re: [Autotest] [PATCH] Update sar command and handle OSError error.
>
> On Tue, Mar 30, 2010 at 2:24 AM, Feng Yang  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 
> > ---
> >  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


Re: [Autotest] [PATCH] Update sar command and handle OSError error.

2010-03-31 Thread Lucas Meneghel Rodrigues
On Tue, Mar 30, 2010 at 2:24 AM, Feng Yang  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 
> ---
>  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