Майнинг

Майнинг на Ethash на видеокартах с объемом памяти меньше текущего размера DAG

В алгоритм майнинга PoW с хешированием Ethash заложено постоянное увеличение размера данных DAG, использующихся при майнинге.

В связи с этим из сети криптовалют, работающих на алгоритме Ethash/Dagger Hashimoto осенью 2017 года отвалились двухгиговые GPU, весной 2019 года — трехгиговки, а с осени 2020 года начали уходить в небытие и четырехгиговые видеокарты.

Ситуация с видеокартами с 4 Gb видеопамяти чувствительна не только для кармана их владельцев-майнеров, но влияет и на безопасность блокчейнов криптовалют, работу которых они поддерживали (в свете увеличения вероятности проведения атаки 51%).

В связи с этим команда разработчиков Ethereum Classic проведет хардфорк, в результате которого в два раза уменьшиться размер использующегося DAG и увеличится время каждого периода (эпохи) его роста.

Разработчики программного обеспечения для майнинга тоже не сидят сложа руки и выпускают обновленные версии своих программ, обеспечивающие возможность работы видеокарт с большим размером DAG, обходя ограничения технологии OpenCL, а также используя различные ухищрения, позволяющие производить вычисления на алгоритме Ethash еще некоторое время после увеличения размера данных DAG выше доступного объема памяти на видеокартах.

По состоянию на конец октября 2020 года эти функции доступны (только для видеокарт AMD) в майнерах с закрытым исходным кодом:

  • lolminer 1.11+ (комиссия разработчику Lolliedieb на Ethash — 0,7%) — работает на видеокартах AMD типа Fiji & Polaris в Linux и, ограниченно, в Windows;
  • Teamredminer 0.7.14+ (fee для видеокарт Polaris — 0.75%, для других GPU — 1%) — поддерживает работу в специальном расширенном для 4 Гб карт режиме на видеокартах AMD в Linux.

Вероятно, другие майнеры (например, Phoenix Miner, nanominer и другие) со временем будут обновлены разработчиками, которые представят функционал, обеспечивающий работу видеокарт на Ethash в режиме обработки данных сверх имеющегося размера видеопамяти.

Каким образом в майнерах реализуется возможность проведения вычислений на Ethash свыше доступного размера видеопамяти?

Проведение вычислений на алгоритме Ethash при размере данных DAG больше доступного размера видеопамяти без существенного снижения хешрейта возможно в течение нескольких эпох после заполнения всей доступной видеопамяти несколькими способами:

  • отбрасывание части данных DAG, загружаемых в память видеокарты, использующихся при вычислениях. Такой способ приводит к увеличению количества некорректных шар и (в результате) к снижению общего хешрейта, но позволяет увеличить продолжительность работы выше теоретического предела памяти GPU. С дальнейшим увеличением размера DAG и связанным с этим пропорциональным отбрасыванием данных DAG в майнере количество ошибок при поиске shares возрастает и эффективный хешрейт видеокарты еще более падает;
  • сжатие размера данных DAG видеопроцессором — позволяет значительно увеличить время работы на Ethash algo у GPU с мощным вычислительным блоком. На большинстве видеокарт приводит к значительному падению производительности/хешрейта из-за слабой мощности GPU, поэтому на практике пока не используется;
  • перенос части обрабатывающихся данных DAG в оперативную память компьютера — неэффективный способ из-за малого быстродействия последней в сравнении с видеопамятью. Приводит к значительному падению хешрейта, на практике не используется;
  • комбинирование вышеназванных способов в одной программе — требует серьезной работы программистов, пишущих майнеры, на практике не испольузется;
  • использование альтернативных алгоритмов вычислений, позволяющими добиться приемлемых результатов по поиску шар в сетях, использующих Ethash и при этом использовать меньший объем памяти/ресурсов. Этот способ больше подходит для хакеров и продвинутых (секретных) разработчиков ASIC-ов/FPGA. При изобретении такого способа владелец не станет о нем распространяться и, наоборот, будет всячески высмеивать и дискредитировать тех, кто может заподозрить о его существовании.

Анализ доступных способов увеличения продолжительности работы видеокарт при размере DAG выше объема бортовой видеопамяти показывает, что самым простым способом, который можно использовать на практике, является отсекание использующихся данных DAG.

