Включение блокировки страниц в памяти HUGE PAGE на Linux

Наши пулы для майнинга на процессорах
Ответить
Аватара пользователя
seld
Regular
Сообщения: 4250
Зарегистрирован: 31 мар 2022, 13:23
Откуда: Из Тундудова
Контактная информация:

Включение блокировки страниц в памяти HUGE PAGE на Linux

Сообщение seld »

Зачем нужно включать поддержку huge pages в Ubuntu?

ОС Ubuntu заточена на экономное расходование ресурсов, а «пожирание» памяти майнером не является таковым. Поэтому для выделения майнеру ресурсов нужно «немного поработать напильником». Но это стоит затраченных усилий и времени.

Например, на древнем (2008 год) процессоре Xeon X3330 (2,6 ГГц), не умеющем вычислять по инструкциям AES, при майнинге Монеро на Random X хешрейт без huge pages равен 200-210 h/s (на двух потоках). При их включении скорость вычислений возрастает до порядка 270 h/s (выигрыш на 25-30%).

На более современных процессорах разница может быть еще более существенной.

Изображение
Скриншот майнера xmrig, работающего без включения huge pages

Рассмотрим подробнее, как проверить включена ли поддержка huge pages в Linux-подобных системах и как их задействовать для майнинга (на примере XUBUNTU 16.04).

Проверка ОС Ubuntu на предмет включения huge pages

Прежде всего, нужно проверить, имеется ли поддержка hugepages на уровне железа. Это делается с помощью команды:

cat /sys/kernel/mm/transparent_hugepage/enabled

Изображение

В строке ответа системы в значении, заключенном в квадратные скобки, отображается наличие поддержки hugepages. Если высвечивается значение madvise, то в данной системе имеется поддержка huge pages . Если отображается значение [never], то данная система не имеет поддержки hugepages и стоит задуматься об апгрейде…

При наличии поддержки huge pages на аппаратном уровне нужно проверить, задействованы ли они и сколько страниц памяти зарезервировано. Для этого в терминале Ubuntu вводят команду:

sudo cat /proc/sys/vm/nr_hugepages

Эта команда показывает число страниц памяти, которые ядро системы (kernel) выделяет (резервирует) на нужды пользователя.

Изображение
Скриншот терминала, отображающего информацию о включении и числе выделенных hugepages

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

Включение поддержки адресации huge pages в Ubuntu


В версии xmrig 5.2.0 и выше есть возможность включения поддержки huge pages на лету, но это требует рут-привилегий для программы-майнера.

Эту же операции для текущей сессии (до перезагрузки системы) можно сделать (с привилегиями root) командой:

sysctl -w vm.nr_hugepages=1280, где 1280 – количество выделяемых больших страниц памяти.

Более разумно обеспечить работоспособность больших страниц памяти на этапе загрузки ядра с помощью конфигурационного файла sysctl.conf.

Это делается командой:

sudo echo "vm.nr_hugepages=1280" >> /etc/sysctl.conf $ sudo sysctl -p $ sudo reboot

, где 1280 – это число зарезервированных страниц памяти.

Можно сделать аналогичную операцию с помощью утилиты nano и команды:

sudo nano /etc/sysctl.conf

В появившемся окне терминала нужно пролистать sysctl.conf до конца и вписать в него:

# enable huge/large pages for Monero mining

vm.nr_hugepages=1280

Изображение

Затем нужно сохранить изменения (клавиши ctrl+O), нажать Enter, Ctrl+x и перезагрузить компьютер (sudo reboot).

Как подсчитать количество huge pages для выдления ядром системы Ubuntu?

Если зарезервировать слишком мало страниц, то майнер не будет работать в полную силу. Например, при резервировании 128 страниц xmrig показывает, что имеется всего 11% от необходимых 1168 страниц:

Изображение

Исходя из информации в майнере, для его работы нужно 1168 страниц больших страниц памяти:

Изображение

Майнер xmrig на RandomX с 1168 страницами памяти показывает вроде бы достаточное количество страниц, но все равно не использует их:

Изображение

По рекомендациям разработчиков xmrig, для майнинга на алгоритмах типа RandomX нужно 1280 страниц на одну ноду NUMA и 128 страниц – для других алгоритмов.

Это совпадает с практикой, что видно на скрине майнера компьютера с выделенными 1280 hugepages:

Изображение

Использование 1280 зарезервированных страниц означает, что в системе станет меньше на не менее 1280х2=2560 Мб доступной памяти (при стандартном размере страницы памяти в 2MB ).

Поэтому при ограниченном ОЗУ использование huge pages может привести к обратному эффекту – снижению хешрейта из-за нехватки физической памяти для нужд системы.
Изображение
Ответить

Вернуться в «Пулы для ЦПУ»