]> git.ais-ucla.org Git - stats.ais-ucla.org.git/commitdiff
lazy mode all the things
authorChristopher Milan <chrismilan@ucla.edu>
Sat, 15 Feb 2025 20:18:56 +0000 (12:18 -0800)
committerChristopher Milan <chrismilan@ucla.edu>
Sat, 15 Feb 2025 20:18:56 +0000 (12:18 -0800)
cpu.cgi
gpu.cgi
mem.cgi

diff --git a/cpu.cgi b/cpu.cgi
index ba7d89305484d12ffd19c02f228f80b4029f6a9a..d2208e7fddce85f9568fe980d8e9a8773521405a 100755 (executable)
--- a/cpu.cgi
+++ b/cpu.cgi
@@ -5,7 +5,7 @@
 <body style="background-image: url('/bg.gif')">
 <h1>Cluster CPU Report</h1>
 <RRD::GRAPH cpu1h.png --title="CPU Utilization, Last Hour"
-  -s -1hr -w 480 -h 240 -S 120s
+  -s -1hr -w 480 -h 240 -S 120s -z
   --vertical-label "Average (system + user) percent per core"
   DEF:tu=/srv/stats/temescal/cpu.rrd:user:AVERAGE
   DEF:ts=/srv/stats/temescal/cpu.rrd:system:AVERAGE
@@ -37,7 +37,7 @@
          COMMENT:"  SERRANO   (tot)"       GPRINT:curs:"%7.2lf %%"  GPRINT:avgs:"%7.2lf %%"  GPRINT:maxs:"%7.2lf %%\l">
 <br />
 <RRD::GRAPH cpu1wk.png --title="CPU Utilization, Last Week"
-  -s -1wk -w 1200 -h 240 -S 120s
+  -s -1wk -w 1200 -h 240 -S 120s -z
   --vertical-label "Average (system + user) percent per core"
   DEF:tu=/srv/stats/temescal/cpu.rrd:user:AVERAGE
   DEF:ts=/srv/stats/temescal/cpu.rrd:system:AVERAGE
diff --git a/gpu.cgi b/gpu.cgi
index 3a76efddfff971cae110bc444d12b17b101e7e11..931b990f6741f79e8df4e8e58305913a45709cae 100755 (executable)
--- a/gpu.cgi
+++ b/gpu.cgi
 <body style="background-image: url('/bg.gif')">
 <h1>Cluster GPU Report</h1>
 <RRD::GRAPH gpu1h.png --title="GPU Utilization, Last Hour"
