From: Julien Desfossez Date: Fri, 9 May 2014 19:09:00 +0000 (-0400) Subject: handle begin and end parameters X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=8b93fd294de1666fb1e35f627c7e14de1e5db47f;p=deliverable%2Flttng-analyses.git handle begin and end parameters Signed-off-by: Julien Desfossez --- diff --git a/LTTngAnalyzes/common.py b/LTTngAnalyzes/common.py index ff4c959..7e00587 100644 --- a/LTTngAnalyzes/common.py +++ b/LTTngAnalyzes/common.py @@ -114,6 +114,9 @@ def sec_to_hour(ns): d = time.localtime(ns) return "%02d:%02d:%02d" % (d.tm_hour, d.tm_min, d.tm_sec) +def sec_to_nsec(sec): + return sec * NSEC_PER_SEC + def getFolderSize(folder): total_size = os.path.getsize(folder) for item in os.listdir(folder): diff --git a/iotop.py b/iotop.py index 7df7bdb..49015b0 100755 --- a/iotop.py +++ b/iotop.py @@ -93,6 +93,7 @@ class IOTop(): statedump = Statedump(self.tids, self.disks) event_count = 0 + started = 0 for event in self.traces.events: if not args.no_progress: try: @@ -100,6 +101,11 @@ class IOTop(): except ValueError: pass event_count += 1 + if args.begin and started == 0 and event.timestamp >= args.begin: + started = 1 + self.reset_total(event.timestamp) + if args.end and event.timestamp > args.end: + break self.process_event(event, sched, syscall, block_bio, net, statedump) if not args.no_progress: pbar.finish() @@ -287,6 +293,13 @@ class IOTop(): self.ifaces[iface].send_bytes = 0 self.ifaces[iface].send_packets = 0 + for tid in self.tids.values(): + for fd in tid.fds.values(): + fd.read = 0 + fd.write = 0 + fd.open = 0 + fd.close = 0 + if __name__ == "__main__": parser = argparse.ArgumentParser(description='I/O usage analysis') parser.add_argument('path', metavar="", help='Trace path') @@ -302,12 +315,10 @@ if __name__ == "__main__": 'threshold (ms)') parser.add_argument('--no-progress', action="store_true", help='Don\'t display the progress bar') - parser.add_argument('--start', action="store_true", - help='start time (ex: 15:03:55.236371854), must specify ' \ - 'end time also') - parser.add_argument('--end', action="store_true", - help='end time (ex: 15:03:55.236371854), must specify ' \ - 'start time also') + parser.add_argument('--begin', type=float, + help='start time in seconds from epoch (ex: 1394643671.032202563)') + parser.add_argument('--end', type=float, + help='end time in seconds from epoch (ex: 1394643671.032202563)') parser.add_argument('--seconds', action="store_true", help='display time in seconds since epoch') args = parser.parse_args() @@ -318,6 +329,11 @@ if __name__ == "__main__": else: args.names = None + if args.begin: + args.begin = sec_to_nsec(args.begin) + if args.end: + args.end = sec_to_nsec(args.end) + traces = TraceCollection() handle = traces.add_trace(args.path, "ctf") if handle is None: