Как узнать, какая видеокарта работает в Linux

Определение активной видеокарты в операционной системе Linux является критически важной задачей для пользователей, работающих с ноутбуками, оснащёнными гибридной графикой, или настольными станциями с несколькими ускорителями. В отличие от Windows, где эти данные часто отображаются в системном трее, в терминале Linux требуется использование специализированных утилит для точного зондирования состояния GPU.

Современные системы часто сочетают в себе энергоэффективную интегрированную графику для работы с интерфейсом и мощную дискретную карту для рендеринга или вычислений. Понимание того, какой GPU выполняет текущие задачи, позволяет оптимизировать потребление энергии и избежать перегрева. Без корректной настройки вы можете столкнуться с ситуацией, когда мощный NVIDIA или AMD адаптер простаивает, пока вся нагрузка ложится на слабый встроенный чип.

Базовый осмотр оборудования через lspci

Первым шагом в любой диагностике в Linux является подтверждение того, что система физически "видит" все установленные карты. Для этого используется утилита lspci, которая выводит список всех подключённых к шине PCI Express устройств. Это фундаментальный инструмент, работающий в любой дистрибутиве, будь то Ubuntu, Arch или Fedora.

Чтобы отфильтровать вывод и оставить только графические адаптеры, необходимо использовать ключ -v для детализации и -k для отображения используемых ядер (драйверов). Комбинация этих флагов позволяет сразу увидеть, какой драйвер захватил устройство. Введите в терминале следующую команду для быстрого поиска:

lspci -v -k | grep -A 3 -i vga

В выводе вы увидите строки с названием модели, например NVIDIA Corporation или Advanced Micro Devices. Важно обратить внимание на строку "Kernel driver in use". Если там указано nvidia, nvidia_drm или radeon/amdgpu, значит, драйвер загружен и готов к работе. Отсутствие этой строки может указывать на проблемы с загрузкой модулей ядра.

⚠️ Внимание: Если утилита lspci не показывает дискретную карту, а она физически присутствует, проблема может быть на аппаратном уровне или в настройках BIOS/UEFI, где устройство отключено. Не пытайтесь переустанавливать драйверы, пока не убедитесь, что BIOS правильно инициализирует оборудование.

Определение активной карты через драйвер NVIDIA

Если в вашей системе установлен проприетарный драйвер от компании NVIDIA, самым надёжным способом проверки является утилита nvidia-smi. Этот инструмент не просто показывает модель, но и предоставляет детальную статистику: загрузку GPU, температуру, потребление памяти и запущенные процессы.

Запуск команды nvidia-smi в терминале выведет таблицу с краткой сводкой. Если драйвер работает корректно, вы увидите список карт с их идентификационными номерами (GPU 0, GPU 1 и т.д.). В строке "Fan Speed" и "Temp" можно оценить текущее состояние охлаждения. Отсутствие вывода или сообщение об ошибке "NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver" означает, что проприетарный модуль не активен.

📊 Установлен ли у вас драйвер NVIDIA?
Да, работает нормально
Нет, использую открытый Nouveau
Не знаю, какой у меня драйвер
Использую только AMD/Intel

Для более детального анализа того, какой именно процесс использует видеокарту, используйте флаг -l 1 для обновления статистики каждую секунду. Это поможет определить, какие именно приложения нагружают GPU в реальном времени. Например, если у вас открыты браузер и видеоредактор, вы сможете увидеть, какой из них задействовал дискретный ускоритель.

nvidia-smi -l 1

Стоит отметить, что в системах с гибридной графикой (Optimus) наличие вывода nvidia-smi не всегда означает, что GPU используется для рендеринга рабочего стола. Он может находиться в состоянии ожидания (idle) до тех пор, пока вы не запустите специализированное приложение или не переключите режим работы через графический интерфейс.

⚠️ Внимание: Интегрированная графика Intel или AMD может продолжать управлять основным дисплеем даже при наличии работающего nvidia-smi. Для полной проверки рендеринга необходимо использовать графические тесты, так как дисплейный сервер может не передавать нагрузку на дискретную карту без явного запроса.

