Skip to main content

Tips & Tricks

Additional Tips

Willkommen im Abschnitt „Zusätzliche Tipps“! Egal, ob Sie ein erfahrener Landwirt sind oder gerade erst mit dem Autonomys Network beginnen, diese Tipps und Tricks sollen Ihre Erfahrung und Effizienz steigern. Hier gehen wir auf praktische Ratschläge und weniger bekannte Techniken ein, die Ihnen dabei helfen sollen, Ihr landwirtschaftliches Setup zu optimieren und gängige Herausforderungen mit Leichtigkeit zu meistern. Von der Konfiguration Ihrer Umgebung bis zur Verwaltung von Hintergrundprozessen sind diese Einblicke darauf zugeschnitten, einen reibungslosen und effektiven Betrieb Ihres Farmers sicherzustellen. Lassen Sie uns eintauchen und erkunden, wie Sie das Beste aus Ihrem Autonomous Network Farmer herausholen können.

Wechseln zu einem neuen Snapshot von älteren/anderen Versionen von Autonomous

info

Sofern vom Entwicklungsteam nicht ausdrücklich erwähnt, müssen Sie Ihre Konfiguration bei neuen Versionen NICHT löschen.

Im Allgemeinen sollten Sie in der Lage sein, die neueste Version herunterzuladen und Node & Farmer mit denselben Befehlen neu zu starten, mit denen Sie die vorherige Version ohne Fehler gestartet haben.

In einigen Fällen verursachen Versionsaktualisierungen Probleme mit Ihrem Node & Farmer und Sie müssen Ihren Node möglicherweise löschen, normalerweise wenn Fehler auftreten. Wenn Sie Probleme haben, können Sie jederzeit in unseren Foren nachsehen und auf unserem Discord-Server um Hilfe bitten.

Wischen

Wenn Sie zuvor einen Knoten ausgeführt haben und zu einem neuen Netzwerk wechseln möchten, führen Sie bitte diese Schritte aus und folgen Sie dann erneut der Anleitung:

# Ersetzen Sie `FARMER_FILE_NAME` durch den Namen der Farmer-Datei, die Sie von Releases heruntergeladen haben
./FARMER_FILE_NAME wipe PATH_TO_FARM
# Ersetzen Sie `NODE_FILE_NAME` durch den Namen der Knotendatei, die Sie von Releases heruntergeladen haben
./NODE_FILE_NAME wipe NODE_DATA_PATH

Folgen Sie nun der Installationsanleitung von Anfang an.

Verwendung mehrerer Festplatten

Um die Speicherkapazität zu maximieren, können Sie mehrere Festplatten direkt einbinden. Dies ist häufig effizienter als das Verlassen auf RAID-Konfigurationen:

Beispiel:

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

Optimieren der DSN-Synchronisierung

note

Das DSN kann ein heikles Thema sein. Um unser dezentrales Speichernetzwerk besser zu verstehen, lesen Sie bitte diesen Leitfaden unserer Akademie.

Mit Vorsicht zu verwendende Parameter
--out-peers
--in-peers
--dsn-target-connections
--dsn-pending-in-connections
--dsn-in-connections

Empfohlene Parameter

Die Standardparameter werden unter Berücksichtigung der Fähigkeiten gängiger Consumer-Modems/Router eingestellt. Durch Anpassen bestimmter Parameter kann die DSN-Synchronisierungsleistung durch Erhöhung der Parallelität verbessert werden. Wenn Sie sich jedoch zu einer deutlichen Erhöhung entschließen, stellen Sie sicher, dass Ihr Modem/Router leistungsfähig genug ist, um den erhöhten Datenverkehr zu bewältigen. Node:

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

Farmer: Eine Erhöhung der Werte der Landwirt-Parameter könnte die Plotgeschwindigkeit erhöhen.

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

Hilfe

Sowohl der Knoten als auch der Farmer verfügen über verschiedene Flags und Parameter. Um eine vollständige Liste anzuzeigen, hängen Sie das Flag „--help“ entweder an den Knoten oder den Farmer-Befehl an.

Einige zusätzliche Tipps für Node, Farmer und Docker

Parallelität darstellen (nur CPU)

Beim Plotten gibt es sowohl parallele als auch sequentielle Teile der Tabellenerstellung. Durch die gleichzeitige Generierung mehrerer Tabellen können wir die sequentiellen Teile mit parallelen Teilen überlappen und so die CPU-Auslastung verbessern. Während beim Generieren von Tabellen für alle Datensätze viel Arbeitsspeicher benötigt wird, bietet die gleichzeitige Erstellung von Tabellen für jeweils nur wenige Datensätze ein optimales Gleichgewicht zwischen CPU- und RAM-Auslastung. Wir haben die Option „--cpu-record-encoding-concurrency“ hinzugefügt, um das Standardverhalten außer Kraft zu setzen, das einen Datensatz für jeweils zwei Kerne zuweist, aber nicht mehr als acht parallel zuweist. Laut unseren internen Tests mit P-Kernen, E-Kernen und Kombinationen aus P+E-Kernen scheint diese Einstellung die Spitzenleistung zu erzielen. Wenn Sie das vorherige Verhalten bevorzugen oder Ihre RAM-Auslastung zu hoch wird, können Sie „--cpu-record-encoding-concurrency“ auf „1“ setzen. Sie können auch mit der Einstellung „2“, „3“ usw. experimentieren, was je nach Ihrer spezifischen CPU-/RAM-Konfiguration zu besseren Ergebnissen führen kann. Feedback

Fehlende Farmen erstellen

Ein Farmer hat die Möglichkeit anzugeben, ob das System fehlende Farmen beim Start automatisch erstellen soll. Wenn Sie einen Pfad zu einem Grundstück angeben, das nicht gefunden wird, generiert das System einen neuen. Dies ist jedoch möglicherweise nicht wünschenswert, wenn ein Laufwerk nicht ordnungsgemäß gemountet wird. Standardmäßig ist diese Option auf „true“ gesetzt, Sie können sie jedoch überschreiben, indem Sie „--create false“ hinzufügen. Wenn Sie dieses Flag nach dem Erstellen Ihrer Diagramme auf „false“ setzen, können Sie unbeabsichtigtes Schreiben von Dateien auf das falsche Laufwerk verhindern.

Lesemodus für Datensatzblöcke

Beim Start wird jede Farm die Leistung jedes einzelnen Grundstücks benchmarkieren, um die effizienteste Prüfmethode zu ermitteln, die entweder ConcurrentChunks- oder WholeSector-Ergebnisse liefert. Wenn Sie die optimale Methode für Ihr Setup bereits kennen, können Sie sie als Argument für jede Farm angeben, um beim Benchmarking Zeit zu sparen. Beispielsweise können Sie „record-chunks-mode=“ einschließen, nachdem Sie den Pfad und die Größe definiert und den gewünschten Wert zugewiesen haben, z. B. „path=/mnt/subspace1,size=100G,record-chunks-mode=ConcurrentChunks“. Wenn Sie diesen Parameter nicht angeben, führt das System beim Start einen Benchmarking-Test für jede Festplatte durch, um die effizienteste Methode zu ermitteln.

Benchmarking für Ihren Farmer

Durch Benchmarking können Sie die Plotgeschwindigkeit Ihres Farmers mit verschiedenen Versionen des Autonomys Network vergleichen.

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

Ersetzen Sie /Pfad/zu/Ihrem/Plot durch den tatsächlichen Pfad zu Ihrem Plot. Dadurch erhalten Sie Messwerte und Einblicke in die Plotleistung.

Derzeit unterstützt Autonomys Node den „Rayon“-Implementierungsmechanismus, der Dateien so oft öffnet, wie Farming-Threads vorhanden sind, und für jeden Thread einen dedizierten Datei-Handle verwendet.

To interpret the results: typically, you assess throughput to determine the maximum auditable size across any number of disks. Sowohl die CPU- als auch die Festplattenleistung beeinflussen diese Metrik.

Um mehr über Audit-Benchmarking zu erfahren, lesen Sie diesen Forenbeitrag.

Dazu steht Ihnen ein zweiter Befehl zur Verfügung, mit dessen Hilfe Sie ermitteln können, wie viel Zeit Ihrem Landwirt nach der Prüfung für die Erbringung der Nachweise bleibt.

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

Jedem Farmer stehen für die Prüfung und den Nachweis etwa 4 Sekunden zur Verfügung. Je nachdem, wie schnell die Prüfung erfolgt, wird die verbleibende Zeit für den Nachweis genutzt. Der Nachweis der Leistung hängt nicht von der Grundstücksgröße ab.

Wenn in einer Umgebung nicht genügend Zeit für den Prüfschritt zur Verfügung steht, wird vom Farmer eine Meldung wie diese protokolliert:

Der Nachweis der Lösung wurde aufgrund des Zeitlimits für die Landwirtschaft übersprungen slot=6723846 sector_index=46

Um mehr über Benchmarking zu erfahren, lesen Sie diesen Forenbeitrag.

Dein Farmer wird zerschlagen

In bestimmten Situationen, insbesondere wenn der Farmer unerwartet beendet wird oder ein Fehler auftritt, kann der Neustart möglicherweise nicht ordnungsgemäß durchgeführt werden. Der Zerschlagen-Befehl unterstützt bei der Lösung solcher Probleme, indem er das angegebene Diagramm bereinigt oder zurücksetzt.

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

Stellen Sie sicher, dass Sie /path/to/your/plot durch Ihren tatsächlichen Plot-Pfad ersetzen. Verwenden Sie diesen Befehl mit Vorsicht, da er den Plotstatus zur Behebung von Fehlern ändert.

Genaue Anzahl der CPU-Kerne zum Plotten/Neuplotten angeben (nur CPU)

