54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
#!/usr/bin/python3
|
|
|
|
import sys
|
|
|
|
assert(len(sys.argv) == 2)
|
|
|
|
f = open(sys.argv[1])
|
|
lines = []
|
|
|
|
allocs = []
|
|
|
|
while True:
|
|
line = f.readline()
|
|
if len(line) < 10:
|
|
break
|
|
if line.find('INFO') != -1:
|
|
continue
|
|
pos = line.find('Status')
|
|
if pos < 0:
|
|
pos = line.find('mace')
|
|
if pos != 0:
|
|
lines.append(line[pos:])
|
|
else:
|
|
lines.append(line)
|
|
else:
|
|
cleaned = line[pos+6:].strip().strip('{}')
|
|
pairs = cleaned.split(',')
|
|
tl = [tuple(pair.split(': ')) for pair in pairs]
|
|
tl = [(k.strip(), int(v)) for k, v in tl]
|
|
allocs.append((tl, ''.join(lines)))
|
|
lines.clear()
|
|
|
|
# sort by alloc_size
|
|
allocs.sort(key=lambda x: x[0][1][1], reverse=True)
|
|
|
|
with open('alloc.txt', 'w') as o:
|
|
for x in allocs:
|
|
o.write(f'{x[0]}\n{x[1]}\n')
|
|
# sort by free_size
|
|
allocs.sort(key=lambda x: x[0][3][1], reverse=True)
|
|
|
|
with open('free.txt', 'w') as o:
|
|
for x in allocs:
|
|
o.write(f'{x[0]}\n{x[1]}\n')
|
|
|
|
alloc_size = 0
|
|
free_size = 0
|
|
|
|
for x in allocs:
|
|
alloc_size += x[0][1][1]
|
|
free_size += x[0][3][1]
|
|
|
|
print(f"total_alloc {alloc_size} total_free {free_size}")
|