Проверка рендеринга OpenGL и Vulkan

Самый точный способ понять, какая карта обрабатывает 3D-графику — это проверить контекст рендеринга через библиотеки OpenGL или Vulkan. Даже если система видит карту через lspci, она может не использоваться для отрисовки окон. Утилиты glxinfo и vulkaninfo позволяют "заглянуть" внутрь графического конвейера.

Для проверки OpenGL выполните команду glxinfo | grep "OpenGL renderer". Результирующая строка покажет имя устройства, которое фактически рисует изображение. Если вы видите "llvmpipe" или "VMware", это значит, что рендеринг происходит на процессоре (CPU) или в виртуальной среде, а не на видеокарте. Ожидается название модели, например, GeForce RTX 3070 или Radeon RX 6800.

  • Если вывод показывает Intel Iris Xe или AMD Radeon Graphics — используется встроенная графика.
  • Если вывод показывает NVIDIA Corporation — активна дискретная карта.
  • Строка "llvmpipe" указывает на программную эмуляцию, что критично для игр.

Для современных приложений, использующих API Vulkan, аналогичную функцию выполняет утилита vulkaninfo. Она покажет список доступных GPU и их возможности. Если утилита не установлена, её можно найти в пакете vulkan-tools. Активная карта будет иметь статус VK_QUEUE_GRAPHICS_BIT и корректно поддерживаемые слои.

Работа с гибридной графикой и Prime

В ноутбуках с Hybrid Graphics часто используется технология PRIME или Optimus, где один GPU выводит изображение на экран, а второй выполняет вычисления. В таких случаях проверка через glxinfo может показать встроенную карту, даже если вы запустили игру. Чтобы понять, какая карта реально работает, нужно запустить утилиту с явным указанием устройства.

Для запуска приложения на дискретной карте NVIDIA используется утилита __NV_PRIME_RENDER_OFFLOAD=1 (или устаревший __GLX_VENDOR_LIBRARY_NAME=nvidia). Команда запускается следующим образом: __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep "OpenGL renderer". Если вывод изменится на название дискретной карты, значит, вы успешно принудительно подключили мощный GPU к рендерингу.

Для систем AMD ситуация аналогична, но часто требует использования переменных окружения DRI_PRIME=1. Это позволяет запустить конкретное приложение на мощной карте, оставив интерфейс на встроенной. Проверка осуществляется тем же способом: запускаем DRI_PRIME=1 glxinfo и смотрим на имя рендерера. Если вы видите AMD дискретную модель вместо встроенной — задача решена.

☑️ Проверка работы Prime

Выполнено: 0 / 4

Иногда пользователи сталкиваются с тем, что переключение не происходит автоматически. Это часто связано с настройками xorg.conf или отсутствием корректных переменных окружения в файлах профиля. Необходимо вручную прописать переменные в /etc/environment или использовать инструменты вроде nvidia-prime в Ubuntu для управления переключением через графический интерфейс.

Почему не работает переключение GPU?|Если переключение не работает, проверьте, загружен ли модуль ядра. Для NVIDIA это nvidia-drm. Также убедитесь, что в ядре активирован параметр nvidia-drm.modeset=1 в загрузке GRUB. Без этого карта может быть видна, но не может управлять выводом изображения.-->

Таблица популярных утилит и их назначение

Чтобы систематизировать информацию, ниже представлена таблица основных команд, которые помогут вам определить состояние видеосистемы. Каждая из них выполняет свою уникальную роль в диагностике.

Утилита Команда Что показывает Когда использовать
lspci lspci -k | grep -i vga Физическое наличие карт и драйвер Первичная диагностика оборудования
nvidia-smi nvidia-smi Статус, загрузка, память NVIDIA Проверка проприетарных карт NVIDIA
glxinfo glxinfo | grep renderer Активный рендерер OpenGL Проверка того, кто рисует 3D
radeontop radeontop Загрузка компонентов AMD GPU Детальный мониторинг карт AMD

