क्या किसी के पास कुछ डेटा या बुनियादी गणनाएं हैं जो जवाब दे सकती हैं कि फ्रेम कोलेसिंग (एनएपीआई) की आवश्यकता कब होती है और जब प्रति फ्रेम एक एकल अवरोध पर्याप्त होता है?
मेरा हार्डवेयर: दोहरे ब्लेड ई 5530 क्वाड-कोर प्रोसेसर के साथ आईबीएम ब्लेडसर्वर एचएस 22, ब्रॉडकॉम 5709 गीगाबिट एनआईसी हार्डवेयर (एमएसआई-एक्स)। मुख्य उद्देश्य स्क्वीड प्रॉक्सी सर्वर है। स्विच एक अच्छा सिस्को 6500 श्रृंखला है।
हमारी मूल समस्या यह है कि पीक समय (100 एमबीपीएस ट्रैफ़िक, केवल 10,000 पीपीएस) के दौरान विलंबता और पैकेट हानि बढ़ जाती है। मैंने 2.6.38 में बहुत सारे ट्यूनिंग और कर्नेल अपग्रेड किए हैं और इसने पैकेट के नुकसान में सुधार किया है लेकिन विलंबता अभी भी खराब है। पिंग छिटपुट हैं; स्थानीय Gbps LAN पर 200ms तक भी कूदना। सीपीयू / मेमोरी लोड ठीक होने के बावजूद स्क्वीड औसत प्रतिक्रिया 30ms से 500 + ms तक उछल जाती है।
चोटी के दौरान लगभग 15,000 / सेकंड तक रुकावट आती है। Ksoftirqd ज्यादा CPU का उपयोग नहीं कर रहा है; मैंने सभी कोरों में IRQs (eth0 और eth1 के लिए 8 प्रत्येक) को संतुलित करने के लिए असमानता स्थापित की है लेकिन इससे मुझे बहुत मदद मिली है।
इंटेल एनआईसी को लगता है कि इस तरह की समस्याएं कभी नहीं होती हैं, लेकिन ब्लेडसिस्टम और फिक्स्ड कॉन्फ़िगरेशन हार्डवेयर के तथ्य को देखें, तो हम ब्रॉडकॉम के साथ फंस गए हैं।
सब कुछ मुख्य अपराधी के रूप में एनआईसी की ओर इशारा कर रहा है। मेरे पास अभी सबसे अच्छा विचार यह है कि विलंबता को कम और थ्रूपुट दोनों को ऊंचा रखते हुए इंटरप्ट को कम करने की कोशिश करें।
Bnx2 दुर्भाग्य से अनुकूली-आरएक्स या tx का समर्थन नहीं करता है।
NAPI बनाम अनुकूली अवरोध धागा जवाब बाधा मॉडरेशन का एक बड़ा से अधिक दृश्य लेकिन पर कोई ठोस जानकारी प्रदान करता है की गणना कैसे इष्टतम ethtool सम्मिलित दिया वैकल्पिक हल के लिए सेटिंग्स करने के लिए। क्या एक बेहतर दृष्टिकोण है तो बस परीक्षण और त्रुटि?
क्या उपर्युक्त कार्यभार और हार्डवेयर विन्यास को भी NAPI की आवश्यकता है? या यह प्रति पैकेट एकल रुकावट पर रहने में सक्षम होना चाहिए?