Alfis icon indicating copy to clipboard operation
Alfis copied to clipboard

[feachure req] Mining speed stats

Open Bogdan107 opened this issue 3 years ago • 3 comments

Статистика скорости майнинга на базе CPU-speed.

Понимаю, что скорость операции майнинг рандомна и собирать её безтолку, но вот скорость перебора хешей - вполне стабильная величина и прямо-пропорциональна производительности CPU.

Каждая запись лога может быть:

  • сообщение о скорости майнинга;
  • сообщение о способе контакта с другим участником блокчейна с целью получения его дампа записей о скорости майнинга.

Каждое сообщение о скорости майнинга содержит:

  • datetime - время генерации статистики по UTC;
  • app string - имя программы и номер версии;
  • CPU string - имя производителя CPU и модель CPU;
  • threads count - количество потоков, задействованных в операции майнинга;
  • difficulty - уровень сложности;
  • operation - тип операции майнинга: ключ, домен или зона;
  • mining time - время, затраченное на операцию майнинга;
  • average speed - средняя скорость хеширования в H/s (общее количество хешей, обработанных за сессию майнинга, разделить на веремя майнинга);
  • node public key - публичный ключ ноды, сгенерировавшей запись;
  • sign - подпись данной строки приватным ключём ноды;
  • ttl (time to live) - количество нод, пройдя через которые сообщение будет отброшено (как мера от безконечного флуда).

Каждое сообщение о способе контакта содержит:

  • datetime - время сохранения записи в локальном лог-файле статистики;
  • contact-info - информация о способе получения дампа лога статистики;
  • node public key - публичный ключ ноды, которая сохраняет статистику;
  • sign - подпись данной строки приватным ключём ноды.

Опции конфигурации:

  • stats-send [bool] - отправлять ли статистику желающим её получить;
  • stats-receive [bool] - принимать ли логи статистики от соседей;
  • stats-save [bool] - сохранять ли логи полученной статистики в файл;
  • stats-file [string] - путь к фалу базы в формате Sqlite для добавления записей. По умолчанию - "mining-stats.db". Каждая новая строка - отдельная запись.
  • stats-contact [string] - текстовая строка с информации о способе получения дампа лога с данной ноды.

Если stats-send = yes, то нода отправляет логи статистики всем соседям, у которых стоит stats-receive = yes. Если stats-receive = yes, то нода извещает соседей о том, что она желает принимать статистику и принимает эту статистику. Если stats-save = yes, то нода сохраняет сообщения статистики в файл, указанный в stats-file.

Если stats-send = yes и stats-receive = yes, но stats-save = no - то нода только учавствует в распространении сообщений о скорости майнинга, но не хранит такие сообщения локально.

Каждая нода, которая отправляет логи, после сообщения типа "скорость майнинга", отправляет также сообщение "способ контакта" (если оно не пустое) 1 раз за сеанс связи с соседом. Каждое сообщение типа "способ контакта" проверяется на наличие в базе по ключу "public-key". Если информация о способе контакта с владельцем ноды уже присутствует в базе, то такое сообщение только обновляет существующую запись, но не добавляет новую запись.

Bogdan107 avatar Apr 30 '21 16:04 Bogdan107

А зачем это нужно, @Bogdan107?

Revertron avatar Apr 30 '21 21:04 Revertron

  1. Оценка производительности CPU в конкретной версии алгоритма.
  2. Оценка влияния настроек своей системы на производительность CPU.
  3. Косвенная оценка ресурсов, затраченных на поддержку блокчейна (косвенная, потому что не все ноды отправят логи).

Логи производительности пригодятся разработчику при планировании сложности майнинга (и сквоттерам тоже, но у них и так топовое оборудование). Максимальная производительность разработчику известна в отношении только тех нескольких CPU, к которым имеет доступ разработчик. Логи же позволят определить как минимальную производительность (по самому слабому CPU), так и среднюю арифметическую, размах ряда (минимальная и максимальная производительности) и моду ряда показаний (какие CPU самые популярные). Также с логами можно определить на сколько производительность CPU в BogoMIPS коррелирует с производительностью алгоритма майнинга. И много как ещё можно придумать как обрабатывать статистику.

Имея среднее арифметическое значение производительности своего CPU из статистики и сравнив со значениями на своём CPU, существенная разница в отрицательную сторону будет указывать на неоптимальные настройки своей системы. Однажды я тестировал другой майнер и на моей конфигурации настроек системы, производительность майнинга оказалась в 3 раза ниже, чем производительность из статистических данных для моего CPU. Т.е. такая статистика может помочь кому-то понять, что ему надо менять не CPU, а всего-то лишь настройки системы.

Если иметь логи производительности для каждого блока в блокчейне и для всех предыдущих версий блоков, то можно оценить размер ресурсов, затраченных на майнинг всего блокчейна (можно будет делать громкие заявления). В целом - ничего не значащее число, однако позволит сравнить затраты на поддержание Identity System, отличных от ALFIS, с затратами на поддержвание системы ALFIS.

В общем, прогнозирую положительный эффект от такой системы логирования только в будущем, когда сама система будет внедрена, отлажена и давно забыта как не требующая внимания, а база с логами будет накоплена.

Bogdan107 avatar May 01 '21 09:05 Bogdan107

I too would love to know the stats of mining credentials and domains. Sadly I don't know Russian and don't trust Google translate to get it right, so I'm leaving this comment in both Russian and English.

Я тоже хотел бы узнать статистику учетных данных и доменов для майнинга. К сожалению, я не знаю русского и не верю, что Google translate все сделает правильно, поэтому я оставляю этот комментарий как на русском, так и на английском языках.

ghost avatar May 09 '21 06:05 ghost