2012-08-25 22 views
6

क्या किसी ने यह पता लगाया है कि जावा में कर्नेल बाईपास कैसे करें? कहीं भी कोई हैलो दुनिया या यह रॉकेट विज्ञान है?जावा में कर्नेल बाईपास के साथ नेटवर्किंग

+11

जो लोग इसे बंद करते हैं वे नेटवर्किंग के बारे में अनजान हैं। अच्छा काम किया दोस्तों! – chrisapotek

+0

इस सवाल का एक अच्छा कारण है। कर्नेल हमें उपयोगकर्ता एपीआई के समान पैकेट थ्रूपुट नहीं देता है। मैं ईमानदारी से इस बारे में @ मकोटो, जॉन पामर, डॉन रॉबी, रीने, बेन से अपील करता हूं। –

उत्तर

1

"जावा शून्य-कॉपी बफर" या "जावा एनआईओ" या "जावा नेटटी" के लिए खोजें।

यहां Netty और शून्य प्रतिलिपि के बारे में एक स्लाइड शो है: http://www.slideshare.net/danbim/zerocopy-eventdriven-servers-with-netty। नेटटी के साथ एक उदाहरण परियोजना यहां दी गई है।

या आप निचले स्तर जाने के लिए और java.nio.channels वर्गों, जो आप पढ़ सकते हैं के बारे में यहाँ http://www.ibm.com/developerworks/linux/library/j-zerocopy/

+0

यह अच्छी जानकारी ईएसनिफ है। मैं जावा एनआईओ का उपयोग कर रहा हूं लेकिन यह कर्नेल को बाईपास नहीं करता है। – chrisapotek

+0

मैंने वर्षों में जावा में प्रोग्राम नहीं किया है, इसलिए मुझे यकीन नहीं है कि उत्तर अब कितना प्रासंगिक है। लेकिन हाल ही में डाउनवॉट क्यों? – eSniff

5

आप Solarflare का उपयोग कर रहे हैं, तो आप अपने एपीआई का उपयोग कर सकते हैं गिरी बाईपास करने के लिए (मैं इसे सीधे उपयोग नहीं कर रहा उपयोग कर सकते हैं, इसलिए अधिक जानकारी प्रदान नहीं कर सकते हैं)। आप 2 9 वेस्ट एलबीएम या आईबीएम एलएलएम जैसे मैसेजिंग ब्रॉडक्ट का भी उपयोग कर सकते हैं जो विभिन्न हार्डवेयर पर समृद्ध कार्यक्षमता का समर्थन करता है।

जैसा कि @eSniff का उल्लेख है, जेआरई में transferFrom()/transferTo() एपीआई है जिसका उपयोग अभी sendfile(2) को समर्थन देने वाले सिस्टम के बराबर करने के लिए किया जाता है। एपीआई के अर्थशास्त्र को परिभाषित किया गया है ताकि इसे किसी भी 2 चैनलों के बीच डीएमए स्थानान्तरण का समर्थन करने के लिए पारदर्शी रूप से कार्यान्वित किया जा सके।

+0

अरे, लेकिन स्थानांतरण से स्थानांतरण और स्थानांतरण फ़ाइलChannel के साथ करना है! मैं यहां नेटवर्किंग के लिए सॉकेट चैनेल और डेटाग्राम चैनेल के बारे में बात कर रहा हूं :( – chrisapotek

+0

@chrisapotek एक सॉकेट चैनल एक लिखने योग्य चैटेनल और एक पठनीयबेट चैनल है, इसलिए .... कुछ FileChannel.transferFrom (someSocketChannel, pos, count)/someFileChannel.transferTo (pos, count, someSocketChannel) मैंने केवल नेटी रैपर का उपयोग किया है, लेकिन यह काम करना चाहिए। – eSniff

+1

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