-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathcompacting_timing.awk
executable file
·53 lines (49 loc) · 1.01 KB
/
compacting_timing.awk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/awk -f
##
## Provide an OSD log for timing output of each leveldb Compaction event
## ./compacting_timing.awk ceph-osd.10.log
##
##
BEGIN {
begtime=0
endtime=0
}
/leveldb: Compact/ {
MYLINE=$0
gsub(/[-:]/," ",$1)
gsub(/[-:]/," ",$2)
MYTIME=mktime($1" "$2)
split($2,secs,".")
millisecs=sprintf("0.%s",secs[2])
MYTIME+=millisecs
if(begtime==0) {
begtime=MYTIME
}
if(MYTIME>endtime) {
endtime=MYTIME
}
if($6=="Compacting") {
MYSTART=MYTIME
next
}
if(MYSTART!="") {
mydiff=MYTIME-MYSTART
if(mydiff<mymin || mymin=="") {
myminreq=MYLINE
mymin=mydiff
}
if(mydiff>mymax || mymin=="") {
mymaxreq=MYLINE
mymax=mydiff
}
mysum+=mydiff
mycount++
printf("%s,%s\n", mydiff, MYLINE)
MYSTART=""
}
}
END {
if(mycount=="")
mycount=1
printf("Min,Avg,Max,Total Time Spent,%Time spent in compaction\n%s,%s,%s,%s,%s\nMin Req: %s\nMax Req: %s\n",mymin,mysum/mycount,mymax,mysum,mysum/(endtime-begtime)*100,myminreq,mymaxreq)
}