Именно такой способ, называемый Zombie mode, используется в Lolminer, а также Teamredminer под названием Extended mining.

Примеры практического использования Lolminer и Teamredminer при майнинге на Ethash с DAG более 4 гигабайт на видеокартах с меньшим объемом видеопамяти

Для майнинга во всех программах рекомендуется установить драйвера 20.x в Linux и AMD Adrenaline 20.9.2 для Windows 10. Кроме того, при нестабильной работе майнеров, рекомендуется немного увеличить напряжение ядра/уменьшить разгон видеокарты.

Майнинг на Ethash на четрыехгиговках в lolminer

Активация режима зомби в лолмайнере (эпоха выше 374-376 для четырехгиговых карт в Windows и выше 382-й эпохи в Linux) осуществляется добавлением в командную строку параметра keepfree.

Пример скрипта запуска lolminer в Linux:

sudo ./lolMiner --algo ETHASH --pool eu1.ethermine.org:4444 --user кошелек.воркер --pass x --devices 1 (использующиеся видеокарты) --keepfree 5

Пример батника lolminer в Windows:

lolMiner.exe --algo ETHASH --pool eu1.ethermine.org:4444 --user кошелек.воркер --pass x --keepfree 56

При успешном запуске майнера, для увеличения размера доступной видеопамяти, можно попробовать поиграть с резервированием ОС, уменьшая цифру параметра keepfree (в LInux — уменьшить до нуля, в Windows — уменьшать ступенчато на 8).

Для тестирования работы lolMiner в режиме зомби можно запустить скрипт такого вида:

@echo off

sudo ./lolMiner --benchmark ETHASH --benchepoch 385 --keepfree 5 --longstats 120

sleep 10

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

При успешном запуске майнер сообщит о недостаточном объеме памяти для DAG соответствующей эпохи и переходе в «Zombie mode»:

Запуск lolMiner в xubuntu 18.04 на AMD Radeon RX574 на 385-й эпохе:

С отсеканием данных DAG каждая эпоха будет приносит ь уменьшение количества найденных шар в соответствии с таблицей:

Таблица, отображающая эффективность майнинга на алгоритме Etahsh на видеокартах AMD с 4 Gb памяти в «режиме Зомби» в программе lolminer (данные верны и для других подобных программ, включая teamredminer):

Майнинг на Ethash на четрыехгиговках в Teamredminer

Teamredminer на Ethash в Linux работает стабильно включительно до 381-й эпохи (проверено на драйверах AMD версий 18.50/19.30/19.50/20.10), в Windows — примерно до 374-й эпохи.

Для майнинга на более высоких эпохах (только в Linux) можно использовать extended-режим с постоянно увеличивающейся потерей реального хешрейта при переходе на следующие эпохи.

