diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-04-21 14:36:06 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-04-21 14:36:06 +0100 |
commit | 17cc5128cbc0657ac980c03d6f1c03b33be9ea91 (patch) | |
tree | 6ddd0082eccaecff3bddc6ca1b738231d2e1e74c /seivots-to-csv | |
parent | efedbacac4e0677ba0768f8a87932d3ca83739ac (diff) | |
download | seivot-17cc5128cbc0657ac980c03d6f1c03b33be9ea91.tar.gz |
Add transfer speeds to output.
Diffstat (limited to 'seivots-to-csv')
-rwxr-xr-x | seivots-to-csv | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/seivots-to-csv b/seivots-to-csv index 2f84471..80cf9b8 100755 --- a/seivots-to-csv +++ b/seivots-to-csv @@ -45,7 +45,9 @@ class SeivotToCsv(cliapp.Application): f = open(filename, 'wb') writer = csv.writer(f, lineterminator='\n') writer.writerow(['obnam', 'larch', 'gen0 time (s)', + 'gen0 speed (Mbit/s)', 'gen0 RAM (MiB)', 'slowest inc (s)', + 'slowest inc (Mbit/s)', 'largest RAM inc (MiB)']) for seivot in group: row = self.get_row_data(op, seivot) @@ -71,30 +73,42 @@ class SeivotToCsv(cliapp.Application): return [s for s in seivots if self.get_size(s) == size] def get_row_data(self, op, seivot): + bytes = seivot.getint('0', '%s.new-data' % op) + secs = seivot.getfloat('0', '%s.real' % op) + slowest_inc = self.find_slowest_incremental(op, seivot) + inc_bytes = seivot.getint(slowest_inc, '%s.new-data' % op) + inc_secs = seivot.getfloat(slowest_inc, '%s.real' % op) row = ['r%s' % seivot.get('meta', 'revision'), 'r%s' % seivot.get('meta', 'larch-revision'), - seivot.getfloat('0', '%s.real' % op), + secs, + self.bitspeed(bytes, secs), self.bytesize(seivot.getfloat('0', '%s.maxrss' % op)), - self.find_slowest_incremental(op, seivot), + inc_secs, + self.bitspeed(inc_bytes, inc_secs), self.find_largest_incremental(op, seivot)] return row def values(self, op, suffix, seivot): for section in seivot.sections(): if section not in ['meta', '0']: - yield seivot.getfloat(section, '%s.%s' % (op, suffix)) + yield section, seivot.getfloat(section, '%s.%s' % (op,suffix)) def find_slowest_incremental(self, op, seivot): - v = self.values(op, 'real', seivot) - return min(list(v) or [0.0]) + v = list(self.values(op, 'real', seivot)) + if not v: + return '0' + return min(v, key=lambda pair: pair[1])[0] def find_largest_incremental(self, op, seivot): v = self.values(op, 'maxrss', seivot) - return self.bytesize(min(list(v) or [0.0])) + return self.bytesize(min(list(x[1] for x in v) or [0.0])) def bytesize(self, kilobytes): return '%.1f' % (float(kilobytes) / 1024) + def bitspeed(self, bytes, seconds): + return '%.1f' % (8*bytes / seconds / (1000**2)) + if __name__ == '__main__': SeivotToCsv().run() |