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

Вопрос или проблема

У меня есть 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 по процессам. В этой связи можно выделить несколько подходов и инструментов для мониторинга ресурсов видеопамяти.

  1. UMR (User Mode Register):
    Этот инструмент позволяет получить доступ к железу и просматривать различные параметры работы GPU. Он предоставляет режим, напоминающий top, и позволяет следить за использованием VRAM по процессам.

    Пример:

    sudo umr -t

    После запуска UMR в интерактивном режиме, нажмите v, чтобы переключиться на отображение информации о VRAM.

  2. 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
  3. Оценка VRAM через системные файлы:
    Файловая система sysfs предоставляет большие объемы системной информации о состоянии устройства и его эксплуатации. Вы можете использовать команды cat, чтобы увидеть текущее использование VRAM на вашей видеокарте.

    Пример:

    cat /sys/class/drm/card1/device/mem_info_vram_used

    Это покажет объем используемой VRAM в байтах для вашего графического адаптера. Если у вас несколько GPU, идентификатор карты может быть другим (например, card0, card2 и так далее).

Применение

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

  1. Идентификация графической карты:
    Прежде чем приступить к мониторингу, убедитесь, что вы знаете идентификатор карты вашей видеокарты. Обычно это можно сделать с помощью:

    ls -la /sys/class/drm

    Также, если ваш идентификатор карты card0, для дальнейших команд вы должны его использовать.

  2. Конфигурация UMR:
    Инструмент UMR требует административных прав, поэтому все команды должны быть выполнены от имени суперпользователя (sudo). После старта UMR можно настраивать отображение с помощью клавиатуры, выбирая, какую информацию показывать.

  3. Использование ROCm SMI для детального мониторинга:
    ROCm SMI является особенно полезным инструментом, поскольку он интегрируется с драйверами ROCm от AMD. Это упрощает процесс мониторинга и предоставляет более детальные данные о системе.

  4. Скрипты для автоматизации:
    С помощью shell-скриптов можно автоматизировать вышеописанные команды, чтобы регулярно выводить мониторинг и собирать статистику.

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

Оцените материал
Добавить комментарий

Капча загружается...