DEV Community

Cover image for Diagnosing Multiple GPUs on Linux: How to Detect and Monitor Integrated and Dedicated GPUs
Igor Giamoniano
Igor Giamoniano

Posted on

Diagnosing Multiple GPUs on Linux: How to Detect and Monitor Integrated and Dedicated GPUs

If you run Linux on a system with both an integrated GPU and a dedicated GPU, you may have noticed something strange: some monitoring tools only show one GPU.

This situation is common on:

  • laptops with hybrid graphics
  • desktops with iGPU + dedicated GPU
  • systems using different driver stacks

For example, a monitoring tool like btop might show your AMD integrated GPU but completely ignore your NVIDIA card.

In this article we will walk through how to:

  • detect all GPUs installed in your system
  • verify that the correct drivers are loaded
  • identify which GPU is rendering your desktop
  • monitor usage for each GPU
  • automate the entire diagnostic process with a small script

Why This Happens

Linux systems with multiple GPUs may behave differently depending on:

  • installed drivers (open source vs proprietary)
  • kernel configuration
  • which GPU is configured as the primary renderer
  • monitoring tool capabilities

Example setup used in this article:

  • AMD Vega (integrated) — Ryzen 5 5600G
  • NVIDIA GTX 1050 Ti (dedicated)

In this configuration, btop showed only the AMD GPU while the NVIDIA card remained invisible in the default monitoring view.


Step 1 — Check if Both GPUs Are Detected

1.1 List GPUs via PCI

Run:

lspci | grep -i vga
Enter fullscreen mode Exit fullscreen mode

Example output:

01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti]
09:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [Radeon Vega Series]
Enter fullscreen mode Exit fullscreen mode

If two entries appear, your hardware is being detected correctly.


1.2 Check Loaded Drivers

Run:

lsmod | grep -E 'nvidia|amdgpu|radeon'
Enter fullscreen mode Exit fullscreen mode

Typical modules:

GPU Kernel Module
NVIDIA nvidia, nvidia_drm, nvidia_modeset
AMD (modern) amdgpu
AMD (legacy) radeon

If the modules appear, the drivers are loaded by the kernel.


1.3 Check Which GPU Is Rendering Your Desktop

Use:

glxinfo | grep "OpenGL renderer"
Enter fullscreen mode Exit fullscreen mode

Example output:

OpenGL renderer string: NVIDIA GeForce GTX 1050 Ti
Enter fullscreen mode Exit fullscreen mode

If glxinfo is missing, install it.

Ubuntu / Debian:

sudo apt install mesa-utils
Enter fullscreen mode Exit fullscreen mode

Arch Linux:

sudo pacman -S mesa-utils
Enter fullscreen mode Exit fullscreen mode

This command reveals which GPU is rendering the graphical session.

In hybrid setups, the integrated GPU often renders the desktop while the dedicated GPU activates only for demanding workloads.


Step 2 — Monitoring Each GPU

2.1 Integrated GPU (AMD / Intel) — Using btop

Launch:

btop
Enter fullscreen mode Exit fullscreen mode

Inside btop:

  • press g to toggle GPU views
  • press 5 / 6 / 7 for specific GPU panels
  • configure via F2 → Options → CPU box → Show GPU info

2.2 NVIDIA Dedicated GPU — Using nvidia-smi

For NVIDIA GPUs the official tool is the most reliable:

watch -n 1 nvidia-smi
Enter fullscreen mode Exit fullscreen mode

This updates every second and displays:

  • GPU utilization
  • memory usage
  • running processes

Structured output:

nvidia-smi --query-gpu=name,memory.used,memory.total,utilization.gpu --format=csv -l 1
Enter fullscreen mode Exit fullscreen mode

Step 3 — Automating GPU Diagnostics

Create a script called:

check_gpus.sh
Enter fullscreen mode Exit fullscreen mode

Script:

#!/bin/bash

echo "=== GPUs Detected ==="
lspci | grep -E "VGA|3D"

echo -e "\n=== Loaded Drivers ==="
lsmod | grep -E "nvidia|amdgpu|radeon"

echo -e "\n=== NVIDIA GPU ==="
nvidia-smi --query-gpu=name,memory.total --format=csv 2>/dev/null || echo "NVIDIA not detected"

echo -e "\n=== Rendering GPU ==="
glxinfo | grep "OpenGL renderer" 2>/dev/null || echo "glxinfo not available"

echo -e "\n=== DRM Devices ==="
ls /sys/class/drm | grep card
Enter fullscreen mode Exit fullscreen mode

Make executable:

chmod +x check_gpus.sh
Enter fullscreen mode Exit fullscreen mode

Run:

./check_gpus.sh
Enter fullscreen mode Exit fullscreen mode

This quickly shows:

  • detected GPUs
  • active drivers
  • rendering GPU
  • NVIDIA status
  • DRM device nodes

Recommended Tools Summary

GPU Type Recommended Tool Command
AMD / Intel (integrated) btop btop
NVIDIA (dedicated) nvidia-smi watch -n 1 nvidia-smi
Hardware detection lspci lspci | grep -i vga
Rendering check glxinfo glxinfo | grep "OpenGL renderer"

Conclusion

Working with multiple GPUs on Linux doesn't have to be confusing.

Using the commands shown above you can:

  • verify hardware detection
  • confirm driver loading
  • identify which GPU renders your desktop
  • monitor GPU usage in real time
  • automate diagnostics with a small script

Different GPU stacks require different tools, but combining a few commands provides full visibility into your graphics subsystem.


Additional Resources

btop documentation

https://github.com/aristocratos/btop

NVIDIA System Management Interface

https://developer.nvidia.com/nvidia-system-management-interface

Arch Linux Wiki — NVIDIA

https://wiki.archlinux.org/title/NVIDIA

Top comments (0)