-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgcEffiency.sh
executable file
·71 lines (67 loc) · 2.14 KB
/
gcEffiency.sh
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/sh
if [ "$#" -eq 1 ]
then
GCLOG=$1
CSV=FALSE
elif [ "$#" -eq 2 -a "$1" = "-c" ]
then
GCLOG=$2
CSV=TRUE
else
echo "USAGE; $0 [-c] gc.log"
exit 1
fi
cat "$GCLOG" | awk -v CSV=$CSV -v GCLOG=$GCLOG '
BEGIN{
TOTALGCCOUNT=0
TOTALGCTIME=0
TOTALGCAVERAGE=0
GCCOUNT=0
GCTIME=0
GCAVERAGE=0
FULLGCCOUNT=0
FULLGCTIME=0
FULLGCAVERAGE=0
EFFICIENCY=0
};
{
TOTALAPPTIME=substr($1, 1, length($1-1))
TOTALGCTIME=TOTALGCTIME+$(NF-1)
TOTALGCCOUNT=TOTALGCCOUNT+1
where = match($0, "Full")
if (where){
FULLGCCOUNT=FULLGCCOUNT+1
FULLGCTIME=FULLGCTIME+$(NF-1)
}else{
GCCOUNT=GCCOUNT+1
GCTIME=GCTIME+$(NF-1)
}
}
END{
if (TOTALGCCOUNT>0){TOTALGCAVERAGE=TOTALGCTIME/TOTALGCCOUNT}
if (GCCOUNT>0){GCAVERAGE=GCTIME/GCCOUNT}
if (FULLGCCOUNT>0){FULLGCAVERAGE=FULLGCTIME/FULLGCCOUNT}
if (TOTALGCCOUNT>0){EFFICIENCY=1-(TOTALGCTIME/TOTALAPPTIME)}
if (CSV=="FALSE"){
print GCLOG
print "TOTAL APP TIME " TOTALAPPTIME
print "EFFICIENCY " EFFICIENCY
print "TOTAL GC"
print " COUNT " TOTALGCCOUNT
print " TIME " TOTALGCTIME
print " AVERAGE " TOTALGCAVERAGE
print "NON FULL GC "
print " COUNT " GCCOUNT
print " TIME " GCTIME
print " AVERAGE " GCAVERAGE
print "FULL GC "
print " COUNT " FULLGCCOUNT
print " TIME " FULLGCTIME
print " AVERAGE " FULLGCAVERAGE
}
else
{
print "GCLOG;TOTALAPPTIME;EFFICIENCY;TOTALGCCOUNT;TOTALGCTIME;TOTALGCAVERAGE;GCCOUNT;GCTIME;GCAVERAGE;FULLGCCOUNT;FULLGCTIME;FULLGCAVERAGE"
print GCLOG ";" TOTALAPPTIME ";" EFFICIENCY ";" TOTALGCCOUNT ";" TOTALGCTIME ";" TOTALGCAVERAGE ";" GCCOUNT ";" GCTIME ";" GCAVERAGE ";" FULLGCCOUNT ";" FULLGCTIME ";" FULLGCAVERAGE
}
}'