Заметки по майнингу Эфира


В общем, суть: есть проект Ethereum, на данный момент еще майнится с PoW. Протокол — Dagger-Hashimoto. Весьма отличается от того, что майнилось нами ранее. Майнер по-большей части один, хотя есть и появляются разные форки с доработками. Основная ветка развивается мало, куча багов и проблем, но уж что есть. Существующие проблемы стараюсь вытягивать скриптами, получается с переменным успехом.

Итак, GPU/CPU майнер — ethminer. Собирается из линуксовых под Убунту и, как ни странно, Арч. Пробовал собирать под Дебиан. Даже преодолев ад с версиями нужных либ, в итоге завяз где-то на середине компиляции из-за ошибок. В итоге использую бинарь и либы из Убунты, указывая недостающие либы через LD_LIBRARY_PATH; остальное (всякие там libboost’ы) оно берет из системы.

По работе майнера. Майнер не имеет внятной системы ошибок, каких-либо настроек железа; любит падать на каждый чих и в целом недоработан — например, весьма сложно заставить его майнить на избранных картах, проще их переставить местами и задать число тредов майнера (у меня так работает один риг, где есть пара гиговых карт).

По алгоритму. Алгоритм предполагает каждые 30000 блоков генерацию нового блока данных — это так называемые DAG-файлы. DAG-файл имеет размер на данный момент около 1,3 ГБ. Хранится на винте, вычитывается при старте майнера, всасывается в видеопамять каждой карты (отсюда и требования к картам с 2 и выше гиг) и дальше майнер с этим работает. Кроме того, после запуска он пишет этот же файл обратно на диск (причем, вычитка делается весьма агрессивно и вешала мне сеть, когда я пытался тянуть данные через 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 ГБ.

5 мыслей о “Заметки по майнингу Эфира”

  1. Автор, почему не развиваете свой ресурс?
    Всё очень было интересно и … хоп, всё, тишина на год и более!
    Расскажите о перспективах майнинга в целом и по отдельности по каждой крипте, оборудования, крипты и тп.

  2. Дак, сорри за долгий ответ, но у меня тут уведомления об ответах включены не были, так что не знал о твоем сообщении.

    В целом, ресурс, изначально бывший procrypto.org, начался с подачи одного из давних участников jabber-конференции miners@conference.linuxoid.in. По-большей части, он рассматривался как очередной новостной сайт и, помня, как развивались некоторые другие проекты на моих глазах, я изначально считал это гиблой затеей.

    Но — хочется — ок, сделал. Наполняли его какое-то время вместе, участвовал в правках и так далее. По-большей части, это был копипаст новостей с других сайтов. В конце-концов все пришло-таки к тому, о чем говорил изначально — тема «надоела». Новостных сайтов для публики и так хватало — и хватает сейчас; плюс боты и группы в Телеграмме и прочих подобных поделках. Тянуть все на себе «просто так» — не всегда хватает времени.

    Оплата за домен подходила к концу, поэтому сайт переехал на субдомен моего другого проекта, где и крутится сейчас.

    Это что касается проекта в том виде, в котором он развивался большую часть времени раньше. А вот если «о хорошем»… Я вот думаю, чего зря ему пропадать? Как новостной сайт он — мертворожденный, а вот такой себе мини-блог на криптотематику — примером служит как раз эта заметка — так вот, почему бы и не использовать? Писать тут, похоже, буду только я и не особо часто — вечно висит какая-то работа, которую надо делать и сваливается на меня все больше. Но я тут параллельно веду еще один WP-сайт для своих заметок и, в целом, втянулся в тему. Вполне можно перекинуть сюда заметку по переделке серверных лыж — она тут явно более уместна будет, чем там. Или, например, сейчас новый проект — строю ферму на базе стоечных корпусов под риги. Корпуса впервые увидел позавчера. Вполне можно было бы сделать их обзор в рамках такого себе варианта «промышленного майнинга».

    Так что вполне можно будет возродить данный блог. Только чуть-чуть попозже. Даже с упомянутым проектом на сейчас — актуальнее, например, разобраться, почему виснет 13-слотовая материнка от Asrock, если карты ставить в белые слоты (а в черных не виснет). А заметки можно писать уже когда будет все работать — долгими зимними вечерами :). Но они обязательно будут 😉

  3. Ох, только сейчас, спустя полтора года, заметил ошибку — протокол не «-Накамото», протокол «-Хашимото» :))

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

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