एनआईसी मतदान बनाम व्यवधान के लिए किस नेटवर्क लोड की आवश्यकता होती है?


18

क्या किसी के पास कुछ डेटा या बुनियादी गणनाएं हैं जो जवाब दे सकती हैं कि फ्रेम कोलेसिंग (एनएपीआई) की आवश्यकता कब होती है और जब प्रति फ्रेम एक एकल अवरोध पर्याप्त होता है?

मेरा हार्डवेयर: दोहरे ब्लेड ई 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 की आवश्यकता है? या यह प्रति पैकेट एकल रुकावट पर रहने में सक्षम होना चाहिए?


एक कठिन सवाल होना चाहिए ... इनाम के लिए धन्यवाद, @Holocryptic! मैंने कुछ "एथ्टूल-सी" सेटिंग की कोशिश की है, लेकिन अभी तक कोई उल्लेखनीय अंतर नहीं है।
विम केरखॉफ

कोई दिक्कत नहीं है। मैंने सिर्फ थोड़े दिनों के लिए इसे वहाँ देखा था और यह एक अच्छा सवाल लग रहा था। उम्मीद है कि किसी के पास आपके लिए कुछ हो।
Holocryptic

एक और अपडेट ... हम एमुलेक्स 10 जीपीएस एनआईसी के साथ आईबीएम एचएस 23 ब्लेड में चले गए हैं। इस सप्ताह हमने 800,000 से अधिक पैकेट / सेकंड, कोई बूँद नहीं ली। IRQ को संतुलित रूप से लोड करने के लिए हमें बहुत सारे ट्यूनिंग (लिनक्स कर्नेल ड्राइवरों को पैच करना) करना पड़ा, लेकिन अब यह बहुत ही काल्पनिक रूप से काम कर रहा है।
विम केरखॉफ

जवाबों:


6

महान सवाल है कि मुझे कुछ पढ़ने की कोशिश कर रहा था और यह पता लगाने के लिए। काश मैं कह सकता हूं कि मेरे पास एक उत्तर है ... लेकिन शायद कुछ संकेत हैं।

मैं कम से कम आपके प्रश्न का उत्तर दे सकता हूं, "क्या यह प्रति पैकेट एकल बाधा पर रहने में सक्षम होना चाहिए"। मुझे लगता है कि उत्तर हां है, बहुत व्यस्त फ़ायरवॉल पर आधारित है जिसकी मेरे पास पहुँच है:

सर उत्पादन:

03:04:53 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:04:54 PM        lo     93.00     93.00      6.12      6.12      0.00      0.00      0.00
03:04:54 PM      eth0 115263.00 134750.00  13280.63  41633.46      0.00      0.00      5.00
03:04:54 PM      eth8  70329.00  55480.00  20132.62   6314.51      0.00      0.00      0.00
03:04:54 PM      eth9  53907.00  66669.00   5820.42  21123.55      0.00      0.00      0.00
03:04:54 PM     eth10      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:54 PM     eth11      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:54 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:54 PM      eth2 146520.00 111904.00  45228.32  12251.48      0.00      0.00     10.00
03:04:54 PM      eth3    252.00  23446.00     21.34   4667.20      0.00      0.00      0.00
03:04:54 PM      eth4      8.00     10.00      0.68      0.76      0.00      0.00      0.00
03:04:54 PM      eth5      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:54 PM      eth6   3929.00   2088.00   1368.01    183.79      0.00      0.00      1.00
03:04:54 PM      eth7     13.00     17.00      1.42      1.19      0.00      0.00      0.00
03:04:54 PM     bond0 169170.00 201419.00  19101.04  62757.00      0.00      0.00      5.00
03:04:54 PM     bond1 216849.00 167384.00  65360.94  18565.99      0.00      0.00     10.00

जैसा कि आप देख सकते हैं, प्रति सेकंड की गिनती में कुछ बहुत ही उच्च पैकेट, और इस मशीन पर कोई विशेष एथलेटिक ट्विकिंग नहीं किया गया था। ओह ... इंटेल चिपसेट, हालांकि। : \

केवल एक चीज जो की गई थी, वह था प्रति मैनुअल आधार पर कुछ मैनुअल irq बैलेंसिंग विथ / proc / irq / XXX / smp_affinity। मुझे यकीन नहीं है कि उन्होंने असमानता के बजाय इस तरह से जाने का विकल्प क्यों चुना, लेकिन यह काम करने लगता है।

