bitbake: utils.py: Add function for processing profile output
(Bitbake rev: 0df64810e8d40e7761cfd5059c0617dda31a6641) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
469bf3c58e
commit
dd335b0908
|
@ -1416,25 +1416,7 @@ def server_main(cooker, func, *args):
|
||||||
ret = profile.Profile.runcall(prof, func, *args)
|
ret = profile.Profile.runcall(prof, func, *args)
|
||||||
|
|
||||||
prof.dump_stats("profile.log")
|
prof.dump_stats("profile.log")
|
||||||
|
bb.utils.process_profilelog("profile.log")
|
||||||
# Redirect stdout to capture profile information
|
|
||||||
pout = open('profile.log.processed', 'w')
|
|
||||||
so = sys.stdout.fileno()
|
|
||||||
orig_so = os.dup(sys.stdout.fileno())
|
|
||||||
os.dup2(pout.fileno(), so)
|
|
||||||
|
|
||||||
import pstats
|
|
||||||
p = pstats.Stats('profile.log')
|
|
||||||
p.sort_stats('time')
|
|
||||||
p.print_stats()
|
|
||||||
p.print_callers()
|
|
||||||
p.sort_stats('cumulative')
|
|
||||||
p.print_stats()
|
|
||||||
|
|
||||||
os.dup2(orig_so, so)
|
|
||||||
pout.flush()
|
|
||||||
pout.close()
|
|
||||||
|
|
||||||
print("Raw profiling information saved to profile.log and processed statistics to profile.log.processed")
|
print("Raw profiling information saved to profile.log and processed statistics to profile.log.processed")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -820,3 +820,23 @@ def cpu_count():
|
||||||
def nonblockingfd(fd):
|
def nonblockingfd(fd):
|
||||||
fcntl.fcntl(fd, fcntl.F_SETFL, fcntl.fcntl(fd, fcntl.F_GETFL) | os.O_NONBLOCK)
|
fcntl.fcntl(fd, fcntl.F_SETFL, fcntl.fcntl(fd, fcntl.F_GETFL) | os.O_NONBLOCK)
|
||||||
|
|
||||||
|
def process_profilelog(fn):
|
||||||
|
# Redirect stdout to capture profile information
|
||||||
|
pout = open(fn + '.processed', 'w')
|
||||||
|
so = sys.stdout.fileno()
|
||||||
|
orig_so = os.dup(sys.stdout.fileno())
|
||||||
|
os.dup2(pout.fileno(), so)
|
||||||
|
|
||||||
|
import pstats
|
||||||
|
p = pstats.Stats(fn)
|
||||||
|
p.sort_stats('time')
|
||||||
|
p.print_stats()
|
||||||
|
p.print_callers()
|
||||||
|
p.sort_stats('cumulative')
|
||||||
|
p.print_stats()
|
||||||
|
|
||||||
|
os.dup2(orig_so, so)
|
||||||
|
pout.flush()
|
||||||
|
pout.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue