Hi, Lucas Thanks very much! ----- "Lucas Meneghel Rodrigues" <lmr@xxxxxxxxxx> wrote: > From: "Lucas Meneghel Rodrigues" <lmr@xxxxxxxxxx> > To: "Feng Yang" <fyang@xxxxxxxxxx> > Cc: autotest@xxxxxxxxxxxxxxx, kvm@xxxxxxxxxxxxxxx > 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 <fyang@xxxxxxxxxx> 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 <fyang@xxxxxxxxxx> > > --- > > 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 > > Autotest@xxxxxxxxxxxxxxx > > 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html