Как определить активную видеокарту в Linux: полное руководство

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

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

Базовая диагностика через lspci

Самым первым и универсальным шагом является использование утилиты lspci, которая выводит список всех подключенных устройств. Эта команда читает данные напрямую из системной шины, поэтому она работает даже если драйверы не установлены или работают некорректно. Она покажет наличие графических адаптеров, но не всегда скажет, какой из них сейчас используется системой для вывода изображения.

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

lspci | grep -i vga

Результат выполнения покажет все устройства, классифицированные как VGA совместимые контроллеры. Обратите внимание на названия производителей в скобках, которые помогут идентифицировать NVIDIA, AMD или Intel. Если у вас система с двумя картами, вы увидите две строки: одну для встроенной графики и одну для дискретной. Это фундаментальный этап, на котором вы подтверждаете, что система вообще видит оборудование.

Для более детальной информации, включая адрес шины и статус работы, можно использовать расширенную версию команды с флагом -v.

lspci -v | grep -A 10 -i vga

Этот вывод даст больше контекста, но может быть перегружен лишними данными о других устройствах, если не использовать правильную фильтрацию. Важно понимать, что lspci лишь информирует о физическом присутствии, а не о логической активности в текущий момент.

⚠️ Внимание: Если команда lspci не возвращает ожидаемых результатов или выдает ошибку доступа, возможно, у вас недостаточно прав пользователем. Попробуйте добавить sudo перед командой, хотя для базового просмотра устройств это обычно не требуется.

Использование утилиты nvidia-smi для карт NVIDIA

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

Запуск данной команды в терминале выведет таблицу с состоянием GPU. Если драйвер не установлен или карта отключена в BIOS, команда выдаст ошибку. Успешное выполнение подтверждает, что NVIDIA карта активна и готова к работе. В таблице вы увидите PID запущенных процессов, что позволяет отследить, какие именно приложения нагружают видеокарту.

nvidia-smi

Для более компактного вывода, который удобен для скриптов или быстрого просмотра, можно использовать ключ --query-gpu. Это позволит вывести только необходимые поля, например, имя и температуру.

nvidia-smi --query-gpu=name,temperature.gpu --format=csv

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

📊 Какую видеокарту вы используете в Linux?
NVIDIA
AMD
Intel
Две сразу

Проверка активного GPU через X11 и Wayland

В современных десктоп-окружениях графический сервер (X11 или Wayland) определяет, какое устройство будет основным. Для проверки того, какой GPU обслуживает текущую сессию отображения, существуют специальные утилиты. В X11 часто используется команда xrandr, которая показывает подключенные экраны и их конфигурацию.

Выполнение команды xrandr --query покажет список подключенных мониторов и их разрешение. Однако, чтобы узнать, какой GPU управляет этим экраном, нужно посмотреть на строку, содержащую информацию о видеовыходе. Если используется Intel или AMD, вывод будет понятен, но для NVIDIA с проприетарным драйвером ситуация сложнее и требует дополнительных утилит.

Для окружений на базе Wayland ситуация аналогична, но методы могут различаться в зависимости от композитора. В некоторых случаях полезно проверить переменные окружения, которые определяют, какой драйвер загружен. Команда glxinfo | grep "OpenGL renderer" является отличным индикатором.

glxinfo | grep "OpenGL renderer"

Вывод покажет строку с названием рендерера. Если там написано NVIDIA, значит активна дискретная карта. Если Intel или Mesa — используется встроенная графика. Это критически важный шаг для проверки того, что игры действительно используют мощный адаптер, а не эмулируют графику через встроенное ядро.

⚠️ Внимание: Утилита glxinfo может быть не установлена по умолчанию в минималистических сборках. В таком случае установите пакет mesa-utils или mesa-utils-bin через ваш менеджер пакетов перед запуском проверки.

☑️ Подготовка к проверке

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

Инструменты мониторинга для AMD и интегрированных карт

Для владельцев карт AMD и интегрированных решений Intel наиболее подходящим инструментом является утилита radeontop или intel_gpu_top. Эти программы работают в реальном времени, показывая загрузку различных блоков GPU, включая 3D, видеодекодер и память. Они особенно полезны для диагностики, когда система использует не ту карту, которую вы планировали.

Утилита radeontop требует прав суперпользователя для корректного сбора данных. Она отображает графический интерфейс в терминале, где видно, какие именно компоненты GPU загружены на данный момент. Если вы видите активность только в блоке "Display", но не в "3D", возможно, тяжелая задача выполняется на другом устройстве.

sudo radeontop

Для карт Intel аналогом является intel_gpu_top, который также показывает детальную статистику по кольцам (Ring) и загруженным процессам. Это позволяет точно определить, обрабатывает ли встроенная графика ваши задачи или же система перешла в режим энергосбережения.

sudo intel_gpu_top

Иногда стандартные утилиты могут не отображать полную картину из-за особенностей ядра Linux. В таких случаях стоит проверить наличие установленных модулей ядра с помощью команды lsmod. Наличие модулей вроде nvidia, nvidia_uvm или i915 подтверждает активацию соответствующих драйверов.

Что такое модули ядра?

