2

Я работаю над простым инструментом с графическим интерфейсом Bumblebee. Одна из его функций - показать список процессов, которые в данный момент используют выделенную видеокарту. Сейчас я перечисляю все запущенные процессы и проверяю их родительский процесс: если родительский процесс optirun это означает, что этот процесс использует выделенную видеокарту.

Проблема в том, что это не работает с primusrun , так как нет никакого процесса, вызываемого таким образом, пока программа запускается с primusrun program_name . Есть ли способ обнаружить процессы, запускаемые primusrun, или процессы, использующие выделенную видеокарту? Благодарю.

(Это скорее вопрос, связанный с программированием, и, возможно, он принадлежит StackOverflow, но меня интересует не пример кода, а общий способ поиска этих процессов).

1 ответ1

4

Вы можете попытаться определить, в каких процессах открыты узлы устройств графического процессора (например, fuser -v /dev/nvidiactl), но это дорогостоящая операция (пропорциональная общему количеству открытых файлов в системе). Более эффективный (но очень сложный для реализации) подход, вероятно, будет включать в себя обнаружение программ, связанных со вторичным X Бамблби, с использованием netlink; xlsclients не будет сокращать его, потому что в нем перечислены окна, а не подключенные клиенты. Это также характерно для Bumblebee, в то время как использование узлов устройств позволит вам обнаружить дискретных пользователей GPU для разгрузки PRIME.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .