- Поддержка больших страниц памяти и ее влияние на майнинг
- Зачем нужно включать поддержку huge pages в Ubuntu?
- Проверка ОС Ubuntu на предмет включения huge pages
- Включение поддержки адресации huge pages в Ubuntu
- Как подсчитать количество huge pages для выдления ядром системы Ubuntu?
- Вам также может понравиться
- Майнинг криптовалюты SCALA (XLA) на алгоритме DefyX
- О выборе термопрокладок для видеокарт и других мощных радиоэлектронных устройств
Поддержка больших страниц памяти и ее влияние на майнинг
При майнинге криптовалюты Monero и ряда других монет на процессорах можно добиться серьезного увеличения хешрейта при включении поддержки адресации больших страниц памяти (huge pages в Linux или large pages в Windows).
Опция закрепления страниц в памяти отдает приоритет хранению данных приложения в быстродействующей оперативной физической памяти. Благодаря этому сокращается количество операций постраничного разбиения данных и количество операций запись/чтение в виртуальной памяти (более медленной) на диске (в файл подкачки).
На алгоритме RandomX при майнинге Monero (XMR) закрепление страниц в памяти (huge/large pages) дает увеличение хешрейта порядка 30%, а в некоторых случаях и больше (50-60%).
Скриншот майнера xmrig с работающей адресацией huge pages в OS Windows:
Нужно понимать, что назначение всей свободной физической памяти одному или нескольким процессам может отобрать большую часть доступного ОЗУ в ущерб другим процессам.
В случае одновременного использования рига для майнинга на CPU и GPU это может спровоцировать замедление майнинга на видеокартах, отказы/зависания.
Для предотвращения проблем нужно верно расходовать ресурсы: не злоупотреблять большим количеством потоков майнинга на CPU (использовать один поток на каждые 2 Мб кеша L2), оставлять ресурсы для работы ОС и майнеров на GPU, периодически отслеживать производительность компьютера (например, в диспетчере задач).
.
В операционной системе Windows включение закрепления страниц в памяти делается довольно просто с помощью политики безопасности “Блокировка страниц в памяти”.
В ОС типа Ubuntu для включения этой полезной опции нужно проделать ряд дополнительных телодвижений.
Зачем нужно включать поддержку 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 и команды:
В появившемся окне терминала нужно пролистать 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 может привести к обратному эффекту – снижению хешрейта из-за нехватки физической памяти для нужд системы.