Вот скребок для бревен за 0,00 $, подходящий для коллектора 1,5 CMS, который дает вам высокий уровень просмотра пауз ГХ.
Вам может потребоваться изменить аргумент позиционного параметра $ 7 на функцию отметки времени, чтобы соответствовать синтаксису строки журнала (my .out становится «улучшенным» благодаря Tanuki Wrapper).
#! /usr/bin/awk -f
# Awk script to parse .out logs and print total of
# stop-the-world GC pause times in ten minute intervals
BEGIN {print "t\timark\tmark\tremark\tfullgc"}
/CMS-initial-mark:/ {
t=timestamp($7);
imark[t] += $(NF-1);
}
/\[CMS-concurrent-mark:/ {
t=timestamp($7);
split($(NF-1), b, "/");
# print t" NF="NF" val="b[1];
mark[t] += b[1];
}
/CMS-remark/ {
t=timestamp($7);
remark[t] += $(NF-1);
}
/\[Full GC / {
t=timestamp($7);
level=0;
for (i=1; i<=NF; i++) {
if ($i ~ /\[/) {
level++;
} else if ($i ~ /\]/) {
level--;
}
}
while (level > 0) {
getline;
for (i=1; i<=NF; i++) {
if ($i ~ /\[/) {
level++;
} else if ( $i ~ /\]/ ) {
level-- ;
}
}
}
if ( $(NF) ~ /secs\]/ ) {
full[t] += $(NF-1) ;
}
}
function timestamp(str) {
split(str, a, ":");
return a[1]":"substr(a[2],0,length(a[2])-1)"0";
}
# print out UK+US trading hours
END {
for (hour = 5; hour <= 16; hour++) {
for (minute = 0; minute <= 59; minute+=10) {
t = sprintf("%02d:%02d", hour, minute);
printf "%s\t%d\t%d\t%d\t%d\n", t, imark[t], mark[t], remark[t], full[t];
}
}
}