Использование radeontop для карт AMD аналогично nvidia-smi, но требует установки отдельного пакета. Эта утилита предоставляет красивую интерактивную графику загрузки шейдеров, текстур и вычислительных блоков. Она незаменима, когда стандартные средства не дают полной картины о том, какой именно блок GPU нагружен.

Также стоит упомянуть утилиту nvtop, которая является аналогом htop для видеокарт. Она удобна тем, что показывает процессную занятость GPU в реальном времени, подобно тому, как top показывает процессы CPU. Это особенно полезно при отладке задач машинного обучения или рендеринга видео.

⚠️ Внимание

Данные в утилитах мониторинга могут обновляться с задержкой. При запуске "тяжёлых" тестов сразу после включения системы значения могут быть неточными. Дайте системе пару секунд на стабилизацию мониторинга.

Диагностика в виртуальных машинах

Особую сложность представляет определение видеокарты в среде виртуализации, например, в VirtualBox, VMware или KVM. В таких случаях lspci может показать виртуальный адаптер (например, QXL или Virtio), который лишь эмулирует реальное железо. Прямое использование реальных мощностей GPU (GPU Passthrough) требует сложной настройки IOMMU.

Если вы не видите ожидаемой модели карты внутри гостевой ОС, скорее всего, используется стандартный эмулятор. Для проверки прохода карты в KVM используйте команду virsh nodedev-list и проверьте состояние устройства. Убедитесь, что IOMMU включён в загрузке ядра (параметры intel_iommu=on или amd_iommu=on). Без этого дискретная карта будет недоступна для виртуальной машины.

Важно понимать, что даже при правильной настройке Passthrough нельзя одновременно использовать карту и в хост-системе, и в гостевой. Карта будет полностью захвачена виртуализатором. Если вы пытаетесь запустить игру на виртуальной машине, убедитесь, что драйверы VFIO загружены и карта не используется хостом.

Автоматизация и скрипты мониторинга

Для продвинутых пользователей, которым нужно постоянно отслеживать состояние GPU, можно написать простой скрипт. Скрипт будет проверять вывод nvidia-smi или glxinfo и выводить уведомление, если активна не та карта. Это полезно для серверов или рабочих станций, где важно, чтобы рендеринг шёл на мощном ускорителе.

Пример логики скрипта: выполнить glxinfo, проверить строку с именем рендерера, сравнить её со строкой-шаблоном (например, "NVIDIA"). Если совпадения нет — вывести предупреждение в лог или на экран. Это помогает избежать ситуаций, когда разработчик запускает задачи на встроенной графике по ошибке.

Существуют также готовые инструменты вроде GreenWithEnvy для GUI в Linux, которые предоставляют удобный интерфейс для мониторинга и разгона. Они автоматически определяют активную карту и позволяют управлять частотами. Однако, для быстрой проверки терминал остаётся самым быстрым и надёжным способом.

Как узнать, работает ли видеокарта в режиме энергосбережения?

Если у вас ноутбук с гибридной графикой, система может переводить дискретную карту в состояние глубокого сна (D3cold). В этом случае lspci может показывать её, но nvidia-smi не будет работать. Используйте команду cat /sys/class/drm/card*/device/power_state, чтобы проверить текущее состояние питания устройства.

Почему glxinfo показывает Intel, хотя у меня мощная NVIDIA?

Это стандартное поведение для гибридных систем, где основной дисплей подключён к интегрированной графике. Дискретная карта доступна только по запросу. Используйте переменные окружения DRI_PRIME=1 или __NV_PRIME_RENDER_OFFLOAD=1 для принудительного запуска приложений на дискретной карте.

Можно ли сразу запустить игру на второй видеокарте?

Да, если вы используете дисплейный сервер X11 или Wayland с поддержкой переключения. В Wayland это часто делается автоматически через настройки compositor, но в X11 требуется явное указание переменных окружения или использование prime-run скрипта.

Что делать, если система видит карту, но драйвер не загружается?

Проверьте лог ядра командой dmesg | grep -i nvidia или dmesg | grep -i amdgpu. Часто проблема кроется в подписи модулей ядра (Secure Boot), блокирующих загрузку сторонних драйверов. Отключите Secure Boot в BIOS или подпишите модули вручную.