gfcptun: UDP를 통해 GFCP를 사용하는 빠르고 대기 시간이 짧은 연결 터널입니다.
gfcptun 프로세스당 65535개 이상의 파일 설명자를 사용 가능하게 만듭니다.
고속 로컬 링크에는 9000-9702의 MTU가 권장됩니다.
Linux UDP 처리를 위해 권장되는 최소 sysctl
조정 매개변수:
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
애플리케이션 → 외부(8765/TCP) → 인터넷 → 내부(4321/UDP) → 서버(8765/TCP)
-mode fast3 -ds 10 -ps 3
등 조정하려면 클라이언트의 -rcvwnd
와 서버의 -sndwnd
동시에 늘리십시오.
최소 창 크기는 최대 링크 처리량을 나타냅니다. ( 'Wnd' * ( 'MTU' / 'RTT' ) )
MTU는 -mtu 매개변수로 설정해야 하며 물리적 인터페이스의 MTU를 초과하면 안 됩니다. 점보 프레이밍이 포함된 DC/고속 로컬 링크의 경우 MTU 9000-9702를 사용하는 것이 좋습니다.
재전송 알고리즘 강도를 조정합니다.
fast3
→ fast2
→ fast
→ normal
→ default
-smuxbuf
16MiB(또는 그 이상)로 높이십시오. 그러나 사용할 실제 값은 링크 정체 및 사용 가능한 연속 시스템 메모리에 따라 달라집니다.
SMUXv2를 사용하여 스트림당 메모리 사용량을 제한할 수 있습니다. -smuxver 2
로 활성화한 다음 -streambuf
(바이트 단위 크기) 로 조정합니다.
-smuxver 2 -streambuf 8388608
(스트림당).링크 수신 측의 스트림 버퍼를 제한하여 튜닝을 시작합니다.
SMUXv2 구성은 협상되지 않으므로 GFCP 링크 양쪽 에서 수동으로 설정해야 합니다.
GOGC
런타임 환경 변수 조정 권장 사항:
저용량 메모리 시스템 및 임베디드 장치의 경우 10 - 20
전용 서버의 경우 120 - 150 (또는 그 이상)
(GF)SMUX(v1/v2) 튜닝 관련 참고 사항:
버퍼 풀 메커니즘은 주기적인 런타임 가비지 수집을 유지하기 위해 풀에서 이동 중인 개체에 대한 높은 워터마크를 유지합니다.
유휴 상태일 때 Go 런타임에 의해 메모리가 시스템에 반환됩니다. 이를 조정하는 데 사용할 수 있는 변수는 -sndwnd
, -rcvwnd
, -ds
및 -ps
입니다.
-smuxbuf
설정 및 GOMAXPROCS
변수를 사용하여 동시성 제한 과 전체 리소스 사용량 간의 균형을 조정할 수 있습니다.
-smuxbuf
늘리면 실제 동시성 제한이 증가합니다. 그러나 Go 런타임의 가비지 수집은 실제적인 목적으로 비결정적이기 때문에 -smuxbuf
값은 동시성 처리 최대값에 직선적으로 비례 하지 않습니다 .
경험적 테스트만이 실제 링크 조정 및 최적화에 필요한 피드백을 제공할 수 있습니다.
선택적 압축( Snappy 사용)이 지원됩니다.
압축은 중복된 낮은 엔트로피 데이터의 대역폭을 절약하지만 다른 모든 경우에는 오버헤드(및 CPU 사용량)를 증가시킵니다 .
압축은 기본적으로 활성화되어 있습니다. 비활성화하려면 -nocomp
사용하세요.
USR1
신호를 수신하면 자세한 링크 정보가 표시됩니다. -mode manual -nodelay 1 -interval 20 -resend 2 -nc 1