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

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

Why This Happens

Step 1 — Check if Both GPUs Are Detected

1.1 List GPUs via PCI

1.2 Check Loaded Drivers

1.3 Check Which GPU Is Rendering Your Desktop

Step 2 — Monitoring Each GPU

2.1 Integrated GPU (AMD / Intel) — Using btop

2.2 NVIDIA Dedicated GPU — Using nvidia-smi

Step 3 — Automating GPU Diagnostics

Recommended Tools Summary

Conclusion 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: 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: Linux systems with multiple GPUs may behave differently depending on: Example setup used in this article: In this configuration, btop showed only the AMD GPU while the NVIDIA card remained invisible in the default monitoring view. If two entries appear, your hardware is being detected correctly. If the modules appear, the drivers are loaded by the kernel. If glxinfo is missing, install it. 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. For NVIDIA GPUs the official tool is the most reliable: This updates every second and displays: Create a script called: Working with multiple GPUs on Linux doesn't have to be confusing. Using the commands shown above you can: Different GPU stacks require different tools, but combining a few commands provides full visibility into your graphics subsystem. btop documentation

https://github.com/aristocratos/btop NVIDIA System Management Interfacehttps://developer.nvidia.com/nvidia-system-management-interface Arch Linux Wiki — NVIDIA

https://wiki.archlinux.org/title/NVIDIA Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Command

Copy

$ lspci | grep -i vga lspci | grep -i vga lspci | grep -i vga 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] 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] 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] lsmod | grep -E 'nvidia|amdgpu|radeon' lsmod | grep -E 'nvidia|amdgpu|radeon' lsmod | grep -E 'nvidia|amdgpu|radeon' glxinfo | grep "OpenGL renderer" glxinfo | grep "OpenGL renderer" glxinfo | grep "OpenGL renderer" OpenGL renderer string: NVIDIA GeForce GTX 1050 Ti OpenGL renderer string: NVIDIA GeForce GTX 1050 Ti OpenGL renderer string: NVIDIA GeForce GTX 1050 Ti -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install mesa-utils -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install mesa-utils -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install mesa-utils -weight: 600;">sudo -weight: 500;">pacman -S mesa-utils -weight: 600;">sudo -weight: 500;">pacman -S mesa-utils -weight: 600;">sudo -weight: 500;">pacman -S mesa-utils watch -n 1 nvidia-smi watch -n 1 nvidia-smi watch -n 1 nvidia-smi nvidia-smi --query-gpu=name,memory.used,memory.total,utilization.gpu --format=csv -l 1 nvidia-smi --query-gpu=name,memory.used,memory.total,utilization.gpu --format=csv -l 1 nvidia-smi --query-gpu=name,memory.used,memory.total,utilization.gpu --format=csv -l 1 check_gpus.sh check_gpus.sh check_gpus.sh #!/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 #!/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 #!/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 chmod +x check_gpus.sh chmod +x check_gpus.sh chmod +x check_gpus.sh ./check_gpus.sh ./check_gpus.sh ./check_gpus.sh - laptops with hybrid graphics - desktops with iGPU + dedicated GPU - systems using different driver stacks - 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 - installed drivers (open source vs proprietary) - kernel configuration - which GPU is configured as the primary renderer - monitoring tool capabilities - AMD Vega (integrated) — Ryzen 5 5600G - NVIDIA GTX 1050 Ti (dedicated) - press g to toggle GPU views - press 5 / 6 / 7 for specific GPU panels - configure via F2 → Options → CPU box → Show GPU info - GPU utilization - memory usage - running processes - detected GPUs - active drivers - rendering GPU - NVIDIA -weight: 500;">status - DRM device nodes - verify hardware detection - confirm driver loading - identify which GPU renders your desktop - monitor GPU usage in real time - automate diagnostics with a small script