diff --git a/plugins/inputs/nvidia_smi/nvidia_smi_test.go b/plugins/inputs/nvidia_smi/nvidia_smi_test.go
index f08d6fb41..42e1fe6ef 100644
--- a/plugins/inputs/nvidia_smi/nvidia_smi_test.go
+++ b/plugins/inputs/nvidia_smi/nvidia_smi_test.go
@@ -385,6 +385,76 @@ func TestGatherValidXML(t *testing.T) {
"vbios_version": "94.02.71.40.72",
},
time.Unix(1689872450, 0)),
+ testutil.MustMetric(
+ "nvidia_smi_process",
+ map[string]string{
+ "name": "/usr/lib/Xorg",
+ "type": "G",
+ },
+ map[string]interface{}{
+ "pid": int64(835),
+ "used_memory": int64(550),
+ },
+ time.Unix(1689872450, 0)),
+ testutil.MustMetric(
+ "nvidia_smi_process",
+ map[string]string{
+ "name": "/usr/bin/gnome-shell",
+ "type": "G",
+ },
+ map[string]interface{}{
+ "pid": int64(1481),
+ "used_memory": int64(18),
+ },
+ time.Unix(1689872450, 0)),
+ testutil.MustMetric(
+ "nvidia_smi_process",
+ map[string]string{
+ "name": "/opt/microsoft/msedge/msedge --type=gpu-process " +
+ "--crashpad-handler-pid=2176 --enable-crash-reporter=, " +
+ "--change-stack-guard-on-fork=enable --gpu-preferences=" +
+ "WAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABgAAAAAAA4AAAAAAAAAAA" +
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAGAAAAAAAAAAYAA" +
+ "AAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --shared-files " +
+ "--field-trial-handle=0,i,3110290512380155730," +
+ "7457693378709978105,262144 --variations-seed-version",
+ "type": "G",
+ },
+ map[string]interface{}{
+ "pid": int64(2214),
+ "used_memory": int64(79),
+ },
+ time.Unix(1689872450, 0)),
+ testutil.MustMetric(
+ "nvidia_smi_process",
+ map[string]string{
+ "name": "/usr/lib/firefox/firefox",
+ "type": "G",
+ },
+ map[string]interface{}{
+ "pid": int64(4044),
+ "used_memory": int64(541),
+ },
+ time.Unix(1689872450, 0)),
+ testutil.MustMetric(
+ "nvidia_smi_process",
+ map[string]string{
+ "name": "/opt/visual-studio-code/code --type=gpu-process " +
+ "--enable-crash-reporter=6f39585a-ecc4-42e2-b899-9456cbe56b44" +
+ ",no_channel --user-data-dir=/home/powersj/.config/Code " +
+ "--gpu-preferences=WAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABg" +
+ "AAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
+ "ABAAAAGAAAAAAAAAAYAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== " +
+ "--shared-files --field-trial-handle=0,i,685715063932313394," +
+ "4769839452661094675,262144 --disable-features=" +
+ "CalculateNativeWinOcclusion,SpareRendererForSitePerProcess",
+ "type": "G",
+ },
+ map[string]interface{}{
+ "pid": int64(42416),
+ "used_memory": int64(159),
+ },
+ time.Unix(1689872450, 0)),
},
},
{
diff --git a/plugins/inputs/nvidia_smi/schema_v12/parser.go b/plugins/inputs/nvidia_smi/schema_v12/parser.go
index 777f32085..ad8eab4cc 100644
--- a/plugins/inputs/nvidia_smi/schema_v12/parser.go
+++ b/plugins/inputs/nvidia_smi/schema_v12/parser.go
@@ -103,6 +103,18 @@ func Parse(acc telegraf.Accumulator, buf []byte) error {
acc.AddFields("nvidia_smi_mig", fields, tags, timestamp)
}
+
+ for _, process := range gpu.Processes.ProcessInfo {
+ tags := map[string]string{}
+ common.SetTagIfUsed(tags, "name", process.ProcessName)
+ common.SetTagIfUsed(tags, "type", process.Type)
+
+ fields := map[string]interface{}{}
+ common.SetIfUsed("int", fields, "pid", process.Pid)
+ common.SetIfUsed("int", fields, "used_memory", process.UsedMemory)
+
+ acc.AddFields("nvidia_smi_process", fields, tags, timestamp)
+ }
}
return nil
diff --git a/plugins/inputs/nvidia_smi/schema_v12/types.go b/plugins/inputs/nvidia_smi/schema_v12/types.go
index 9a00e6d80..1c680713b 100644
--- a/plugins/inputs/nvidia_smi/schema_v12/types.go
+++ b/plugins/inputs/nvidia_smi/schema_v12/types.go
@@ -226,10 +226,17 @@ type smi struct {
MinPowerLimit string `xml:"min_power_limit"`
MaxPowerLimit string `xml:"max_power_limit"`
} `xml:"power_readings"`
- Processes struct{} `xml:"processes"`
- ProductArchitecture string `xml:"product_architecture"`
- ProductBrand string `xml:"product_brand"`
- ProductName string `xml:"product_name"`
+ Processes struct {
+ ProcessInfo []struct {
+ Pid string `xml:"pid"`
+ Type string `xml:"type"`
+ ProcessName string `xml:"process_name"`
+ UsedMemory string `xml:"used_memory"`
+ } `xml:"process_info"`
+ } `xml:"processes"`
+ ProductArchitecture string `xml:"product_architecture"`
+ ProductBrand string `xml:"product_brand"`
+ ProductName string `xml:"product_name"`
RemappedRows struct {
// Manually added
Correctable string `xml:"remapped_row_corr"`
diff --git a/plugins/inputs/nvidia_smi/testdata/rtx-3080-v12.xml b/plugins/inputs/nvidia_smi/testdata/rtx-3080-v12.xml
index e427481ca..3566d568c 100644
--- a/plugins/inputs/nvidia_smi/testdata/rtx-3080-v12.xml
+++ b/plugins/inputs/nvidia_smi/testdata/rtx-3080-v12.xml
@@ -778,6 +778,46 @@
+
+ N/A
+ N/A
+ 835
+ G
+ /usr/lib/Xorg
+ 550 MiB
+
+
+ N/A
+ N/A
+ 1481
+ G
+ /usr/bin/gnome-shell
+ 18 MiB
+
+
+ N/A
+ N/A
+ 2214
+ G
+ /opt/microsoft/msedge/msedge --type=gpu-process --crashpad-handler-pid=2176 --enable-crash-reporter=, --change-stack-guard-on-fork=enable --gpu-preferences=WAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABgAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAGAAAAAAAAAAYAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --shared-files --field-trial-handle=0,i,3110290512380155730,7457693378709978105,262144 --variations-seed-version
+ 79 MiB
+
+
+ N/A
+ N/A
+ 4044
+ G
+ /usr/lib/firefox/firefox
+ 541 MiB
+
+
+ N/A
+ N/A
+ 42416
+ G
+ /opt/visual-studio-code/code --type=gpu-process --enable-crash-reporter=6f39585a-ecc4-42e2-b899-9456cbe56b44,no_channel --user-data-dir=/home/powersj/.config/Code --gpu-preferences=WAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABgAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAGAAAAAAAAAAYAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --shared-files --field-trial-handle=0,i,685715063932313394,4769839452661094675,262144 --disable-features=CalculateNativeWinOcclusion,SpareRendererForSitePerProcess
+ 159 MiB
+