* [PATCH 1/6] bb/cache: drop some unused arguments
2016-01-26 13:34 [PATCH 0/6] Improve caching task file dependency checksum caching Markus Lehtonen
@ 2016-01-26 13:34 ` Markus Lehtonen
2016-01-26 13:34 ` [PATCH 2/6] SignatureGenerator: add method for saving the file checksum cache Markus Lehtonen
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2016-01-26 13:34 UTC (permalink / raw)
To: bitbake-devel
Drop unused 'd' argument from the cache save methods, simplifying the
API.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
lib/bb/cache.py | 4 ++--
lib/bb/codeparser.py | 8 ++++----
lib/bb/cooker.py | 8 ++++----
lib/bb/fetch2/__init__.py | 10 +++++-----
4 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index 8485eb4..55283b0 100644
--- a/lib/bb/cache.py
+++ b/lib/bb/cache.py
@@ -785,7 +785,7 @@ class MultiProcessCache(object):
data = [{}]
return data
- def save_extras(self, d):
+ def save_extras(self):
if not self.cachefile:
return
@@ -815,7 +815,7 @@ class MultiProcessCache(object):
if h not in dest[j]:
dest[j][h] = source[j][h]
- def save_merge(self, d):
+ def save_merge(self):
if not self.cachefile:
return
diff --git a/lib/bb/codeparser.py b/lib/bb/codeparser.py
index 577b427..bdfa2ca 100644
--- a/lib/bb/codeparser.py
+++ b/lib/bb/codeparser.py
@@ -167,11 +167,11 @@ codeparsercache = CodeParserCache()
def parser_cache_init(d):
codeparsercache.init_cache(d)
-def parser_cache_save(d):
- codeparsercache.save_extras(d)
+def parser_cache_save():
+ codeparsercache.save_extras()
-def parser_cache_savemerge(d):
- codeparsercache.save_merge(d)
+def parser_cache_savemerge():
+ codeparsercache.save_merge()
Logger = logging.getLoggerClass()
class BufferedLogger(Logger):
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 9c58d95..d48724a 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -1999,8 +1999,8 @@ class CookerParser(object):
bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata)
def init():
Parser.cfg = self.cfgdata
- multiprocessing.util.Finalize(None, bb.codeparser.parser_cache_save, args=(self.cfgdata,), exitpriority=1)
- multiprocessing.util.Finalize(None, bb.fetch.fetcher_parse_save, args=(self.cfgdata,), exitpriority=1)
+ multiprocessing.util.Finalize(None, bb.codeparser.parser_cache_save, exitpriority=1)
+ multiprocessing.util.Finalize(None, bb.fetch.fetcher_parse_save, exitpriority=1)
self.feeder_quit = multiprocessing.Queue(maxsize=1)
self.parser_quit = multiprocessing.Queue(maxsize=self.num_processes)
@@ -2053,8 +2053,8 @@ class CookerParser(object):
sync = threading.Thread(target=self.bb_cache.sync)
sync.start()
multiprocessing.util.Finalize(None, sync.join, exitpriority=-100)
- bb.codeparser.parser_cache_savemerge(self.cooker.data)
- bb.fetch.fetcher_parse_done(self.cooker.data)
+ bb.codeparser.parser_cache_savemerge()
+ bb.fetch.fetcher_parse_done()
if self.cooker.configuration.profile:
profiles = []
for i in self.process_names:
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index 5b416ab..7d7bd58 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -515,13 +515,13 @@ def fetcher_init(d):
if hasattr(m, "init"):
m.init(d)
-def fetcher_parse_save(d):
- _checksum_cache.save_extras(d)
+def fetcher_parse_save():
+ _checksum_cache.save_extras()
-def fetcher_parse_done(d):
- _checksum_cache.save_merge(d)
+def fetcher_parse_done():
+ _checksum_cache.save_merge()
-def fetcher_compare_revisions(d):
+def fetcher_compare_revisions():
"""
Compare the revisions in the persistant cache with current values and
return true/false on whether they've changed.
--
2.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 2/6] SignatureGenerator: add method for saving the file checksum cache
2016-01-26 13:34 [PATCH 0/6] Improve caching task file dependency checksum caching Markus Lehtonen
2016-01-26 13:34 ` [PATCH 1/6] bb/cache: drop some unused arguments Markus Lehtonen
@ 2016-01-26 13:34 ` Markus Lehtonen
2016-01-26 13:34 ` [PATCH 3/6] bb/runqueue: save task file dependency cache onto disk Markus Lehtonen
` (4 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2016-01-26 13:34 UTC (permalink / raw)
To: bitbake-devel
Extend the API in order to be able to write out the file checksum cache
onto disk. SignatureGeneratorBasic class now implements a method that
update the fetcher local files checksum cache with the task file
dependency checksums.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
lib/bb/siggen.py | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index c104c19..a7916b2 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -44,6 +44,10 @@ class SignatureGenerator(object):
def get_taskhash(self, fn, task, deps, dataCache):
return "0"
+ def writeout_file_checksum_cache(self):
+ """Write/update the file checksum cache onto disk"""
+ return
+
def set_taskdata(self, hashes, deps, checksum):
return
@@ -215,6 +219,11 @@ class SignatureGeneratorBasic(SignatureGenerator):
#d.setVar("BB_TASKHASH_task-%s" % task, taskhash[task])
return h
+ def writeout_file_checksum_cache(self):
+ """Write/update the file checksum cache onto disk"""
+ bb.fetch2.fetcher_parse_save()
+ bb.fetch2.fetcher_parse_done()
+
def dump_sigtask(self, fn, task, stampbase, runtime):
k = fn + "." + task
if runtime == "customfile":
--
2.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 3/6] bb/runqueue: save task file dependency cache onto disk
2016-01-26 13:34 [PATCH 0/6] Improve caching task file dependency checksum caching Markus Lehtonen
2016-01-26 13:34 ` [PATCH 1/6] bb/cache: drop some unused arguments Markus Lehtonen
2016-01-26 13:34 ` [PATCH 2/6] SignatureGenerator: add method for saving the file checksum cache Markus Lehtonen
@ 2016-01-26 13:34 ` Markus Lehtonen
2016-01-26 13:34 ` [PATCH 4/6] FileChecksumCache: add get_checksums() method Markus Lehtonen
` (3 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2016-01-26 13:34 UTC (permalink / raw)
To: bitbake-devel
Before this patch the usage of cache was quite useless as the file
checksums were not actually cached on disk but re-calculated every time.
This patch utilises the new writeout_file_checksum_cache() method of the
SignatureGenerator class to do the job.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
lib/bb/runqueue.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index f840ad2..ecbc1ea 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -829,6 +829,7 @@ class RunQueueData:
procdep.append(self.taskData.fn_index[self.runq_fnid[dep]] + "." + self.runq_task[dep])
self.runq_hash[task] = bb.parse.siggen.get_taskhash(self.taskData.fn_index[self.runq_fnid[task]], self.runq_task[task], procdep, self.dataCache)
+ bb.parse.siggen.writeout_file_checksum_cache()
return len(self.runq_fnid)
def dump_data(self, taskQueue):
--
2.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 4/6] FileChecksumCache: add get_checksums() method
2016-01-26 13:34 [PATCH 0/6] Improve caching task file dependency checksum caching Markus Lehtonen
` (2 preceding siblings ...)
2016-01-26 13:34 ` [PATCH 3/6] bb/runqueue: save task file dependency cache onto disk Markus Lehtonen
@ 2016-01-26 13:34 ` Markus Lehtonen
2016-01-26 13:34 ` [PATCH 5/6] MultiProcessCache: make cache filename configurable Markus Lehtonen
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2016-01-26 13:34 UTC (permalink / raw)
To: bitbake-devel
Move the local file checksum functionality from bb.fetch2 into
bb.checksum module.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
lib/bb/checksum.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++
lib/bb/fetch2/__init__.py | 45 +--------------------------------------------
2 files changed, 48 insertions(+), 44 deletions(-)
diff --git a/lib/bb/checksum.py b/lib/bb/checksum.py
index 514ff0b..7fb46d8 100644
--- a/lib/bb/checksum.py
+++ b/lib/bb/checksum.py
@@ -15,6 +15,8 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+import glob
+import operator
import os
import stat
import bb.utils
@@ -88,3 +90,48 @@ class FileChecksumCache(MultiProcessCache):
dest[0][h] = source[0][h]
else:
dest[0][h] = source[0][h]
+
+ def get_checksums(self, filelist, pn):
+ """Get checksums for a list of files"""
+
+ def checksum_file(f):
+ try:
+ checksum = self.get_checksum(f)
+ except OSError as e:
+ bb.warn("Unable to get checksum for %s SRC_URI entry %s: %s" % (pn, os.path.basename(f), e))
+ return None
+ return checksum
+
+ def checksum_dir(pth):
+ # Handle directories recursively
+ dirchecksums = []
+ for root, dirs, files in os.walk(pth):
+ for name in files:
+ fullpth = os.path.join(root, name)
+ checksum = checksum_file(fullpth)
+ if checksum:
+ dirchecksums.append((fullpth, checksum))
+ return dirchecksums
+
+ checksums = []
+ for pth in filelist.split():
+ exist = pth.split(":")[1]
+ if exist == "False":
+ continue
+ pth = pth.split(":")[0]
+ if '*' in pth:
+ # Handle globs
+ for f in glob.glob(pth):
+ if os.path.isdir(f):
+ checksums.extend(checksum_dir(f))
+ else:
+ checksum = checksum_file(f)
+ checksums.append((f, checksum))
+ elif os.path.isdir(pth):
+ checksums.extend(checksum_dir(pth))
+ else:
+ checksum = checksum_file(pth)
+ checksums.append((pth, checksum))
+
+ checksums.sort(key=operator.itemgetter(1))
+ return checksums
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index 7d7bd58..6fca67a 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -29,11 +29,9 @@ from __future__ import absolute_import
from __future__ import print_function
import os, re
import signal
-import glob
import logging
import urllib
import urlparse
-import operator
import bb.persist_data, bb.utils
import bb.checksum
from bb import data
@@ -1118,48 +1116,7 @@ def get_file_checksums(filelist, pn):
it proceeds
"""
-
- def checksum_file(f):
- try:
- checksum = _checksum_cache.get_checksum(f)
- except OSError as e:
- bb.warn("Unable to get checksum for %s SRC_URI entry %s: %s" % (pn, os.path.basename(f), e))
- return None
- return checksum
-
- def checksum_dir(pth):
- # Handle directories recursively
- dirchecksums = []
- for root, dirs, files in os.walk(pth):
- for name in files:
- fullpth = os.path.join(root, name)
- checksum = checksum_file(fullpth)
- if checksum:
- dirchecksums.append((fullpth, checksum))
- return dirchecksums
-
- checksums = []
- for pth in filelist.split():
- exist = pth.split(":")[1]
- if exist == "False":
- continue
- pth = pth.split(":")[0]
- if '*' in pth:
- # Handle globs
- for f in glob.glob(pth):
- if os.path.isdir(f):
- checksums.extend(checksum_dir(f))
- else:
- checksum = checksum_file(f)
- checksums.append((f, checksum))
- elif os.path.isdir(pth):
- checksums.extend(checksum_dir(pth))
- else:
- checksum = checksum_file(pth)
- checksums.append((pth, checksum))
-
- checksums.sort(key=operator.itemgetter(1))
- return checksums
+ return _checksum_cache.get_checksums(filelist, pn)
class FetchData(object):
--
2.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 5/6] MultiProcessCache: make cache filename configurable
2016-01-26 13:34 [PATCH 0/6] Improve caching task file dependency checksum caching Markus Lehtonen
` (3 preceding siblings ...)
2016-01-26 13:34 ` [PATCH 4/6] FileChecksumCache: add get_checksums() method Markus Lehtonen
@ 2016-01-26 13:34 ` Markus Lehtonen
2016-01-26 13:34 ` [PATCH 6/6] SignatureGeneratorBasic: make checksum cache file configurable Markus Lehtonen
2016-01-29 17:09 ` [PATCH 0/6] Improve caching task file dependency checksum caching Richard Purdie
6 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2016-01-26 13:34 UTC (permalink / raw)
To: bitbake-devel
If no cache file name is given a default from class variable is used,
like before.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
lib/bb/cache.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index 55283b0..063ab15 100644
--- a/lib/bb/cache.py
+++ b/lib/bb/cache.py
@@ -755,13 +755,14 @@ class MultiProcessCache(object):
self.cachedata = self.create_cachedata()
self.cachedata_extras = self.create_cachedata()
- def init_cache(self, d):
+ def init_cache(self, d, cache_file_name=None):
cachedir = (d.getVar("PERSISTENT_DIR", True) or
d.getVar("CACHE", True))
if cachedir in [None, '']:
return
bb.utils.mkdirhier(cachedir)
- self.cachefile = os.path.join(cachedir, self.__class__.cache_file_name)
+ self.cachefile = os.path.join(cachedir,
+ cache_file_name or self.__class__.cache_file_name)
logger.debug(1, "Using cache in '%s'", self.cachefile)
glf = bb.utils.lockfile(self.cachefile + ".lock")
--
2.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 6/6] SignatureGeneratorBasic: make checksum cache file configurable
2016-01-26 13:34 [PATCH 0/6] Improve caching task file dependency checksum caching Markus Lehtonen
` (4 preceding siblings ...)
2016-01-26 13:34 ` [PATCH 5/6] MultiProcessCache: make cache filename configurable Markus Lehtonen
@ 2016-01-26 13:34 ` Markus Lehtonen
2016-01-29 17:09 ` [PATCH 0/6] Improve caching task file dependency checksum caching Richard Purdie
6 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2016-01-26 13:34 UTC (permalink / raw)
To: bitbake-devel
Define a new bitbake configuration variable BB_HASH_CHECKSUM_CACHE_FILE
that can be used to define the cache file to use for file checksum
cache.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
lib/bb/siggen.py | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index a7916b2..43cf7b6 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -4,6 +4,7 @@ import os
import re
import tempfile
import bb.data
+from bb.checksum import FileChecksumCache
logger = logging.getLogger('BitBake.SigGen')
@@ -91,6 +92,12 @@ class SignatureGeneratorBasic(SignatureGenerator):
self.basewhitelist = set((data.getVar("BB_HASHBASE_WHITELIST", True) or "").split())
self.taskwhitelist = None
self.init_rundepcheck(data)
+ checksum_cache_file = data.getVar("BB_HASH_CHECKSUM_CACHE_FILE", True)
+ if checksum_cache_file:
+ self.checksum_cache = FileChecksumCache()
+ self.checksum_cache.init_cache(data, checksum_cache_file)
+ else:
+ self.checksum_cache = None
def init_rundepcheck(self, data):
self.taskwhitelist = data.getVar("BB_HASHTASK_WHITELIST", True) or None
@@ -194,7 +201,10 @@ class SignatureGeneratorBasic(SignatureGenerator):
self.runtaskdeps[k].append(dep)
if task in dataCache.file_checksums[fn]:
- checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename)
+ if self.checksum_cache:
+ checksums = self.checksum_cache.get_checksums(dataCache.file_checksums[fn][task], recipename)
+ else:
+ checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename)
for (f,cs) in checksums:
self.file_checksum_values[k][f] = cs
if cs:
@@ -221,8 +231,12 @@ class SignatureGeneratorBasic(SignatureGenerator):
def writeout_file_checksum_cache(self):
"""Write/update the file checksum cache onto disk"""
- bb.fetch2.fetcher_parse_save()
- bb.fetch2.fetcher_parse_done()
+ if self.checksum_cache:
+ self.checksum_cache.save_extras()
+ self.checksum_cache.save_merge()
+ else:
+ bb.fetch2.fetcher_parse_save()
+ bb.fetch2.fetcher_parse_done()
def dump_sigtask(self, fn, task, stampbase, runtime):
k = fn + "." + task
--
2.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH 0/6] Improve caching task file dependency checksum caching
2016-01-26 13:34 [PATCH 0/6] Improve caching task file dependency checksum caching Markus Lehtonen
` (5 preceding siblings ...)
2016-01-26 13:34 ` [PATCH 6/6] SignatureGeneratorBasic: make checksum cache file configurable Markus Lehtonen
@ 2016-01-29 17:09 ` Richard Purdie
2016-02-02 16:23 ` Markus Lehtonen
6 siblings, 1 reply; 9+ messages in thread
From: Richard Purdie @ 2016-01-29 17:09 UTC (permalink / raw)
To: Markus Lehtonen, bitbake-devel
On Tue, 2016-01-26 at 15:34 +0200, Markus Lehtonen wrote:
> This patchset improves the caching of task file dependency checksums in two
> ways. First, the patchset enables writing of the cache onto disk so that the
> checksums can be re-used on subsequent runs of bitbake. Previously the task
> signature checksums were calculated and cached in memory but never really
> saved.
>
> Second, this patchset makes the task file dependency checksum cache file
> configurable. This is intended to be used e.g. with a further patchset for
> oe-core that will utilize task file dependencies heavily.
>
> [YOCTO #8853]
Before I'd take this, I'd like to understand what this code does with a
large codebase, for example a kernel source tree.
I'd really like some performance measurements for the file counts
involved and the time it takes to stat trees like that. What is the
command overhead in that fairly pathological case?
Would we be better off requiring memory resident bitbake and using
inotify watches for example?
Cheers,
Richard
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 0/6] Improve caching task file dependency checksum caching
2016-01-29 17:09 ` [PATCH 0/6] Improve caching task file dependency checksum caching Richard Purdie
@ 2016-02-02 16:23 ` Markus Lehtonen
0 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2016-02-02 16:23 UTC (permalink / raw)
To: Richard Purdie; +Cc: bitbake-devel
[-- Attachment #1: Type: text/plain, Size: 6178 bytes --]
Hi Richard,
On Fri, 2016-01-29 at 17:09 +0000, Richard Purdie wrote:
> On Tue, 2016-01-26 at 15:34 +0200, Markus Lehtonen wrote:
> > This patchset improves the caching of task file dependency checksums in two
> > ways. First, the patchset enables writing of the cache onto disk so that the
> > checksums can be re-used on subsequent runs of bitbake. Previously the task
> > signature checksums were calculated and cached in memory but never really
> > saved.
> >
> > Second, this patchset makes the task file dependency checksum cache file
> > configurable. This is intended to be used e.g. with a further patchset for
> > oe-core that will utilize task file dependencies heavily.
> >
> > [YOCTO #8853]
>
> Before I'd take this, I'd like to understand what this code does with a
> large codebase, for example a kernel source tree.
First, this patchset should improve the performance on "normal" builds
(i.e. where my accompaniying externalsrc patch to oe-core is not
enabled). For current oe-core master I get 1211 files that get checked -
currently they are MD5'd every time bitbake gets run. With this patchset
enabled only the mtime of each of the files need to be checked for most
of the time and we get the checksum from the cache.
I think my externalsrc patchset for oe-core is then slightly another
matter:
http://lists.openembedded.org/pipermail/openembedded-core/2016-January/116296.html
This patchset takes heavy use of the task file dependencies and I fully
understand your concern there. I should've provided some data to look
at.
> I'd really like some performance measurements for the file counts
> involved and the time it takes to stat trees like that. What is the
> command overhead in that fairly pathological case?
I did some profiling on my desktop machine (i7-3770K, 16GB of RAM, 2TB
HDD). I basically ran "bitbake core-image-sato" and profiled the end of
bb.runqueue.RunQueueData.prepare() which does the task hashing.
The test cases I used were
- bb master: bitbake master (only profiling code added), oe-core
master
- bb patched: bitbake with my patchset applied, oe-core master
- bb patched + linux-yocto: bitbake with my patchset applied, oe-core
with my other patchset applied and "devtool modify linux-yocto"
enabled where all files of the kernel source are added as deps
First, the results with kernel caches hot which is probably closer to
the usual use case.
# OF FILE CHECKSUM CUMTIME OF
# TESTCASE FILES CACHE STATE get_taskhash
------------------------------------------------------------------------
1 bb master 1211 cold 0.602
2 bb patched 1211 cold 0.599
3 bb patched 1211 warm 0.487
4 bb patched + linux-yocto 53519 cold 15.06
5 bb patched + linux-yocto 53519 warm 1.218
We can see that the improvement in a "normal" build is about 20% (#2 vs.
#3) but in absolute time this is neglible. Tests #1 and #2 are about the
same as they should as all the same files are hashed. In the "kernel
case" the first run takes quite long as the whole kernel source tree
(over 52000 files) is hashed. After this, the hashes are cached on disk
and on subsequent runs the overhead is quite small. The time taken by
get_taskhash drops to about one tenth.
Next, I made some tests with the kernel caches dropped before every test
run which represents certain worst case scenario and should give more
coherent results.
# OF FILE CHECKSUM CUMTIME OF
# TESTCASE FILES CACHE STATE get_taskhash
------------------------------------------------------------------------
6 bb master 1211 cold 2.222
7 bb patched 1211 cold 2.178
8 bb patched 1211 warm 0.576
9 bb patched + linux-yocto 53519 cold 80.039
10 bb patched + linux-yocto 53519 warm 8.496
Here the "kernel case" is quite rude as the whole source tree is read
and hashed from disk. After the on-disk file checksum cache has been
populated the numbers look better. Again, the time taken by get_taskhash
drops to about one tenth.
Loading of the cache file takes some time, too. On my machine loading
(pickle.load()) a "normal" cache with 1211 entries takes about 0.02
seconds. Loading the big linux-yocto polluted cache file (with 53519
entries) takes about 0.4 seconds. So, I think that should be bearable.
Note that all these results are from one run only, and thus, they are
not statistically reliable as such. But, they should give a ballpark
figure. All the cprofile results are found as attachments of this email,
if you want to take a closer look.
With these results I think that the bitbake patchset could be merged.
Normally, you would get slight performance improvement as the cache file
would contain a reasonable amount of entries. As said before, I think
that the "linux-yocto" case is somewhat separate from this patchset: in
that case you will get the same hashing penalty whether you have this
bitbake patchset applied or not. The difference is that with this
patchset applied the hashing penalty drops dramatically after the
checksums have been cached on disk.
> Would we be better off requiring memory resident bitbake and using
> inotify watches for example?
I don't know :) How would you "require" that?
When taking a closer look at the code I realized that the existing
caching code is partly dead. The checksum cache file written to disk
(local_file_checksum_cache.dat) is basically always empty.
FileChecksumCache class is effectively only used by the task hashing
code but the data gets never written onto disk. It doesn't make much
sense reading/writing an empty local_file_checksum_cache.dat every time.
I'll fix this in the next version of this patchset.
Cheers,
Markus
[-- Attachment #2: profile_01.txt --]
[-- Type: text/plain, Size: 5141 bytes --]
827014 function calls (827009 primitive calls) in 0.612 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4917 0.009 0.000 0.602 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4917 0.069 0.000 0.593 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:177(get_taskhash)
416 0.007 0.000 0.206 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/fetch2/__init__.py:1104(get_file_checksums)
23313 0.016 0.000 0.191 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
1211 0.001 0.000 0.188 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/fetch2/__init__.py:1112(checksum_file)
1211 0.003 0.000 0.187 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:69(get_checksum)
1211 0.124 0.000 0.181 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:512(md5_file)
23313 0.054 0.000 0.175 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
14820 0.013 0.000 0.061 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
4917 0.014 0.000 0.052 0.000 {sorted}
216557 0.052 0.000 0.052 0.000 {method 'update' of '_hashlib.HASH' objects}
29841 0.039 0.000 0.039 0.000 {method 'find' of 'str' objects}
23313 0.020 0.000 0.038 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:316(clean_basepath)
4917 0.011 0.000 0.035 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:168(read_taint)
15732 0.025 0.000 0.033 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
6128 0.028 0.000 0.028 0.000 {open}
23313 0.023 0.000 0.023 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
66338 0.019 0.000 0.019 0.000 {method 'rsplit' of 'str' objects}
32340 0.019 0.000 0.019 0.000 {method 'join' of 'str' objects}
16542 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
39065 0.007 0.000 0.007 0.000 {method 'startswith' of 'str' objects}
6128 0.007 0.000 0.007 0.000 {_hashlib.openssl_md5}
15732 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
16623 0.006 0.000 0.006 0.000 {method 'split' of 'str' objects}
105812 0.005 0.000 0.005 0.000 {len}
1214 0.001 0.000 0.005 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
2174 0.005 0.000 0.005 0.000 {posix.stat}
46451 0.005 0.000 0.005 0.000 {method 'append' of 'list' objects}
23313 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
16562 0.004 0.000 0.004 0.000 {method 'endswith' of 'str' objects}
6128 0.004 0.000 0.004 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
1211 0.001 0.000 0.003 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:39(cached_mtime)
15760 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
1214 0.000 0.000 0.001 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
4917 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
4917 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
416 0.000 0.000 0.000 0.000 {method 'sort' of 'list' objects}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/fetch2/__init__.py:1120(checksum_dir)
1211 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects}
1216 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
9/4 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:209(walk)
20 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
3 0.000 0.000 0.000 0.000 {posix.listdir}
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
2 0.000 0.000 0.000 0.000 {posix.lstat}
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
1 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
[-- Attachment #3: profile_02.txt --]
[-- Type: text/plain, Size: 7432 bytes --]
827145 function calls (827140 primitive calls) in 0.613 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4917 0.008 0.000 0.599 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4917 0.068 0.000 0.590 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:188(get_taskhash)
416 0.007 0.000 0.203 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:98(get_checksums)
23313 0.016 0.000 0.192 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
1211 0.001 0.000 0.185 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:101(checksum_file)
1211 0.003 0.000 0.184 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:71(get_checksum)
1211 0.122 0.000 0.179 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:512(md5_file)
23313 0.055 0.000 0.176 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
14820 0.014 0.000 0.061 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
216557 0.051 0.000 0.051 0.000 {method 'update' of '_hashlib.HASH' objects}
4917 0.014 0.000 0.051 0.000 {sorted}
29841 0.038 0.000 0.038 0.000 {method 'find' of 'str' objects}
23313 0.020 0.000 0.037 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:342(clean_basepath)
4917 0.012 0.000 0.036 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:179(read_taint)
15732 0.025 0.000 0.033 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
6134 0.029 0.000 0.029 0.000 {open}
23313 0.024 0.000 0.024 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
66338 0.019 0.000 0.019 0.000 {method 'rsplit' of 'str' objects}
32340 0.019 0.000 0.019 0.000 {method 'join' of 'str' objects}
16542 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
15732 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
6128 0.007 0.000 0.007 0.000 {_hashlib.openssl_md5}
39071 0.007 0.000 0.007 0.000 {method 'startswith' of 'str' objects}
16623 0.006 0.000 0.006 0.000 {method 'split' of 'str' objects}
105820 0.005 0.000 0.005 0.000 {len}
1214 0.001 0.000 0.005 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
2184 0.005 0.000 0.005 0.000 {posix.stat}
23313 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
46451 0.004 0.000 0.004 0.000 {method 'append' of 'list' objects}
16563 0.004 0.000 0.004 0.000 {method 'endswith' of 'str' objects}
1 0.000 0.000 0.004 0.004 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:238(writeout_file_checksum_cache)
6128 0.004 0.000 0.004 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
1211 0.001 0.000 0.003 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:41(cached_mtime)
15760 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
1 0.000 0.000 0.002 0.002 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:819(save_merge)
2 0.002 0.001 0.002 0.001 {method 'dump' of 'cPickle.Pickler' objects}
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
1 0.000 0.000 0.001 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:789(save_extras)
1 0.001 0.001 0.001 0.001 {built-in method load}
1214 0.000 0.000 0.001 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
4917 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
4917 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
416 0.000 0.000 0.000 0.000 {method 'sort' of 'list' objects}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:109(checksum_dir)
1211 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects}
1216 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:443(lockfile)
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:88(merge_data)
9/4 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:209(walk)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:498(unlockfile)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:699(mkdirhier)
4 0.000 0.000 0.000 0.000 {posix.unlink}
4 0.000 0.000 0.000 0.000 {posix.listdir}
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:136(makedirs)
21 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
7 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/genericpath.py:15(exists)
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:127(dirname)
3 0.000 0.000 0.000 0.000 {method 'close' of 'file' objects}
9 0.000 0.000 0.000 0.000 {fcntl.flock}
3 0.000 0.000 0.000 0.000 {posix.mkdir}
2 0.000 0.000 0.000 0.000 {cPickle.Pickler}
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:89(split)
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
3 0.000 0.000 0.000 0.000 {posix.access}
8 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
2 0.000 0.000 0.000 0.000 {posix.lstat}
13 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
9 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects}
3 0.000 0.000 0.000 0.000 {posix.fstat}
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:119(basename)
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
1 0.000 0.000 0.000 0.000 {cPickle.Unpickler}
1 0.000 0.000 0.000 0.000 {posix.getpid}
1 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
[-- Attachment #4: profile_03.txt --]
[-- Type: text/plain, Size: 7219 bytes --]
605747 function calls (605742 primitive calls) in 0.498 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4917 0.008 0.000 0.487 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4917 0.069 0.000 0.479 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:188(get_taskhash)
23313 0.016 0.000 0.262 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
23313 0.061 0.000 0.246 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
66338 0.085 0.000 0.085 0.000 {method 'rsplit' of 'str' objects}
14820 0.013 0.000 0.060 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
4917 0.014 0.000 0.052 0.000 {sorted}
23313 0.020 0.000 0.039 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:342(clean_basepath)
29841 0.038 0.000 0.038 0.000 {method 'find' of 'str' objects}
4917 0.011 0.000 0.035 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:179(read_taint)
15732 0.024 0.000 0.033 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
4923 0.024 0.000 0.024 0.000 {open}
23313 0.023 0.000 0.023 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
416 0.006 0.000 0.021 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:98(get_checksums)
32340 0.018 0.000 0.018 0.000 {method 'join' of 'str' objects}
16542 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
15732 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
39072 0.007 0.000 0.007 0.000 {method 'startswith' of 'str' objects}
4917 0.006 0.000 0.006 0.000 {_hashlib.openssl_md5}
16623 0.006 0.000 0.006 0.000 {method 'split' of 'str' objects}
105820 0.005 0.000 0.005 0.000 {len}
1211 0.000 0.000 0.005 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:101(checksum_file)
23313 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
46451 0.004 0.000 0.004 0.000 {method 'append' of 'list' objects}
1211 0.001 0.000 0.004 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:71(get_checksum)
16563 0.004 0.000 0.004 0.000 {method 'endswith' of 'str' objects}
2184 0.004 0.000 0.004 0.000 {posix.stat}
1214 0.001 0.000 0.004 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
4917 0.003 0.000 0.003 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
1211 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:41(cached_mtime)
15760 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
1 0.000 0.000 0.001 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:238(writeout_file_checksum_cache)
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
1 0.000 0.000 0.001 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:819(save_merge)
2 0.001 0.000 0.001 0.000 {method 'dump' of 'cPickle.Pickler' objects}
4917 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
1214 0.000 0.000 0.001 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
4917 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
1211 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects}
416 0.000 0.000 0.000 0.000 {method 'sort' of 'list' objects}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:789(save_extras)
1216 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:109(checksum_dir)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:443(lockfile)
9/4 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:209(walk)
4 0.000 0.000 0.000 0.000 {posix.listdir}
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:498(unlockfile)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:699(mkdirhier)
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:136(makedirs)
7 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/genericpath.py:15(exists)
4 0.000 0.000 0.000 0.000 {posix.unlink}
21 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:127(dirname)
3 0.000 0.000 0.000 0.000 {method 'close' of 'file' objects}
9 0.000 0.000 0.000 0.000 {fcntl.flock}
2 0.000 0.000 0.000 0.000 {cPickle.Pickler}
1 0.000 0.000 0.000 0.000 {built-in method load}
3 0.000 0.000 0.000 0.000 {posix.mkdir}
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
3 0.000 0.000 0.000 0.000 {posix.access}
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:89(split)
6 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:119(basename)
2 0.000 0.000 0.000 0.000 {posix.lstat}
8 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
3 0.000 0.000 0.000 0.000 {posix.fstat}
14 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
1 0.000 0.000 0.000 0.000 {cPickle.Unpickler}
1 0.000 0.000 0.000 0.000 {posix.getpid}
1 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:88(merge_data)
9 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
[-- Attachment #5: profile_04.txt --]
[-- Type: text/plain, Size: 12185 bytes --]
26278622 function calls (26266186 primitive calls) in 15.331 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4911 0.014 0.000 15.060 0.003 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4911 0.094 0.000 15.046 0.003 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:188(get_taskhash)
417 0.008 0.000 14.622 0.035 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:98(get_checksums)
23 0.088 0.004 14.532 0.632 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:109(checksum_dir)
53519 0.032 0.000 13.886 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:101(checksum_file)
53519 0.216 0.000 13.854 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:71(get_checksum)
52308 5.352 0.000 10.975 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:512(md5_file)
20893617 5.259 0.000 5.259 0.000 {method 'update' of '_hashlib.HASH' objects}
52308 0.070 0.000 2.353 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/__init__.py:84(debug)
52308 0.052 0.000 2.244 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/__init__.py:57(bbdebug)
52308 0.094 0.000 2.192 0.000 /usr/lib64/python2.7/logging/__init__.py:1209(log)
52308 0.075 0.000 2.046 0.000 /usr/lib64/python2.7/logging/__init__.py:1260(_log)
52308 0.043 0.000 0.969 0.000 /usr/lib64/python2.7/logging/__init__.py:1281(handle)
52308 0.093 0.000 0.906 0.000 /usr/lib64/python2.7/logging/__init__.py:1313(callHandlers)
52308 0.150 0.000 0.859 0.000 /usr/lib64/python2.7/logging/__init__.py:1247(makeRecord)
104616 0.142 0.000 0.813 0.000 /usr/lib64/python2.7/logging/__init__.py:744(handle)
52308 0.411 0.000 0.709 0.000 /usr/lib64/python2.7/logging/__init__.py:243(__init__)
15955/3519 0.069 0.000 0.467 0.000 /usr/lib64/python2.7/os.py:209(walk)
110299 0.357 0.000 0.357 0.000 {posix.stat}
57225 0.319 0.000 0.319 0.000 {open}
53519 0.078 0.000 0.276 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:41(cached_mtime)
1 0.022 0.022 0.261 0.261 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:238(writeout_file_checksum_cache)
104616 0.054 0.000 0.255 0.000 /usr/lib64/python2.7/logging/__init__.py:701(acquire)
57021 0.038 0.000 0.225 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
104616 0.130 0.000 0.202 0.000 /usr/lib64/python2.7/threading.py:146(acquire)
104616 0.045 0.000 0.199 0.000 /usr/lib64/python2.7/logging/__init__.py:708(release)
23297 0.016 0.000 0.192 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
52308 0.025 0.000 0.181 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/event.py:602(emit)
111605 0.120 0.000 0.177 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
23297 0.056 0.000 0.176 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
1 0.004 0.004 0.160 0.160 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:819(save_merge)
52308 0.035 0.000 0.157 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/event.py:163(fire)
104616 0.118 0.000 0.154 0.000 /usr/lib64/python2.7/threading.py:186(release)
52308 0.093 0.000 0.144 0.000 /usr/lib64/python2.7/logging/__init__.py:1226(findCaller)
2 0.143 0.072 0.143 0.072 {method 'dump' of 'cPickle.Pickler' objects}
52308 0.026 0.000 0.099 0.000 /usr/lib64/python2.7/posixpath.py:104(splitext)
52308 0.057 0.000 0.093 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/event.py:139(fire_ui_handlers)
3498 0.087 0.000 0.087 0.000 {posix.listdir}
1 0.000 0.000 0.078 0.078 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:789(save_extras)
52308 0.055 0.000 0.073 0.000 /usr/lib64/python2.7/genericpath.py:85(_splitext)
1 0.066 0.066 0.066 0.066 {built-in method load}
14819 0.013 0.000 0.061 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
4911 0.014 0.000 0.052 0.000 {sorted}
57219 0.050 0.000 0.050 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
158135 0.049 0.000 0.049 0.000 {method 'get' of 'dict' objects}
52314 0.030 0.000 0.049 0.000 /usr/lib64/python2.7/posixpath.py:119(basename)
52308 0.030 0.000 0.047 0.000 /usr/lib64/python2.7/logging/__init__.py:1353(isEnabledFor)
417 0.045 0.000 0.045 0.000 {method 'sort' of 'list' objects}
209233 0.045 0.000 0.045 0.000 {isinstance}
52308 0.037 0.000 0.045 0.000 /usr/lib64/python2.7/logging/__init__.py:154(getLevelName)
104616 0.045 0.000 0.045 0.000 {method 'acquire' of 'thread.lock' objects}
150639 0.044 0.000 0.044 0.000 {method 'startswith' of 'str' objects}
4911 0.012 0.000 0.043 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:179(read_taint)
29839 0.038 0.000 0.038 0.000 {method 'find' of 'str' objects}
23297 0.020 0.000 0.038 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:342(clean_basepath)
57219 0.037 0.000 0.037 0.000 {_hashlib.openssl_md5}
52308 0.023 0.000 0.037 0.000 /usr/lib64/python2.7/logging/__init__.py:82(<lambda>)
156939 0.036 0.000 0.036 0.000 {method 'rfind' of 'str' objects}
52308 0.032 0.000 0.036 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/event.py:257(filter)
104616 0.036 0.000 0.036 0.000 /usr/lib64/python2.7/logging/__init__.py:605(filter)
209232 0.034 0.000 0.034 0.000 /usr/lib64/python2.7/threading.py:63(_note)
15731 0.025 0.000 0.033 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
52308 0.026 0.000 0.029 0.000 /usr/lib64/python2.7/threading.py:1152(currentThread)
52308 0.022 0.000 0.028 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/event.py:99(fire_class_handlers)
313848 0.028 0.000 0.028 0.000 {thread.get_ident}
84646 0.028 0.000 0.028 0.000 {method 'join' of 'str' objects}
57021 0.018 0.000 0.027 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
128146 0.024 0.000 0.024 0.000 {method 'endswith' of 'str' objects}
23300 0.024 0.000 0.024 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
1 0.023 0.023 0.023 0.023 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:88(merge_data)
3479 0.004 0.000 0.020 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
66305 0.018 0.000 0.018 0.000 {method 'rsplit' of 'str' objects}
52308 0.017 0.000 0.017 0.000 /usr/lib64/python2.7/logging/__init__.py:1339(getEffectiveLevel)
104616 0.016 0.000 0.016 0.000 {hasattr}
154535 0.016 0.000 0.016 0.000 {method 'append' of 'list' objects}
52308 0.014 0.000 0.014 0.000 /usr/lib64/python2.7/threading.py:967(name)
52308 0.014 0.000 0.014 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/event.py:613(filter)
52308 0.014 0.000 0.014 0.000 {sys._getframe}
52308 0.013 0.000 0.013 0.000 /usr/lib64/python2.7/multiprocessing/process.py:161(name)
3479 0.013 0.000 0.013 0.000 {posix.lstat}
104616 0.013 0.000 0.013 0.000 {method 'release' of 'thread.lock' objects}
60500 0.010 0.000 0.010 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
52308 0.010 0.000 0.010 0.000 /usr/lib64/python2.7/multiprocessing/process.py:59(current_process)
52308 0.010 0.000 0.010 0.000 {time.time}
16541 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
15731 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
52309 0.006 0.000 0.006 0.000 /usr/lib64/python2.7/posixpath.py:51(normcase)
52308 0.006 0.000 0.006 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/__init__.py:47(emit)
52309 0.005 0.000 0.005 0.000 {posix.getpid}
16626 0.005 0.000 0.005 0.000 {method 'split' of 'str' objects}
105673 0.005 0.000 0.005 0.000 {len}
23297 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
3479 0.002 0.000 0.003 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
15759 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
4 0.001 0.000 0.001 0.000 {posix.unlink}
4911 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
23 0.001 0.000 0.001 0.000 {method 'extend' of 'list' objects}
4911 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:443(lockfile)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:18(glob)
31 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:29(iglob)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:66(glob1)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:498(unlockfile)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:699(mkdirhier)
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:136(makedirs)
7 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/genericpath.py:15(exists)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/fnmatch.py:45(filter)
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:127(dirname)
9 0.000 0.000 0.000 0.000 {fcntl.flock}
3 0.000 0.000 0.000 0.000 {method 'close' of 'file' objects}
4 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:89(split)
3 0.000 0.000 0.000 0.000 {posix.mkdir}
2 0.000 0.000 0.000 0.000 {cPickle.Pickler}
1 0.000 0.000 0.000 0.000 {filter}
3 0.000 0.000 0.000 0.000 {posix.access}
30 0.000 0.000 0.000 0.000 {method 'match' of '_sre.SRE_Pattern' objects}
38 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:77(<lambda>)
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:94(has_magic)
9 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
3 0.000 0.000 0.000 0.000 {posix.fstat}
9 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects}
1 0.000 0.000 0.000 0.000 {cPickle.Unpickler}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
[-- Attachment #6: profile_05.txt --]
[-- Type: text/plain, Size: 8042 bytes --]
1566521 function calls (1554085 primitive calls) in 1.286 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4911 0.013 0.000 1.218 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4911 0.089 0.000 1.204 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:188(get_taskhash)
417 0.007 0.000 0.801 0.002 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:98(get_checksums)
23 0.047 0.002 0.736 0.032 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:109(checksum_dir)
15955/3519 0.056 0.000 0.325 0.000 /usr/lib64/python2.7/os.py:209(walk)
53519 0.018 0.000 0.238 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:101(checksum_file)
53519 0.055 0.000 0.220 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:71(get_checksum)
110299 0.192 0.000 0.192 0.000 {posix.stat}
111605 0.151 0.000 0.191 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
23297 0.015 0.000 0.188 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
23297 0.054 0.000 0.173 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
57021 0.032 0.000 0.156 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
53519 0.048 0.000 0.139 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:41(cached_mtime)
14819 0.014 0.000 0.061 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
1 0.006 0.006 0.059 0.059 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:238(writeout_file_checksum_cache)
1 0.001 0.001 0.053 0.053 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:819(save_merge)
4911 0.013 0.000 0.051 0.000 {sorted}
2 0.051 0.025 0.051 0.025 {method 'dump' of 'cPickle.Pickler' objects}
417 0.043 0.000 0.043 0.000 {method 'sort' of 'list' objects}
3498 0.040 0.000 0.040 0.000 {posix.listdir}
29839 0.038 0.000 0.038 0.000 {method 'find' of 'str' objects}
23297 0.020 0.000 0.038 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:342(clean_basepath)
4911 0.011 0.000 0.035 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:179(read_taint)
15731 0.024 0.000 0.033 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
150639 0.030 0.000 0.030 0.000 {method 'startswith' of 'str' objects}
53519 0.026 0.000 0.026 0.000 {method 'get' of 'dict' objects}
4917 0.025 0.000 0.025 0.000 {open}
57021 0.015 0.000 0.024 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
23300 0.022 0.000 0.022 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
128146 0.020 0.000 0.020 0.000 {method 'endswith' of 'str' objects}
66305 0.018 0.000 0.018 0.000 {method 'rsplit' of 'str' objects}
32338 0.018 0.000 0.018 0.000 {method 'join' of 'str' objects}
154535 0.013 0.000 0.013 0.000 {method 'append' of 'list' objects}
3479 0.003 0.000 0.011 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
60500 0.009 0.000 0.009 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
16541 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
4911 0.009 0.000 0.009 0.000 {_hashlib.openssl_md5}
15731 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
3479 0.006 0.000 0.006 0.000 {posix.lstat}
16626 0.005 0.000 0.005 0.000 {method 'split' of 'str' objects}
105673 0.005 0.000 0.005 0.000 {len}
23297 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
4911 0.003 0.000 0.003 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
15759 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
3479 0.001 0.000 0.002 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
4911 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
4911 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
23 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:789(save_extras)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:443(lockfile)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:18(glob)
31 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:29(iglob)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:498(unlockfile)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:66(glob1)
4 0.000 0.000 0.000 0.000 {posix.unlink}
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:699(mkdirhier)
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:136(makedirs)
7 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/genericpath.py:15(exists)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/fnmatch.py:45(filter)
3 0.000 0.000 0.000 0.000 {method 'close' of 'file' objects}
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:127(dirname)
9 0.000 0.000 0.000 0.000 {fcntl.flock}
1 0.000 0.000 0.000 0.000 {filter}
4 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:89(split)
2 0.000 0.000 0.000 0.000 {cPickle.Pickler}
30 0.000 0.000 0.000 0.000 {method 'match' of '_sre.SRE_Pattern' objects}
1 0.000 0.000 0.000 0.000 {built-in method load}
3 0.000 0.000 0.000 0.000 {posix.mkdir}
3 0.000 0.000 0.000 0.000 {posix.access}
38 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:77(<lambda>)
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:94(has_magic)
6 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:119(basename)
15 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
3 0.000 0.000 0.000 0.000 {posix.fstat}
9 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
1 0.000 0.000 0.000 0.000 {cPickle.Unpickler}
1 0.000 0.000 0.000 0.000 {isinstance}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:88(merge_data)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:51(normcase)
9 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects}
1 0.000 0.000 0.000 0.000 {posix.getpid}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
[-- Attachment #7: profile_06.txt --]
[-- Type: text/plain, Size: 5141 bytes --]
827014 function calls (827009 primitive calls) in 2.235 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4917 0.012 0.000 2.222 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4917 0.084 0.000 2.210 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:177(get_taskhash)
416 0.018 0.000 1.749 0.004 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/fetch2/__init__.py:1104(get_file_checksums)
1211 0.002 0.000 1.690 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/fetch2/__init__.py:1112(checksum_file)
1211 0.008 0.000 1.688 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:69(get_checksum)
1211 1.534 0.001 1.672 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:512(md5_file)
23313 0.018 0.000 0.196 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
23313 0.057 0.000 0.178 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
216557 0.121 0.000 0.121 0.000 {method 'update' of '_hashlib.HASH' objects}
4917 0.016 0.000 0.075 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:168(read_taint)
6128 0.071 0.000 0.071 0.000 {open}
14820 0.014 0.000 0.062 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
4917 0.017 0.000 0.060 0.000 {sorted}
23313 0.023 0.000 0.043 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:316(clean_basepath)
29841 0.039 0.000 0.039 0.000 {method 'find' of 'str' objects}
15732 0.025 0.000 0.034 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
23313 0.026 0.000 0.026 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
66338 0.021 0.000 0.021 0.000 {method 'rsplit' of 'str' objects}
32340 0.018 0.000 0.018 0.000 {method 'join' of 'str' objects}
1214 0.003 0.000 0.016 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
2174 0.015 0.000 0.015 0.000 {posix.stat}
1 0.000 0.000 0.014 0.014 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/fetch2/__init__.py:1120(checksum_dir)
16623 0.013 0.000 0.013 0.000 {method 'split' of 'str' objects}
9/4 0.000 0.000 0.011 0.003 /usr/lib64/python2.7/os.py:209(walk)
3 0.010 0.003 0.010 0.003 {posix.listdir}
6128 0.010 0.000 0.010 0.000 {_hashlib.openssl_md5}
16542 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
39065 0.007 0.000 0.007 0.000 {method 'startswith' of 'str' objects}
1211 0.003 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:39(cached_mtime)
6128 0.007 0.000 0.007 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
105812 0.007 0.000 0.007 0.000 {len}
15732 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
23313 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
46451 0.005 0.000 0.005 0.000 {method 'append' of 'list' objects}
16562 0.004 0.000 0.004 0.000 {method 'endswith' of 'str' objects}
15760 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
1214 0.001 0.000 0.002 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
416 0.001 0.000 0.001 0.000 {method 'sort' of 'list' objects}
4917 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
4917 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
1211 0.001 0.000 0.001 0.000 {method 'get' of 'dict' objects}
1216 0.001 0.000 0.001 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
20 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
2 0.000 0.000 0.000 0.000 {posix.lstat}
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
1 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
[-- Attachment #8: profile_07.txt --]
[-- Type: text/plain, Size: 7432 bytes --]
827142 function calls (827137 primitive calls) in 2.194 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4917 0.012 0.000 2.178 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4917 0.084 0.000 2.166 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:188(get_taskhash)
416 0.019 0.000 1.644 0.004 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:98(get_checksums)
1211 0.002 0.000 1.585 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:101(checksum_file)
1211 0.008 0.000 1.583 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:71(get_checksum)
1211 1.423 0.001 1.568 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:512(md5_file)
23313 0.018 0.000 0.262 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
23313 0.124 0.000 0.245 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
216557 0.128 0.000 0.128 0.000 {method 'update' of '_hashlib.HASH' objects}
4917 0.016 0.000 0.072 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:179(read_taint)
6134 0.068 0.000 0.068 0.000 {open}
14820 0.013 0.000 0.062 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
4917 0.017 0.000 0.058 0.000 {sorted}
23313 0.022 0.000 0.042 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:342(clean_basepath)
29841 0.039 0.000 0.039 0.000 {method 'find' of 'str' objects}
15732 0.025 0.000 0.034 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
23313 0.025 0.000 0.025 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
66338 0.020 0.000 0.020 0.000 {method 'rsplit' of 'str' objects}
32340 0.019 0.000 0.019 0.000 {method 'join' of 'str' objects}
1214 0.003 0.000 0.015 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
2184 0.014 0.000 0.014 0.000 {posix.stat}
1 0.000 0.000 0.014 0.014 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:109(checksum_dir)
16623 0.013 0.000 0.013 0.000 {method 'split' of 'str' objects}
9/4 0.000 0.000 0.011 0.003 /usr/lib64/python2.7/os.py:209(walk)
4 0.010 0.003 0.010 0.003 {posix.listdir}
6128 0.009 0.000 0.009 0.000 {_hashlib.openssl_md5}
16542 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
6128 0.007 0.000 0.007 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
39070 0.007 0.000 0.007 0.000 {method 'startswith' of 'str' objects}
105820 0.007 0.000 0.007 0.000 {len}
1211 0.003 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:41(cached_mtime)
15732 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
46451 0.005 0.000 0.005 0.000 {method 'append' of 'list' objects}
23313 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
16563 0.004 0.000 0.004 0.000 {method 'endswith' of 'str' objects}
1 0.000 0.000 0.004 0.004 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:238(writeout_file_checksum_cache)
15760 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
1 0.000 0.000 0.002 0.002 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:819(save_merge)
2 0.002 0.001 0.002 0.001 {method 'dump' of 'cPickle.Pickler' objects}
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
1214 0.001 0.000 0.002 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
1 0.000 0.000 0.001 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:789(save_extras)
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
416 0.001 0.000 0.001 0.000 {method 'sort' of 'list' objects}
4917 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
1 0.001 0.001 0.001 0.001 {built-in method load}
4917 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
1216 0.001 0.000 0.001 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
1211 0.001 0.000 0.001 0.000 {method 'get' of 'dict' objects}
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:443(lockfile)
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:88(merge_data)
21 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:699(mkdirhier)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:498(unlockfile)
4 0.000 0.000 0.000 0.000 {posix.unlink}
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:136(makedirs)
7 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/genericpath.py:15(exists)
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:127(dirname)
3 0.000 0.000 0.000 0.000 {method 'close' of 'file' objects}
2 0.000 0.000 0.000 0.000 {posix.lstat}
9 0.000 0.000 0.000 0.000 {fcntl.flock}
3 0.000 0.000 0.000 0.000 {posix.mkdir}
2 0.000 0.000 0.000 0.000 {cPickle.Pickler}
3 0.000 0.000 0.000 0.000 {posix.access}
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:89(split)
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
3 0.000 0.000 0.000 0.000 {posix.fstat}
12 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
4 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:119(basename)
8 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
1 0.000 0.000 0.000 0.000 {cPickle.Unpickler}
9 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects}
1 0.000 0.000 0.000 0.000 {posix.getpid}
1 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
[-- Attachment #9: profile_08.txt --]
[-- Type: text/plain, Size: 7219 bytes --]
605744 function calls (605739 primitive calls) in 0.617 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4917 0.011 0.000 0.576 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4917 0.082 0.000 0.565 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:188(get_taskhash)
23313 0.017 0.000 0.268 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
23313 0.063 0.000 0.250 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
66338 0.086 0.000 0.086 0.000 {method 'rsplit' of 'str' objects}
4917 0.015 0.000 0.066 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:179(read_taint)
14820 0.013 0.000 0.061 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
4923 0.061 0.000 0.061 0.000 {open}
4917 0.016 0.000 0.059 0.000 {sorted}
416 0.013 0.000 0.044 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:98(get_checksums)
23313 0.023 0.000 0.043 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:342(clean_basepath)
29841 0.038 0.000 0.038 0.000 {method 'find' of 'str' objects}
15732 0.025 0.000 0.033 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
1 0.000 0.000 0.029 0.029 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:238(writeout_file_checksum_cache)
1 0.018 0.018 0.029 0.029 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:819(save_merge)
23313 0.025 0.000 0.025 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
32340 0.018 0.000 0.018 0.000 {method 'join' of 'str' objects}
16623 0.011 0.000 0.011 0.000 {method 'split' of 'str' objects}
1211 0.001 0.000 0.010 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:101(checksum_file)
16542 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
1211 0.003 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:71(get_checksum)
4917 0.008 0.000 0.008 0.000 {_hashlib.openssl_md5}
2184 0.008 0.000 0.008 0.000 {posix.stat}
1214 0.002 0.000 0.008 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
39071 0.007 0.000 0.007 0.000 {method 'startswith' of 'str' objects}
15732 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
105820 0.007 0.000 0.007 0.000 {len}
23313 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
46451 0.005 0.000 0.005 0.000 {method 'append' of 'list' objects}
1211 0.002 0.000 0.005 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:41(cached_mtime)
16563 0.004 0.000 0.004 0.000 {method 'endswith' of 'str' objects}
4917 0.004 0.000 0.004 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
15760 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
1214 0.001 0.000 0.001 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
1 0.000 0.000 0.001 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:109(checksum_dir)
9/4 0.000 0.000 0.001 0.000 /usr/lib64/python2.7/os.py:209(walk)
1211 0.001 0.000 0.001 0.000 {method 'get' of 'dict' objects}
4917 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
2 0.001 0.000 0.001 0.000 {method 'dump' of 'cPickle.Pickler' objects}
416 0.001 0.000 0.001 0.000 {method 'sort' of 'list' objects}
4917 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
4 0.001 0.000 0.001 0.000 {posix.listdir}
1216 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:789(save_extras)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:443(lockfile)
21 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:498(unlockfile)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:699(mkdirhier)
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:136(makedirs)
4 0.000 0.000 0.000 0.000 {posix.unlink}
7 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/genericpath.py:15(exists)
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
3 0.000 0.000 0.000 0.000 {method 'close' of 'file' objects}
2 0.000 0.000 0.000 0.000 {posix.lstat}
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:127(dirname)
9 0.000 0.000 0.000 0.000 {fcntl.flock}
3 0.000 0.000 0.000 0.000 {posix.mkdir}
2 0.000 0.000 0.000 0.000 {cPickle.Pickler}
1 0.000 0.000 0.000 0.000 {built-in method load}
3 0.000 0.000 0.000 0.000 {posix.access}
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:89(split)
3 0.000 0.000 0.000 0.000 {posix.fstat}
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:119(basename)
2 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
8 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
13 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
1 0.000 0.000 0.000 0.000 {cPickle.Unpickler}
1 0.000 0.000 0.000 0.000 {posix.getpid}
1 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:88(merge_data)
9 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
[-- Attachment #10: profile_09.txt --]
[-- Type: text/plain, Size: 8258 bytes --]
22669370 function calls (22656934 primitive calls) in 80.332 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4911 0.016 0.000 80.039 0.016 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4911 0.107 0.000 80.023 0.016 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:188(get_taskhash)
417 0.015 0.000 79.538 0.191 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:98(get_checksums)
23 0.229 0.010 79.169 3.442 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:109(checksum_dir)
53519 0.075 0.000 70.268 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:101(checksum_file)
53519 0.338 0.000 70.193 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:71(get_checksum)
52308 57.299 0.001 69.200 0.001 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:512(md5_file)
20893617 11.202 0.000 11.202 0.000 {method 'update' of '_hashlib.HASH' objects}
15955/3519 0.160 0.000 8.463 0.002 /usr/lib64/python2.7/os.py:209(walk)
3498 5.004 0.001 5.004 0.001 {posix.listdir}
110299 3.558 0.000 3.558 0.000 {posix.stat}
57021 0.088 0.000 3.268 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
53519 0.175 0.000 0.613 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:41(cached_mtime)
57225 0.577 0.000 0.577 0.000 {open}
111605 0.297 0.000 0.457 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
1 0.028 0.028 0.282 0.282 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:238(writeout_file_checksum_cache)
23297 0.017 0.000 0.201 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
23297 0.059 0.000 0.184 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
1 0.004 0.004 0.176 0.176 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:819(save_merge)
2 0.164 0.082 0.164 0.082 {method 'dump' of 'cPickle.Pickler' objects}
57219 0.131 0.000 0.131 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
150639 0.117 0.000 0.117 0.000 {method 'startswith' of 'str' objects}
1 0.000 0.000 0.113 0.113 /usr/lib64/python2.7/glob.py:18(glob)
31 0.000 0.000 0.113 0.004 /usr/lib64/python2.7/glob.py:29(iglob)
1 0.000 0.000 0.113 0.113 /usr/lib64/python2.7/glob.py:66(glob1)
1 0.000 0.000 0.078 0.078 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:789(save_extras)
4911 0.014 0.000 0.073 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:179(read_taint)
1 0.069 0.069 0.069 0.069 {built-in method load}
57219 0.064 0.000 0.064 0.000 {_hashlib.openssl_md5}
14819 0.014 0.000 0.063 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
417 0.061 0.000 0.061 0.000 {method 'sort' of 'list' objects}
57021 0.038 0.000 0.059 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
4911 0.015 0.000 0.057 0.000 {sorted}
128146 0.056 0.000 0.056 0.000 {method 'endswith' of 'str' objects}
53519 0.043 0.000 0.043 0.000 {method 'get' of 'dict' objects}
3479 0.009 0.000 0.042 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
23297 0.022 0.000 0.042 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:342(clean_basepath)
29839 0.040 0.000 0.040 0.000 {method 'find' of 'str' objects}
15731 0.025 0.000 0.034 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
154535 0.028 0.000 0.028 0.000 {method 'append' of 'list' objects}
3479 0.027 0.000 0.027 0.000 {posix.lstat}
23300 0.025 0.000 0.025 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
60500 0.023 0.000 0.023 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
66305 0.019 0.000 0.019 0.000 {method 'rsplit' of 'str' objects}
32338 0.019 0.000 0.019 0.000 {method 'join' of 'str' objects}
1 0.016 0.016 0.016 0.016 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:88(merge_data)
16541 0.005 0.000 0.010 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
16626 0.010 0.000 0.010 0.000 {method 'split' of 'str' objects}
15731 0.005 0.000 0.008 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
105673 0.006 0.000 0.006 0.000 {len}
3479 0.004 0.000 0.006 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
23297 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
15759 0.003 0.000 0.003 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
4 0.001 0.000 0.001 0.000 {posix.unlink}
4911 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
23 0.001 0.000 0.001 0.000 {method 'extend' of 'list' objects}
4911 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:443(lockfile)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:498(unlockfile)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:699(mkdirhier)
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:136(makedirs)
7 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/genericpath.py:15(exists)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/fnmatch.py:45(filter)
1 0.000 0.000 0.000 0.000 {filter}
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:127(dirname)
3 0.000 0.000 0.000 0.000 {method 'close' of 'file' objects}
38 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:77(<lambda>)
9 0.000 0.000 0.000 0.000 {fcntl.flock}
30 0.000 0.000 0.000 0.000 {method 'match' of '_sre.SRE_Pattern' objects}
3 0.000 0.000 0.000 0.000 {posix.mkdir}
2 0.000 0.000 0.000 0.000 {cPickle.Pickler}
3 0.000 0.000 0.000 0.000 {posix.access}
4 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:89(split)
15 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:94(has_magic)
3 0.000 0.000 0.000 0.000 {posix.fstat}
9 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects}
9 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
6 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:119(basename)
1 0.000 0.000 0.000 0.000 {cPickle.Unpickler}
1 0.000 0.000 0.000 0.000 {isinstance}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:51(normcase)
1 0.000 0.000 0.000 0.000 {posix.getpid}
[-- Attachment #11: profile_10.txt --]
[-- Type: text/plain, Size: 8042 bytes --]
1566521 function calls (1554085 primitive calls) in 8.581 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
4911 0.015 0.000 8.496 0.002 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:132(get_taskhash)
4911 0.101 0.000 8.481 0.002 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:188(get_taskhash)
417 0.012 0.000 8.031 0.019 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:98(get_checksums)
23 0.096 0.004 7.838 0.341 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:109(checksum_dir)
15955/3519 0.224 0.000 7.168 0.002 /usr/lib64/python2.7/os.py:209(walk)
3498 3.700 0.001 3.700 0.001 {posix.listdir}
110299 3.213 0.000 3.213 0.000 {posix.stat}
57021 0.077 0.000 3.165 0.000 /usr/lib64/python2.7/genericpath.py:38(isdir)
53519 0.036 0.000 0.455 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:101(checksum_file)
53519 0.105 0.000 0.420 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:71(get_checksum)
53519 0.093 0.000 0.270 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:41(cached_mtime)
111605 0.182 0.000 0.267 0.000 /usr/lib64/python2.7/posixpath.py:68(join)
23297 0.016 0.000 0.192 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:117(rundep_check)
23297 0.055 0.000 0.175 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:3(sstate_rundepfilter)
1 0.006 0.006 0.073 0.073 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:238(writeout_file_checksum_cache)
1 0.001 0.001 0.067 0.067 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:819(save_merge)
14819 0.013 0.000 0.061 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:11(isKernel)
150639 0.061 0.000 0.061 0.000 {method 'startswith' of 'str' objects}
417 0.060 0.000 0.060 0.000 {method 'sort' of 'list' objects}
4917 0.060 0.000 0.060 0.000 {open}
4911 0.014 0.000 0.058 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:179(read_taint)
4911 0.015 0.000 0.055 0.000 {sorted}
57021 0.034 0.000 0.053 0.000 /usr/lib64/python2.7/stat.py:40(S_ISDIR)
2 0.051 0.025 0.051 0.025 {method 'dump' of 'cPickle.Pickler' objects}
53519 0.044 0.000 0.044 0.000 {method 'get' of 'dict' objects}
23297 0.021 0.000 0.040 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/siggen.py:342(clean_basepath)
29839 0.039 0.000 0.039 0.000 {method 'find' of 'str' objects}
128146 0.037 0.000 0.037 0.000 {method 'endswith' of 'str' objects}
15731 0.025 0.000 0.033 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:14(isPackageGroup)
1 0.000 0.000 0.024 0.024 /usr/lib64/python2.7/glob.py:18(glob)
31 0.000 0.000 0.024 0.001 /usr/lib64/python2.7/glob.py:29(iglob)
1 0.000 0.000 0.024 0.024 /usr/lib64/python2.7/glob.py:66(glob1)
23300 0.024 0.000 0.024 0.000 {method 'search' of '_sre.SRE_Pattern' objects}
154535 0.023 0.000 0.023 0.000 {method 'append' of 'list' objects}
3479 0.005 0.000 0.021 0.000 /usr/lib64/python2.7/posixpath.py:139(islink)
60500 0.020 0.000 0.020 0.000 /usr/lib64/python2.7/stat.py:24(S_IFMT)
66305 0.019 0.000 0.019 0.000 {method 'rsplit' of 'str' objects}
32338 0.018 0.000 0.018 0.000 {method 'join' of 'str' objects}
3479 0.012 0.000 0.012 0.000 {posix.lstat}
16626 0.011 0.000 0.011 0.000 {method 'split' of 'str' objects}
4911 0.010 0.000 0.010 0.000 {_hashlib.openssl_md5}
16541 0.005 0.000 0.009 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:5(isNative)
15731 0.004 0.000 0.007 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:9(isNativeSDK)
105673 0.006 0.000 0.006 0.000 {len}
23297 0.005 0.000 0.005 0.000 {method 'group' of '_sre.SRE_Match' objects}
3479 0.002 0.000 0.004 0.000 /usr/lib64/python2.7/stat.py:55(S_ISLNK)
4911 0.003 0.000 0.003 0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
15759 0.002 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:7(isCross)
55 0.002 0.000 0.002 0.000 {method 'copy' of 'set' objects}
651 0.001 0.000 0.002 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:20(isImage)
936 0.001 0.000 0.001 0.000 /home/marquiz/yocto/openembedded-core/meta/lib/oe/sstatesig.py:17(isAllArch)
4911 0.001 0.000 0.001 0.000 {method 'add' of 'set' objects}
4911 0.001 0.000 0.001 0.000 {method 'remove' of 'set' objects}
23 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/cache.py:789(save_extras)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:443(lockfile)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:498(unlockfile)
3 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/utils.py:699(mkdirhier)
4 0.000 0.000 0.000 0.000 {posix.unlink}
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/os.py:136(makedirs)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/fnmatch.py:45(filter)
7 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/genericpath.py:15(exists)
3 0.000 0.000 0.000 0.000 {method 'close' of 'file' objects}
1 0.000 0.000 0.000 0.000 {filter}
9 0.000 0.000 0.000 0.000 {fcntl.flock}
5 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:127(dirname)
4 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:89(split)
1 0.000 0.000 0.000 0.000 {built-in method load}
3 0.000 0.000 0.000 0.000 {posix.mkdir}
2 0.000 0.000 0.000 0.000 {cPickle.Pickler}
30 0.000 0.000 0.000 0.000 {method 'match' of '_sre.SRE_Pattern' objects}
38 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:77(<lambda>)
3 0.000 0.000 0.000 0.000 {posix.access}
6 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:119(basename)
3 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/glob.py:94(has_magic)
15 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
9 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
3 0.000 0.000 0.000 0.000 {posix.fstat}
9 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects}
1 0.000 0.000 0.000 0.000 {cPickle.Unpickler}
1 0.000 0.000 0.000 0.000 {isinstance}
1 0.000 0.000 0.000 0.000 /home/marquiz/yocto/openembedded-core/bitbake/lib/bb/checksum.py:88(merge_data)
1 0.000 0.000 0.000 0.000 /usr/lib64/python2.7/posixpath.py:51(normcase)
1 0.000 0.000 0.000 0.000 {posix.getpid}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
^ permalink raw reply [flat|nested] 9+ messages in thread