From 3398ff3c0cd42c16a0719dad13580fd7592ef456 Mon Sep 17 00:00:00 2001 From: Lars Kruse Date: Wed, 4 Jul 2018 03:53:19 +0200 Subject: [PATCH] Plugins jstat__*: simplify handling of different JVM types --- plugins/jvm/jstat__gccount | 132 ++++++------------------- plugins/jvm/jstat__gctime | 151 +++++++++------------------- plugins/jvm/jstat__heap | 197 +++++++++++++++---------------------- 3 files changed, 157 insertions(+), 323 deletions(-) diff --git a/plugins/jvm/jstat__gccount b/plugins/jvm/jstat__gccount index 2228a5f2..8724cb70 100755 --- a/plugins/jvm/jstat__gccount +++ b/plugins/jvm/jstat__gccount @@ -69,93 +69,39 @@ chk_version() fi } -config_common() -{ - echo 'graph_title GC Count' $graphtitle - echo 'graph_args -l 0' - echo 'graph_vlabel GC Count(times)' - echo 'graph_total total' - echo 'graph_info GC Count' - echo 'graph_category virtualization' +print_config() { + echo 'graph_title GC Count' $graphtitle + echo 'graph_args -l 0' + echo 'graph_vlabel GC Count(times)' + echo 'graph_total total' + echo 'graph_info GC Count' + echo 'graph_category virtualization' + + echo 'Young_GC.label Young_GC' + echo 'Young_GC.min 0' + if [ "${JDK_TYPE}" == "bea" ]; then + echo 'Old_GC.label Old_GC' + echo 'Old_GC.min 0' + else + echo 'Full_GC.label Full_GC' + echo 'Full_GC.min 0' + fi } -config_sun_jdk() -{ - config_common - - echo 'Young_GC.label Young_GC' - echo 'Young_GC.min 0' - echo 'Full_GC.label Full_GC' - echo 'Full_GC.min 0' +print_stats() { + local pid_num="$1" + local awk_script + if [ "${JDK_TYPE}" == "bea" ]; then + # shellcheck disable=SC2016 + awk_script='{ YC = $4; OC = $5; print "Young_GC.value " YGC; print "Old_GC.value " FGC; }' + else + # shellcheck disable=SC2016 + awk_script='{ YGC = $11; FGC = $13; print "Young_GC.value " YGC; print "Full_GC.value " FGC; }' + fi + "${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script" } -config_bea_jdk() -{ - config_common - - echo 'Young_GC.label Young_GC' - echo 'Young_GC.min 0' - echo 'Old_GC.label Old_GC' - echo 'Old_GC.min 0' -} - -print_sun_stats() -{ -${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \ -'{\ - S0C = $1; \ - S1C = $2; \ - S0U = $3; \ - S1U = $4; \ - EC = $5; \ - EU = $6; \ - OC = $7; \ - OU = $8; \ - PC = $9; \ - PU = $10; \ - YGC = $11; \ - YGCT = $12; \ - FGC = $13; \ - FGCT = $14; \ - GCT = $15; \ - \ - S0F = S0C - S0U; \ - S1F = S1C - S1U; \ - EF = EC - EU; \ - OF = OC - OU; \ - PF = PC - PU; \ - \ - print "Young_GC.value " YGC; \ - print "Full_GC.value " FGC; \ -}' -} - -print_bea_stats() -{ -${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \ -'{\ - HeapSize = $1; \ - NurserySize = $2; \ - UsedHeapSize = $3; \ - YC = $4; \ - OC = $5; \ - YCTime = $6; \ - OCTime = $7; \ - GCTime = $8; \ - YCPauseTime = $9; \ - OCPauseTime = $10; \ - PauseTime = $11; \ - Finalizers = $12; \ - \ - print "Young_GC.value " YC; \ - print "Old_GC.value " OC;\ -}' -} - -# -# common for all argument -# chk_jdk # @@ -184,25 +130,9 @@ if [ "$1" = "autoconf" ]; then fi -# -# config -# if [ "$1" = "config" ]; then - if [ "${JDK_TYPE}" == "bea" ]; then - config_bea_jdk - else - config_sun_jdk - fi - exit 0 + print_config + exit 0 fi -# -# Main -# -PidNum=`cat ${pidfilepath}` - -if [ "${JDK_TYPE}" == "bea" ]; then - print_bea_stats -else - print_sun_stats -fi +print_stats "$(cat "$pidfilepath")" diff --git a/plugins/jvm/jstat__gctime b/plugins/jvm/jstat__gctime index d816971c..e3252b7d 100755 --- a/plugins/jvm/jstat__gctime +++ b/plugins/jvm/jstat__gctime @@ -69,97 +69,55 @@ chk_version() fi } -config_common() -{ - echo 'graph_title GC Time' $graphtitle - echo 'graph_args -l 0' - echo 'graph_vlabel GC Time(sec)' - echo 'graph_total total' - echo 'graph_info GC Time' - echo 'graph_category virtualization' +print_config() { + echo 'graph_title GC Time' $graphtitle + echo 'graph_args -l 0' + echo 'graph_vlabel GC Time(sec)' + echo 'graph_total total' + echo 'graph_info GC Time' + echo 'graph_category virtualization' + + echo 'Young_GC.label Young_GC' + echo 'Young_GC.min 0' + if [ "${JDK_TYPE}" == "bea" ]; then + echo 'Old_GC.label Old_GC' + echo 'Old_GC.min 0' + echo 'Young_Pause.label Young_GC Pause' + echo 'Young_Pause.min 0' + echo 'Old_Pause.label Old_GC Pause' + echo 'Old_Pause.min 0' + else + echo 'Full_GC.label Full_GC' + echo 'Full_GC.min 0' + fi } -config_sun_jdk() -{ - config_common - - echo 'Young_GC.label Young_GC' - echo 'Young_GC.min 0' - echo 'Full_GC.label Full_GC' - echo 'Full_GC.min 0' +print_stats() { + local pid_num="$1" + local awk_script + if [ "${JDK_TYPE}" == "bea" ]; then + # shellcheck disable=SC2016 + awk_script='{ + YCTime = $6; + OCTime = $7; + YCPauseTime = $9; + OCPauseTime = $10; + print "Young_GC.value " YCTime; + print "Old_GC.value " OCTime; + print "Young_Pause.value " YCPauseTime; + print "Old_Pause.value " OCPauseTime; }' + else + # shellcheck disable=SC2016 + awk_script='{ + YGCT = $12; + FGCT = $14; + print "Young_GC.value " YGCT; + print "Full_GC.value " FGCT; }' + fi + "${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script" } -config_bea_jdk() -{ - config_common - - echo 'Young_GC.label Young_GC' - echo 'Young_GC.min 0' - echo 'Old_GC.label Old_GC' - echo 'Old_GC.min 0' - echo 'Young_Pause.label Young_GC Pause' - echo 'Young_Pause.min 0' - echo 'Old_Pause.label Old_GC Pause' - echo 'Old_Pause.min 0' - -} - -print_sun_stats() -{ -${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \ -'{\ - S0C = $1; \ - S1C = $2; \ - S0U = $3; \ - S1U = $4; \ - EC = $5; \ - EU = $6; \ - OC = $7; \ - OU = $8; \ - PC = $9; \ - PU = $10; \ - YGC = $11; \ - YGCT = $12; \ - FGC = $13; \ - FGCT = $14; \ - GCT = $15; \ - - \ - S0F = S0C - S0U; \ - S1F = S1C - S1U; \ - EF = EC - EU; \ - OF = OC - OU; \ - PF = PC - PU; \ - \ - print "Young_GC.value " YGCT; \ - print "Full_GC.value " FGCT; \ -}' -} - -print_bea_stats() -{ -${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \ -'{\ - HeapSize = $1; \ - NurserySize = $2; \ - UsedHeapSize = $3; \ - YC = $4; \ - OC = $5; \ - YCTime = $6; \ - OCTime = $7; \ - GCTime = $8; \ - YCPauseTime = $9; \ - OCPauseTime = $10; \ - PauseTime = $11; \ - Finalizers = $12; \ - \ - print "Young_GC.value " YCTime; \ - print "Old_GC.value " OCTime; \ - print "Young_Pause.value " YCPauseTime; \ - print "Old_Pause.value " OCPauseTime -}' -} # # common for all argument @@ -192,25 +150,8 @@ if [ "$1" = "autoconf" ]; then fi -# -# config -# if [ "$1" = "config" ]; then - if [ "${JDK_TYPE}" == "bea" ]; then - config_bea_jdk - else - config_sun_jdk - fi - exit 0 + print_config fi -# -# Main -# -PidNum=`cat ${pidfilepath}` - -if [ "${JDK_TYPE}" == "bea" ]; then - print_bea_stats -else - print_sun_stats -fi +print_stats "$(cat "$pidfilepath")" diff --git a/plugins/jvm/jstat__heap b/plugins/jvm/jstat__heap index 20bce370..1ec26c07 100755 --- a/plugins/jvm/jstat__heap +++ b/plugins/jvm/jstat__heap @@ -69,109 +69,89 @@ chk_version() fi } -config_common() -{ - echo "graph_title Heap Usage" $graphtitle - echo "graph_args --base 1024 -l 0" - echo "graph_vlabel Heap Usage(Bytes)" - echo "graph_info Heap Usage" - echo "graph_category virtualization" +print_config() { + echo "graph_title Heap Usage" $graphtitle + echo "graph_args --base 1024 -l 0" + echo "graph_vlabel Heap Usage(Bytes)" + echo "graph_info Heap Usage" + echo "graph_category virtualization" + + if [ "${JDK_TYPE}" == "bea" ]; then + echo "NurserySize.label NurserySize" + echo "HeapSize.label HeapSize" + echo "UsedHeapSize.label UsedHeapSize" + echo "NurserySize.draw AREA" + echo "HeapSize.draw STACK" + echo "UsedHeapSize.draw STACK" + else + echo "Eden_Used.label Eden_Used" + echo "Eden_Free.label Eden_Free" + echo "Survivor0_Used.label Survivor0_Used" + echo "Survivor0_Free.label Survivor0_Free" + echo "Survivor1_Used.label Survivor1_Used" + echo "Survivor1_Free.label Survivor1_Free" + echo "Old_Used.label Old_Used" + echo "Old_Free.label Old_Free" + echo "Permanent_Used.label Permanent_Used" + echo "Permanent_Free.label Permanent_Free" + echo "Eden_Used.draw AREA" + echo "Eden_Free.draw STACK" + echo "Survivor0_Used.draw STACK" + echo "Survivor0_Free.draw STACK" + echo "Survivor1_Used.draw STACK" + echo "Survivor1_Free.draw STACK" + echo "Old_Used.draw STACK" + echo "Old_Free.draw STACK" + echo "Permanent_Used.draw STACK" + echo "Permanent_Free.draw STACK" + fi } -config_sun_jdk() -{ - config_common - echo "Eden_Used.label Eden_Used" - echo "Eden_Free.label Eden_Free" - echo "Survivor0_Used.label Survivor0_Used" - echo "Survivor0_Free.label Survivor0_Free" - echo "Survivor1_Used.label Survivor1_Used" - echo "Survivor1_Free.label Survivor1_Free" - echo "Old_Used.label Old_Used" - echo "Old_Free.label Old_Free" - echo "Permanent_Used.label Permanent_Used" - echo "Permanent_Free.label Permanent_Free" - echo "Eden_Used.draw AREA" - echo "Eden_Free.draw STACK" - echo "Survivor0_Used.draw STACK" - echo "Survivor0_Free.draw STACK" - echo "Survivor1_Used.draw STACK" - echo "Survivor1_Free.draw STACK" - echo "Old_Used.draw STACK" - echo "Old_Free.draw STACK" - echo "Permanent_Used.draw STACK" - echo "Permanent_Free.draw STACK" +print_stats() { + local pid_num="$1" + local awk_script + if [ "${JDK_TYPE}" == "bea" ]; then + # shellcheck disable=SC2016 + awk_script='{ + HeapSize = $1; + NurserySize = $2; + UsedHeapSize = $3; + print "NurserySize.value " NurserySize * 1024; + print "HeapSize.value " HeapSize * 1024; + print "UsedHeapSize.value " UsedHeapSize * 1024; }' + else + # shellcheck disable=SC2016 + awk_script='{ + S0C = $1; + S1C = $2; + S0U = $3; + S1U = $4; + EC = $5; + EU = $6; + OC = $7; + OU = $8; + PC = $9; + PU = $10; + S0F = S0C - S0U; + S1F = S1C - S1U; + EF = EC - EU; + OF = OC - OU; + PF = PC - PU; + print "Eden_Used.value " EU * 1024; + print "Eden_Free.value " EF * 1024; + print "Survivor0_Used.value " S0U * 1024; + print "Survivor0_Free.value " S0F * 1024; + print "Survivor1_Used.value " S1U * 1024; + print "Survivor1_Free.value " S1F * 1024; + print "Old_Used.value " OU * 1024; + print "Old_Free.value " OF * 1024; + print "Permanent_Used.value " PU * 1024; + print "Permanent_Free.value " PF * 1024; }' + fi + "${JAVA_HOME}/bin/jstat" -gc "$pid_num" | tail -1 | awk "$awk_script" } -config_bea_jdk() -{ - config_common - - echo "NurserySize.label NurserySize" - echo "HeapSize.label HeapSize" - echo "UsedHeapSize.label UsedHeapSize" - echo "NurserySize.draw AREA" - echo "HeapSize.draw STACK" - echo "UsedHeapSize.draw STACK" -} - -print_sun_stats() -{ -${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \ -'{\ - S0C = $1; \ - S1C = $2; \ - S0U = $3; \ - S1U = $4; \ - EC = $5; \ - EU = $6; \ - OC = $7; \ - OU = $8; \ - PC = $9; \ - PU = $10; \ - \ - S0F = S0C - S0U; \ - S1F = S1C - S1U; \ - EF = EC - EU; \ - OF = OC - OU; \ - PF = PC - PU; \ - \ - print "Eden_Used.value " EU * 1024; \ - print "Eden_Free.value " EF * 1024; \ - print "Survivor0_Used.value " S0U * 1024; \ - print "Survivor0_Free.value " S0F * 1024; \ - print "Survivor1_Used.value " S1U * 1024; \ - print "Survivor1_Free.value " S1F * 1024; \ - print "Old_Used.value " OU * 1024; \ - print "Old_Free.value " OF * 1024; \ - print "Permanent_Used.value " PU * 1024; \ - print "Permanent_Free.value " PF * 1024; \ -}' -} - -print_bea_stats() -{ -${JAVA_HOME}/bin/jstat -gc ${PidNum} | tail -1 | awk \ -'{\ - HeapSize = $1; \ - NurserySize = $2; \ - UsedHeapSize = $3; \ - YC = $4; \ - OC = $5; \ - YCTime = $6; \ - OCTime = $7; \ - GCTime = $8; \ - YCPauseTime = $9; \ - OCPauseTime = $10; \ - PauseTime = $11; \ - Finalizers = $12; \ - \ - print "NurserySize.value " NurserySize * 1024; \ - print "HeapSize.value " UsedHeapSize * 1024; \ - print "UsedHeapSize.value " UsedHeapSize * 1024; \ -}' -} # # common for all argument @@ -204,25 +184,8 @@ if [ "$1" = "autoconf" ]; then fi -# -# config -# if [ "$1" = "config" ]; then - if [ "${JDK_TYPE}" == "bea" ]; then - config_bea_jdk - else - config_sun_jdk - fi - exit 0 + print_config fi -# -# Main -# -PidNum=`cat ${pidfilepath}` - -if [ "${JDK_TYPE}" == "bea" ]; then - print_bea_stats -else - print_sun_stats -fi +print_stats "$(cat "$pidfilepath")"