-            -s -1hr -w 560 -h 240 -S 120s
-            DEF:tu0=/srv/stats/temescal/gpu.rrd:util0:AVERAGE
-            DEF:tu1=/srv/stats/temescal/gpu.rrd:util1:AVERAGE
-            DEF:tu2=/srv/stats/temescal/gpu.rrd:util2:AVERAGE
-            DEF:tu3=/srv/stats/temescal/gpu.rrd:util3:AVERAGE
-            DEF:yu0=/srv/stats/ynez/gpu.rrd:util0:AVERAGE
-            DEF:yu1=/srv/stats/ynez/gpu.rrd:util1:AVERAGE
-            DEF:yu2=/srv/stats/ynez/gpu.rrd:util2:AVERAGE
-            DEF:yu3=/srv/stats/ynez/gpu.rrd:util3:AVERAGE
-            DEF:su0=/srv/stats/serrano/gpu.rrd:util0:AVERAGE
-            DEF:su1=/srv/stats/serrano/gpu.rrd:util1:AVERAGE
-            DEF:su2=/srv/stats/serrano/gpu.rrd:util2:AVERAGE
-            DEF:su3=/srv/stats/serrano/gpu.rrd:util3:AVERAGE
-            VDEF:curtu0=tu0,LAST VDEF:curtu1=tu1,LAST VDEF:curtu2=tu2,LAST VDEF:curtu3=tu3,LAST VDEF:curyu0=yu0,LAST VDEF:curyu1=yu1,LAST VDEF:curyu2=yu2,LAST VDEF:curyu3=yu3,LAST VDEF:cursu0=su0,LAST VDEF:cursu1=su1,LAST VDEF:cursu2=su2,LAST VDEF:cursu3=su3,LAST
-            VDEF:avgtu0=tu0,AVERAGE VDEF:avgtu1=tu1,AVERAGE VDEF:avgtu2=tu2,AVERAGE VDEF:avgtu3=tu3,AVERAGE VDEF:avgyu0=yu0,AVERAGE VDEF:avgyu1=yu1,AVERAGE VDEF:avgyu2=yu2,AVERAGE VDEF:avgyu3=yu3,AVERAGE VDEF:avgsu0=su0,AVERAGE VDEF:avgsu1=su1,AVERAGE VDEF:avgsu2=su2,AVERAGE VDEF:avgsu3=su3,AVERAGE
-            VDEF:maxtu0=tu0,MAXIMUM VDEF:maxtu1=tu1,MAXIMUM VDEF:maxtu2=tu2,MAXIMUM VDEF:maxtu3=tu3,MAXIMUM VDEF:maxyu0=yu0,MAXIMUM VDEF:maxyu1=yu1,MAXIMUM VDEF:maxyu2=yu2,MAXIMUM VDEF:maxyu3=yu3,MAXIMUM VDEF:maxsu0=su0,MAXIMUM VDEF:maxsu1=su1,MAXIMUM VDEF:maxsu2=su2,MAXIMUM VDEF:maxsu3=su3,MAXIMUM
-            COMMENT:"                  Current  Average  Maximum                    Current  Average  Maximum\l"
-            AREA:tu0#FF0099:"Temescal GPU0":STACK GPRINT:curtu0:"%5.1lf %%" GPRINT:avgtu0:"%5.1lf %%" GPRINT:maxtu0:"%5.1lf %%"
-            AREA:tu1#FF0066:"Temescal GPU1":STACK GPRINT:curtu1:"%5.1lf %%" GPRINT:avgtu1:"%5.1lf %%" GPRINT:maxtu1:"%5.1lf %%\l"
-            AREA:tu2#FF0033:"Temescal GPU2":STACK GPRINT:curtu2:"%5.1lf %%" GPRINT:avgtu2:"%5.1lf %%" GPRINT:maxtu2:"%5.1lf %%"
-            AREA:tu3#FF0000:"Temescal GPU3":STACK GPRINT:curtu3:"%5.1lf %%" GPRINT:avgtu3:"%5.1lf %%" GPRINT:maxtu3:"%5.1lf %%\l"
-            AREA:yu0#66CC00:"Ynez GPU0    ":STACK GPRINT:curyu0:"%5.1lf %%" GPRINT:avgyu0:"%5.1lf %%" GPRINT:maxyu0:"%5.1lf %%"
-            AREA:yu1#66CC33:"Ynez GPU1    ":STACK GPRINT:curyu1:"%5.1lf %%" GPRINT:avgyu1:"%5.1lf %%" GPRINT:maxyu1:"%5.1lf %%\l"
-            AREA:yu2#66CC66:"Ynez GPU2    ":STACK GPRINT:curyu2:"%5.1lf %%" GPRINT:avgyu2:"%5.1lf %%" GPRINT:maxyu2:"%5.1lf %%"
-            AREA:yu3#66CC99:"Ynez GPU3    ":STACK GPRINT:curyu3:"%5.1lf %%" GPRINT:avgyu3:"%5.1lf %%" GPRINT:maxyu3:"%5.1lf %%\l"
-            AREA:su0#6600CC:"Serrano GPU0 ":STACK GPRINT:cursu0:"%5.1lf %%" GPRINT:avgsu0:"%5.1lf %%" GPRINT:maxsu0:"%5.1lf %%"
-            AREA:su1#6600FF:"Serrano GPU1 ":STACK GPRINT:cursu1:"%5.1lf %%" GPRINT:avgsu1:"%5.1lf %%" GPRINT:maxsu1:"%5.1lf %%\l"
-            AREA:su2#9900FF:"Serrano GPU2 ":STACK GPRINT:cursu2:"%5.1lf %%" GPRINT:avgsu2:"%5.1lf %%" GPRINT:maxsu2:"%5.1lf %%"
-            AREA:su3#9900CC:"Serrano GPU3 ":STACK GPRINT:cursu3:"%5.1lf %%" GPRINT:avgsu3:"%5.1lf %%" GPRINT:maxsu3:"%5.1lf %%\l">
+  -s -1hr -w 560 -h 240 -S 120s -z
+  DEF:tu0=/srv/stats/temescal/gpu.rrd:util0:AVERAGE
+  DEF:tu1=/srv/stats/temescal/gpu.rrd:util1:AVERAGE
+  DEF:tu2=/srv/stats/temescal/gpu.rrd:util2:AVERAGE
+  DEF:tu3=/srv/stats/temescal/gpu.rrd:util3:AVERAGE
+  DEF:yu0=/srv/stats/ynez/gpu.rrd:util0:AVERAGE
+  DEF:yu1=/srv/stats/ynez/gpu.rrd:util1:AVERAGE
+  DEF:yu2=/srv/stats/ynez/gpu.rrd:util2:AVERAGE
+  DEF:yu3=/srv/stats/ynez/gpu.rrd:util3:AVERAGE
+  DEF:su0=/srv/stats/serrano/gpu.rrd:util0:AVERAGE
+  DEF:su1=/srv/stats/serrano/gpu.rrd:util1:AVERAGE
+  DEF:su2=/srv/stats/serrano/gpu.rrd:util2:AVERAGE
+  DEF:su3=/srv/stats/serrano/gpu.rrd:util3:AVERAGE
+  VDEF:curtu0=tu0,LAST VDEF:curtu1=tu1,LAST VDEF:curtu2=tu2,LAST VDEF:curtu3=tu3,LAST VDEF:curyu0=yu0,LAST VDEF:curyu1=yu1,LAST VDEF:curyu2=yu2,LAST VDEF:curyu3=yu3,LAST VDEF:cursu0=su0,LAST VDEF:cursu1=su1,LAST VDEF:cursu2=su2,LAST VDEF:cursu3=su3,LAST
+  VDEF:avgtu0=tu0,AVERAGE VDEF:avgtu1=tu1,AVERAGE VDEF:avgtu2=tu2,AVERAGE VDEF:avgtu3=tu3,AVERAGE VDEF:avgyu0=yu0,AVERAGE VDEF:avgyu1=yu1,AVERAGE VDEF:avgyu2=yu2,AVERAGE VDEF:avgyu3=yu3,AVERAGE VDEF:avgsu0=su0,AVERAGE VDEF:avgsu1=su1,AVERAGE VDEF:avgsu2=su2,AVERAGE VDEF:avgsu3=su3,AVERAGE
+  VDEF:maxtu0=tu0,MAXIMUM VDEF:maxtu1=tu1,MAXIMUM VDEF:maxtu2=tu2,MAXIMUM VDEF:maxtu3=tu3,MAXIMUM VDEF:maxyu0=yu0,MAXIMUM VDEF:maxyu1=yu1,MAXIMUM VDEF:maxyu2=yu2,MAXIMUM VDEF:maxyu3=yu3,MAXIMUM VDEF:maxsu0=su0,MAXIMUM VDEF:maxsu1=su1,MAXIMUM VDEF:maxsu2=su2,MAXIMUM VDEF:maxsu3=su3,MAXIMUM
+  COMMENT:"                  Current  Average  Maximum                    Current  Average  Maximum\l"
+  AREA:tu0#FF0099:"Temescal GPU0":STACK GPRINT:curtu0:"%5.1lf %%" GPRINT:avgtu0:"%5.1lf %%" GPRINT:maxtu0:"%5.1lf %%"
+  AREA:tu1#FF0066:"Temescal GPU1":STACK GPRINT:curtu1:"%5.1lf %%" GPRINT:avgtu1:"%5.1lf %%" GPRINT:maxtu1:"%5.1lf %%\l"
+  AREA:tu2#FF0033:"Temescal GPU2":STACK GPRINT:curtu2:"%5.1lf %%" GPRINT:avgtu2:"%5.1lf %%" GPRINT:maxtu2:"%5.1lf %%"
+  AREA:tu3#FF0000:"Temescal GPU3":STACK GPRINT:curtu3:"%5.1lf %%" GPRINT:avgtu3:"%5.1lf %%" GPRINT:maxtu3:"%5.1lf %%\l"
+  AREA:yu0#66CC00:"Ynez GPU0    ":STACK GPRINT:curyu0:"%5.1lf %%" GPRINT:avgyu0:"%5.1lf %%" GPRINT:maxyu0:"%5.1lf %%"
+  AREA:yu1#66CC33:"Ynez GPU1    ":STACK GPRINT:curyu1:"%5.1lf %%" GPRINT:avgyu1:"%5.1lf %%" GPRINT:maxyu1:"%5.1lf %%\l"
+  AREA:yu2#66CC66:"Ynez GPU2    ":STACK GPRINT:curyu2:"%5.1lf %%" GPRINT:avgyu2:"%5.1lf %%" GPRINT:maxyu2:"%5.1lf %%"
+  AREA:yu3#66CC99:"Ynez GPU3    ":STACK GPRINT:curyu3:"%5.1lf %%" GPRINT:avgyu3:"%5.1lf %%" GPRINT:maxyu3:"%5.1lf %%\l"
+  AREA:su0#6600CC:"Serrano GPU0 ":STACK GPRINT:cursu0:"%5.1lf %%" GPRINT:avgsu0:"%5.1lf %%" GPRINT:maxsu0:"%5.1lf %%"
+  AREA:su1#6600FF:"Serrano GPU1 ":STACK GPRINT:cursu1:"%5.1lf %%" GPRINT:avgsu1:"%5.1lf %%" GPRINT:maxsu1:"%5.1lf %%\l"
+  AREA:su2#9900FF:"Serrano GPU2 ":STACK GPRINT:cursu2:"%5.1lf %%" GPRINT:avgsu2:"%5.1lf %%" GPRINT:maxsu2:"%5.1lf %%"
+  AREA:su3#9900CC:"Serrano GPU3 ":STACK GPRINT:cursu3:"%5.1lf %%" GPRINT:avgsu3:"%5.1lf %%" GPRINT:maxsu3:"%5.1lf %%\l">
 <RRD::GRAPH gpu_mem1h.png --title="VRAM Utilization, Last Hour"
