Add video codec stats to nvidia-smi (#7646)
This commit is contained in:
parent
62302a0f37
commit
fd59d55499
|
|
@ -38,6 +38,8 @@ You'll need to escape the `\` within the `telegraf.conf` like this: `C:\\Program
|
||||||
- `temperature_gpu` (integer, degrees C)
|
- `temperature_gpu` (integer, degrees C)
|
||||||
- `utilization_gpu` (integer, percentage)
|
- `utilization_gpu` (integer, percentage)
|
||||||
- `utilization_memory` (integer, percentage)
|
- `utilization_memory` (integer, percentage)
|
||||||
|
- `utilization_encoder` (integer, percentage)
|
||||||
|
- `utilization_decoder` (integer, percentage)
|
||||||
- `pcie_link_gen_current` (integer)
|
- `pcie_link_gen_current` (integer)
|
||||||
- `pcie_link_width_current` (integer)
|
- `pcie_link_width_current` (integer)
|
||||||
- `encoder_stats_session_count` (integer)
|
- `encoder_stats_session_count` (integer)
|
||||||
|
|
|
||||||
|
|
@ -116,11 +116,16 @@ func (s *SMI) genTagsFields() []metric {
|
||||||
setIfUsed("int", fields, "temperature_gpu", gpu.Temp.GPUTemp)
|
setIfUsed("int", fields, "temperature_gpu", gpu.Temp.GPUTemp)
|
||||||
setIfUsed("int", fields, "utilization_gpu", gpu.Utilization.GPU)
|
setIfUsed("int", fields, "utilization_gpu", gpu.Utilization.GPU)
|
||||||
setIfUsed("int", fields, "utilization_memory", gpu.Utilization.Memory)
|
setIfUsed("int", fields, "utilization_memory", gpu.Utilization.Memory)
|
||||||
|
setIfUsed("int", fields, "utilization_encoder", gpu.Utilization.Encoder)
|
||||||
|
setIfUsed("int", fields, "utilization_decoder", gpu.Utilization.Decoder)
|
||||||
setIfUsed("int", fields, "pcie_link_gen_current", gpu.PCI.LinkInfo.PCIEGen.CurrentLinkGen)
|
setIfUsed("int", fields, "pcie_link_gen_current", gpu.PCI.LinkInfo.PCIEGen.CurrentLinkGen)
|
||||||
setIfUsed("int", fields, "pcie_link_width_current", gpu.PCI.LinkInfo.LinkWidth.CurrentLinkWidth)
|
setIfUsed("int", fields, "pcie_link_width_current", gpu.PCI.LinkInfo.LinkWidth.CurrentLinkWidth)
|
||||||
setIfUsed("int", fields, "encoder_stats_session_count", gpu.Encoder.SessionCount)
|
setIfUsed("int", fields, "encoder_stats_session_count", gpu.Encoder.SessionCount)
|
||||||
setIfUsed("int", fields, "encoder_stats_average_fps", gpu.Encoder.AverageFPS)
|
setIfUsed("int", fields, "encoder_stats_average_fps", gpu.Encoder.AverageFPS)
|
||||||
setIfUsed("int", fields, "encoder_stats_average_latency", gpu.Encoder.AverageLatency)
|
setIfUsed("int", fields, "encoder_stats_average_latency", gpu.Encoder.AverageLatency)
|
||||||
|
setIfUsed("int", fields, "fbc_stats_session_count", gpu.FBC.SessionCount)
|
||||||
|
setIfUsed("int", fields, "fbc_stats_average_fps", gpu.FBC.AverageFPS)
|
||||||
|
setIfUsed("int", fields, "fbc_stats_average_latency", gpu.FBC.AverageLatency)
|
||||||
setIfUsed("int", fields, "clocks_current_graphics", gpu.Clocks.Graphics)
|
setIfUsed("int", fields, "clocks_current_graphics", gpu.Clocks.Graphics)
|
||||||
setIfUsed("int", fields, "clocks_current_sm", gpu.Clocks.SM)
|
setIfUsed("int", fields, "clocks_current_sm", gpu.Clocks.SM)
|
||||||
setIfUsed("int", fields, "clocks_current_memory", gpu.Clocks.Memory)
|
setIfUsed("int", fields, "clocks_current_memory", gpu.Clocks.Memory)
|
||||||
|
|
@ -185,6 +190,7 @@ type GPU []struct {
|
||||||
Power PowerReadings `xml:"power_readings"`
|
Power PowerReadings `xml:"power_readings"`
|
||||||
PCI PCI `xml:"pci"`
|
PCI PCI `xml:"pci"`
|
||||||
Encoder EncoderStats `xml:"encoder_stats"`
|
Encoder EncoderStats `xml:"encoder_stats"`
|
||||||
|
FBC FBCStats `xml:"fbc_stats"`
|
||||||
Clocks ClockStats `xml:"clocks"`
|
Clocks ClockStats `xml:"clocks"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -202,8 +208,10 @@ type TempStats struct {
|
||||||
|
|
||||||
// UtilizationStats defines the structure of the utilization portion of the smi output.
|
// UtilizationStats defines the structure of the utilization portion of the smi output.
|
||||||
type UtilizationStats struct {
|
type UtilizationStats struct {
|
||||||
GPU string `xml:"gpu_util"` // int
|
GPU string `xml:"gpu_util"` // int
|
||||||
Memory string `xml:"memory_util"` // int
|
Memory string `xml:"memory_util"` // int
|
||||||
|
Encoder string `xml:"encoder_util"` // int
|
||||||
|
Decoder string `xml:"decoder_util"` // int
|
||||||
}
|
}
|
||||||
|
|
||||||
// PowerReadings defines the structure of the power_readings portion of the smi output.
|
// PowerReadings defines the structure of the power_readings portion of the smi output.
|
||||||
|
|
@ -230,6 +238,13 @@ type EncoderStats struct {
|
||||||
AverageLatency string `xml:"average_latency"` // int
|
AverageLatency string `xml:"average_latency"` // int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FBCStats defines the structure of the fbc_stats portion of the smi output.
|
||||||
|
type FBCStats struct {
|
||||||
|
SessionCount string `xml:"session_count"` // int
|
||||||
|
AverageFPS string `xml:"average_fps"` // int
|
||||||
|
AverageLatency string `xml:"average_latency"` // int
|
||||||
|
}
|
||||||
|
|
||||||
// ClockStats defines the structure of the clocks portion of the smi output.
|
// ClockStats defines the structure of the clocks portion of the smi output.
|
||||||
type ClockStats struct {
|
type ClockStats struct {
|
||||||
Graphics string `xml:"graphics_clock"` // int
|
Graphics string `xml:"graphics_clock"` // int
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,9 @@ func TestGatherValidXML(t *testing.T) {
|
||||||
"encoder_stats_average_fps": 0,
|
"encoder_stats_average_fps": 0,
|
||||||
"encoder_stats_average_latency": 0,
|
"encoder_stats_average_latency": 0,
|
||||||
"encoder_stats_session_count": 0,
|
"encoder_stats_session_count": 0,
|
||||||
|
"fbc_stats_average_fps": 0,
|
||||||
|
"fbc_stats_average_latency": 0,
|
||||||
|
"fbc_stats_session_count": 0,
|
||||||
"fan_speed": 0,
|
"fan_speed": 0,
|
||||||
"memory_free": 5912,
|
"memory_free": 5912,
|
||||||
"memory_total": 5912,
|
"memory_total": 5912,
|
||||||
|
|
@ -82,6 +85,8 @@ func TestGatherValidXML(t *testing.T) {
|
||||||
"temperature_gpu": 40,
|
"temperature_gpu": 40,
|
||||||
"utilization_gpu": 0,
|
"utilization_gpu": 0,
|
||||||
"utilization_memory": 1,
|
"utilization_memory": 1,
|
||||||
|
"utilization_encoder": 0,
|
||||||
|
"utilization_decoder": 0,
|
||||||
},
|
},
|
||||||
time.Unix(0, 0)),
|
time.Unix(0, 0)),
|
||||||
},
|
},
|
||||||
|
|
@ -107,6 +112,9 @@ func TestGatherValidXML(t *testing.T) {
|
||||||
"encoder_stats_average_fps": 0,
|
"encoder_stats_average_fps": 0,
|
||||||
"encoder_stats_average_latency": 0,
|
"encoder_stats_average_latency": 0,
|
||||||
"encoder_stats_session_count": 0,
|
"encoder_stats_session_count": 0,
|
||||||
|
"fbc_stats_average_fps": 0,
|
||||||
|
"fbc_stats_average_latency": 0,
|
||||||
|
"fbc_stats_session_count": 0,
|
||||||
"fan_speed": 34,
|
"fan_speed": 34,
|
||||||
"memory_free": 1998,
|
"memory_free": 1998,
|
||||||
"memory_total": 1998,
|
"memory_total": 1998,
|
||||||
|
|
@ -116,6 +124,8 @@ func TestGatherValidXML(t *testing.T) {
|
||||||
"temperature_gpu": 33,
|
"temperature_gpu": 33,
|
||||||
"utilization_gpu": 0,
|
"utilization_gpu": 0,
|
||||||
"utilization_memory": 3,
|
"utilization_memory": 3,
|
||||||
|
"utilization_encoder": 0,
|
||||||
|
"utilization_decoder": 0,
|
||||||
},
|
},
|
||||||
time.Unix(0, 0)),
|
time.Unix(0, 0)),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue