gfcptun: ช่องทางการเชื่อมต่อที่รวดเร็วและมีเวลาแฝงต่ำโดยใช้ GFCP บน UDP
จัดให้มีตัวอธิบายไฟล์ตั้งแต่ 65535 ขึ้นไปต่อกระบวนการ gfcptun
แนะนำให้ใช้ MTU 9000-9702 สำหรับลิงก์ท้องถิ่นความเร็วสูง
พารามิเตอร์การปรับแต่ง sysctl
ขั้นต่ำที่แนะนำสำหรับการจัดการ Linux UDP:
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
สำหรับบัฟเฟอร์ 8MiB (ต่อสตรีม)เริ่มจูนโดยการจำกัดบัฟเฟอร์สตรีมที่ด้าน รับ ของลิงก์
การกำหนดค่า SMUXv2 ไม่ได้รับการเจรจา ดังนั้นจะต้องตั้งค่าด้วยตนเอง ทั้งสอง ด้านของลิงก์ GFCP
คำแนะนำในการปรับแต่งตัวแปรสภาพแวดล้อมรันไทม์ GOGC
:
10 - 20 สำหรับระบบหน่วยความจำต่ำและอุปกรณ์ฝังตัว
120 - 150 (หรือสูงกว่า) สำหรับเซิร์ฟเวอร์เฉพาะ
หมายเหตุเกี่ยวกับการปรับแต่ง (GF)SMUX(v1/v2):
กลไกบัฟเฟอร์พูลรักษา ลายน้ำที่สูง สำหรับออบเจ็กต์ ในเที่ยวบิน จากพูลเพื่อให้สามารถรวบรวมขยะรันไทม์เป็นระยะๆ
หน่วยความจำจะถูกส่งกลับไปยังระบบโดยรันไทม์ Go เมื่อไม่ได้ใช้งาน ตัวแปรที่สามารถใช้สำหรับการปรับแต่งนี้คือ -sndwnd
, -rcvwnd
, -ds
และ -ps
ค่าติดตั้ง -smuxbuf
และตัวแปร GOMAXPROCS
สามารถใช้เพื่อปรับสมดุลระหว่าง ขีดจำกัดการทำงานพร้อมกัน และ การใช้รีซอร์ส โดยรวม
การเพิ่ม -smuxbuf
จะเพิ่มขีดจำกัดการทำงานพร้อมกันในทางปฏิบัติ อย่างไรก็ตาม ค่า -smuxbuf
ไม่ ได้สัดส่วนเชิงเส้นตรงกับการจัดการการทำงานพร้อมกันสูงสุด เนื่องจากการรวบรวมขยะของ Go runtime นั้นไม่ได้ถูกกำหนดไว้สำหรับวัตถุประสงค์ในทางปฏิบัติ
มีเพียงการทดสอบเชิงประจักษ์เท่านั้นที่สามารถให้ข้อเสนอแนะที่จำเป็นสำหรับการปรับแต่งและเพิ่มประสิทธิภาพลิงก์ในโลกแห่งความเป็นจริง
รองรับการบีบอัดเพิ่มเติม (โดยใช้ Snappy )
การบีบอัดจะช่วยประหยัดแบนด์วิธในข้อมูล เอนโทรปีที่ซ้ำซ้อนและต่ำ แต่ จะ เพิ่ม โอเวอร์เฮด (และการใช้งาน CPU) ในกรณีอื่นๆ ทั้งหมด
การบีบอัด ถูกเปิดใช้งานตามค่าเริ่มต้น : ใช้ -nocomp
เพื่อปิดใช้งาน
USR1
ข้อมูลลิงก์โดยละเอียดจะปรากฏขึ้น -mode manual -nodelay 1 -interval 20 -resend 2 -nc 1