-            -s -1hr -w 600 -h 240 -S 120s
-            DEF:tu0=/srv/stats/temescal/gpu.rrd:mem0:AVERAGE
-            DEF:tu1=/srv/stats/temescal/gpu.rrd:mem1:AVERAGE
-            DEF:tu2=/srv/stats/temescal/gpu.rrd:mem2:AVERAGE
-            DEF:tu3=/srv/stats/temescal/gpu.rrd:mem3:AVERAGE
-            DEF:yu0=/srv/stats/ynez/gpu.rrd:mem0:AVERAGE
-            DEF:yu1=/srv/stats/ynez/gpu.rrd:mem1:AVERAGE
-            DEF:yu2=/srv/stats/ynez/gpu.rrd:mem2:AVERAGE
-            DEF:yu3=/srv/stats/ynez/gpu.rrd:mem3:AVERAGE
-            DEF:su0=/srv/stats/serrano/gpu.rrd:mem0:AVERAGE
-            DEF:su1=/srv/stats/serrano/gpu.rrd:mem1:AVERAGE
-            DEF:su2=/srv/stats/serrano/gpu.rrd:mem2:AVERAGE
-            DEF:su3=/srv/stats/serrano/gpu.rrd:mem3:AVERAGE
-            VDEF:curtu0=tu0,LAST VDEF:curtu1=tu1,LAST VDEF:curtu2=tu2,LAST VDEF:curtu3=tu3,LAST VDEF:curyu0=yu0,LAST VDEF:curyu1=yu1,LAST VDEF:curyu2=yu2,LAST VDEF:curyu3=yu3,LAST VDEF:cursu0=su0,LAST VDEF:cursu1=su1,LAST VDEF:cursu2=su2,LAST VDEF:cursu3=su3,LAST
-            VDEF:avgtu0=tu0,AVERAGE VDEF:avgtu1=tu1,AVERAGE VDEF:avgtu2=tu2,AVERAGE VDEF:avgtu3=tu3,AVERAGE VDEF:avgyu0=yu0,AVERAGE VDEF:avgyu1=yu1,AVERAGE VDEF:avgyu2=yu2,AVERAGE VDEF:avgyu3=yu3,AVERAGE VDEF:avgsu0=su0,AVERAGE VDEF:avgsu1=su1,AVERAGE VDEF:avgsu2=su2,AVERAGE VDEF:avgsu3=su3,AVERAGE
-            VDEF:maxtu0=tu0,MAXIMUM VDEF:maxtu1=tu1,MAXIMUM VDEF:maxtu2=tu2,MAXIMUM VDEF:maxtu3=tu3,MAXIMUM VDEF:maxyu0=yu0,MAXIMUM VDEF:maxyu1=yu1,MAXIMUM VDEF:maxyu2=yu2,MAXIMUM VDEF:maxyu3=yu3,MAXIMUM VDEF:maxsu0=su0,MAXIMUM VDEF:maxsu1=su1,MAXIMUM VDEF:maxsu2=su2,MAXIMUM VDEF:maxsu3=su3,MAXIMUM
-            COMMENT:"                   Current   Average   Maximum                     Current   Average   Maximum\l"
-            LINE1:tu0#FF0099:"Temescal GPU0" GPRINT:curtu0:"%5.0lf %SB" GPRINT:avgtu0:"%5.0lf %SB" GPRINT:maxtu0:"%5.0lf %SB"
-            LINE1:tu1#FF0066:"Temescal GPU1" GPRINT:curtu1:"%5.0lf %SB" GPRINT:avgtu1:"%5.0lf %SB" GPRINT:maxtu1:"%5.0lf %SB\l"
-            LINE1:tu2#FF0033:"Temescal GPU2" GPRINT:curtu2:"%5.0lf %SB" GPRINT:avgtu2:"%5.0lf %SB" GPRINT:maxtu2:"%5.0lf %SB"
-            LINE1:tu3#FF0000:"Temescal GPU3" GPRINT:curtu3:"%5.0lf %SB" GPRINT:avgtu3:"%5.0lf %SB" GPRINT:maxtu3:"%5.0lf %SB\l"
-            LINE1:yu0#66CC00:"Ynez GPU0    " GPRINT:curyu0:"%5.0lf %SB" GPRINT:avgyu0:"%5.0lf %SB" GPRINT:maxyu0:"%5.0lf %SB"
-            LINE1:yu1#66CC33:"Ynez GPU1    " GPRINT:curyu1:"%5.0lf %SB" GPRINT:avgyu1:"%5.0lf %SB" GPRINT:maxyu1:"%5.0lf %SB\l"
-            LINE1:yu2#66CC66:"Ynez GPU2    " GPRINT:curyu2:"%5.0lf %SB" GPRINT:avgyu2:"%5.0lf %SB" GPRINT:maxyu2:"%5.0lf %SB"
-            LINE1:yu3#66CC99:"Ynez GPU3    " GPRINT:curyu3:"%5.0lf %SB" GPRINT:avgyu3:"%5.0lf %SB" GPRINT:maxyu3:"%5.0lf %SB\l"
-            LINE1:su0#6600CC:"Serrano GPU0 " GPRINT:cursu0:"%5.0lf %SB" GPRINT:avgsu0:"%5.0lf %SB" GPRINT:maxsu0:"%5.0lf %SB"
-            LINE1:su1#6600FF:"Serrano GPU1 " GPRINT:cursu1:"%5.0lf %SB" GPRINT:avgsu1:"%5.0lf %SB" GPRINT:maxsu1:"%5.0lf %SB\l"
-            LINE1:su2#9900FF:"Serrano GPU2 " GPRINT:cursu2:"%5.0lf %SB" GPRINT:avgsu2:"%5.0lf %SB" GPRINT:maxsu2:"%5.0lf %SB"
-            LINE1:su3#9900CC:"Serrano GPU3 " GPRINT:cursu3:"%5.0lf %SB" GPRINT:avgsu3:"%5.0lf %SB" GPRINT:maxsu3:"%5.0lf %SB\l">
+  -s -1hr -w 600 -h 240 -S 120s -z
+  DEF:tu0=/srv/stats/temescal/gpu.rrd:mem0:AVERAGE
+  DEF:tu1=/srv/stats/temescal/gpu.rrd:mem1:AVERAGE
+  DEF:tu2=/srv/stats/temescal/gpu.rrd:mem2:AVERAGE
+  DEF:tu3=/srv/stats/temescal/gpu.rrd:mem3:AVERAGE
+  DEF:yu0=/srv/stats/ynez/gpu.rrd:mem0:AVERAGE
+  DEF:yu1=/srv/stats/ynez/gpu.rrd:mem1:AVERAGE
+  DEF:yu2=/srv/stats/ynez/gpu.rrd:mem2:AVERAGE
+  DEF:yu3=/srv/stats/ynez/gpu.rrd:mem3:AVERAGE
+  DEF:su0=/srv/stats/serrano/gpu.rrd:mem0:AVERAGE
+  DEF:su1=/srv/stats/serrano/gpu.rrd:mem1:AVERAGE
+  DEF:su2=/srv/stats/serrano/gpu.rrd:mem2:AVERAGE
+  DEF:su3=/srv/stats/serrano/gpu.rrd:mem3:AVERAGE
+  VDEF:curtu0=tu0,LAST VDEF:curtu1=tu1,LAST VDEF:curtu2=tu2,LAST VDEF:curtu3=tu3,LAST VDEF:curyu0=yu0,LAST VDEF:curyu1=yu1,LAST VDEF:curyu2=yu2,LAST VDEF:curyu3=yu3,LAST VDEF:cursu0=su0,LAST VDEF:cursu1=su1,LAST VDEF:cursu2=su2,LAST VDEF:cursu3=su3,LAST
+  VDEF:avgtu0=tu0,AVERAGE VDEF:avgtu1=tu1,AVERAGE VDEF:avgtu2=tu2,AVERAGE VDEF:avgtu3=tu3,AVERAGE VDEF:avgyu0=yu0,AVERAGE VDEF:avgyu1=yu1,AVERAGE VDEF:avgyu2=yu2,AVERAGE VDEF:avgyu3=yu3,AVERAGE VDEF:avgsu0=su0,AVERAGE VDEF:avgsu1=su1,AVERAGE VDEF:avgsu2=su2,AVERAGE VDEF:avgsu3=su3,AVERAGE
+  VDEF:maxtu0=tu0,MAXIMUM VDEF:maxtu1=tu1,MAXIMUM VDEF:maxtu2=tu2,MAXIMUM VDEF:maxtu3=tu3,MAXIMUM VDEF:maxyu0=yu0,MAXIMUM VDEF:maxyu1=yu1,MAXIMUM VDEF:maxyu2=yu2,MAXIMUM VDEF:maxyu3=yu3,MAXIMUM VDEF:maxsu0=su0,MAXIMUM VDEF:maxsu1=su1,MAXIMUM VDEF:maxsu2=su2,MAXIMUM VDEF:maxsu3=su3,MAXIMUM
+  COMMENT:"                   Current   Average   Maximum                     Current   Average   Maximum\l"
+  LINE1:tu0#FF0099:"Temescal GPU0" GPRINT:curtu0:"%5.0lf %SB" GPRINT:avgtu0:"%5.0lf %SB" GPRINT:maxtu0:"%5.0lf %SB"
+  LINE1:tu1#FF0066:"Temescal GPU1" GPRINT:curtu1:"%5.0lf %SB" GPRINT:avgtu1:"%5.0lf %SB" GPRINT:maxtu1:"%5.0lf %SB\l"
+  LINE1:tu2#FF0033:"Temescal GPU2" GPRINT:curtu2:"%5.0lf %SB" GPRINT:avgtu2:"%5.0lf %SB" GPRINT:maxtu2:"%5.0lf %SB"
+  LINE1:tu3#FF0000:"Temescal GPU3" GPRINT:curtu3:"%5.0lf %SB" GPRINT:avgtu3:"%5.0lf %SB" GPRINT:maxtu3:"%5.0lf %SB\l"
+  LINE1:yu0#66CC00:"Ynez GPU0    " GPRINT:curyu0:"%5.0lf %SB" GPRINT:avgyu0:"%5.0lf %SB" GPRINT:maxyu0:"%5.0lf %SB"
+  LINE1:yu1#66CC33:"Ynez GPU1    " GPRINT:curyu1:"%5.0lf %SB" GPRINT:avgyu1:"%5.0lf %SB" GPRINT:maxyu1:"%5.0lf %SB\l"
+  LINE1:yu2#66CC66:"Ynez GPU2    " GPRINT:curyu2:"%5.0lf %SB" GPRINT:avgyu2:"%5.0lf %SB" GPRINT:maxyu2:"%5.0lf %SB"
+  LINE1:yu3#66CC99:"Ynez GPU3    " GPRINT:curyu3:"%5.0lf %SB" GPRINT:avgyu3:"%5.0lf %SB" GPRINT:maxyu3:"%5.0lf %SB\l"
+  LINE1:su0#6600CC:"Serrano GPU0 " GPRINT:cursu0:"%5.0lf %SB" GPRINT:avgsu0:"%5.0lf %SB" GPRINT:maxsu0:"%5.0lf %SB"
+  LINE1:su1#6600FF:"Serrano GPU1 " GPRINT:cursu1:"%5.0lf %SB" GPRINT:avgsu1:"%5.0lf %SB" GPRINT:maxsu1:"%5.0lf %SB\l"
+  LINE1:su2#9900FF:"Serrano GPU2 " GPRINT:cursu2:"%5.0lf %SB" GPRINT:avgsu2:"%5.0lf %SB" GPRINT:maxsu2:"%5.0lf %SB"
+  LINE1:su3#9900CC:"Serrano GPU3 " GPRINT:cursu3:"%5.0lf %SB" GPRINT:avgsu3:"%5.0lf %SB" GPRINT:maxsu3:"%5.0lf %SB\l">
 <RRD::GRAPH gpu_pow1h.png --title="GPU Power Draw, Last Hour"
