mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 06:44:16 +01:00
8c86529769
git-svn-id: file:///svn/toku/tokudb@19929 c7de825b-a66e-492c-adef-691d508d4ae1
82 lines
2.3 KiB
Python
Executable file
82 lines
2.3 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
import sys
|
|
try:
|
|
data = open(sys.argv[1])
|
|
except:
|
|
print "Could not open '%s'" % (sys.argv[1][0])
|
|
exit(0)
|
|
|
|
ts_factor = 1.
|
|
ts_prev = 0.
|
|
|
|
threadlist = []
|
|
|
|
for line in data:
|
|
line = line.rstrip("\n")
|
|
vals = line.split()
|
|
[n, tid, ts, funcline] = vals[0:4]
|
|
# 'note' is all text following funcline
|
|
note = ''
|
|
for v in vals[4:-1]:
|
|
note += v+' '
|
|
note += vals[-1]
|
|
|
|
if ( note == 'calibrate done' ):
|
|
ts_factor = float(ts) - ts_prev
|
|
print "Factor = ", ts_factor, "("+str(ts_factor/1000000000)[0:4]+"GHz)"
|
|
|
|
time = (float(ts)-ts_prev)/ts_factor
|
|
|
|
# create a list of threads
|
|
# - each thread has a list of <note,time> pairs, where time is the accumulated time for that note
|
|
# - search threadlist for thread_id (tid)
|
|
# - if found, search corresponding list of <note,time> pairs for the current note
|
|
# - if found, update (+=) the time
|
|
# - if not found, create a new <note,time> pair
|
|
# - if not found, create a new thread,<note,time> entry
|
|
found_thread = 0
|
|
for thread in threadlist:
|
|
if tid == thread[0]:
|
|
found_thread = 1
|
|
notetimelist = thread[1]
|
|
found_note = 0
|
|
for notetime in notetimelist:
|
|
if note == notetime[0]:
|
|
found_note = 1
|
|
notetime[1] += time
|
|
break
|
|
if found_note == 0:
|
|
thread[1].append([note, time])
|
|
break
|
|
if found_thread == 0:
|
|
notetime = []
|
|
notetime.append([note, time])
|
|
threadlist.append([tid, notetime])
|
|
|
|
ts_prev = float(ts)
|
|
|
|
# trim out unneeded
|
|
for thread in threadlist:
|
|
trimlist = []
|
|
for notetime in thread[1]:
|
|
if notetime[0][0:9] == 'calibrate':
|
|
trimlist.append(notetime)
|
|
for notetime in trimlist:
|
|
thread[1].remove(notetime)
|
|
print ''
|
|
|
|
# sum times to calculate percent (of 100)
|
|
total_time = 0
|
|
for thread in threadlist:
|
|
for [note, time] in thread[1]:
|
|
total_time += time
|
|
|
|
print ' thread operation time(sec) percent'
|
|
for thread in threadlist:
|
|
print 'tid : %5s' % thread[0]
|
|
for [note, time] in thread[1]:
|
|
print ' %20s %f %5d' % (note, time, 100. * time/total_time)
|
|
|
|
|
|
|