@@ -457,20 +457,27 @@ func (ds *perDeviceState) collectProcessUtilization() error {
457457 return fmt .Errorf ("failed to get compute running processes for %d: %s" , ds .index , nvml .ErrorString (ret ))
458458 }
459459
460+ graphicsProccesses , ret := ds .d .GetGraphicsRunningProcesses ()
461+ if ! errors .Is (ret , nvml .SUCCESS ) {
462+ return fmt .Errorf ("failed to get graphics running processes for %d: %s" , ds .index , nvml .ErrorString (ret ))
463+ }
464+
460465 // Return early if no processes are running
461- if len (computeProcesses ) == 0 {
462- slog .Debug ("no compute processes running" )
466+ if len (computeProcesses ) == 0 && len ( graphicsProccesses ) == 0 {
467+ slog .Debug ("no processes running" )
463468 return nil
464469 }
465470
466- pids := make ([]uint32 , len (computeProcesses ))
467- for i , p := range computeProcesses {
471+ processes := append (computeProcesses , graphicsProccesses ... )
472+
473+ pids := make ([]uint32 , len (processes ))
474+ for i , p := range processes {
468475 pids [i ] = p .Pid
469476 }
470- slog .Debug ("compute processes running" , "pids" , pids )
477+ slog .Debug ("processes running" , "pids" , pids )
471478
472479 // Add data points for each process
473- for _ , process := range computeProcesses {
480+ for _ , process := range processes {
474481 utilization , ret := ds .d .GetProcessUtilization (uint64 (process .Pid ))
475482 if ! errors .Is (ret , nvml .SUCCESS ) {
476483 // If the process is not found (likely terminated), skip it and continue
0 commit comments