-            -s -1hr -w 560 -h 240 -S 120s
-            DEF:tb0=/srv/stats/temescal/gpu.rrd:power0:AVERAGE
-            DEF:tb1=/srv/stats/temescal/gpu.rrd:power1:AVERAGE
-            DEF:tb2=/srv/stats/temescal/gpu.rrd:power2:AVERAGE
-            DEF:tb3=/srv/stats/temescal/gpu.rrd:power3:AVERAGE
-            DEF:yb0=/srv/stats/ynez/gpu.rrd:power0:AVERAGE
-            DEF:yb1=/srv/stats/ynez/gpu.rrd:power1:AVERAGE
-            DEF:yb2=/srv/stats/ynez/gpu.rrd:power2:AVERAGE
-            DEF:yb3=/srv/stats/ynez/gpu.rrd:power3:AVERAGE
-            DEF:sb0=/srv/stats/serrano/gpu.rrd:power0:AVERAGE
-            DEF:sb1=/srv/stats/serrano/gpu.rrd:power1:AVERAGE
-            DEF:sb2=/srv/stats/serrano/gpu.rrd:power2:AVERAGE
-            DEF:sb3=/srv/stats/serrano/gpu.rrd:power3:AVERAGE
-            CDEF:tu0=tb0,1000,/
-            CDEF:tu1=tb1,1000,/
-            CDEF:tu2=tb2,1000,/
-            CDEF:tu3=tb3,1000,/
-            CDEF:yu0=yb0,1000,/
-            CDEF:yu1=yb1,1000,/
-            CDEF:yu2=yb2,1000,/
-            CDEF:yu3=yb3,1000,/
-            CDEF:su0=sb0,1000,/
-            CDEF:su1=sb1,1000,/
-            CDEF:su2=sb2,1000,/
-            CDEF:su3=sb3,1000,/
-            VDEF:curtu0=tu0,LAST VDEF:curtu1=tu1,LAST VDEF:curtu2=tu2,LAST VDEF:curtu3=tu3,LAST VDEF:curyu0=yu0,LAST VDEF:curyu1=yu1,LAST VDEF:curyu2=yu2,LAST VDEF:curyu3=yu3,LAST VDEF:cursu0=su0,LAST VDEF:cursu1=su1,LAST VDEF:cursu2=su2,LAST VDEF:cursu3=su3,LAST
-            VDEF:avgtu0=tu0,AVERAGE VDEF:avgtu1=tu1,AVERAGE VDEF:avgtu2=tu2,AVERAGE VDEF:avgtu3=tu3,AVERAGE VDEF:avgyu0=yu0,AVERAGE VDEF:avgyu1=yu1,AVERAGE VDEF:avgyu2=yu2,AVERAGE VDEF:avgyu3=yu3,AVERAGE VDEF:avgsu0=su0,AVERAGE VDEF:avgsu1=su1,AVERAGE VDEF:avgsu2=su2,AVERAGE VDEF:avgsu3=su3,AVERAGE
-            VDEF:maxtu0=tu0,MAXIMUM VDEF:maxtu1=tu1,MAXIMUM VDEF:maxtu2=tu2,MAXIMUM VDEF:maxtu3=tu3,MAXIMUM VDEF:maxyu0=yu0,MAXIMUM VDEF:maxyu1=yu1,MAXIMUM VDEF:maxyu2=yu2,MAXIMUM VDEF:maxyu3=yu3,MAXIMUM VDEF:maxsu0=su0,MAXIMUM VDEF:maxsu1=su1,MAXIMUM VDEF:maxsu2=su2,MAXIMUM VDEF:maxsu3=su3,MAXIMUM
-            COMMENT:"                  Current  Average  Maximum                    Current  Average  Maximum\l"
-            AREA:tu0#FF0099:"Temescal GPU0":STACK GPRINT:curtu0:"%4.0lf %SW" GPRINT:avgtu0:"%4.0lf %SW" GPRINT:maxtu0:"%4.0lf %SW"
-            AREA:tu1#FF0066:"Temescal GPU1":STACK GPRINT:curtu1:"%4.0lf %SW" GPRINT:avgtu1:"%4.0lf %SW" GPRINT:maxtu1:"%4.0lf %SW\l"
-            AREA:tu2#FF0033:"Temescal GPU2":STACK GPRINT:curtu2:"%4.0lf %SW" GPRINT:avgtu2:"%4.0lf %SW" GPRINT:maxtu2:"%4.0lf %SW"
-            AREA:tu3#FF0000:"Temescal GPU3":STACK GPRINT:curtu3:"%4.0lf %SW" GPRINT:avgtu3:"%4.0lf %SW" GPRINT:maxtu3:"%4.0lf %SW\l"
-            AREA:yu0#66CC00:"Ynez GPU0    ":STACK GPRINT:curyu0:"%4.0lf %SW" GPRINT:avgyu0:"%4.0lf %SW" GPRINT:maxyu0:"%4.0lf %SW"
-            AREA:yu1#66CC33:"Ynez GPU1    ":STACK GPRINT:curyu1:"%4.0lf %SW" GPRINT:avgyu1:"%4.0lf %SW" GPRINT:maxyu1:"%4.0lf %SW\l"
-            AREA:yu2#66CC66:"Ynez GPU2    ":STACK GPRINT:curyu2:"%4.0lf %SW" GPRINT:avgyu2:"%4.0lf %SW" GPRINT:maxyu2:"%4.0lf %SW"
-            AREA:yu3#66CC99:"Ynez GPU3    ":STACK GPRINT:curyu3:"%4.0lf %SW" GPRINT:avgyu3:"%4.0lf %SW" GPRINT:maxyu3:"%4.0lf %SW\l"
-            AREA:su0#6600CC:"Serrano GPU0 ":STACK GPRINT:cursu0:"%4.0lf %SW" GPRINT:avgsu0:"%4.0lf %SW" GPRINT:maxsu0:"%4.0lf %SW"
-            AREA:su1#6600FF:"Serrano GPU1 ":STACK GPRINT:cursu1:"%4.0lf %SW" GPRINT:avgsu1:"%4.0lf %SW" GPRINT:maxsu1:"%4.0lf %SW\l"
-            AREA:su2#9900FF:"Serrano GPU2 ":STACK GPRINT:cursu2:"%4.0lf %SW" GPRINT:avgsu2:"%4.0lf %SW" GPRINT:maxsu2:"%4.0lf %SW"
-            AREA:su3#9900CC:"Serrano GPU3 ":STACK GPRINT:cursu3:"%4.0lf %SW" GPRINT:avgsu3:"%4.0lf %SW" GPRINT:maxsu3:"%4.0lf %SW\l">
+  -s -1hr -w 560 -h 240 -S 120s -z
+  DEF:tb0=/srv/stats/temescal/gpu.rrd:power0:AVERAGE
+  DEF:tb1=/srv/stats/temescal/gpu.rrd:power1:AVERAGE
+  DEF:tb2=/srv/stats/temescal/gpu.rrd:power2:AVERAGE
+  DEF:tb3=/srv/stats/temescal/gpu.rrd:power3:AVERAGE
+  DEF:yb0=/srv/stats/ynez/gpu.rrd:power0:AVERAGE
+  DEF:yb1=/srv/stats/ynez/gpu.rrd:power1:AVERAGE
+  DEF:yb2=/srv/stats/ynez/gpu.rrd:power2:AVERAGE
+  DEF:yb3=/srv/stats/ynez/gpu.rrd:power3:AVERAGE
+  DEF:sb0=/srv/stats/serrano/gpu.rrd:power0:AVERAGE
+  DEF:sb1=/srv/stats/serrano/gpu.rrd:power1:AVERAGE
+  DEF:sb2=/srv/stats/serrano/gpu.rrd:power2:AVERAGE
+  DEF:sb3=/srv/stats/serrano/gpu.rrd:power3:AVERAGE
+  CDEF:tu0=tb0,1000,/
+  CDEF:tu1=tb1,1000,/
+  CDEF:tu2=tb2,1000,/
+  CDEF:tu3=tb3,1000,/
+  CDEF:yu0=yb0,1000,/
+  CDEF:yu1=yb1,1000,/
+  CDEF:yu2=yb2,1000,/
+  CDEF:yu3=yb3,1000,/
+  CDEF:su0=sb0,1000,/
+  CDEF:su1=sb1,1000,/
+  CDEF:su2=sb2,1000,/
+  CDEF:su3=sb3,1000,/
+  VDEF:curtu0=tu0,LAST VDEF:curtu1=tu1,LAST VDEF:curtu2=tu2,LAST VDEF:curtu3=tu3,LAST VDEF:curyu0=yu0,LAST VDEF:curyu1=yu1,LAST VDEF:curyu2=yu2,LAST VDEF:curyu3=yu3,LAST VDEF:cursu0=su0,LAST VDEF:cursu1=su1,LAST VDEF:cursu2=su2,LAST VDEF:cursu3=su3,LAST
+  VDEF:avgtu0=tu0,AVERAGE VDEF:avgtu1=tu1,AVERAGE VDEF:avgtu2=tu2,AVERAGE VDEF:avgtu3=tu3,AVERAGE VDEF:avgyu0=yu0,AVERAGE VDEF:avgyu1=yu1,AVERAGE VDEF:avgyu2=yu2,AVERAGE VDEF:avgyu3=yu3,AVERAGE VDEF:avgsu0=su0,AVERAGE VDEF:avgsu1=su1,AVERAGE VDEF:avgsu2=su2,AVERAGE VDEF:avgsu3=su3,AVERAGE
+  VDEF:maxtu0=tu0,MAXIMUM VDEF:maxtu1=tu1,MAXIMUM VDEF:maxtu2=tu2,MAXIMUM VDEF:maxtu3=tu3,MAXIMUM VDEF:maxyu0=yu0,MAXIMUM VDEF:maxyu1=yu1,MAXIMUM VDEF:maxyu2=yu2,MAXIMUM VDEF:maxyu3=yu3,MAXIMUM VDEF:maxsu0=su0,MAXIMUM VDEF:maxsu1=su1,MAXIMUM VDEF:maxsu2=su2,MAXIMUM VDEF:maxsu3=su3,MAXIMUM
+  COMMENT:"                  Current  Average  Maximum                    Current  Average  Maximum\l"
+  AREA:tu0#FF0099:"Temescal GPU0":STACK GPRINT:curtu0:"%4.0lf %SW" GPRINT:avgtu0:"%4.0lf %SW" GPRINT:maxtu0:"%4.0lf %SW"
+  AREA:tu1#FF0066:"Temescal GPU1":STACK GPRINT:curtu1:"%4.0lf %SW" GPRINT:avgtu1:"%4.0lf %SW" GPRINT:maxtu1:"%4.0lf %SW\l"
+  AREA:tu2#FF0033:"Temescal GPU2":STACK GPRINT:curtu2:"%4.0lf %SW" GPRINT:avgtu2:"%4.0lf %SW" GPRINT:maxtu2:"%4.0lf %SW"
+  AREA:tu3#FF0000:"Temescal GPU3":STACK GPRINT:curtu3:"%4.0lf %SW" GPRINT:avgtu3:"%4.0lf %SW" GPRINT:maxtu3:"%4.0lf %SW\l"
+  AREA:yu0#66CC00:"Ynez GPU0    ":STACK GPRINT:curyu0:"%4.0lf %SW" GPRINT:avgyu0:"%4.0lf %SW" GPRINT:maxyu0:"%4.0lf %SW"
+  AREA:yu1#66CC33:"Ynez GPU1    ":STACK GPRINT:curyu1:"%4.0lf %SW" GPRINT:avgyu1:"%4.0lf %SW" GPRINT:maxyu1:"%4.0lf %SW\l"
+  AREA:yu2#66CC66:"Ynez GPU2    ":STACK GPRINT:curyu2:"%4.0lf %SW" GPRINT:avgyu2:"%4.0lf %SW" GPRINT:maxyu2:"%4.0lf %SW"
+  AREA:yu3#66CC99:"Ynez GPU3    ":STACK GPRINT:curyu3:"%4.0lf %SW" GPRINT:avgyu3:"%4.0lf %SW" GPRINT:maxyu3:"%4.0lf %SW\l"
+  AREA:su0#6600CC:"Serrano GPU0 ":STACK GPRINT:cursu0:"%4.0lf %SW" GPRINT:avgsu0:"%4.0lf %SW" GPRINT:maxsu0:"%4.0lf %SW"
+  AREA:su1#6600FF:"Serrano GPU1 ":STACK GPRINT:cursu1:"%4.0lf %SW" GPRINT:avgsu1:"%4.0lf %SW" GPRINT:maxsu1:"%4.0lf %SW\l"
+  AREA:su2#9900FF:"Serrano GPU2 ":STACK GPRINT:cursu2:"%4.0lf %SW" GPRINT:avgsu2:"%4.0lf %SW" GPRINT:maxsu2:"%4.0lf %SW"
+  AREA:su3#9900CC:"Serrano GPU3 ":STACK GPRINT:cursu3:"%4.0lf %SW" GPRINT:avgsu3:"%4.0lf %SW" GPRINT:maxsu3:"%4.0lf %SW\l">
 <br />
 <RRD::GRAPH gpu1wk.png --title="GPU Utilization, Last Week"
-            -s -1wk -w 1200 -h 240
-            DEF:tu0=/srv/stats/temescal/gpu.rrd:util0:AVERAGE
-            DEF:tu1=/srv/stats/temescal/gpu.rrd:util1:AVERAGE
-            DEF:tu2=/srv/stats/temescal/gpu.rrd:util2:AVERAGE
-            DEF:tu3=/srv/stats/temescal/gpu.rrd:util3:AVERAGE
-            DEF:yu0=/srv/stats/ynez/gpu.rrd:util0:AVERAGE
-            DEF:yu1=/srv/stats/ynez/gpu.rrd:util1:AVERAGE
-            DEF:yu2=/srv/stats/ynez/gpu.rrd:util2:AVERAGE
-            DEF:yu3=/srv/stats/ynez/gpu.rrd:util3:AVERAGE
-            DEF:su0=/srv/stats/serrano/gpu.rrd:util0:AVERAGE
-            DEF:su1=/srv/stats/serrano/gpu.rrd:util1:AVERAGE
-            DEF:su2=/srv/stats/serrano/gpu.rrd:util2:AVERAGE
-            DEF:su3=/srv/stats/serrano/gpu.rrd:util3:AVERAGE
-            VDEF:curtu0=tu0,LAST VDEF:curtu1=tu1,LAST VDEF:curtu2=tu2,LAST VDEF:curtu3=tu3,LAST VDEF:curyu0=yu0,LAST VDEF:curyu1=yu1,LAST VDEF:curyu2=yu2,LAST VDEF:curyu3=yu3,LAST VDEF:cursu0=su0,LAST VDEF:cursu1=su1,LAST VDEF:cursu2=su2,LAST VDEF:cursu3=su3,LAST
-            VDEF:avgtu0=tu0,AVERAGE VDEF:avgtu1=tu1,AVERAGE VDEF:avgtu2=tu2,AVERAGE VDEF:avgtu3=tu3,AVERAGE VDEF:avgyu0=yu0,AVERAGE VDEF:avgyu1=yu1,AVERAGE VDEF:avgyu2=yu2,AVERAGE VDEF:avgyu3=yu3,AVERAGE VDEF:avgsu0=su0,AVERAGE VDEF:avgsu1=su1,AVERAGE VDEF:avgsu2=su2,AVERAGE VDEF:avgsu3=su3,AVERAGE
-            VDEF:maxtu0=tu0,MAXIMUM VDEF:maxtu1=tu1,MAXIMUM VDEF:maxtu2=tu2,MAXIMUM VDEF:maxtu3=tu3,MAXIMUM VDEF:maxyu0=yu0,MAXIMUM VDEF:maxyu1=yu1,MAXIMUM VDEF:maxyu2=yu2,MAXIMUM VDEF:maxyu3=yu3,MAXIMUM VDEF:maxsu0=su0,MAXIMUM VDEF:maxsu1=su1,MAXIMUM VDEF:maxsu2=su2,MAXIMUM VDEF:maxsu3=su3,MAXIMUM
-            COMMENT:"                  Current  Average  Maximum                    Current  Average  Maximum                    Current  Average  Maximum                    Current  Average  Maximum\l"
-            AREA:tu0#FF0099:"Temescal GPU0":STACK GPRINT:curtu0:"%5.1lf %%" GPRINT:avgtu0:"%5.1lf %%" GPRINT:maxtu0:"%5.1lf %%"
-            AREA:tu1#FF0066:"Temescal GPU1":STACK GPRINT:curtu1:"%5.1lf %%" GPRINT:avgtu1:"%5.1lf %%" GPRINT:maxtu1:"%5.1lf %%"
-            AREA:tu2#FF0033:"Temescal GPU2":STACK GPRINT:curtu2:"%5.1lf %%" GPRINT:avgtu2:"%5.1lf %%" GPRINT:maxtu2:"%5.1lf %%"
-            AREA:tu3#FF0000:"Temescal GPU3":STACK GPRINT:curtu3:"%5.1lf %%" GPRINT:avgtu3:"%5.1lf %%" GPRINT:maxtu3:"%5.1lf %%\l"
-            AREA:yu0#66CC00:"Ynez GPU0    ":STACK GPRINT:curyu0:"%5.1lf %%" GPRINT:avgyu0:"%5.1lf %%" GPRINT:maxyu0:"%5.1lf %%"
-            AREA:yu1#66CC33:"Ynez GPU1    ":STACK GPRINT:curyu1:"%5.1lf %%" GPRINT:avgyu1:"%5.1lf %%" GPRINT:maxyu1:"%5.1lf %%"
-            AREA:yu2#66CC66:"Ynez GPU2    ":STACK GPRINT:curyu2:"%5.1lf %%" GPRINT:avgyu2:"%5.1lf %%" GPRINT:maxyu2:"%5.1lf %%"
-            AREA:yu3#66CC99:"Ynez GPU3    ":STACK GPRINT:curyu3:"%5.1lf %%" GPRINT:avgyu3:"%5.1lf %%" GPRINT:maxyu3:"%5.1lf %%\l"
-            AREA:su0#6600CC:"Serrano GPU0 ":STACK GPRINT:cursu0:"%5.1lf %%" GPRINT:avgsu0:"%5.1lf %%" GPRINT:maxsu0:"%5.1lf %%"
-            AREA:su1#6600FF:"Serrano GPU1 ":STACK GPRINT:cursu1:"%5.1lf %%" GPRINT:avgsu1:"%5.1lf %%" GPRINT:maxsu1:"%5.1lf %%"
-            AREA:su2#9900FF:"Serrano GPU2 ":STACK GPRINT:cursu2:"%5.1lf %%" GPRINT:avgsu2:"%5.1lf %%" GPRINT:maxsu2:"%5.1lf %%"
-            AREA:su3#9900CC:"Serrano GPU3 ":STACK GPRINT:cursu3:"%5.1lf %%" GPRINT:avgsu3:"%5.1lf %%" GPRINT:maxsu3:"%5.1lf %%\l">
+  -s -1wk -w 1200 -h 240 -z
+  DEF:tu0=/srv/stats/temescal/gpu.rrd:util0:AVERAGE
+  DEF:tu1=/srv/stats/temescal/gpu.rrd:util1:AVERAGE
+  DEF:tu2=/srv/stats/temescal/gpu.rrd:util2:AVERAGE
+  DEF:tu3=/srv/stats/temescal/gpu.rrd:util3:AVERAGE
+  DEF:yu0=/srv/stats/ynez/gpu.rrd:util0:AVERAGE
+  DEF:yu1=/srv/stats/ynez/gpu.rrd:util1:AVERAGE
+  DEF:yu2=/srv/stats/ynez/gpu.rrd:util2:AVERAGE
+  DEF:yu3=/srv/stats/ynez/gpu.rrd:util3:AVERAGE
+  DEF:su0=/srv/stats/serrano/gpu.rrd:util0:AVERAGE
+  DEF:su1=/srv/stats/serrano/gpu.rrd:util1:AVERAGE
+  DEF:su2=/srv/stats/serrano/gpu.rrd:util2:AVERAGE
+  DEF:su3=/srv/stats/serrano/gpu.rrd:util3:AVERAGE
+  VDEF:curtu0=tu0,LAST VDEF:curtu1=tu1,LAST VDEF:curtu2=tu2,LAST VDEF:curtu3=tu3,LAST VDEF:curyu0=yu0,LAST VDEF:curyu1=yu1,LAST VDEF:curyu2=yu2,LAST VDEF:curyu3=yu3,LAST VDEF:cursu0=su0,LAST VDEF:cursu1=su1,LAST VDEF:cursu2=su2,LAST VDEF:cursu3=su3,LAST
+  VDEF:avgtu0=tu0,AVERAGE VDEF:avgtu1=tu1,AVERAGE VDEF:avgtu2=tu2,AVERAGE VDEF:avgtu3=tu3,AVERAGE VDEF:avgyu0=yu0,AVERAGE VDEF:avgyu1=yu1,AVERAGE VDEF:avgyu2=yu2,AVERAGE VDEF:avgyu3=yu3,AVERAGE VDEF:avgsu0=su0,AVERAGE VDEF:avgsu1=su1,AVERAGE VDEF:avgsu2=su2,AVERAGE VDEF:avgsu3=su3,AVERAGE
+  VDEF:maxtu0=tu0,MAXIMUM VDEF:maxtu1=tu1,MAXIMUM VDEF:maxtu2=tu2,MAXIMUM VDEF:maxtu3=tu3,MAXIMUM VDEF:maxyu0=yu0,MAXIMUM VDEF:maxyu1=yu1,MAXIMUM VDEF:maxyu2=yu2,MAXIMUM VDEF:maxyu3=yu3,MAXIMUM VDEF:maxsu0=su0,MAXIMUM VDEF:maxsu1=su1,MAXIMUM VDEF:maxsu2=su2,MAXIMUM VDEF:maxsu3=su3,MAXIMUM
+  COMMENT:"                  Current  Average  Maximum                    Current  Average  Maximum                    Current  Average  Maximum                    Current  Average  Maximum\l"
+  AREA:tu0#FF0099:"Temescal GPU0":STACK GPRINT:curtu0:"%5.1lf %%" GPRINT:avgtu0:"%5.1lf %%" GPRINT:maxtu0:"%5.1lf %%"
+  AREA:tu1#FF0066:"Temescal GPU1":STACK GPRINT:curtu1:"%5.1lf %%" GPRINT:avgtu1:"%5.1lf %%" GPRINT:maxtu1:"%5.1lf %%"
+  AREA:tu2#FF0033:"Temescal GPU2":STACK GPRINT:curtu2:"%5.1lf %%" GPRINT:avgtu2:"%5.1lf %%" GPRINT:maxtu2:"%5.1lf %%"
+  AREA:tu3#FF0000:"Temescal GPU3":STACK GPRINT:curtu3:"%5.1lf %%" GPRINT:avgtu3:"%5.1lf %%" GPRINT:maxtu3:"%5.1lf %%\l"
+  AREA:yu0#66CC00:"Ynez GPU0    ":STACK GPRINT:curyu0:"%5.1lf %%" GPRINT:avgyu0:"%5.1lf %%" GPRINT:maxyu0:"%5.1lf %%"
+  AREA:yu1#66CC33:"Ynez GPU1    ":STACK GPRINT:curyu1:"%5.1lf %%" GPRINT:avgyu1:"%5.1lf %%" GPRINT:maxyu1:"%5.1lf %%"
+  AREA:yu2#66CC66:"Ynez GPU2    ":STACK GPRINT:curyu2:"%5.1lf %%" GPRINT:avgyu2:"%5.1lf %%" GPRINT:maxyu2:"%5.1lf %%"
+  AREA:yu3#66CC99:"Ynez GPU3    ":STACK GPRINT:curyu3:"%5.1lf %%" GPRINT:avgyu3:"%5.1lf %%" GPRINT:maxyu3:"%5.1lf %%\l"
+  AREA:su0#6600CC:"Serrano GPU0 ":STACK GPRINT:cursu0:"%5.1lf %%" GPRINT:avgsu0:"%5.1lf %%" GPRINT:maxsu0:"%5.1lf %%"
+  AREA:su1#6600FF:"Serrano GPU1 ":STACK GPRINT:cursu1:"%5.1lf %%" GPRINT:avgsu1:"%5.1lf %%" GPRINT:maxsu1:"%5.1lf %%"
+  AREA:su2#9900FF:"Serrano GPU2 ":STACK GPRINT:cursu2:"%5.1lf %%" GPRINT:avgsu2:"%5.1lf %%" GPRINT:maxsu2:"%5.1lf %%"
+  AREA:su3#9900CC:"Serrano GPU3 ":STACK GPRINT:cursu3:"%5.1lf %%" GPRINT:avgsu3:"%5.1lf %%" GPRINT:maxsu3:"%5.1lf %%\l">
 <footer style="text-align:center">
 <hr />
 <a href="https://acme.com/software/thttpd/"><img src="/badges/thttpd.gif" alt="powered by thttpd" height="31" width="88"></a>