Модули ядра — это небольшие программы, которые загружаются в ядро Linux для поддержки конкретного оборудования. Если модуль не загружен, устройство может быть физически обнаружено, но не будет функционировать или отображаться в списках активных устройств.

Настройка переключения в гибридных системах

В ноутбуках с гибридной графикой (Optimus или Switchable Graphics) важно не только узнать, какая карта активна, но и знать, как её переключить. Стандартные методы часто не работают эффективно, поэтому пользователи прибегают к специализированным утилитам. Для NVIDIA это может быть nvidia-settings, а для универсального управления — bbswitch или prime-select.

Команда prime-select query в дистрибутивах на базе Ubuntu покажет текущий режим работы: nvidia, on-demand или intel. Если система находится в режиме энергосбережения, дискретная карта будет отключена, чтобы продлить время работы от батареи. Для активации производительности необходимо изменить этот режим и перезагрузить систему.

prime-select query

AMD также предлагает механизмы переключения через переменные окружения, но в современных ядрах это часто происходит автоматически благодаря технологии PowerPlay. Однако, для принудительного запуска приложения на дискретной карте используется переменная DRI_PRIME=1.

DRI_PRIME=1 glxgears

Эта команда запустит тестовое приложение glxgears, используя вторичный (дискретный) GPU, игнорируя первичный (встроенный). Это отличный способ проверить, работает ли переключение корректно, не меняя глобальные настройки системы.

Сравнение методов диагностики

Выбор инструмента зависит от вашей цели: нужно ли просто узнать модель карты, проверить загрузку в реальном времени или диагностировать проблему с драйвером. Каждый из рассмотренных методов имеет свои преимущества и ограничения. Ниже приведена таблица, сравнивающая основные утилиты по функциональности и сложности использования.

Инструмент Для кого Отображает загрузку Требует прав root
lspci Все (базовая проверка) Нет Нет
nvidia-smi Владельцы NVIDIA Да Нет
radeontop Владельцы AMD Да Да
glxinfo Все (оценка рендеринга) Нет (только модель) Нет
intel_gpu_top Владельцы Intel Да Да

Некоторые утилиты могут требовать обновления для поддержки новейших архитектур видеокарт.

Если вы не видите ожидаемой активности в мониторе, возможно, проблема заключается не в переключении карт, а в настройках энергосбережения, которые агрессивно отключают дискретный GPU при малой нагрузке. Проверка параметров питания в /sys/class/drm/ может дать дополнительные подсказки.

Решение частых проблем и ошибок

Часто пользователи сталкиваются с ситуацией, когда lspci видит карту, но nvidia-smi или glxinfo не работают. Это обычно указывает на отсутствие драйверов или конфликт модулей ядра. В таких случаях необходимо проверить логи ядра с помощью команды dmesg, чтобы найти сообщения об ошибках загрузки драйвера.

dmesg | grep -i nvidia

Если драйвер не загружается, система может использовать фреймбуфер Nouveau для карт NVIDIA, который не поддерживает полноценное переключение и мониторинг. В этом случае требуется ручная установка проприетарного драйвера через репозитории дистрибутива.

Другой частой проблемой является неправильная настройка Xorg или Wayland, когда сессия запускается на встроенной графике, а дискретная остается бездействующей. Проверка файла конфигурации /etc/X11/xorg.conf может выявить прописанные параметры, принудительно привязывающие сессию к конкретному GPU.

⚠️ Внимание: Изменение конфигурационных файлов X11 без достаточных знаний может привести к невозможности входа в графический интерфейс. Всегда делайте резервную копию файлов перед редактированием.

Для новичков, которые боятся командной строки, существует множество графических утилит, таких как Cooler Control или специфические панели для дистрибутивов (например, Pop!_Shop в Pop!_OS), которые позволяют управлять переключением карт через удобный интерфейс. Однако понимание консольных команд дает гораздо больше контроля над системой.

FAQ: Частые вопросы пользователей

Почему команда nvidia-smi выдает ошибку "NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver"?

Это означает, что драйвер не загружен, поврежден или конфликтует с текущим ядром. Попробуйте переустановить драйвер или обновите ядро Linux до версии, поддерживаемой вашим драйвером.

Можно ли использовать встроенную графику Intel и дискретную NVIDIA одновременно?

Да, в режиме гибридной графики (Optimus). В этом случае Intel обрабатывает рабочий стол, а NVIDIA — тяжелые задачи. Утилита glxinfo покажет, какая карта используется для конкретного приложения.

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

Для этого можно использовать команду nvtop (аналог htop для видеокарт) или внимательно изучать вывод glxinfo при запуске приложения с флагом DRI_PRIME=1.

Зачем нужно проверять активную видеокарту, если система сама должна выбрать лучшую?

Система часто выбирает встроенную графику для экономии энергии. Если вы запускаете игру или рендеринг, вам нужно гарантировать, что используется дискретная карта, иначе производительность будет критически низкой.

Что делать, если lspci не видит видеокарту?

Проверьте, включена ли карта в BIOS/UEFI. Также убедитесь, что карта физически установлена верно. Для ноутбуков это может означать отключение дискретной графики в настройках питания BIOS.