Майнинг,  Статьи

Уменьшение потребления памяти видеокартами Nvidia при работе в Linux в графическом режиме

Майнинг на видеокартах Nvidia в Linux (и Windows) обычно не вызывает особых затруднений. Использование Линукс оправданно ее меньшим аппетитом к видеопамяти и более гибкими возможностями конфигурирования. Процесс установки драйверов и настройки системы для майнинга в xubuntu расписан в статье «О майнинге на видеокартах Nvidia в Linux и Windows«.

Операционная система xubuntu отличается скромным аппетитом к потреблению ресурсов и даже при работе в графическом режиме потребляет всего несколько десятков мегабайт видеопамяти.

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

В любом случае, для обеспечения разгона и даунвольтинга видеокарт nvidia нужно обеспечить запуск процесса Xorg, без которого невозможно обеспечить полноценное управление частотой памяти/ядра и вентиляторами GPU. В случае отключения графики процесс Xorg потребляет единицы мегабайт памяти, что позволяет максимально использовать аппаратные ресурсы видеокарт.

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

На служебные нужды (процесс Xorg) в xubuntu при работе в режиме graphical target система «откусывает» примерно 20 мегабайт видеопамяти (для видеокарт Nvidia).

Отображение потребления видеопамяти Nvidia GTX1066 в xubuntu 18.03 по команде nvidia-smi при майнинге ethereum (система по умолчанию использует глубину цвета 24):

Как видно из скриншота, даже видеокарты, которые не отображают рабочий стол, потребляют видеопамять. При майнинге Ethereum и других криптовалют на алгоритме ethash (DaggerHashimoto), etchash и ряде других algo эти несколько мегабайт порой бывают критически важны для запуска майнера.
Рассмотрим подробнее, как умерить аппетит процесса Xorg в операционной системе xubuntu. Аналогичные решения будут работать и в других Linux-системах.

Зачем нужен процесс Xorg в операционной системе Linux?

Xorg — это сервер окон операционной системы Linux − X Window System display server (упрощенно сервер X). Он служит интерфейсом, помогающим ему управлять аппаратными устройствами компьютера, в том числе видеокартами.

Для справки:

Сервер X обычно запускается с помощью специальной программы - менеджера дисплеев (аналог explorer.exe в Windows). В xubuntu это программа lightdm (в других Linux-подобных системах используют gdm3, kdm и другие программы). Менеджер дисплеев обеспечивает возможность ввода логина и пароля в операционной системе, работающей в оконном (графическом) режиме. LightDM - это один из самых легких менеджеров, который используется не только в xubuntu, но и в LUbuntu.

Он может быть установлен в любом из дистрибутивов Ubuntu командой:

sudo apt-get install lightdm

Удаляется менеджер дисплеев lightdm командой:

sudo apt-get remove lightdm

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

cat /etc/X11/default-display-manager

Отображение информации о работающем менеджере дисплеев в xubuntu 18.04:

Управление работой видеокарт Nvidia как в консольном, так и в графическом режиме осуществляется драйверами. Их работу можно скорректировать в нужном направлении с помощью конфигурационного файла xorg.conf, который находится в каталоге /etc/X11:

Если по какой-либо причине этот файл отсутствует, то (после установки драйверов nvidia) его можно сгенерировать командой:

sudo nvidia-xconfig

после чего перезагрузить компьютер.

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

При этом X Window сервер сам генерирует настройки для работы с монитором, клавиатурой и мышью.

Для более точной настройки параметров работы видеокарт можно использовать программы, входящие в пакет драйверов (nvidia-smi, nvidia-settings), а также ручную подстройку графической системы в GUI и конфигурационном файле xorg.conf.

Для изменений в файл xorg.conf можно использовать команду:

sudo nvidia-xconfig опции

а также ручное внесение изменений в текстовую часть этого файла.

Для избегания ошибок лучше создавать файл xorg.conf и вносить в него изменения именно командой nvidia-xconfig, а затем, в случае необходимости, лишь вносить в него небольшие изменения в текстовом редакторе.

Как уменьшить потребление памяти и загрузку видеокарт Nvidia в Linux?

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

Снижение глубины цвета на видеокартах nvidia производится в секции файла xorg.conf:

Например, для установки глубины цвета на всех видеокартах в 16 используют команду:

sudo nvidia-xconfig -d 16

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

Но, в случае установки такой глубины цвета на видеокарте, подключенной к дисплею (в том числе и виртуально), не запускается графическая оболочка, хотя Xorg и майнеры прекрасно работают.

Проверить потребление памяти на видеокартах Nvidia в Linux можно командой:

nvidia-smi

На видеокартах Nvidia GTX1070Ti/1070/P106-100 (драйвер 450.80.02) служебное потребление видеопамяти при стандартной глубиной цвета 24 составляет не менее 20 мегабайт (майнинг Ethereum на эпохе 377, размер DAG равен 3,95 Гб):

После уменьшения глубины цвета с 24 до 8 потребление видеопамяти уменьшается c 20 до 7 мегабайт (при этом не работает графическое окружение):

При установке цветности 8 на нулевой видеокарте в xubuntu 18.04 к системе не получается подключиться удаленно по vnc через сервер vino (ssh при этом работает). Чтобы оставить работоспособной графическую оболочку и возможность подключения по vnc, можно выставить малое значение цвета только на видеокартах без подключенного монитора (с номером, отличным от нуля).

Для этого сначала конфигурируют значения цветности screen каждого GPU на глубину цвета 16 командой:

sudo nvidia-xconfig -d 16

а затем файле xorg.conf вручную понижают до 8 цветность всех видеокарт, кроме нулевой. Редактировать этот файл нужно с правами суперпользователя.

При установке глубины цветности в 16 системное потребление видеопамяти становится равным 12-14 МБ, при этом полноценно работает графическое окружение и доступно удаленное подключение по vnc:

Если на видеокартах nvidia, начиная с первой и далее, вручную выставить глубину цветности 8, то на нужды системы они будут откусывать всего по 7 МБ, что сопоставимо с работой в режиме multiuser.target (с отключенным графическим окружением):

Что делать, если Xorg сконфигурирован с ошибками?

В случае сбоев в работе Xorg система будет загружаться в консольном режиме.

В таком случае, для восстановления работы графического окружения, нужно войти в систему через терминал, например, tty1, вызываемый нажатием кнопок Alt+1.

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

cd /etc/X11

либо использовать автоматическое конфигурирование xorg.conf командой:

sudo nvidia-xconfig

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

English English Русский Русский