diff --git a/mem.cgi b/mem.cgi
index 286a92262e0859037a5cc95e51ae1a41b00d5fd8..c17ca8cff581510857c901e747a13db502b58c0e 100755 (executable)
--- a/mem.cgi
+++ b/mem.cgi
@@ -5,73 +5,73 @@
 <body style="background-image: url('/bg.gif')">
 <h1>Cluster Memory Report</h1>
 <RRD::GRAPH tmem1h.png --title="Temescal Memory Usage, Last Hour"
-            -l 0 -s -1hr -w 480 -h 240 -b 1024
-            DEF:tot=/srv/stats/temescal/mem.rrd:total:AVERAGE
-            DEF:free=/srv/stats/temescal/mem.rrd:free:AVERAGE
-            DEF:avail=/srv/stats/temescal/mem.rrd:avail:AVERAGE
-            CDEF:t=tot,1024,*
-            CDEF:f=free,1024,*
-            CDEF:a=avail,1024,*
-            CDEF:u=t,a,-
-            CDEF:c=a,f,-
-            AREA:u#a00000:"Used"
-            AREA:c#0000a0:"Cache/Buffer":STACK
-            AREA:f#00a000:"Free":STACK>
+  -l 0 -s -1hr -w 480 -h 240 -b 1024 -z
+  DEF:tot=/srv/stats/temescal/mem.rrd:total:AVERAGE
+  DEF:free=/srv/stats/temescal/mem.rrd:free:AVERAGE
+  DEF:avail=/srv/stats/temescal/mem.rrd:avail:AVERAGE
+  CDEF:t=tot,1024,*
+  CDEF:f=free,1024,*
+  CDEF:a=avail,1024,*
+  CDEF:u=t,a,-
+  CDEF:c=a,f,-
+  AREA:u#a00000:"Used"
+  AREA:c#0000a0:"Cache/Buffer":STACK
+  AREA:f#00a000:"Free":STACK>
 <RRD::GRAPH ymem1h.png --title="Ynez Memory Usage, Last Hour"
