[OE-core] [PATCH] buildstats.bbclass: Don't assume /proc/<pid>/io present

Bystricky, Juro juro.bystricky at intel.com
Mon Feb 22 19:02:09 UTC 2016


I agree, the message can be confusing, as there can be some ambiguity as to which kernel
was implied by the warning.

Right now it says:
WARNING: The Linux kernel was not configured to provide ....
As you suggested, I will change it to:
WARNING: The Linux kernel on your build host was not configured to provide...

Thanks

Juro
> -----Original Message-----
> From: Khem Raj [mailto:raj.khem at gmail.com]
> Sent: Saturday, February 20, 2016 11:13 AM
> To: Bystricky, Juro <juro.bystricky at intel.com>
> Cc: Patches and discussions about the oe-core layer <openembedded-
> core at lists.openembedded.org>; Juro Bystricky <jurobystricky at hotmail.com>
> Subject: Re: [OE-core] [PATCH] buildstats.bbclass: Don't assume /proc/<pid>/io
> present
> 
> Juro
> 
> On Fri, Feb 19, 2016 at 5:37 PM, Juro Bystricky <juro.bystricky at intel.com>
> wrote:
> > It is not guaranteed Linux kernel was configured with process I/O
> > statistics enabled. If process I/O statistcs are not present, issue a
> > one time warning and do not attempt to read the non-existing stats
> > counters.
> >
> > [YOCTO#9025]
> >
> > Signed-off-by: Juro Bystricky <juro.bystricky at intel.com>
> > ---
> >  meta/classes/buildstats.bbclass | 24 ++++++++++++++++--------
> >  1 file changed, 16 insertions(+), 8 deletions(-)
> >
> > diff --git a/meta/classes/buildstats.bbclass
> > b/meta/classes/buildstats.bbclass index e58d37b..72a3dd9 100644
> > --- a/meta/classes/buildstats.bbclass
> > +++ b/meta/classes/buildstats.bbclass
> > @@ -25,13 +25,14 @@ def get_process_cputime(pid):
> >          'cstime' : fields[16],
> >      }
> >      iostats = {}
> > -    with open("/proc/%d/io" % pid, "r") as f:
> > -        while True:
> > -            i = f.readline().strip()
> > -            if not i:
> > -                break
> > -            i = i.split(": ")
> > -            iostats[i[0]] = i[1]
> > +    if os.path.isfile("/proc/%d/io" % pid):
> > +        with open("/proc/%d/io" % pid, "r") as f:
> > +            while True:
> > +                i = f.readline().strip()
> > +                if not i:
> > +                    break
> > +                i = i.split(": ")
> > +                iostats[i[0]] = i[1]
> >      resources = resource.getrusage(resource.RUSAGE_SELF)
> >      childres = resource.getrusage(resource.RUSAGE_CHILDREN)
> >      return stats, iostats, resources, childres @@ -111,7 +112,14 @@
> > python run_buildstats () {
> >
> >      if isinstance(e, bb.event.BuildStarted):
> >
> #################################################################
> #######
> > -        # at first pass make the buildstats heriarchy and then
> > +        # If the kernel was not configured to provide I/O statistics, issue
> > +        # a one time warning.
> > +
> #################################################################
> #######
> > +        if not os.path.isfile("/proc/%d/io" % os.getpid()):
> > +            bb.warn("The Linux kernel was not configured to provide
> > + process I/O statistics. (CONFIG_TASK_IO_ACCOUNTING is not set)")
> > +
> 
> It would be nicer if we also clarified its not the kernel that they will build but the
> kernel on their build host. So something like 'Linux kernel on your build host ...."
> 
> > +
> #################################################################
> #######
> > +        # at first pass make the buildstats hierarchy and then
> >          # set the buildname
> >
> #################################################################
> #######
> >          bb.utils.mkdirhier(bsdir)
> > --
> > 1.9.1
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core


More information about the Openembedded-core mailing list