Skip to main content

Tips & Tricks

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

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

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

info

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

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

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

Очистка

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

Replace these placeholders
  • <PATH_TO_FARM>: Path to your farm directory
  • <BASE_PATH>: Path to your node data directory
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 wipe <PATH_TO_FARM>
./subspace-node-ubuntu-x86_64-skylake-mainnet-2025-jun-18 wipe <BASE_PATH>

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

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

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

Replace these placeholders
  • <REWARD_ADDRESS>: Your wallet address for farming rewards
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 farm --reward-address "<REWARD_ADDRESS>" \
path="/media/ssd1,size=4TiB" \
path="/media/ssd2,size=8TiB"

Оптимизация синхронизации 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.

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

A farmer has the option to specify whether the system should automatically create missing farms upon startup. If you provide a path to a farm that isn't found, the system will generate a new one. However, this may not be desirable if a drive fails to mount properly. By default, this option is set to true, but you can override it by adding --create false. Setting this flag to false after establishing your farms can prevent unintentional file writes to the wrong drive.

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

Upon startup, each farm will benchmark the performance to identify the most efficient proving method, yielding either ConcurrentChunks or WholeSector results. If you already know the optimal method for your setup, you can specify it as an argument for each farm to save time benchmarking.

Replace these placeholders
  • <PATH_TO_FARM>: Directory where you want to store the farm
  • <FARM_SIZE>: Amount of space allocated for farming (e.g. 4TiB, 8TiB)
  • <RECORD_CHUNKS_MODE>: Either ConcurrentChunks or WholeSector

For example, you can include record-chunks-mode= after defining the path and size, assigning the desired value, e.g., path=<PATH_TO_FARM>,size=<FARM_SIZE>,record-chunks-mode=<RECORD_CHUNKS_MODE>. If you do not provide this parameter, the system will benchmark each disk on startup to identify the most efficient method.

Benchmarking Your Farmer

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

./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 benchmark audit <PATH_TO_FARM>
tip

Replace <PATH_TO_FARM> with the actual path to your farm.

This will provide you with metrics and insights regarding plotting performance.

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

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

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

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

./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 benchmark prove <PATH_TO_FARM>

Each farmer has ~4 seconds to audit and prove, so depending on how fast auditing is, the remaining time will be used for proving. Proving performance doesn't depend on the farm size.

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

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

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

In certain situations, especially when the farmer terminates unexpectedly or encounters an error, it might fail to restart correctly. The scrub command assists in resolving such issues by cleaning or resetting the specified farm.

./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 scrub <PATH_TO_FARM>
tip

Replace <PATH_TO_FARM> with your actual farm path.

Use this command cautiously as it modifies the farm state to recover from errors.

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

Эта опция переопределит пользовательскую логику, которую может использовать фермер подпространств в противном случае. Вы можете указать количество ядер ЦП, добавив --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 не указан, узел по умолчанию будет использовать тот же пул потоков, что и для построения участков.


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

Proof-of-Time is secured by Timekeepers, an optional role that has been added to the node. Timekeepers help run PoT to ensure the security of the network. Timekeeping requires a high-performance core CPU but can be undertaken by any node runner. You can enable timekeeping with the following commands.

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

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


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

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

Replace these placeholders
  • <PATH_TO_FARM>: Path to your farm directory

  • <BASE_PATH>: Path to your node data directory

  • Display farm information: ./subspace-farmer info <PATH_TO_FARM>

  • Scrub the farm for errors: ./subspace-farmer scrub <PATH_TO_FARM>

  • Erase all farmer-related data: ./subspace-farmer wipe <PATH_TO_FARM>

  • Erase all node-related data: ./subspace-node wipe <BASE_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 для жесткого ограничения.