-            -l 0 -s -1hr -w 480 -h 240 -b 1024
-            DEF:tot=/srv/stats/ynez/mem.rrd:total:AVERAGE
-            DEF:free=/srv/stats/ynez/mem.rrd:free:AVERAGE
-            DEF:avail=/srv/stats/ynez/mem.rrd:avail:AVERAGE
-            CDEF:t=tot,1024,*
-            CDEF:f=free,1024,*
-            CDEF:a=avail,1024,*
-            CDEF:u=t,a,-
-            CDEF:c=a,f,-
-            AREA:u#a00000:"Used"
-            AREA:c#0000a0:"Cache/Buffer":STACK
-            AREA:f#00a000:"Free":STACK>
+  -l 0 -s -1hr -w 480 -h 240 -b 1024 -z
+  DEF:tot=/srv/stats/ynez/mem.rrd:total:AVERAGE
+  DEF:free=/srv/stats/ynez/mem.rrd:free:AVERAGE
+  DEF:avail=/srv/stats/ynez/mem.rrd:avail:AVERAGE
+  CDEF:t=tot,1024,*
+  CDEF:f=free,1024,*
+  CDEF:a=avail,1024,*
+  CDEF:u=t,a,-
+  CDEF:c=a,f,-
+  AREA:u#a00000:"Used"
+  AREA:c#0000a0:"Cache/Buffer":STACK
+  AREA:f#00a000:"Free":STACK>
 <RRD::GRAPH smem1h.png --title="Serrano Memory Usage, Last Hour"
