numam-spdk/test/blobfs/rocksdb/postprocess.py
Pawel Wodkowski b96f97cf29 scripts: use python3 in all scripts
This it to prepare for RPM package. Also lower number of dependencies
needed by SPDK tools.

Update changelog to deprecate Python 2 and explicit interpeter invoking
in scripts.

Change-Id: I2497cca721cbcbadc1c99c675f8b8b7f682d5efa
Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/425233
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2018-09-14 22:24:30 +00:00

71 lines
2.7 KiB
Python
Executable File

#!/usr/bin/env python3
from collections import namedtuple
from itertools import islice
import operator
import sys
total_samples = 0
thread_module_samples = {}
function_module_samples = {}
module_samples = {}
threads = set()
ThreadModule = namedtuple('ThreadModule', ['thread', 'module'])
FunctionModule = namedtuple('FunctionModule', ['function', 'module'])
with open(sys.argv[1] + "/" + sys.argv[2] + ".perf.txt") as f:
for line in f:
fields = line.split()
total_samples += int(fields[1])
key = ThreadModule(fields[2], fields[3])
thread_module_samples.setdefault(key, 0)
thread_module_samples[key] += int(fields[1])
key = FunctionModule(fields[5], fields[3])
function_module_samples.setdefault(key, 0)
function_module_samples[key] += int(fields[1])
threads.add(fields[2])
key = fields[3]
module_samples.setdefault(key, 0)
module_samples[key] += int(fields[1])
for thread in sorted(threads):
thread_pct = 0
print("")
print("Thread: {:s}".format(thread))
print(" Percent Module")
print("============================")
for key, value in sorted(list(thread_module_samples.items()), key=operator.itemgetter(1), reverse=True):
if key.thread == thread:
print("{:8.4f} {:20s}".format(float(value) * 100 / total_samples, key.module))
thread_pct += float(value) * 100 / total_samples
print("============================")
print("{:8.4f} Total".format(thread_pct))
print("")
print(" Percent Module Function")
print("=================================================================")
for key, value in islice(sorted(list(function_module_samples.items()), key=operator.itemgetter(1), reverse=True), 100):
print(("{:8.4f} {:20s} {:s}".format(float(value) * 100 / total_samples, key.module, key.function)))
print("")
print("")
print(" Percent Module")
print("=================================")
for key, value in sorted(list(module_samples.items()), key=operator.itemgetter(1), reverse=True):
print("{:8.4f} {:s}".format(float(value) * 100 / total_samples, key))
print("")
with open(sys.argv[1] + "/" + sys.argv[2] + "_db_bench.txt") as f:
for line in f:
if "maxresident" in line:
fields = line.split()
print("Wall time elapsed: {:s}".format(fields[2].split("e")[0]))
print("CPU utilization: {:s}".format(fields[3].split('C')[0]))
user = float(fields[0].split('u')[0])
system = float(fields[1].split('s')[0])
print("User: {:8.2f} ({:5.2f}%)".format(user, user * 100 / (user + system)))
print("System: {:8.2f} ({:5.2f}%)".format(system, system * 100 / (user + system)))
print("")