Skip to main content

Tips & Tricks

Дополнительные советы

Добро пожаловать в раздел Дополнительные советы! Независимо от того, являетесь ли вы опытным фармером или только начинаете работу с Autonomys Network, эти советы и рекомендации предназначены для повышения вашего опыта и эффективности. Здесь мы углубимся в практические советы и менее известные методы, которые помогут вам точно настроить фарминг и с легкостью решать распространенные проблемы. От настройки среды до управления фоновыми процессами эти идеи предназначены для обеспечения бесперебойной и эффективной работы вашего Farmer. Давайте углубимся и рассмотрим, как вы можете максимально эффективно использовать Autonomys Network Farmer.

Переход на новый снэпшот со старых/других версий Autonomys

info

Если команда Subspace не упоминает об этом, то НЕТ необходимости полностью очищать Вашу ноду для новых релизов.

Как правило, Вы можете скачать последнюю версию и перезапустить ноду и фармер теми же командами, что и предыдущие версии, без ошибок.

В некоторых случаях обновления версий могут вызвать проблемы с вашим узлом и фармером, и вам, возможно, придется стереть узел, как правило, когда возникают ошибки. Если у вас возникнут какие-либо проблемы, вы всегда можете проверить наши Форумы и зайти на наш Discord Сервер, чтобы попросить о помощи.

Очистка

Если вы ранее запускали узел и хотите переключиться на новую сеть, пожалуйста, выполните эти шаги и следуйте руководству заново:

# Replace `FARMER_FILE_NAME` with the name of the farmer file you downloaded from releases
./FARMER_FILE_NAME wipe PATH_TO_FARM
# Replace `NODE_FILE_NAME` with the name of the node file you downloaded from releases
./NODE_FILE_NAME wipe NODE_DATA_PATH

Теперь следуйте инструкции по установке с самого начала.

Использование нескольких дисков

Чтобы максимизировать возможности хранения, вы можете запускать несколько дисков напрямую. Это зачастую более эффективно, чем использование конфигураций RAID:

Пример:

./FARMER_FILE_NAME farm --reward-address WALLET_ADDRESS \
path=/media/ssd1,size=100GiB \
path=/media/ssd2,size=10T \
path=/media/ssd3,size=10T

Оптимизация синхронизации DSN

note

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

Параметры следует использовать с осторожностью
--out-peers
--in-peers
--dsn-target-connections
--dsn-pending-in-connections
--dsn-in-connections

Рекомендуемые параметры

Параметры по умолчанию задаются с возможностями общих модем/маршрутизаторов потребителя. Настройка некоторых параметров может повысить производительность синхронизации DSN за счет увеличения параллелизма. Однако, если вы решите значительно их увеличить, убедитесь, что ваш модем/маршрутизатор достаточно производительный, чтобы обрабатывать увеличенный трафик. Node:

--dsn-out-connections
--dsn-pending-out-connections

Farmer: Увеличение значений параметров фармера может увеличить скорость плоттинга.

--out-connections
--pending-out-connections

Помощь

И узел, и фармер имеют множество флагов и параметров. Чтобы увидеть полный список, добавьте флаг --help к команде узла или фармера.

Дополнительные советы для узлов, фармера и Docker

Plotting concurrency (CPU only)

During plotting, there are both parallel and sequential parts of the table generation. By generating several tables simultaneously, we can overlap the sequential parts with parallel parts, thus improving CPU utilization. While generating tables for all records requires significant RAM, producing tables for only a few records at a time offers an optimal balance between CPU and RAM usage. We added the --cpu-record-encoding-concurrency option to override the default behavior, which allocates one record for every two cores but does not exceed eight in parallel. According to our internal testing with P-cores, E-cores, and combinations of P+E cores, this setting appears to achieve peak performance. If you prefer to use the previous behavior, or if your RAM usage becomes too high, you can set --cpu-record-encoding-concurrency to 1. You may also experiment with setting it to 2, 3, etc., which may yield better results depending on your specific CPU/RAM configuration.

