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 46
Anwendung → 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