buildstats.bbclass: Don't assume /proc/<pid>/io present
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] (From OE-Core rev: b39e84edb02d03102b9a571c21e5328c159c4378) Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
07e1f10aa0
commit
4b32351f2d
|
@ -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 on your build host was not configured to provide process I/O statistics. (CONFIG_TASK_IO_ACCOUNTING is not set)")
|
||||
|
||||
########################################################################
|
||||
# at first pass make the buildstats hierarchy and then
|
||||
# set the buildname
|
||||
########################################################################
|
||||
bb.utils.mkdirhier(bsdir)
|
||||
|
|
Loading…
Reference in New Issue