Dag файл размер ethereum сейчас
есть и появляются разные форки с доработками. Основная ветка развивается мало, куча багов и проблем, но уж что есть. Существующие проблемы стараюсь вытягивать скриптами, получается с переменным успехом.
Итак, GPU/CPU майнер — ethminer. Собирается из линуксовых под Убунту и, как ни странно, Арч. Пробовал собирать под Дебиан. Даже преодолев ад с версиями нужных либ, в итоге завяз где-то на середине компиляции из-за ошибок. В итоге использую бинарь и либы из Убунты, указывая недостающие либы через LD_LIBRARY_PATH; остальное (всякие там libboostы) оно берет из системы.
По работе майнера. Майнер не имеет внятной системы ошибок, каких-либо настроек железа; любит падать на каждый чих и в целом недоработан — например, весьма сложно заставить его майнить на избранных картах, проще их переставить местами и задать число тредов майнера (у меня так работает один риг, где есть пара гиговых карт).
По алгоритму. Алгоритм предполагает каждые 30000 блоков генерацию нового блока данных — это так называемые DAG-файлы. DAG-файл имеет размер на данный момент около 1,3 ГБ. Хранится на винте, вычитывается при старте майнера, всасывается в видеопамять каждой карты динамика курса лайткоина онлайн (отсюда и требования к картам с 2 и выше гиг) и дальше майнер с этим работает. Кроме того, после запуска он пишет этот же файл обратно на диск (причем, вычитка делается весьма агрессивно и вешала динамика курса эфириума в 2017 мне сеть, когда я пытался тянуть данные через NFS). Кроме того, как одно из требований — это должен быть непрерывный кусок памяти (есть любительские майнеры, которые умеют работать с фрагментированными DAGами). DAG растет где-то на 8 МБ за эпоху — не в смысле в процессе майнинга, а просто каждый следующий файл будет больше. Отсюда следствие — при таком росте карты с 2 ГБ памяти на Эфире отомрут где-то через год. Но есть и другие валюты на Dagger.
По DAGу. Майнер в один момент времени работает с одним DAG-файлом. Второй он создает в фоне, это ресурсоемкая в плане процессора процедура. Есть опция —no-precompute, которая позволяет не создавать новый файл в фоне — обычно ее не рекомендуют, так как это будет вызывать лаг сети в момент смены эпохи. Итого из актуальных есть 2 файла: рабочий и следующий. Рабочий становится устаревшим в момент смены эпохи и может быть удален; следующий становится рабочим, а майнер начинает в фоне генерить новый DAG.
По хранилищу DAGов. Системы у меня на флешках, места там не особо, поэтому пробовал разные варианты решения проблемы с хранением DAGов. Когда запускал майнер на ноуте — оно активно насиловало винт (т.е., вычитка идет в много потоков). Когда пробовал запускать все через сеть — клал сеть (плюс я тогда еще не знал, что нужно в таком случае держать один майнер как главный, а остальные с —no-precompute, иначе все начнут писать в один файл). Пробовал держать все в tmpfs, но приходится выделять уже больше 2,5 гиг и становится тесно. Плюс запуск майнера в таком случае занимает около 14 минут — то время, за которое Athlon 250 сгенерирует DAG. Не говоря уж о более слабых процах. Итог — докупание новых флешек и/или использование свободного места на существующих. Плюс активно использую кэширование в оперативной памяти — вычитка файла до старта майнера (пока запускаются иксы и все остальное), агрессивное кэширование при записи после вычитки — DAG скидывается в оперативку, майнер майнит, кэши сбрасываются уже после начала майнинга. Вылезла проблема с кэшированием — есть тред на ЛОРе. Суть stable pages — вычитанный кэшированный файл не может быть записан в те же страницы; в итоге кэш сначала сбрасывается на диск и толку с него ноль, ибо до сброса кэша (т.е., записи 1,3 ГБ данных на медленную флешку) майнер не работает. Обошел проблему костылем: на разделе лежит файлик, файлик примонтирован как loop, в нем уже DAGи. В таком случае все работает так, как мне надо.
По майнингу. Майню на dwarfpool.com, там регистрация не требуется. Вывод — на poloniex.com. Т.е., регишься на Полониксе, создаешь кошелек на ввод, дальше используешь его как адрес на пуле.
По управлению железом. Использую пока sgminer, но планирую написать что-то свое. Вылезла проблема — всякие там X11/X13 и так далее требовательны к памяти, в итоге ethminer со своим DAGом + sgminer с X11, хоть и не майнящий, но уже не влазят в память. Пока использую костыль — у меня на каждом риге есть Tahiti, к которой цепляется sgminer — ему лишь бы запуститься. После запуска sgminerа через его API гасятся все карты и дальше он просто рулит частотами и вентиляторами. Там, где Tahiti нет — можно использовать алгоритм Keccak, он простой и требует всего несколько метров памяти. Так как ethminer требует непрерывный кусок памяти, то sgminer запускаю после ethminer. В процессе смены эпох вскрылась еще одна проблема (это до того, как начал биндить sgminer на Таити) — при определенном потреблении памяти ethminerом запущенный sgminer начинает выжирать память.
По картам. Из-за требований к памяти хорошо себя показывают карты с небольшим числом шейдер-процессоров и с низколатентной памятью. Хорошо себя показывают, например, 7870. Дальше с ростом мощности прирост хэшрейта становится не таким значительным.
По системе. Проц, в целом, не сильно используется — основная нагрузка на проц идет при запуске майнера. Генерация DAGов в нормальном режиме идет в фоне, так что сгенерируется он за 10 минут или за 2 часа — не так важно. Под хранилище DAGов идеально иметь SSDшку, но если нет — то свою систему я описал выше. Как следствие всей этой организации на ригах у меня требования к памяти — минимум 4 гига. Да и в любом случае 4 гига пригодится, так как при работе ethminer занимает памяти на размер DAGа (при этом почти вся — shared). При генерации нового DAGа — соответственно, становится по размеру двух DAGов. Т.е., только на сам майнер сейчас может уйти до 2,6 ГБ. Плюс система, иксы и так далее — в общем, в любом случае стоит поставить хотя бы 4 ГБ.