]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
graphs.pl: Make canvas fixed size and limit cpufreq color index
authorLeo-Andres Hofmann <hofmann@leo-andres.de>
Mon, 13 Mar 2023 07:35:44 +0000 (08:35 +0100)
committerPeter Müller <peter.mueller@ipfire.org>
Mon, 13 Mar 2023 21:39:20 +0000 (21:39 +0000)
This fixes an issue where systems with many CPU cores
run out of usable graph colors and canvas area.
It also unifies the canvas size for all graphs.

Discussion: https://community.ipfire.org/t/cpu-freq-graph-not-working-with-i5-1235u/9396

Fixes: #12890
Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
Reviewed-by: Michael Tremer <michael.tremer@ipfire.org>
config/cfgroot/graphs.pl

index 8a67354098d4fc6d49211b6aa257ff61e952bec6..9803dd12418a8c60683ce42d146639813413560a 100644 (file)
@@ -30,8 +30,11 @@ require '/var/ipfire/general-functions.pl';
 require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
 
-# Graph image size in pixel
-our %image_size = ('width' => 910, 'height' => 300);
+# Approximate size of the final graph image including canvas and labeling (in pixels, mainly used for placeholders)
+our %image_size = ('width' => 900, 'height' => 300);
+
+# Size of the actual data area within the image, without labeling (in pixels)
+our %canvas_size = ('width' => 800, 'height' => 190);
 
 # List of all available time ranges
 our @time_ranges = ("hour", "day", "week", "month", "year");
@@ -48,15 +51,12 @@ my @GRAPH_ARGS = (
        # For a more 'organic' look
        "--slope-mode",
 
-       # HxW define the size of the output image
-       "--full-size-mode",
-
        # Watermark
        "-W www.ipfire.org",
 
-       # Default size
-       "-w $image_size{'width'}",
-       "-h $image_size{'height'}",
+       # Canvas width/height
+       "-w $canvas_size{'width'}",
+       "-h $canvas_size{'height'}",
 
        # Use alternative grid
        "--alt-y-grid",
@@ -1090,18 +1090,19 @@ sub updatecpufreqgraph {
                "--color=SHADEA".$color{"color19"},
                "--color=SHADEB".$color{"color19"},
                "--color=BACK".$color{"color21"},
-               "COMMENT:".sprintf("%-10s",$Lang::tr{'caption'}),
+               "COMMENT:".sprintf("%-15s",$Lang::tr{'caption'}),
                "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}),
                "COMMENT:".sprintf("%15s",$Lang::tr{'average'}),
                "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}),
                "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j"
        );
 
+       my $j = 11;
        for(my $i = 0; $i < $cpucount; $i++) {
-               my $j=$i+1;
+               $j++; $j = 1 if $j > 20;
                push(@command,"DEF:cpu".$i."_=".$mainsettings{'RRDLOG'}."/collectd/localhost/cpufreq/cpufreq-".$i.".rrd:value:AVERAGE"
                                ,"CDEF:cpu".$i."=cpu".$i."_,1000000,/"
-                               ,"LINE1:cpu".$i.$color{"color1$j"}."A0:cpu ".$i." "
+                               ,"LINE1:cpu".$i.$color{"color$j"}."A0:cpu ".$i." "
                                ,"GPRINT:cpu".$i.":MAX:%3.0lf Mhz"
                                ,"GPRINT:cpu".$i.":AVERAGE:%3.0lf Mhz"
                                ,"GPRINT:cpu".$i.":MIN:%3.0lf Mhz"