diff options
author | Juro Bystricky <juro.bystricky@intel.com> | 2016-02-22 11:35:25 -0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-02-28 11:32:34 +0000 |
commit | b39e84edb02d03102b9a571c21e5328c159c4378 (patch) | |
tree | 2c25004eb4c1f42c8c6e4f3288e366bcb9b6eb92 /meta | |
parent | 826bfea4b7018c7974ef388facc99ca70bb3654f (diff) | |
download | openembedded-core-b39e84edb02d03102b9a571c21e5328c159c4378.tar.gz openembedded-core-b39e84edb02d03102b9a571c21e5328c159c4378.tar.bz2 openembedded-core-b39e84edb02d03102b9a571c21e5328c159c4378.zip |
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]
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/buildstats.bbclass | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/meta/classes/buildstats.bbclass b/meta/classes/buildstats.bbclass index e58d37be5e..2d63589e4b 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 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) |