Для достижения макисмальной продолжительности майнинга на Ethash в программе Teamredminer (до достижения размера DAG 4 Gb (и в Linux, и в Windows) в BAT-файл нужно добавить параметр:

--eth_4g_max_alloc=N

где N — количество памяти vram, резервируемое майнером для проведения вычислений

например,

--eth_4g_max_alloc=4078 или --eth_4g_max_alloc=381 для Linux

При этом майнер задействует 4078 MiB видеопамяти, что достаточно для майнинга до 381-й эпохи алгоритма ethash включительно (в Linux).

или

--eth_4g_max_alloc=374 (для Windows)

Для увеличения объема доступной видеопамяти ив Windows желательно добавлять в батник teamredminer параметр

--restart_gpus (и запускать майнер с правами админа)

Пример батника для teamredminer для zergpool:

teamredminer.exe -a ethash -o stratum+tcp://ethash.mine.zergpool.com:9999 -u адрес -p c=BTC,воркер --temp_limit=65 --temp_resume=55 --watchdog_script=1 --restart_gpus --eth_4g_max_alloc=374

Для тестирования работоспособности на конкретной эпохе майнинга в батник/скрипт можно добавить параметры

--eth_epoch=374 --high_sample_mode=8

где 374 — номер тестирующейся эпохи.

Пример тестового скрипта для 381-й эпохи:

#!/bin/sh

export GPU_MAX_ALLOC_PERCENT=100

export GPU_SINGLE_ALLOC_PERCENT=100

export GPU_MAX_HEAP_SIZE=100

export GPU_USE_SYNC_OBJECTS=1

sudo ./teamredminer -a ethash -o stratum+tcp://eu1.ethermine.org:4444 -u 0x55733b52e8DB7A65F9A48c5a9F77D1068b816af3.47 -p x --eth_epoch=381 --high_sample_mode=8 --temp_limit=65 --temp_resume=55 --watchdog_script=1

sleep 10

При запуске такого скрипта майнер не будет отсылать решений на пул, но покажет скорость, развиваемую в «расширенном режиме»:

При нестабильной работе майнера/зависании нужно попробовать понемногу (например, с шагом в 8 мегабайт) уменьшать количество резервируемой программой Vram (например, использовать параметр eth_4g_max_alloc=4070).

Начиная с 382-й эпохи, майнер сможет майнить на Ethash только в Линукс и только в «обрезанном» спецрежиме с неполной обработкой данных DAG видеокартой. В скрипте майнера при этом обязательно должен присутствовать параметр eth_4g_max_alloc.

Можно выставить значение резервируемой памяти индивидуально для каждой карты (через запятую). при этом для карт с объемом памяти более 4 Гб выставленные значения будут игнорироваться, что удобно для смешанных ригов.

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

Таблица падения хешрейта в extended-режиме в Teamredminer (Linux):

Как запустить майнинг на Ethash на эпохах выше 374/381 на других типах видеокарт?

К сожалению, пока ни один из майнеров не поддерживает работу в обрезанном режиме четырехгиговых видеокарт с архитектурой Hawaii (AMD Radeon R9 290, разработчикам майнеров нужно «допилить» майнеры для работы с этими картами), а также GPU Nvidia GTX1050 Ti с 4 Гб памяти (последние майнят с помощью технологии CUDA, что требует подсуетиться разработчиков майнеров для зеленых карт).

Окно с ошибкой Failed to initialize device при попытке запустить майнинг на Ethash в программе Teamredminer:

Окно майнера lolminer при попытке запустить майнинг на алгоритме Ethash на AMD Radeon R9 290 (возникает ошибка Invalid kernel):

При попытке запуска lolminer на видеокарте Nvidia GTX1050Ti (unsupported device) возникает ошибка «failed compatibility check»:

Заключение

  1. Для обеспечения максимальной продолжительности майнинга на ethash необходимо использовать Linux-подобную операционную систему, например, xubuntu или HiveOS.
  2. Использование программ для майнинга с режимами Zombie/Extended mining позволяет увеличить время майнинга на четырехгиговых картах AMD архитектуры Polaris в сети Ethereum (а также ETC до хардфорка) на 1-2 месяца (на практике меньше с учетом уменьшения профита из-за постоянного падения хешрейта). Для этого можно использовать программы lolminer (Linux и в экспериментальном режиме Windows) и Teamredminer (Linux).
  3. Для увеличения продолжительности майнинга в Windows 10 без дополнительных ухищрений во всех майнерах нужно установить драйвера Adrenalin 20.4.2.
  4. Для видеокарт Nvidia с 4 гигабайтами памяти, например, GTX1050 Ti, разработчики майнеров пока не выпустили решения, позволяющего продлить на них майнинг как на картах АМД.
  5. Опция «Zombie»/расширенный майнинг является актуальной для владельцев AMD GPU с 4 GB памяти уже с конца ноября — начала декабря 2020 года. Без использования спецрежима все 4 Gb карты под управлением Linux отвалятся от майнинга Ethereum уже на 382-й эпохе — ориентировочно 15 декабря 2020 года (на Windows еще раньше, ориентировочно в ноябре 2020 года на 374-376-й эпохе). На практике проблемы с майнингом на четырехгиговках возможно начнутся раньше, в зависимости от версии использующихся драйверов/, майнера и операционной системы.
  6. Эффективность «костыльного» способа значительно упадет в конце декабря (для Windows) — в конце января 2020 года (Linux). После этого нужно будет переключить мощности видеокарт AMD с 4 Гб памяти на Ethereum Classic, другие криптовалюты/алгоритмы либо выключить/продать их.

Leave a Reply

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

Arabic AR English EN French FR German DE Russian RU Spanish ES