summaryrefslogtreecommitdiffstats
path: root/unit_trace
diff options
context:
space:
mode:
authorMac Mollison <mollison@cs.unc.edu>2010-03-14 00:58:31 -0500
committerMac Mollison <mollison@cs.unc.edu>2010-03-14 00:58:31 -0500
commit53752df921cc50450926a57ee11301693504c5c5 (patch)
tree793ebcfa97e15e7854604a8650229d0935ec4f1e /unit_trace
parent6f2bdc8c3eff8305d3b50e81c874a3e015069459 (diff)
Added progress submodule to report progress.
This submodule allows us to measure the speed at which trace files are processed and reports on its progress as it goes along.
Diffstat (limited to 'unit_trace')
-rw-r--r--unit_trace/progress.py46
-rw-r--r--unit_trace/trace_reader.py11
2 files changed, 56 insertions, 1 deletions
diff --git a/unit_trace/progress.py b/unit_trace/progress.py
new file mode 100644
index 0000000..d987ecd
--- /dev/null
+++ b/unit_trace/progress.py
@@ -0,0 +1,46 @@
1###############################################################################
2# Description
3###############################################################################
4
5# Display progress information:
6# - Total number of bytes in trace files
7# - Total number of event records in trace files
8# - Message for every 1,000 records processed
9# - Total records processed
10# - Total elapsed time
11
12###############################################################################
13# Imports
14###############################################################################
15
16import time
17import sys
18import os
19
20###############################################################################
21# Public functions
22###############################################################################
23
24def progress(stream):
25
26 start_time = 0
27 count = 0
28
29 for record in stream:
30 if record.record_type=="event":
31 count += 1
32 if (count % 1000) == 0 and count > 0:
33 sys.stderr.write(("Parsed %d event records\n") % (count))
34 if record.record_type=="meta" and record.type_name=="trace_files":
35 bytes = 0
36 for file in record.files:
37 bytes += int(os.path.getsize(file))
38 sys.stderr.write(("Total bytes : %d\n") % (bytes))
39 # 192 bits per event record, 8 bits per byte
40 sys.stderr.write(("Total records: %d\n") % (bytes * 8 / 192))
41 start_time = time.time()
42 yield record
43
44 sys.stderr.write(("Total records processed: %d\n") % (count))
45 sys.stderr.write(("Time elapsed: %ds\n") % (time.time() - start_time))
46
diff --git a/unit_trace/trace_reader.py b/unit_trace/trace_reader.py
index a4ff964..44a3c75 100644
--- a/unit_trace/trace_reader.py
+++ b/unit_trace/trace_reader.py
@@ -26,6 +26,7 @@
26############################################################################### 26###############################################################################
27 27
28import struct 28import struct
29import sys
29 30
30 31
31############################################################################### 32###############################################################################
@@ -35,10 +36,18 @@ import struct
35# Generator function returning an iterable over records in a trace file. 36# Generator function returning an iterable over records in a trace file.
36def trace_reader(files): 37def trace_reader(files):
37 38
38 # Yield a record indicating the number of CPUs, used by the G-EDF test 39 # Yield a record containing the input files
40 # This is used by progress.py to calculate progress
39 class Obj: pass 41 class Obj: pass
40 record = Obj() 42 record = Obj()
41 record.record_type = "meta" 43 record.record_type = "meta"
44 record.type_name = "trace_files"
45 record.files = files
46 yield record
47
48 # Yield a record indicating the number of CPUs, used by the G-EDF test
49 record = Obj()
50 record.record_type = "meta"
42 record.type_name = "num_cpus" 51 record.type_name = "num_cpus"
43 record.num_cpus = len(files) 52 record.num_cpus = len(files)
44 yield record 53 yield record