Monitorizez unele mașini cu mai multe GPU și vreau să fac un grafic de utilizare combinat CPU/GPU cu GPU ca pozitiv și CPU ca negativ.
Pot crea un astfel de grafic foarte bine pentru un singur GPU împotriva 100 - (cpu.idle / #cores)
, dar întâmpinați probleme atunci când încercați să utilizați valorile medii de utilizare a GPU, calculate folosind sumă
și cdef
.
Mai jos sunt patru situații pentru a ilustra problemele pentru o mașină cu două GPU. Configurația și ieșirea sunt prezentate mai jos o scurtă descriere:
- De bază. Pot reprezenta fără probleme valorile CPU și GPU individuale.
# Afișează fără probleme valorile individuale
test0.graph_title Test 0: valori de referință
test0.graph_args --base 1000 -l -100 -u 100 -r
test0.graph_vlabel CPU / GPU
test0.graph_category system
test0.graph_order \
cpu=multigpu.example.com:cpu.idle \
gpu1=multigpu.example.com:nvidia_gpu_utilization.utilization0 \
gpu2=multigpu.example.com:nvidia_gpu_utilization.utilization1
test0.cpu.cdef 100,cpu,48,/,-
- De asemenea, pot crea graficul GPU-pozitiv-negativ pentru GPU-ul meu fără probleme pentru utilizarea unui GPU individual combinat cu
cdef
'd valoarea CPU
# Afișează corect valorile GPU0 ca pozitive, valorile CPU ca negative
test1.graph_title Test 1: direct
test1.graph_args --base 1000 -l -100 -u 100 -r
test1.graph_vlabel CPU / GPU
test1.graph_category system
test1.graph_order \
cpu=multigpu.example.com:cpu.idle \
gpu1=multigpu.example.com:nvidia_gpu_utilization.utilization0
test1.cpu.cdef 100,cpu,48,/,-
test1.cpu.graf nr
test1.gpu1.procesor negativ
- Dacă pur și simplu plasez CPU și media a 2 GPU-uri pe același grafic, valorile CPU nu mai sunt corecte, dar par să fie suma mediei GPU și a valorilor CPU? Habar nu ce se intampla aici...
# Valorile CPU sunt incorecte aici
test2.graph_title Testul 2: medie
test2.graph_args --base 1000 -l -100 -u 100 -r
test2.graph_vlabel CPU / GPU
test2.graph_category system
test2.graph_order \
cpu=multigpu.example.com:cpu.idle \
GPU
test2.cpu.cdef 100,cpu,48,/,-
test2.gpu.label gpu mean
test2.gpu.sum \
multigpu.example.com:nvidia_gpu_utilization.utilization0 \
multigpu.example.com:nvidia_gpu_utilization.utilization1
test2.gpu.cdef gpu,2,/
- Dacă încerc să le combin într-un grafic pozitiv/negativ, erorile de redare cu
Nu este un vname ccpu valid
în munin-graph.log (unde „cpu” este numele variabilei mele)
test3.graph_title Testul 3: sus/jos
test3.graph_args --base 1000 -l -100 -u 100 -r
test3.graph_vlabel CPU / GPU
test3.sistem de categorii_grafice
test3.graph_order \
cpu=multigpu.example.com:cpu.idle \
GPU
test3.cpu.cdef 100,cpu,48,/,-
test3.gpu.label gpu mean
test3.gpu.sum \
multigpu.example.com:nvidia_gpu_utilization.utilization0 \
multigpu.example.com:nvidia_gpu_utilization.utilization1
test3.gpu.cdef gpu,2,/
test3.cpu.graf nr
test3.gpu.procesor negativ
munin-graph.log:
2021/06/25 16:21:28 [ERORE RRD] Imposibil de reprezentat grafic test3-day.png : Nu este un vname valid: ccdefcpu în linia GPRINT:ccdefcpu:LAST:%6.2lf%s/\g
2021/06/25 16:21:28 [ERORE RRD] rrdtool 'graph' 'test3-day.png' \
'--titlu' \
„Testul 3: sus/jos - pe zi” \
'--start' \
„-2000 m” \
'--bază' \
„1000” \
'-l' \
„-100” \
'-u' \
„100” \
'-r' \
„--vertical-label” \
„CPU / GPU” \
„--slope-mode” \
„--înălțime” \
„175” \
„--lățime” \
„400” \
'--imgformat' \
„PNG” \
'--leneș' \
„--font” \
„DEFAULT:0:DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans” \
„--font” \
„LEGEND:7:DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace” \
'--culoare' \
„ÎNAPOI#F0F0F0” \
'--culoare' \
„CADRUL#F0F0F0” \
'--culoare' \
„PÂNZĂ#FFFFFF” \
'--culoare' \
„FONT#666666” \
'--culoare' \
„AXIS#CFD6F8” \
'--culoare' \
„SĂGEATĂ#CFD6F8” \
'--border' \
'0' \
'-W' \
„Munin 2.0.66” \
„DEF:acpu=/var/lib/munin/multigpu.example.com-cpu-idle-d.rrd:42:MAX” \
„DEF:icpu=/var/lib/munin/multigpu.example.com-cpu-idle-d.rrd:42:MIN” \
„DEF:gcpu=/var/lib/munin/multigpu.example.com-cpu-idle-d.rrd:42:AVERAGE” \
„DEF:az2_1=/var/lib/munin/multigpu.example.com-nvidia_gpu_utilization-utilization1-g.rrd:42:MAX” \
„DEF:iz2_1=/var/lib/munin/multigpu.example.com-nvidia_gpu_utilization-utilization1-g.rrd:42:MIN” \
„DEF:gz2_1=/var/lib/munin/multigpu.example.com-nvidia_gpu_utilization-utilization1-g.rrd:42:AVERAGE” \
„DEF:az2_0=/var/lib/munin/multigpu.example.com-nvidia_gpu_utilization-utilization0-g.rrd:42:MAX” \
„DEF:iz2_0=/var/lib/munin/multigpu.example.com-nvidia_gpu_utilization-utilization0-g.rrd:42:MIN” \
„DEF:gz2_0=/var/lib/munin/multigpu.example.com-nvidia_gpu_utilization-utilization0-g.rrd:42:AVERAGE” \
„CDEF:acdefz2_0=az2_0,UN,0,az2_0,IF” \
„CDEF:icdefz2_0=iz2_0,UN,0,iz2_0,IF” \
„CDEF:gcdefz2_0=gz2_0,UN,0,gz2_0,IF” \
„CDEF:ccdefz2_0=gcdefz2_0” \
„CDEF:acdefz2_1=az2_1,UN,0,az2_1,IF,acdefz2_0,ADDNAN,2,/” \
„CDEF:icdefz2_1=iz2_1,UN,0,iz2_1,IF,icdefz2_0,ADDNAN,2,/” \
„CDEF:gcdefz2_1=gz2_1,UN,0,gz2_1,IF,gcdefz2_0,ADDNAN,2,/” \
„CDEF:ccdefz2_1=gcdefz2_1” \
'COMETARIU: ' \
„COMMENT:Cur (-/+)” \
„COMMENT:Min (-/+)” \
„COMMENT:Media (-/+)” \
„COMMENT:Max (-/+) \j” \
„LINE1:gcdefz2_1#00CC00:gpu mean” \
„GPRINT:ccdefcpu:LAST:%6.2lf%s/\g” \
„GPRINT:ccdefz2_1:LAST:%6.2lf%s” \
„GPRINT:icdefcpu:MIN:%6.2lf%s/\g” \
„GPRINT:icdefz2_1:MIN:%6.2lf%s” \
„GPRINT:gcdefcpu:AVERAGE:%6.2lf%s/\g” \
„GPRINT:gcdefz2_1:AVERAGE:%6.2lf%s” \
„GPRINT:acdefcpu:MAX:%6.2lf%s/\g” \
„GPRINT:acdefz2_1:MAX:%6.2lf%s\j” \
„CDEF:acdefcpu=100,acpu,48,/,-” \
„CDEF:icdefcpu=100,icpu,48,/,-” \
„CDEF:gcdefcpu=100,gcpu,48,/,-” \
„CDEF:ccdefcpu=gcdefcpu” \
„CDEF:re_zero=gcdefcpu,UN,0,0,IF” \
„CDEF:ngcdefcpu=gcdefcpu,-1,*” \
„LINE1:ngcdefcpu#00CC00” \
„LINE1:re_zero#000000” \
„VRULE:1624630818#999999” \
„COMMENT:Ultima actualizare\: vineri, 25 iunie 16\:20\:18 2021\r” \
'--Sfârşit' \
„1624630500”
2021/06/25 16:21:28 [ERORE RRD] Imposibil de reprezentat grafic test3-week.png : Nu este un vname valid: ccpu în linia GPRINT:ccpu:LAST:%6.2lf%s/\g
[... detalii repetate omise din motive de concizie...]
2021/06/25 16:21:28 [ERORE RRD] Imposibil de reprezentat grafic test3-month.png : Nu este un vname valid: ccdefcpu în linia GPRINT:ccdefcpu:LAST:%6.2lf%s/\g
[...]