2012-06-21 13 views
7

हाल ही में, मैं कई वेबसाइटें पढ़ रहा हूं, और किताबें 10 जीबी/एस एनआईसी, उनके डीएमए और जिस तरह से डेटा लिनक्स कर्नेल द्वारा नियंत्रित किया जाता है (10/100 एमबी/एसआईसी) और कुछ सवाल मेरे दिमाग में आए।कर्नेल से उपयोगकर्ता स्थान (डीएमए)

एनआईसी से उपयोगकर्ता-भूमि में डेटा के 10 जीबी/एस प्रवाह को भेजने का सबसे आसान तरीका क्या होगा (मुझे लगता है कि उपयोगकर्ता दर में डेटा को उसी दर पर संसाधित करने में सक्षम होना चाहिए)।

और

आपको लगता है कि यह उपयोगकर्ता के अंतरिक्ष वहां से सीधे कच्चे डेटा को पढ़ने के लिए अंदर डीएमए बफर लागू करने के लिए एक अच्छा विचार होगा (और उन्हें एक ही दर पर स्पष्ट रूप से की प्रक्रिया)

करें या उनके किसी भी बेहतर समाधान के बारे में मैंने नहीं सोचा था:/

धन्यवाद।

उत्तर

6

लिनक्स के सामान्य सॉकेट का उपयोग करने के लिए सबसे आसान बात यह है। यह सबसे कुशल नहीं हो सकता है, लेकिन यह सबसे आसान है।

ढांचे हैं, जो उपयोगकर्ता स्थान में डेटा प्राप्त करने और संचारित करने के लिए बहुत कुशलतापूर्वक अनुमति देते हैं। वे एनआईसी (डीएमए) और प्रक्रिया में एक ही बफर को मैप करते हैं, इसलिए डेटा की प्रतिलिपि बनाने की आवश्यकता नहीं होती है।
ये ढांचे कर्नेल को पूरी तरह से बाईपास करते हैं - आपको सीधे एनआईसी के साथ बातचीत करना होगा। इस तरह की व्यवस्थाएं, उदाहरण के लिए, PF-RING और Netmap

+0

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

+2

Google वैन जैकबसन के नेटवर्क चैनलों के लिए भी सबसे तेज़ है। – ninjalj

+0

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

2

मैं भी PFQ फ्रेमवर्क (https://github.com/pfq/PFQ और http://netgroup.iet.unipi.it/software/pfq/) है, जो netmap और pf_ring अवधारणाओं के शीर्ष पर निर्माण पर एक नज़र लेने के लिए सुझाव देते हैं और उन्हें छुपाता सरल बहु अनुमति देने के लिए होगा रहे हैं उपयोगकर्ता अंतरिक्ष में कोर पैकेट प्रसंस्करण।

+0

मैं उसमें भी एक नज़र डालेगा, उत्तर के लिए धन्यवाद। फिलहाल मैंने पहले प्रस्तावित पीएफ_रिंग समाधान की जांच की थी। – noktec

0

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

मैं खोज की, लेकिन अभी सही कागज पता नहीं लगा सके ऑनलाइन, लेकिन शायद यह आप एक संकेत देता है ...

+0

उत्तर के लिए धन्यवाद, मैं उसमें देख लूंगा! – noktec

संबंधित मुद्दे