The Avg Load percentages on the ganglia web frontend currently show the latest measured values for the grid/cluster. When looking at historical data, these numbers can be misleading when compared to the graphs right next to them. I created a patch which changes this behavior by using rrdtool to calculate the average loads over the displayed time range instead of the latest value, see attachment. Any comments, suggestions?
~Jason -- /------------------------------------------------------------------\ | Jason A. Smith Email: [EMAIL PROTECTED] | | Atlas Computing Facility, Bldg. 510M Phone: (631)344-4226 | | Brookhaven National Lab, P.O. Box 5000 Fax: (631)344-7616 | | Upton, NY 11973-5000 | \------------------------------------------------------------------/
diff -uNr ganglia-3.0.2-dist/web/cluster_view.php ganglia-3.0.2/web/cluster_view.php --- ganglia-3.0.2-dist/web/cluster_view.php 2005-02-02 21:22:48.028343984 -0500 +++ ganglia-3.0.2/web/cluster_view.php 2005-12-14 14:59:06.814632671 -0500 @@ -21,10 +21,12 @@ $tpl->assign("cpu_num", $cpu_num); $tpl->assign("localtime", date("Y-m-d H:i", $cluster['LOCALTIME'])); -if (!$cpu_num) $cpu_num = 1; -$cluster_load15 = sprintf("%.0f", ((double) $load_fifteen_sum / $cpu_num) * 100); -$cluster_load5 = sprintf("%.0f", ((double) $load_five_sum / $cpu_num) * 100); -$cluster_load1 = sprintf("%.0f", ((double) $load_one_sum / $cpu_num) * 100); +$avg_cpu_num = find_avg($clustername, "cpu_num"); +if (!$avg_cpu_num) $avg_cpu_num = 1; +$cluster_load15 = sprintf("%.0f", ((double) find_avg($clustername, "load_fifteen") / $avg_cpu_num ) * 100); +$cluster_load5 = sprintf("%.0f", ((double) find_avg($clustername, "load_five") / $avg_cpu_num ) * 100); +$cluster_load1 = sprintf("%.0f", ((double) find_avg($clustername, "load_one") / $avg_cpu_num ) * 100); + $tpl->assign("cluster_load", "$cluster_load15%, $cluster_load5%, $cluster_load1%"); $cluster_url=rawurlencode($clustername); diff -uNr ganglia-3.0.2-dist/web/functions.php ganglia-3.0.2/web/functions.php --- ganglia-3.0.2-dist/web/functions.php 2005-02-02 21:22:48.960352626 -0500 +++ ganglia-3.0.2/web/functions.php 2005-12-14 14:55:01.951738807 -0500 @@ -237,6 +237,25 @@ #------------------------------------------------------------------------------- # +# Finds the avg of the given cluster & metric from the summary rrds. +# +function find_avg($clustername, $metricname) +{ + global $rrds, $start, $end; + $avg = 0; + + $sum_dir = "$rrds/$clustername/__SummaryInfo__"; + $command = RRDTOOL . " graph '' --start $start --end $end ". + "DEF:avg='$sum_dir/$metricname.rrd':'sum':AVERAGE ". + "PRINT:avg:AVERAGE:%.2lf "; + exec($command, $out); + $avg = $out[1]; + #echo "$sum_dir: avg($metricname)=$avg<br>\n"; + return $avg; +} + +#------------------------------------------------------------------------------- +# # Generates the colored Node cell HTML. Used in Physical # view and others. Intended to be used to build a table, output # begins with "<tr><td>" and ends the same. diff -uNr ganglia-3.0.2-dist/web/meta_view.php ganglia-3.0.2/web/meta_view.php --- ganglia-3.0.2-dist/web/meta_view.php 2005-02-02 21:22:48.526407786 -0500 +++ ganglia-3.0.2/web/meta_view.php 2005-12-14 15:00:37.016184164 -0500 @@ -89,10 +89,12 @@ $class = "cluster"; } - $cpu_num = $m["cpu_num"]['SUM'] ? $m["cpu_num"]['SUM'] : 1; - $cluster_load15 = sprintf("%.0f", ((double) $m["load_fifteen"]['SUM'] / $cpu_num) * 100); - $cluster_load5 = sprintf("%.0f", ((double) $m["load_five"]['SUM'] / $cpu_num) * 100); - $cluster_load1 = sprintf("%.0f", ((double) $m["load_one"]['SUM'] / $cpu_num) * 100); + $clusname = $grid[$source][GRID] ? '' : $source; + $avg_cpu_num = find_avg($clusname, "cpu_num"); + if (!$avg_cpu_num) $avg_cpu_num = 1; + $cluster_load15 = sprintf("%.0f", ((double) find_avg($clusname, "load_fifteen") / $avg_cpu_num ) * 100); + $cluster_load5 = sprintf("%.0f", ((double) find_avg($clusname, "load_five") / $avg_cpu_num ) * 100); + $cluster_load1 = sprintf("%.0f", ((double) find_avg($clusname, "load_one") / $avg_cpu_num ) * 100); $cluster_load = "$cluster_load15%, $cluster_load5%, $cluster_load1%"; $tpl->newBlock ("source_info");