Commit initial
This commit is contained in:
commit
938679217b
1 changed files with 171 additions and 0 deletions
171
charts.d/radeon.chart.sh
Normal file
171
charts.d/radeon.chart.sh
Normal file
|
@ -0,0 +1,171 @@
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# no need for shebang - this file is loaded from charts.d.plugin
|
||||||
|
|
||||||
|
# _update_every is a special variable - it holds the number of seconds
|
||||||
|
# between the calls of the _update() function
|
||||||
|
radeon_update_every=
|
||||||
|
|
||||||
|
# the priority is used to sort the charts on the dashboard
|
||||||
|
# 1 = the first chart
|
||||||
|
radeon_priority=150000
|
||||||
|
|
||||||
|
# global variables to store our collected data
|
||||||
|
# remember: they need to start with the module name radeon_
|
||||||
|
|
||||||
|
# Pecentage
|
||||||
|
declare -i radeon_perc_{gpu,ee,vgt,ta,sx,sh,spi,sc,pa,db,cb,vram,gtt,mclk,sclk}=0
|
||||||
|
|
||||||
|
# Fréquences
|
||||||
|
declare -i radeon_freq_{mclk,sclk}=0
|
||||||
|
declare -i radeon_freqmax_{mclk=2100,sclk=1560}
|
||||||
|
|
||||||
|
# Mio
|
||||||
|
declare -i radeon_mb_{vram,gtt}=0
|
||||||
|
declare -i radeon_mbmax_{vram=8162,gtt=8184}
|
||||||
|
|
||||||
|
radeon_get() {
|
||||||
|
# do all the work to collect / calculate the values
|
||||||
|
# for each dimension
|
||||||
|
#
|
||||||
|
# Remember:
|
||||||
|
# 1. KEEP IT SIMPLE AND SHORT
|
||||||
|
# 2. AVOID FORKS (avoid piping commands)
|
||||||
|
# 3. AVOID CALLING TOO MANY EXTERNAL PROGRAMS
|
||||||
|
# 4. USE LOCAL VARIABLES (global variables may overlap with other modules)
|
||||||
|
|
||||||
|
declare output key value i
|
||||||
|
|
||||||
|
output="$(radeontop -d- -l1 | tail -n1)"
|
||||||
|
output="${output//./}"
|
||||||
|
|
||||||
|
oldIFS="$IFS"
|
||||||
|
IFS=","
|
||||||
|
for i in ${output}
|
||||||
|
do
|
||||||
|
# Skip first line
|
||||||
|
[[ ${i:0:1} != " " ]] && continue
|
||||||
|
|
||||||
|
# Remove whitespace at the start of the line
|
||||||
|
i="${i:1}"
|
||||||
|
|
||||||
|
# Set the key
|
||||||
|
key="${i%% *}"
|
||||||
|
|
||||||
|
# For freq
|
||||||
|
if [[ "${i: -3}" == "ghz" ]]
|
||||||
|
then
|
||||||
|
value="${i##* }"
|
||||||
|
value="${value:0:-3}"
|
||||||
|
declare -ig "radeon_freq_$key=10#$value"
|
||||||
|
i="${i% *}"
|
||||||
|
# For mb
|
||||||
|
elif [[ "${i: -2}" == "mb" ]]
|
||||||
|
then
|
||||||
|
value="${i##* }"
|
||||||
|
value="${value:0:-2}"
|
||||||
|
declare -ig "radeon_mb_$key=10#$value"
|
||||||
|
i="${i% *}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Percentages
|
||||||
|
value="${i##* }"
|
||||||
|
value="${value:0:-1}"
|
||||||
|
declare -ig "radeon_perc_$key=10#$value"
|
||||||
|
done
|
||||||
|
IFS="$oldIFS"
|
||||||
|
|
||||||
|
# this should return:
|
||||||
|
# - 0 to send the data to netdata
|
||||||
|
# - 1 to report a failure to collect the data
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# _check is called once, to find out if this chart should be enabled or not
|
||||||
|
radeon_check() {
|
||||||
|
# this should return:
|
||||||
|
# - 0 to enable the chart
|
||||||
|
# - 1 to disable the chart
|
||||||
|
|
||||||
|
# check radeontop command
|
||||||
|
require_cmd radeontop || return 1
|
||||||
|
|
||||||
|
# check that we can collect data
|
||||||
|
# radeon_get || return 1
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# _create is called once, to create the charts
|
||||||
|
radeon_create() {
|
||||||
|
# create the chart
|
||||||
|
cat << EOF
|
||||||
|
CHART radeon.percent '' "GPU Utilization" "percentage" gpu0 percentage line $radeon_priority $radeon_update_every
|
||||||
|
DIMENSION gpu 'graphics pipe' absolute 1 100
|
||||||
|
DIMENSION ee 'event engine' absolute 1 100
|
||||||
|
DIMENSION vgt 'vertex grouper + tesselator' absolute 1 100
|
||||||
|
DIMENSION ta 'texture addresser' absolute 1 100
|
||||||
|
DIMENSION sx 'shader export' absolute 1 100
|
||||||
|
DIMENSION sh 'sequencer instruction cache' absolute 1 100
|
||||||
|
DIMENSION spi 'shader interpolator' absolute 1 100
|
||||||
|
DIMENSION sc 'scan converter' absolute 1 100
|
||||||
|
DIMENSION pa 'primitive assembly' absolute 1 100
|
||||||
|
DIMENSION db 'depth block' absolute 1 100
|
||||||
|
DIMENSION cb 'color block' absolute 1 100
|
||||||
|
DIMENSION vram 'vram' absolute 1 100
|
||||||
|
DIMENSION gtt 'graphic translation table' absolute 1 100
|
||||||
|
DIMENSION mclk 'memory clock' absolute 1 100
|
||||||
|
DIMENSION sclk 'shader clock' absolute 1 100
|
||||||
|
CHART radeon.freq '' "GPU Frequencies" "MHz" gpu0 freq line $((radeon_priority + 2)) $radeon_update_every
|
||||||
|
DIMENSION mclk 'memory clock' absolute 1 1
|
||||||
|
DIMENSION sclk 'shader clock' absolute 1 1
|
||||||
|
VARIABLE CHART maxmclk = $radeon_freqmax_mclk
|
||||||
|
VARIABLE CHART maxsclk = $radeon_freqmax_sclk
|
||||||
|
CHART radeon.mb '' "GPU MB Utilization" "MB" gpu0 mb line $((radeon_priority + 1)) $radeon_update_every
|
||||||
|
DIMENSION vram 'vram' absolute 1 100
|
||||||
|
DIMENSION gtt 'graphic translation table' absolute 1 100
|
||||||
|
VARIABLE CHART maxvram = $radeon_mbmax_vram
|
||||||
|
VARIABLE CHART maxgtt = $radeon_mbmax_gtt
|
||||||
|
EOF
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# _update is called continuously, to collect the values
|
||||||
|
radeon_update() {
|
||||||
|
# the first argument to this function is the microseconds since last update
|
||||||
|
# pass this parameter to the BEGIN statement (see bellow).
|
||||||
|
|
||||||
|
radeon_get || return 1
|
||||||
|
|
||||||
|
# write the result of the work.
|
||||||
|
cat << VALUESEOF
|
||||||
|
BEGIN radeon.percent
|
||||||
|
SET gpu = $radeon_perc_gpu
|
||||||
|
SET ee = $radeon_perc_ee
|
||||||
|
SET vgt = $radeon_perc_vgt
|
||||||
|
SET ta = $radeon_perc_ta
|
||||||
|
SET sx = $radeon_perc_sx
|
||||||
|
SET sh = $radeon_perc_sh
|
||||||
|
SET spi = $radeon_perc_spi
|
||||||
|
SET sc = $radeon_perc_sc
|
||||||
|
SET pa = $radeon_perc_pa
|
||||||
|
SET db = $radeon_perc_db
|
||||||
|
SET cb = $radeon_perc_cb
|
||||||
|
SET vram = $radeon_perc_vram
|
||||||
|
SET gtt = $radeon_perc_gtt
|
||||||
|
SET mclk = $radeon_perc_mclk
|
||||||
|
SET sclk = $radeon_perc_sclk
|
||||||
|
END
|
||||||
|
BEGIN radeon.freq
|
||||||
|
SET mclk = $radeon_freq_mclk
|
||||||
|
SET sclk = $radeon_freq_sclk
|
||||||
|
END
|
||||||
|
BEGIN radeon.mb
|
||||||
|
SET vram = $radeon_mb_vram
|
||||||
|
SET gtt = $radeon_mb_gtt
|
||||||
|
END
|
||||||
|
VALUESEOF
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
Loading…
Reference in a new issue