मैंने आपके प्रश्न का उत्तर देने के लिए आवश्यक गणित के बारे में भी सोचा, लेकिन मुझे लगता है कि बहुत सारे चर हैं। तो ... संक्षेप में, मेरी राय में, उत्तर नहीं है, मुझे नहीं लगता कि आप यहां परिणामों की भविष्यवाणी कर सकते हैं, लेकिन पर्याप्त डेटा कैप्चर के साथ आपको इसे बेहतर स्तर पर ट्विक करने में सक्षम होना चाहिए।

यह सब कहने के बाद, मुझे यह महसूस होता है कि आप किसी तरह हार्डवेयर-बाउंड हैं ... जैसे कि फर्मवेयर या किसी तरह का इंटरॉप बग।


यहाँ कुछ उपयोगी पृष्ठभूमि: alexonlinux.com/…
डिक्टेटरबाक

1
मैं मूल कथन "हां, समस्या नहीं होनी चाहिए" से सहमत हूं, लेकिन यह देखते हुए कि कैसे वे समस्याएं हैं यह एक फर्मवेयर या ड्राइवर समस्या है। मैंने अपने वर्कस्टेशन को बिल्कुल "ट्यून" नहीं किया है और यह 65kips को बिना किसी पसीने के खींच सकता है; 15kips एक आधुनिक सीपीयू के लिए कुछ भी नहीं होना चाहिए। मैं विशेष रूप से ब्रॉडकॉम एनआईसी का उपयोग करता हूं, 5709 अब तक का सबसे आम है। यह परीक्षण लिनक्स पर नहीं बल्कि FreeBSD पर चलाया गया था।
क्रिस एस

विचारों के लिए धन्यवाद। मैंने असमानता की कोशिश की लेकिन कोई अंतर नहीं देखा। मैं और अधिक मोटे सेटिंग्स (ethtool -c) के साथ खेला, लेकिन कोई अंतर नहीं देखा। ब्लेड में से एक वास्तव में लोड बैलेंसर है, जो कि 120,000 पैकेट / सेकंड तक है। मैंने देखा कि यदि NAT और कॉनट्रैक iptables लोड किए जाते हैं तो ksoftirqd CPU उपयोग 100% हो जाता है। उन मॉड्यूलों को लोड करें और ड्रॉप डाउन करें। 0. स्क्वीड सर्वर (अधिकतम 10,000 पैकेट / सेकंड) पर, मैंने 17,000 (!!!) iptables नियमों को फ्लश कर दिया और तुरंत विलंबता कम हो गई। मुझे लगा कि मैंने पहले भी कोशिश की थी, लेकिन जाहिर तौर पर नहीं ...
विम केरखॉफ

3

निश्चित रूप से सीपीयू, चिपसेट और बस क्षमताओं को देखते हुए इतनी कम मात्रा में यातायात की तुलना में आपके पास कोई कारण नहीं है जो आपके लिए किसी भी प्रकार के व्यवधान प्रबंधन की आवश्यकता है। हमारे पास 10Gbps NIC के साथ कई RHEL 5.3 64-बिट मशीनें हैं और उनका इंटरप्ट बहुत बुरा नहीं है, यह 100% कम है।

स्पष्ट रूप से आपके पास एक निश्चित कॉन्फ़िगरेशन है (मैं एचपी के ब्लेड का उपयोग करता हूं जो बहुत समान हैं) इसलिए इन्टेल के लिए एनआईसीएस को स्वैप करना अब एक आसान विकल्प है लेकिन मैं क्या कहूंगा कि मैं इस मंच और अन्य जगहों पर इसी तरह की कई समस्याओं को हल करना शुरू कर रहा हूं। उस विशेष ब्रॉडकॉम एनआईसी के साथ। कभी-कभी एसई साइटों को स्वयं इस तरह की असंगति और इंटेल एनआईसी को स्वैपिंग के साथ कुछ समस्याएं थीं, बिल्कुल मदद की।

