xref: /spdk/test/blobfs/rocksdb/postprocess.py (revision 17538bdc67021ec097536c683124234db1aac374)
1b96f97cfSPawel Wodkowski#!/usr/bin/env python3
2*17538bdcSpaul luse#  SPDX-License-Identifier: BSD-3-Clause
3*17538bdcSpaul luse#  Copyright (C) 2017 Intel Corporation
4*17538bdcSpaul luse#  All rights reserved.
5*17538bdcSpaul luse#
6*17538bdcSpaul luse
71edd9bf3SJim Harrisfrom collections import namedtuple
81edd9bf3SJim Harrisfrom itertools import islice
91edd9bf3SJim Harrisimport operator
101edd9bf3SJim Harrisimport sys
111edd9bf3SJim Harris
121edd9bf3SJim Harristotal_samples = 0
131edd9bf3SJim Harristhread_module_samples = {}
141edd9bf3SJim Harrisfunction_module_samples = {}
151edd9bf3SJim Harrismodule_samples = {}
161edd9bf3SJim Harristhreads = set()
171edd9bf3SJim Harris
181edd9bf3SJim HarrisThreadModule = namedtuple('ThreadModule', ['thread', 'module'])
191edd9bf3SJim HarrisFunctionModule = namedtuple('FunctionModule', ['function', 'module'])
201edd9bf3SJim Harris
211edd9bf3SJim Harriswith open(sys.argv[1] + "/" + sys.argv[2] + ".perf.txt") as f:
221edd9bf3SJim Harris    for line in f:
231edd9bf3SJim Harris        fields = line.split()
241edd9bf3SJim Harris        total_samples += int(fields[1])
251edd9bf3SJim Harris        key = ThreadModule(fields[2], fields[3])
261edd9bf3SJim Harris        thread_module_samples.setdefault(key, 0)
271edd9bf3SJim Harris        thread_module_samples[key] += int(fields[1])
281edd9bf3SJim Harris        key = FunctionModule(fields[5], fields[3])
291edd9bf3SJim Harris        function_module_samples.setdefault(key, 0)
301edd9bf3SJim Harris        function_module_samples[key] += int(fields[1])
311edd9bf3SJim Harris        threads.add(fields[2])
321edd9bf3SJim Harris
331edd9bf3SJim Harris        key = fields[3]
341edd9bf3SJim Harris        module_samples.setdefault(key, 0)
351edd9bf3SJim Harris        module_samples[key] += int(fields[1])
361edd9bf3SJim Harris
371edd9bf3SJim Harrisfor thread in sorted(threads):
381edd9bf3SJim Harris    thread_pct = 0
39b96f97cfSPawel Wodkowski    print("")
401edd9bf3SJim Harris    print("Thread: {:s}".format(thread))
411edd9bf3SJim Harris    print(" Percent      Module")
421edd9bf3SJim Harris    print("============================")
43b96f97cfSPawel Wodkowski    for key, value in sorted(list(thread_module_samples.items()), key=operator.itemgetter(1), reverse=True):
441edd9bf3SJim Harris        if key.thread == thread:
451edd9bf3SJim Harris            print("{:8.4f}      {:20s}".format(float(value) * 100 / total_samples, key.module))
461edd9bf3SJim Harris            thread_pct += float(value) * 100 / total_samples
471edd9bf3SJim Harris    print("============================")
481edd9bf3SJim Harris    print("{:8.4f}       Total".format(thread_pct))
491edd9bf3SJim Harris
50b96f97cfSPawel Wodkowskiprint("")
511edd9bf3SJim Harrisprint(" Percent      Module               Function")
521edd9bf3SJim Harrisprint("=================================================================")
53b96f97cfSPawel Wodkowskifor key, value in islice(sorted(list(function_module_samples.items()), key=operator.itemgetter(1), reverse=True), 100):
54b96f97cfSPawel Wodkowski    print(("{:8.4f}      {:20s} {:s}".format(float(value) * 100 / total_samples, key.module, key.function)))
551edd9bf3SJim Harris
56b96f97cfSPawel Wodkowskiprint("")
57b96f97cfSPawel Wodkowskiprint("")
581edd9bf3SJim Harrisprint(" Percent      Module")
591edd9bf3SJim Harrisprint("=================================")
60b96f97cfSPawel Wodkowskifor key, value in sorted(list(module_samples.items()), key=operator.itemgetter(1), reverse=True):
611edd9bf3SJim Harris    print("{:8.4f}      {:s}".format(float(value) * 100 / total_samples, key))
621edd9bf3SJim Harris
63b96f97cfSPawel Wodkowskiprint("")
641edd9bf3SJim Harriswith open(sys.argv[1] + "/" + sys.argv[2] + "_db_bench.txt") as f:
651edd9bf3SJim Harris    for line in f:
661edd9bf3SJim Harris        if "maxresident" in line:
671edd9bf3SJim Harris            fields = line.split()
681edd9bf3SJim Harris            print("Wall time elapsed: {:s}".format(fields[2].split("e")[0]))
691edd9bf3SJim Harris            print("CPU utilization: {:s}".format(fields[3].split('C')[0]))
701edd9bf3SJim Harris            user = float(fields[0].split('u')[0])
711edd9bf3SJim Harris            system = float(fields[1].split('s')[0])
721edd9bf3SJim Harris            print("User:   {:8.2f} ({:5.2f}%)".format(user, user * 100 / (user + system)))
731edd9bf3SJim Harris            print("System: {:8.2f} ({:5.2f}%)".format(system, system * 100 / (user + system)))
741edd9bf3SJim Harris
75b96f97cfSPawel Wodkowskiprint("")
76