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 +