diff options
author | Mac Mollison <mollison@cs.unc.edu> | 2010-03-14 00:58:31 -0500 |
---|---|---|
committer | Mac Mollison <mollison@cs.unc.edu> | 2010-03-14 00:58:31 -0500 |
commit | 53752df921cc50450926a57ee11301693504c5c5 (patch) | |
tree | 793ebcfa97e15e7854604a8650229d0935ec4f1e /unit_trace | |
parent | 6f2bdc8c3eff8305d3b50e81c874a3e015069459 (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.py | 46 | ||||
-rw-r--r-- | unit_trace/trace_reader.py | 11 |
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 | |||
16 | import time | ||
17 | import sys | ||
18 | import os | ||
19 | |||
20 | ############################################################################### | ||
21 | # Public functions | ||
22 | ############################################################################### | ||
23 | |||
24 | def 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 | ||
28 | import struct | 28 | import struct |
29 | import 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. |
36 | def trace_reader(files): | 37 | def 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 |