-            -l 0 -s -1hr -w 480 -h 240 -b 1024
-            DEF:tot=/srv/stats/serrano/mem.rrd:total:AVERAGE
-            DEF:free=/srv/stats/serrano/mem.rrd:free:AVERAGE
-            DEF:avail=/srv/stats/serrano/mem.rrd:avail:AVERAGE
-            CDEF:t=tot,1024,*
-            CDEF:f=free,1024,*
-            CDEF:a=avail,1024,*
-            CDEF:u=t,a,-
-            CDEF:c=a,f,-
-            AREA:u#a00000:"Used"
-            AREA:c#0000a0:"Cache/Buffer":STACK
-            AREA:f#00a000:"Free":STACK>
+  -l 0 -s -1hr -w 480 -h 240 -b 1024 -z
+  DEF:tot=/srv/stats/serrano/mem.rrd:total:AVERAGE
+  DEF:free=/srv/stats/serrano/mem.rrd:free:AVERAGE
+  DEF:avail=/srv/stats/serrano/mem.rrd:avail:AVERAGE
+  CDEF:t=tot,1024,*
+  CDEF:f=free,1024,*
+  CDEF:a=avail,1024,*
+  CDEF:u=t,a,-
+  CDEF:c=a,f,-
+  AREA:u#a00000:"Used"
+  AREA:c#0000a0:"Cache/Buffer":STACK
+  AREA:f#00a000:"Free":STACK>
 <RRD::GRAPH mem1d.png --title="Memory Usage, Last Day"
-            -l 0 -r -s -1d -w 960 -h 240 -b 1024
-            DEF:ttot=/srv/stats/temescal/mem.rrd:total:AVERAGE
-            DEF:tfree=/srv/stats/temescal/mem.rrd:free:AVERAGE
-            DEF:tavail=/srv/stats/temescal/mem.rrd:avail:AVERAGE
-            CDEF:tt=ttot,1024,*
-            CDEF:tf=tfree,1024,*
-            CDEF:ta=tavail,1024,*
-            DEF:ytot=/srv/stats/ynez/mem.rrd:total:AVERAGE
-            DEF:yfree=/srv/stats/ynez/mem.rrd:free:AVERAGE
-            DEF:yavail=/srv/stats/ynez/mem.rrd:avail:AVERAGE
-            CDEF:yt=ytot,1024,*
-            CDEF:yf=yfree,1024,*
-            CDEF:ya=yavail,1024,*
-            DEF:stot=/srv/stats/serrano/mem.rrd:total:AVERAGE
-            DEF:sfree=/srv/stats/serrano/mem.rrd:free:AVERAGE
-            DEF:savail=/srv/stats/serrano/mem.rrd:avail:AVERAGE
-            CDEF:st=stot,1024,*
-            CDEF:sf=sfree,1024,*
-            CDEF:sa=savail,1024,*
-            LINE2:tt#a00000:"Temescal MemTotal"
-            LINE2:tf#a00000:"Temescal MemFree"
-            LINE2:tf#a00000:"Temescal MemAvail"
-            LINE2:yt#00a000:"Ynez MemTotal"
-            LINE2:yf#00a000:"Ynez MemFree"
-            LINE2:ya#00a000:"Ynez MemAvail"
-            LINE2:st#0000a0:"Serrano MemTotal"
-            LINE2:sf#0000a0:"Serrano MemFree"
-            LINE2:sa#0000a0:"Serrano MemAvail">
+  -l 0 -r -s -1d -w 960 -h 240 -b 1024 -z
+  DEF:ttot=/srv/stats/temescal/mem.rrd:total:AVERAGE
+  DEF:tfree=/srv/stats/temescal/mem.rrd:free:AVERAGE
+  DEF:tavail=/srv/stats/temescal/mem.rrd:avail:AVERAGE
+  CDEF:tt=ttot,1024,*
+  CDEF:tf=tfree,1024,*
+  CDEF:ta=tavail,1024,*
+  DEF:ytot=/srv/stats/ynez/mem.rrd:total:AVERAGE
+  DEF:yfree=/srv/stats/ynez/mem.rrd:free:AVERAGE
+  DEF:yavail=/srv/stats/ynez/mem.rrd:avail:AVERAGE
+  CDEF:yt=ytot,1024,*
+  CDEF:yf=yfree,1024,*
+  CDEF:ya=yavail,1024,*
+  DEF:stot=/srv/stats/serrano/mem.rrd:total:AVERAGE
+  DEF:sfree=/srv/stats/serrano/mem.rrd:free:AVERAGE
+  DEF:savail=/srv/stats/serrano/mem.rrd:avail:AVERAGE
+  CDEF:st=stot,1024,*
+  CDEF:sf=sfree,1024,*
+  CDEF:sa=savail,1024,*
+  LINE2:tt#a00000:"Temescal MemTotal"
+  LINE2:tf#a00000:"Temescal MemFree"
+  LINE2:tf#a00000:"Temescal MemAvail"
+  LINE2:yt#00a000:"Ynez MemTotal"
+  LINE2:yf#00a000:"Ynez MemFree"
+  LINE2:ya#00a000:"Ynez MemAvail"
+  LINE2:st#0000a0:"Serrano MemTotal"
+  LINE2:sf#0000a0:"Serrano MemFree"
+  LINE2:sa#0000a0:"Serrano MemAvail">
 <footer style="text-align:center">
 <hr />
 <a href="https://acme.com/software/thttpd/"><img src="/badges/thttpd.gif" alt="powered by thttpd" height="31" width="88"></a>