gfcptun: Ein schneller Verbindungstunnel mit geringer Latenz, der GFCP über UDP verwendet.
Stellen Sie 65535 oder mehr Dateideskriptoren pro gfcptun-Prozess zur Verfügung.
Für lokale Hochgeschwindigkeitsverbindungen wird eine MTU von 9000–9702 empfohlen.
Empfohlene minimale sysctl Optimierungsparameter für die Linux-UDP-Verarbeitung:
net.core.rmem_max=26214400 # Tune for BDP (bandwidth delay product)
net.core.rmem_default=26214400
net.core.wmem_max=26214400
net.core.wmem_default=26214400
net.core.netdev_max_backlog=2048 # (Adjust proportional to receive window) -sockbuf 16777217
client -r " IN:4321 " -l " :8765 " -mode fast3 -nocomp -autoexpire 900 -sockbuf 33554434 -dscp 46
server -t " OUT:8765 " -l " :4321 " -mode fast3 -nocomp -sockbuf 33554434 -dscp 46Anwendung → Aus (8765/TCP) → Internet → Ein (4321/UDP) → Server (8765/TCP)
-mode fast3 -ds 10 -ps 3 usw. Erhöhen Sie zum Optimieren gleichzeitig -rcvwnd auf dem Client und -sndwnd auf dem Server.
Die minimale Fenstergröße bestimmt den maximalen Verbindungsdurchsatz: ( 'Wnd' * ( 'MTU' / 'RTT' ) )
MTU sollte durch den Parameter -mtu festgelegt werden und niemals die MTU der physischen Schnittstelle überschreiten. Für lokale Gleichstrom-/Hochgeschwindigkeitsverbindungen mit Jumbo-Framing wird die Verwendung einer MTU von 9000–9702 dringend empfohlen.
Passen Sie die Aggressivität des Neuübertragungsalgorithmus an:
fast3 → fast2 → fast → normal → default Erhöhen Sie -smuxbuf auf 16 MB (oder mehr). Der tatsächlich zu verwendende Wert hängt jedoch von der Verbindungsüberlastung sowie dem verfügbaren zusammenhängenden Systemspeicher ab.
SMUXv2 kann verwendet werden, um die Speichernutzung pro Stream zu begrenzen. Aktivieren Sie mit -smuxver 2 und optimieren Sie dann mit -streambuf (Größe in Bytes) .
-smuxver 2 -streambuf 8388608 für einen 8-MiB-Puffer (pro Stream).Beginnen Sie mit der Optimierung, indem Sie den Stream-Puffer auf der Empfangsseite der Verbindung begrenzen.
Die SMUXv2-Konfiguration wird nicht ausgehandelt und muss daher auf beiden Seiten der GFCP-Verbindung manuell festgelegt werden.
Empfehlung zur Optimierung GOGC Laufzeitumgebungsvariablen:
10–20 für Systeme mit wenig Speicher und eingebettete Geräte
120–150 (oder höher ) für dedizierte Server
Hinweise zur (GF)SMUX(v1/v2)-Optimierung:
Der Pufferpool-Mechanismus hält eine hohe Wassermarke für In-Flight -Objekte aus dem Pool aufrecht, um die periodische Laufzeit-Garbage Collection zu überstehen.
Im Leerlauf wird von der Go-Laufzeit Speicher an das System zurückgegeben. Variablen, die zur Optimierung verwendet werden können, sind -sndwnd , -rcvwnd , -ds und -ps .
Die Einstellung -smuxbuf und die Variable GOMAXPROCS können verwendet werden, um das Gleichgewicht zwischen dem Parallelitätslimit und der Gesamtressourcennutzung abzustimmen.
Durch Erhöhen von -smuxbuf wird das praktische Parallelitätslimit erhöht. Der Wert -smuxbuf ist jedoch nicht linear proportional zum Maximum für die Parallelitätsverarbeitung, da die Garbage Collection der Go-Laufzeit aus praktischen Gründen nicht deterministisch ist.
Nur empirische Tests können das erforderliche Feedback für die Linkabstimmung und -optimierung in der Praxis liefern.
Optionale Komprimierung (mit Snappy ) wird unterstützt.
Die Komprimierung spart Bandbreite bei redundanten Daten mit geringer Entropie , erhöht jedoch in allen anderen Fällen den Overhead (und die CPU-Auslastung).
Die Komprimierung ist standardmäßig aktiviert : Verwenden Sie zum Deaktivieren -nocomp .
USR1 Signals werden detaillierte Linkinformationen angezeigt. -mode manual -nodelay 1 -interval 20 -resend 2 -nc 1