มีใครบ้างที่มีข้อมูลหรือการคำนวณขั้นพื้นฐานที่สามารถตอบได้เมื่อต้องการการรวมเฟรม (NAPI) และเมื่อการขัดจังหวะครั้งเดียวต่อเฟรมเพียงพอหรือไม่
ฮาร์ดแวร์ของฉัน: IBM BladeServer HS22, ฮาร์ดแวร์ Broadcom 5709 Gigabit NIC (MSI-X) พร้อมโปรเซสเซอร์ Dual-Core Xeon E5530 วัตถุประสงค์หลักคือ Squid proxy server Switch เป็นชุด Cisco 6500 ที่ดี
ปัญหาพื้นฐานของเราคือช่วงเวลาสูงสุด (ปริมาณการเข้าชม 100 Mbps เพียง 10,000 pps) ที่เวลาแฝงและการสูญเสียแพ็กเก็ตเพิ่มขึ้น ฉันทำการปรับแต่งและอัพเกรดเคอร์เนลเป็น 2.6.38 มากและปรับปรุงการสูญหายของแพ็คเก็ต แต่เวลาแฝงยังไม่ดีพอ ส่ง Ping เป็นระยะ ๆ กระโดดได้สูงถึง 200ms บน LAN Gbps ท้องถิ่น การตอบกลับโดยเฉลี่ยของปลาหมึกกระโดดจาก 30ms เป็น 500 + ms แม้ว่าการโหลด CPU / หน่วยความจำดี
ขัดจังหวะการปีนขึ้นไปประมาณ 15,000 / วินาทีในช่วงสูงสุด Ksoftirqd ไม่ค่อยได้ใช้ CPU มากนัก ฉันได้ติดตั้ง irqbalance เพื่อรักษาความสมดุลของ IRQ (8 แต่ละตัวสำหรับ eth0 และ eth1) ในทุกคอร์ แต่ก็ไม่ได้ช่วยอะไรมาก
ดูเหมือนว่า Intel NIC จะไม่เคยมีปัญหาแบบนี้ แต่ด้วยความจริงของระบบเบลดและฮาร์ดแวร์การกำหนดค่าคงที่เราก็ติดอยู่กับ Broadcom
ทุกอย่างชี้ไปที่ NIC ว่าเป็นผู้ร้ายหลัก ความคิดที่ดีที่สุดที่ฉันมีตอนนี้คือพยายามลดการขัดจังหวะโดยรักษาทั้งเวลาแฝงต่ำและปริมาณงานสูง
น่าเสียดายที่ bnx2 ไม่รองรับ adaptive-rx หรือ tx
Napi VS Adaptive Interruptsคำตอบกระทู้ให้มุมมองในช่วงที่ดีของการดูแลขัดจังหวะ แต่ไม่มีข้อมูลที่เป็นรูปธรรมเกี่ยวกับวิธีการคำนวณที่เหมาะสม ethtool รวมกันการตั้งค่าสำหรับการแก้ปัญหาให้ มีวิธีที่ดีกว่าแล้วเพียงลองผิดลองถูก?
ภาระงานและการกำหนดค่าฮาร์ดแวร์ดังกล่าวข้างต้นจำเป็นต้องใช้ NAPI หรือไม่ หรือควรจะสามารถอยู่บนอินเตอร์รัปต์เดียวต่อแพ็คเก็ตได้หรือไม่