한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

คู่มือเกมแลค › L6 การ์ดเครือข่ายของเซิร์ฟเวอร์

ดีเลย์จากการรอรวมแพ็กเก็ตของ GRO/LRO GRO/LRO batching

ID สาเหตุ nic-offload · ผู้รับผิดชอบหลัก อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา)

เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →

เป็นฟีเจอร์ที่รวมหลายแพ็กเก็ตเป็นก้อนเดียวเพื่อลดภาระ CPU บางการตั้งค่าทำให้แพ็กเก็ตเกมขนาดเล็กต้องรอแพ็กเก็ตถัดไปที่จะรวมด้วยสักครู่

ทำไม NIC และเคอร์เนลรวมแพ็กเก็ตที่มาถึงแล้วประมวลผลพร้อมกัน → ผลคือ ถ้าเปิดการรวมในฮาร์ดแวร์ (LRO) หรือตั้งเวลารอรวมไว้ จะรอแพ็กเก็ตถัดไปสักครู่ → บนหน้าจอ ความหน่วงเพิ่มขึ้นเล็กน้อย (ส่วนใหญ่ไม่เกินหลายสิบ µs)

อาการ
อินพุตดีเลย์
ปัจจัย
ความหน่วง
ใครเจอ
ทั้งเซิร์ฟเวอร์
เกิดเมื่อไร
ตลอดเวลา
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา)
งานฝั่งทีมอินฟรา
ปรับให้เหมาะกับทราฟฟิกเกม (ปิด LRO, ตรวจการตั้งเวลารอรวม), ผลกระทบส่วนใหญ่น้อย จึงตรวจหลังสาเหตุอื่น
บนกราฟ
สูงตลอดตั้งแต่แรก · เวลาไปกลับภายในดาต้าเซ็นเตอร์เดียวกัน
จุดที่ต้องดู
ใช้ ethtool -k ดูสถานะ lro และ gro และดูค่า gro_flush_timeout ในการตั้งค่า sysfs ของอุปกรณ์ แล้วเทียบเวลาไปกลับของแพ็กเก็ตขนาดเล็กภายในดาต้าเซ็นเตอร์เดียวกันก่อนและหลังเปลี่ยน
สัญญาณว่าใช่
LRO เปิดอยู่ หรือ gro_flush_timeout มากกว่า 0 และเมื่อปิดหรือตั้งเป็น 0 เวลาไปกลับของแพ็กเก็ตขนาดเล็กลดลง
สัญญาณว่าไม่ใช่
ถ้าเปลี่ยนแล้วต่างกันแค่ไม่กี่ µs ก็ไม่ใช่สาเหตุนี้
วิธีตรวจ
ใช้เครื่องมือฝั่งอินฟรา (ไม่ต้องใช้โค้ดเกม)

แหล่งอ้างอิง

  1. NAPI Linux kernel
    ถ้าตั้ง gro_flush_timeout ไว้สูง จะได้การประมวลผลแบบรวมก้อน แต่เกิดความหน่วงเมื่อโหลดต่ำ
  2. Linux Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters (ixgbe) Linux kernel
    GRO คือฟีเจอร์ที่รวมทราฟฟิกขาเข้าเป็นก้อนใหญ่เพื่อประหยัด CPU และพัฒนาต่อมาจาก LRO
  3. ethtool(8) — Linux manual page ethtool
    การตั้งค่า gro และ lro on|off ของ ethtool -K

สาเหตุที่ควรดูประกอบ

ชั้นเดียวกัน: L6 การ์ดเครือข่ายของเซิร์ฟเวอร์

สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (อินพุตดีเลย์)

ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง