Merge branch 'histo-log-dup-timestamp' of https://github.com/parallel-fs-utils/fio
authorJens Axboe <axboe@kernel.dk>
Wed, 12 Sep 2018 20:33:04 +0000 (14:33 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 12 Sep 2018 20:33:04 +0000 (14:33 -0600)
* 'histo-log-dup-timestamp' of https://github.com/parallel-fs-utils/fio:
  filter out records with duplicate timestamps

1  2 
tools/hist/fio-histo-log-pctiles.py

index bb016ead8590b5b3e1cfe67c06c0aa25a67fb7bf,bbe08369e4629054c8c76f9b343b08ad6725d873..1e7b6316acbcf1b23ff1368b27cfc6c062444feb
  import sys, os, math, copy
  from copy import deepcopy
  import argparse
 -import unittest2
 +
 +unittest2_imported = True
 +try:
 +    import unittest2
 +except ImportError:
 +    unittest2_imported = False
  
  msec_per_sec = 1000
  nsec_per_usec = 1000
@@@ -64,6 -59,8 +64,8 @@@ def parse_hist_file(logfn, buckets_per_
      with open(logfn, 'r') as f:
          records = [ l.strip() for l in f.readlines() ]
      intervals = []
+     last_time_ms = -1
+     last_direction = -1
      for k, r in enumerate(records):
          if r == '':
              continue
          if len(buckets) != buckets_per_interval:
              raise FioHistoLogExc('%d buckets per interval but %d expected in %s' % 
                      (len(buckets), buckets_per_interval, exception_suffix(k+1, logfn)))
+         # hack to filter out records with the same timestamp
+         # we should not have to do this if fio logs histogram records correctly
+         if time_ms == last_time_ms and direction == last_direction:
+             continue
+         last_time_ms = time_ms
+         last_direction = direction
          intervals.append((time_ms, direction, bsz, buckets))
      if len(intervals) == 0:
          raise FioHistoLogExc('no records in %s' % logfn)
@@@ -417,14 -423,14 +428,14 @@@ def compute_percentiles_from_logs()
  #end of MAIN PROGRAM
  
  
 -
  ##### below are unit tests ##############
  
 -import tempfile, shutil
 -from os.path import join
 -should_not_get_here = False
 +if unittest2_imported:
 +  import tempfile, shutil
 +  from os.path import join
 +  should_not_get_here = False
  
 -class Test(unittest2.TestCase):
 +  class Test(unittest2.TestCase):
      tempdir = None
  
      # a little less typing please
  
  if __name__ == '__main__':
      if os.getenv('UNITTEST'):
 -        sys.exit(unittest2.main())
 +        if unittest2_imported:
 +            sys.exit(unittest2.main())
 +        else:
 +            raise Exception('you must install unittest2 module to run unit test')
      else:
          compute_percentiles_from_logs()