Diese Option überschreibt jegliche benutzerdefinierte Logik, die der Subspace Farmer andernfalls verwenden könnte. Sie können die zu plottenden CPU-Kerne angeben, indem Sie „--cpu-plotting-cores“ hinzufügen, gefolgt von den gewünschten Kernparametern. Kerne sollten als durch Kommas getrennte Werte aufgelistet werden, wobei Leerzeichen verwendet werden, um verschiedene Thread-Pools oder Codierungsinstanzen zu trennen. Beispielsweise führt --cpu-plotting-cores 0,1 2,3 dazu, dass zwei Sektoren gleichzeitig codiert werden, wobei jeder ein Paar CPU-Kerne verwendet.

In ähnlicher Weise können Sie die neu zu plottenden CPU-Kerne mit „--cpu-replotting-cores“ anpassen, gefolgt von ähnlichen Argumenten wie im obigen Beispiel „--cpu-plotting-cores“.

Beachten Sie, dass die Einstellung „--cpu-plotting-cores“ erfordert, dass „--cpu-replotting-cores“ mit der gleichen Anzahl von CPU-Kerngruppen konfiguriert wird. Wenn die Einstellung „--cpu-replotting-cores“ weggelassen wird, verwendet der Knoten standardmäßig denselben Thread-Pool wie zum Plotten.

---

Zeitnehmer

Gemini-3g führt Proof-of-Time ein und dem Knoten wurde eine neue, optionale Rolle hinzugefügt. Zeitnehmer helfen beim Ausführen von PoT, um die Sicherheit des Netzwerks zu gewährleisten. Die Zeitmessung erfordert eine leistungsstarke Core-CPU, kann aber von jedem Node-Runner übernommen werden. Mit den folgenden Befehlen können Sie die Zeitmessung aktivieren.

  • --timekeeper: Um die Zeitmessung auf dem Knoten zu aktivieren
  • „--timekeeper-cpu-cores“: Um anzugeben, auf welchen Kernen der Timekeeper ausgeführt wird.

Lesen Sie mehr über Timekeepers


Häufige Befehlsbeispiele

Hier sind einige häufig verwendete Befehle sowohl für den Knoten als auch für den Farmer:

  • Farminformationen anzeigen: ./FARMER_FILE_NAME info PATH_TO_FARM
  • Suchen Sie in der Farm nach Fehlern: ./FARMER_FILE_NAME scrub PATH_TO_FARM
  • Alle mit dem Landwirt in Zusammenhang stehenden Daten löschen: ./FARMER_FILE_NAME wipe PATH_TO_FARM
  • Alle knotenbezogenen Daten löschen: ./NODE_FILE_NAME wipe NODE_DATA_PATH

---

NUMA-Unterstützung

note

Von der NUMA-Unterstützung profitieren Landwirte mit großen, leistungsstarken CPUs und viel verfügbarem RAM. Die erforderliche RAM-Menge hängt vom Prozessor und der Anzahl der Threads ab.\

Bisher wurden Plot-/Replot-Thread-Pools für jede Farm separat erstellt, obwohl immer nur eine konfigurierte Anzahl davon gleichzeitig verwendet werden kann (standardmäßig nur einer). Mit der Einführung der NUMA-Unterstützung verfügt die Farmer-Anwendung über einen Thread-Pool-Manager, der die erforderliche Anzahl an Thread-Pools erstellt, die den aktuell geplanten/neu geplanten Farmen zugewiesen werden. Wenn ein Thread-Pool erstellt wird, wird er einer Reihe von CPU-Kernen zugewiesen und kann nur diese Kerne verwenden. Pinning doesn’t pin threads to cores 1:1, instead, the OS is free to move threads between cores, but only within CPU cores allocated for the thread pool. This will ensure plotting for a particular sector only happens on a particular CPU/NUMA node.

Enabling NUMA on Windows/Linux machines

On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to the number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. To use NUMA, you need to enable it via the BIOS of your motherboard for the farmer to know it exists. This option is present in motherboards for Threadripper/Epyc processors but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations.

To read more about NUMA support and the benefits it provides for large CPUs read this forum post.

Changing number of open files limit (Linux)

Changing the number of open files limit on Linux is sometimes necessary for both system and application performance tuning. Applications that manage file sharing or distribution, including peer-to-peer systems, may require opening numerous connections to different peers simultaneously. A higher open files limit allows these applications to maintain more connections, improving data transfer rates and system efficiency.

This can also help to mitigate the Too Many Open Files error.

You can use the ulimit command to change the limit for open files temporarily. For example, setting ulimit -n 2048 will set the limit to 2048. This change is reverted after logging out or a reboot.

For a permanent change, you have two approaches:

  • To modify the kernel parameter fs.file-max. You can do this using the sysctl command sysctl -w fs.file-max=500000.
  • To set limits for individual users, you need to edit the /etc/security/limits.conf file. You can specify hard and soft limits for the number of open files username soft nofile 10000 for the soft limit and username hard nofile 30000 for the hard limit.