Создание недостающего фарминга

У фермера есть возможность указать, должна ли система автоматически создавать недостающие фермы при запуске. Если вы укажете путь к участку, который не найден, система создаст новый. Однако это может быть нежелательно, если диск не удается смонтировать должным образом. По умолчанию этот параметр установлен в true, но вы можете отменить его, добавив --create false. Установка этого флага в false после создания участков может предотвратить непреднамеренную запись файлов на неправильный диск.

Режим чтения блоков записи

При запуске каждая ферма benchmark оценивает производительность каждого участка, чтобы определить наиболее эффективный метод доказательства, выдавая результаты либо ConcurrentChunks, либо WholeSector. Если вы уже знаете оптимальный метод для вашей системы, вы можете указать его в качестве аргумента для каждой фермы, чтобы сэкономить время на бенчмаркинге. Например, вы можете включить record-chunks-mode= после определения пути и размера, присвоив нужное значение, например, path=/mnt/subspace1,size=100G,record-chunks-mode=ConcurrentChunks. Если вы не укажете этот параметр, система при запуске проведет сравнительный анализ каждого диска, чтобы определить наиболее эффективный метод.

Benchmarking Your Farmer

Бенчмаркинг помогает вам проверить скорость плоттинга вашего фармера в зависимости от версии сети Autonomys.

./subspace-farmer benchmark audit /path/to/your/plot

Замените /path/to/your/plot на фактический путь к вашему участку. Это позволит вам получить метрики и сведения о производительности построения.

На данный момент Autonomys Node поддерживает механизм реализации rayon, который открывает файлы столько раз, сколько существует потоков фермера, и для каждого потока использует выделенный файловый заголовок.

Интерпретация результатов: обычно вы оцениваете пропускную способность, чтобы определить максимальный проверяемый размер на любом количестве дисков. На эту метрику влияет производительность как процессора, так и диска.

Чтобы узнать больше об аудиторском бенчмаркинге, прочитайте это сообщение на форуме.

Есть и вторая команда, которая поможет вам определить, сколько времени у фермера есть после аудита, чтобы предоставить доказательства.

./subspace-farmer benchmark prove /path/to/your/plot

У каждого фермера есть ~4 секунды на аудит и доказательство, поэтому в зависимости от того, насколько быстро проходит аудит, оставшееся время будет использовано для доказательства. Производительность доказательства не зависит от размера участка.

Если наблюдается недостаточно времени для этапа доказательства, фармер регистрирует сообщение подобного рода:

Чтобы узнать больше о бенчмаркинге доказательств, прочтите этот пост на форуме.

Чистка вашего фермера

В некоторых ситуациях, особенно когда фермер неожиданно завершает работу или сталкивается с ошибкой, он может не перезапуститься корректно. Команда scrub помогает решить такие проблемы, очищая или перезагружая указанный участок.

./subspace-farmer scrub /path/to/your/plot

Убедитесь, что вместо /path/to/your/plot указан реальный путь к участку. Используйте эту команду с осторожностью, так как она изменяет состояние участка для восстановления после ошибок.

Определение точного количество ядер для плота/реплота (только для процессоров)

Эта опция переопределит пользовательскую логику, которую может использовать фермер подпространств в противном случае. Вы можете указать количество ядер ЦП, добавив --cpu-plotting-cores, а затем необходимые параметры ядер. Ядра должны быть перечислены в качестве значений, разделенных запятыми, с пробелами, используемыми для разделения различных потоков или экземпляров кодирования. Например, --cpu-plotting-cores 0,1 2,3 позволит кодировать два сектора одновременно, каждый из них использует 2 ядра процессора.

Аналогичным образом вы можете настроить перераспределение ядер процессора с помощью --cpu-replotting-cores, после чего указываются аргументы, аналогичные тем, что используются в примере --cpu-plotting-cores выше.

