aboutsummaryrefslogtreecommitdiff
path: root/deprecated/mem_tests/mem_groups.py
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/mem_tests/mem_groups.py')
-rwxr-xr-xdeprecated/mem_tests/mem_groups.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/deprecated/mem_tests/mem_groups.py b/deprecated/mem_tests/mem_groups.py
new file mode 100755
index 00000000..5d593872
--- /dev/null
+++ b/deprecated/mem_tests/mem_groups.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python2
+"""Groups memory by allocation sizes.
+
+Takes a log entry and sorts sorts everything into groups based on what size
+chunks the memory has been allocated in. groups is an array that contains the
+divisions (in bytes).
+
+The output format is:
+
+timestamp, percent of memory in chunks < groups[0], percent between groups[0]
+and groups[1], etc.
+
+"""
+
+import argparse
+from cros_utils import compute_total_diff
+from datetime import datetime
+
+pretty_print = True
+
+parser = argparse.ArgumentParser()
+parser.add_argument('filename')
+args = parser.parse_args()
+
+my_file = open(args.filename)
+output_file = open('groups.csv', 'a')
+
+# The cutoffs for each group in the output (in bytes)
+groups = [1024, 8192, 65536, 524288, 4194304]
+
+base_time = datetime(2014, 6, 11, 0, 0)
+prev_line = ''
+half_entry = (None, None)
+
+for line in my_file:
+ if 'heap profile:' in line:
+ if half_entry[0] is not None:
+ group_totals = half_entry[1]
+ total = sum(group_totals) * 1.0
+ to_join = [half_entry[0]] + [value / total for value in group_totals]
+ to_output = ','.join([str(elem) for elem in to_join])
+ output_file.write(to_output)
+ total_diff = compute_total_diff(line, base_time)
+ half_entry = (total_diff, [0] * (len(groups) + 1))
+ if '] @ ' in line and 'heap profile:' not in line:
+ mem_samples = line.strip().split('[')[0]
+ num_samples, total_mem = map(int, mem_samples.strip().split(':'))
+ mem_per_sample = total_mem // num_samples
+ group_totals = half_entry[1]
+ for cutoff_index in range(len(groups)):
+ if mem_per_sample <= groups[cutoff_index]:
+ group_totals[cutoff_index] += total_mem
+ break
+ if mem_per_sample > groups[-1]:
+ group_totals[-1] += total_mem