Вопрос или проблема
У меня есть AMDGPU на Linux, и я хочу видеть, какие процессы используют мой ценный 4 ГБ VRAM, который мне нужен для игр.
Я хотел бы, чтобы это было представлено аналогично top
, перечисляя все процессы, использующие VRAM в порядке их использования.
radeontop
показывает только общее использование VRAM.
Один из инструментов для выполнения этой задачи — https://gitlab.freedesktop.org/tomstdenis/umr
sudo umr -t
Запустит его в режиме, похожем на top
. Затем вы можете нажать v
, чтобы увидеть информацию о VRAM для каждого процесса.
Сначала вам нужно определить номер вашей карты, это обычно будет card0 или card1. Если у вас в системе всего одна карта, вы можете посмотреть это с помощью ls -la /sys/class/drm
.
Замените card1
на правильный номер для вас.
cat /sys/class/drm/card1/device/mem_info_vram_used
А для общего VRAM:
cat /sys/class/drm/card1/device/mem_info_vram_total
Чтобы получить использование в MiB:
echo $(($(</sys/class/drm/card1/device/mem_info_vram_used)/1024/1024)) MiB
Процент использования:
echo $(($(</sys/class/drm/card1/device/mem_info_vram_used)*100/$(</sys/class/drm/card1/device/mem_info_vram_total)))%
$ rocm-smi -d 0 --showpids
Информация о процессах KFD:
PID НАЗВАНИЕ ПРОЦЕССА GPU(s) ИСПОЛЬЗОВАНО VRAM ИСПОЛЬЗОВАНО SDMA ЗАНЯТОСТЬ CU
2328 ollama 0 0 0 НЕИЗВЕСТНО
65737 ollama_llama_se 1 8790306816 0 НЕИЗВЕСТНО
Ответ или решение
Определение использования видеопамяти VRAM по процессу на вашем компьютере с AMDGPU под управлением Linux может оказаться полезной задачей, особенно если вы хотите оптимизировать производительность для таких приложений, как игры, которым требуется оптимальное использование ресурсов. Ниже я подробно объясню, как можно реализовать эту задачу с помощью различных методов и инструментов.
Теория
Видеокарты AMDGPU часто используются в системах с открытым исходным кодом, таких как Linux. Учитывая, что современные графические процессоры могут иметь до нескольких гигабайт видеопамяти (VRAM), важно понимать, как эта память используется различными процессами. Хотя такие инструменты, как radeontop
, предоставляют обзор общего использования VRAM, они не предоставляют детализации по процессам. Именно здесь возникают потребности в специализированных инструментах и командах, которые помогут получить более детальную статистику.
Пример
Традиционные инструменты мониторинга, такие как top
, хорошо подходят для анализа центрального процессора и оперативной памяти, но они не поддерживают мониторинг VRAM по процессам. В этой связи можно выделить несколько подходов и инструментов для мониторинга ресурсов видеопамяти.
-
UMR (User Mode Register):
Этот инструмент позволяет получить доступ к железу и просматривать различные параметры работы GPU. Он предоставляет режим, напоминающийtop
, и позволяет следить за использованием VRAM по процессам.Пример:
sudo umr -t
После запуска UMR в интерактивном режиме, нажмите
v
, чтобы переключиться на отображение информации о VRAM. -
ROCm SMI (System Management Interface):
Это оборудование и программные инструменты, разработанные AMD, дают возможность мониторинга и управления различными аспектами работы GPU.Пример:
rocm-smi -d 0 --showpids
Это приведет к отображению информации о процессах, включая их использование VRAM:
KFD process information: PID PROCESS NAME GPU(s) VRAM USED SDMA USED CU OCCUPANCY 2328 пример_процесса 0 0 0 UNKNOWN 65737 другой_процесс 1 8790306816 0 UNKNOWN
-
Оценка VRAM через системные файлы:
Файловая системаsysfs
предоставляет большие объемы системной информации о состоянии устройства и его эксплуатации. Вы можете использовать командыcat
, чтобы увидеть текущее использование VRAM на вашей видеокарте.Пример:
cat /sys/class/drm/card1/device/mem_info_vram_used
Это покажет объем используемой VRAM в байтах для вашего графического адаптера. Если у вас несколько GPU, идентификатор карты может быть другим (например,
card0
,card2
и так далее).
Применение
Теперь, когда мы обсудили теоретические аспекты и продемонстрировали некоторые инструменты, рассмотрим, как непосредственно можно применять эти знания.
-
Идентификация графической карты:
Прежде чем приступить к мониторингу, убедитесь, что вы знаете идентификатор карты вашей видеокарты. Обычно это можно сделать с помощью:ls -la /sys/class/drm
Также, если ваш идентификатор карты
card0
, для дальнейших команд вы должны его использовать. -
Конфигурация UMR:
Инструмент UMR требует административных прав, поэтому все команды должны быть выполнены от имени суперпользователя (sudo
). После старта UMR можно настраивать отображение с помощью клавиатуры, выбирая, какую информацию показывать. -
Использование ROCm SMI для детального мониторинга:
ROCm SMI является особенно полезным инструментом, поскольку он интегрируется с драйверами ROCm от AMD. Это упрощает процесс мониторинга и предоставляет более детальные данные о системе. -
Скрипты для автоматизации:
С помощью shell-скриптов можно автоматизировать вышеописанные команды, чтобы регулярно выводить мониторинг и собирать статистику.
Подводя итог, следует отметить, что грамотное управление использованием VRAM на вашей видеокарте может существенно повлиять на производительность системы, особенно для задач, требующих высоких графических ресурсов. Указанные инструменты предоставят вам множество информации, позволяя более эффективно распределять ресурсы и идентифицировать приложения, которые потребляют много VRAM.