मैं जो सलाह देता हूं, वह एक ही ब्लेड उठा रहा है और उस एक मशीन में एक इंटेल आधारित एडेप्टर जोड़ रहा है, आपको स्पष्ट रूप से एक इंटरकनेक्ट जोड़ना होगा या जो भी आईबीएम उन्हें संकेत प्राप्त करने के लिए कॉल करेगा, लेकिन उसी सॉफ्टवेयर सेटअप का प्रयास करें लेकिन इस अन्य के साथ एनआईसी (शायद आप ब्रॉडकॉम को अक्षम कर सकते हैं)। यह परीक्षण करें और देखें कि आप कैसे प्राप्त करते हैं, मुझे पता है कि मैंने जो वर्णन किया है, उसके लिए अतिरिक्त हार्डवेयर के कुछ बिट्स की आवश्यकता है, लेकिन मुझे लगता है कि आपका आईबीएम प्रतिनिधि खुशी-खुशी आपके लिए ऋण देगा। यह सुनिश्चित करने का एकमात्र तरीका है। कृपया हमें बताएं कि आपको क्या पता है, मैं वास्तव में दिलचस्पी ले रहा हूं अगर इन एनआईसी के साथ कोई समस्या है, भले ही यह एक अजीब बढ़त-मामला हो। एक तरफ के रूप में मैं इंटेल और ब्रॉडकॉम के साथ अगले सप्ताह बैठक कर रहा हूं ताकि पूरी तरह से असंबंधित कुछ पर चर्चा की जा सके, लेकिन मैं निश्चित रूप से उनके साथ इस पर चर्चा करूंगा और आपको बताऊंगा कि क्या मुझे कोई रुचि है।


1

व्यवधान के बारे में सवाल यह है कि वे समग्र प्रणाली के प्रदर्शन को कैसे प्रभावित करते हैं। व्यवधान उपयोगकर्ता और कर्नेल भूमि प्रसंस्करण को रोक सकता है और जब आप बहुत अधिक सीपीयू उपयोग नहीं देख सकते हैं, तो बहुत सारे संदर्भ स्विचिंग हो रहे हैं और यह एक बड़ा प्रदर्शन हिट है। आप कॉलम का उपयोग vmstatऔर जांच कर सकते हैं system, csइंटरप्ट और संदर्भ स्विच के लिए हेडर प्रति सेकंड (इंटरप्ट में घड़ी शामिल है ताकि आपको वजन कम करना पड़े), इसकी कीमत भी एक चेक है।


1

संक्षिप्त प्रत्यक्ष उत्तर:

यदि आप मतदान को सक्षम करते हैं, तो आप संदर्भ स्विच (सामान्य रूप से रुक-रुक कर) जो कुछ भी अब वे हैं (आपके मामले में 15kips) से पूर्व निर्धारित संख्या (आमतौर पर 1k से 2k) तक कम कर देंगे।

यदि आपके पास वर्तमान में पूर्व निर्धारित संख्या से अधिक ट्रैफ़िक है तो आपको मतदान को सक्षम करके बेहतर प्रतिक्रिया समय होना चाहिए। इसका उलटा भी सच है। मैं यह नहीं कहूंगा कि यह "आवश्यक" है जब तक कि संदर्भ स्विच प्रदर्शन को प्रभावित नहीं कर रहे हैं।


1

फॉलोअप करने के लिए: NAT और कॉनट्रैक मॉड्यूल्स के साथ अनलोडेड प्लस मिनिमम iptables रूसेट, हमें बहुत अच्छा परफॉर्मेंस मिलता है। IPVS लोड बैलेंसर ने 900 एमबीपीएस / 150 kpps से अधिक का काम किया है। यह अभी भी उसी ब्रॉडकॉम bnx2 चिपसेट का उपयोग कर रहा है।

इसलिए निष्कर्ष निकालना: 2.6.38 / 3.0.x कर्नेल के साथ डेबियन के लिए इंटरप्ट हैंडलिंग ठीक है और डिफॉल्ट लगता है।

निश्चित रूप से मैं इंटेल एनआईसी का उपयोग करना पसंद करूंगा ताकि हम मानक डेबियन पैकेज का उपयोग कर सकें। नॉन-फ्री bnx2 फर्मवेयर से लड़ना समय की भारी बर्बादी है।


बस एक और अपडेट। हाल ही में प्रदर्शन बिना किसी स्पष्ट कारण के फिर से अपमानजनक था। हमने बिना किसी सफलता के पिछली सभी आशाओं की समीक्षा की। इंटेल एनआईसी अभी भी एक किफायती विकल्प नहीं है ($ 30- $ 40,000 नए इंटरकनेक्ट में निवेश, 10 जीबी स्विच, आदि)। लेकिन, हम कुछ नए नए IBM HS22 ब्लेड्स का उपयोग करते हैं जो अभी भी भद्दे bnx2 का उपयोग करते हैं, लेकिन नए फर्मवेयर के साथ। प्रदर्शन बहुत बेहतर है - हमने 150,000 पैकेट / सेकंड बैरियर को तोड़ दिया।
विम केरखॉफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.