[oe-commits] [openembedded-core] 16/30: scripts/buildstats-diff: add read_ops and write_ops to --diff-attr

git at git.openembedded.org git at git.openembedded.org
Fri Sep 30 16:16:21 UTC 2016


rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 75292a1de1a59e19198d26b7c1291004a5ca92f3
Author: Markus Lehtonen <markus.lehtonen at linux.intel.com>
AuthorDate: Thu Sep 29 17:28:04 2016 +0300

    scripts/buildstats-diff: add read_ops and write_ops to --diff-attr
    
    Two new options, making it possible to compare the number of filesystem
    operations of tasks. Defaults for --min-val and --min-absdiff are set to
    more or less arbitrary 500 and 50 operations, respectively.
    
    Signed-off-by: Markus Lehtonen <markus.lehtonen at linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton at intel.com>
---
 scripts/buildstats-diff | 27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/scripts/buildstats-diff b/scripts/buildstats-diff
index 3c894cb..c6fa803 100755
--- a/scripts/buildstats-diff
+++ b/scripts/buildstats-diff
@@ -88,6 +88,17 @@ class BSTask(dict):
         """Bytes written to the block layer"""
         return self['iostat']['write_bytes']
 
+    @property
+    def read_ops(self):
+        """Number of read operations on the block layer"""
+        return self['rusage']['ru_inblock'] + self['child_rusage']['ru_inblock']
+
+    @property
+    def write_ops(self):
+        """Number of write operations on the block layer"""
+        return self['rusage']['ru_oublock'] + self['child_rusage']['ru_oublock']
+
+
 def read_buildstats_file(buildstat_file):
     """Convert buildstat text file into dict/json"""
     bs_task = BSTask()
@@ -306,6 +317,12 @@ def print_task_diff(bs1, bs2, val_type, min_val=0, min_absdiff=0, sort_by=('absd
                 prec = 1 if dec > 0 else 0
                 return "{:.{prec}f}{}B".format(val / (2 ** (10 * dec)),
                                                prefix[dec], prec=prec)
+        elif 'ops' in val_type and human_readable:
+                prefix = ['', 'k', 'M', 'G', 'T', 'P']
+                dec = int(math.log(val, 1000))
+                prec = 1 if dec > 0 else 0
+                return "{:.{prec}f}{}ops".format(val / (1000 ** dec),
+                                                 prefix[dec], prec=prec)
         return str(int(val))
 
     def sum_vals(buildstats):
@@ -418,17 +435,21 @@ Script for comparing buildstats of two separate builds."""
 
     min_val_defaults = {'cputime': 3.0,
                         'read_bytes': 524288,
-                        'write_bytes': 524288}
+                        'write_bytes': 524288,
+                        'read_ops': 500,
+                        'write_ops': 500}
     min_absdiff_defaults = {'cputime': 1.0,
                             'read_bytes': 131072,
-                            'write_bytes': 131072}
+                            'write_bytes': 131072,
+                            'read_ops': 50,
+                            'write_ops': 50}
 
     parser.add_argument('--debug', '-d', action='store_true',
                         help="Verbose logging")
     parser.add_argument('--ver-diff', action='store_true',
                         help="Show package version differences and exit")
     parser.add_argument('--diff-attr', default='cputime',
-                        choices=('cputime', 'read_bytes', 'write_bytes'),
+                        choices=min_val_defaults.keys(),
                         help="Buildstat attribute which to compare")
     parser.add_argument('--min-val', default=min_val_defaults, type=float,
                         help="Filter out tasks less than MIN_VAL. "

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list