Обратите внимание, что установка --cpu-plotting-cores требует, чтобы --cpu-replotting-cores был настроен на такое же количество групп ядер процессора. Если параметр --cpu-replotting-cores не указан, узел по умолчанию будет использовать тот же пул потоков, что и для построения участков.


Хранители времени

Gemini-3g вводит Proof-of-Time и добавляет новую, необязательную роль узла. Хранители времени помогают проводить PoT для обеспечения безопасности сети. Для ведения хронометража требуется высокопроизводительный центральный процессор, но этим может заниматься любой пользователь узла. Включить хронометраж можно с помощью следующих команд.

  • --timekeeper: Включить хронометраж на узле
  • --timekeeper-cpu-cores: Для указания, на каких ядрах будет работать хронометраж.

Подробнее о хранителях времени


Примеры команд

Вот некоторые часто используемые команды для узла и фермера:

  • Отобразить информацию о ферме: ./FARMER_FILE_NAME info PATH_TO_FARM
  • Scrub the farm for errors: ./FARMER_FILE_NAME scrub PATH_TO_FARM
  • Стереть все данные фармера: ./FARMER_FILE_NAME wipe PATH_TO_FARM
  • Стереть все данные узла: ./NODE_FILE_NAME wipe NODE_DATA_PATH

Поддержка NUMA

note

Поддержка NUMA принесет пользу фермерам с большими мощными CPU и наличием большого количества ОЗУ. Требуемое количество ОЗУ зависит от процессора и количества потоков.\

Ранее пулы потоков для плоттинга/реплотинга создавались для каждой фермы отдельно, несмотря на то, что одновременно может использоваться только заданное их количество (по умолчанию только один). С появлением поддержки NUMA в фермерском приложении появился менеджер пулов потоков, который создаст необходимое количество пулов потоков, которые будут распределены между текущими фермами плоттинга/реплотинга. Когда создается пул потоков, он назначается на набор ядер процессора и может использовать только эти ядра. Привязка не привязывает потоки к ядрам 1:1, вместо этого ОС может свободно перемещать потоки между ядрами, но только в пределах ядер процессора, выделенных для пула потоков. Это гарантирует, что построение графика для определенного сектора будет происходить только на определенном узле CPU/NUMA.

Включение NUMA на Windows/Linux

В Linux и Windows фермер обнаружит системы NUMA и создаст ряд пулов потоков, соответствующих количеству узлов NUMA. Это означает, что поведение по умолчанию изменится для больших процессоров и в результате расходуется больше памяти, но это может быть изменено на предыдущее поведение с CLI опциями, если хотите. Чтобы использовать NUMA, вам нужно включить его через BIOS вашей материнской платы, чтобы фермер узнал о ней существует. Этот параметр присутствует в материнских платах для процессоров Threadripper/Epyc, но может также существовать и в других. Если вы не включите эту функцию, то и ОС и фермер думают, что у вас есть один процессор UMA, и не смогут применить оптимизацию.

Чтобы узнать больше о поддержке NUMA и преимуществах, которые она предоставляет для больших процессоров, прочтите этот пост на форуме.

Изменение ограничения на количество открытых файлов (Linux)

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

Это также может помочь уменьшить ошибку «Too Many Open Files».

Вы можете использовать команду ulimit, чтобы временно изменить предел для открытых файлов. Например, установка ulimit -n 2048 установит ограничение на 2048. Это изменение возвращается после выхода из системы или перезагрузки.

Для постоянного изменения есть два варианта:

  • Для изменения параметра ядра fs.file-max. Вы можете сделать это, используя команду sysctl sysctl -w fs.file-max=500000.
  • Чтобы установить ограничения для отдельных пользователей, необходимо отредактировать файл /etc/security/limits.conf. Вы можете указать жесткие и мягкие ограничения на количество открытых файлов username soft nofile 10000 для мягкого ограничения и username hard nofile 30000 для жесткого ограничения.