निम्नलिखित सही है?विघटन पैटर्न का उपयोग कब और जब काम के साथ स्थानीय भंडारण चोरी?
- disruptor pattern के बाद से है कि विवाद के बिना एक से अधिक उपभोक्ताओं का उपयोग कर parallelized किया जा सकता है, अगर प्रत्येक प्रविष्टि कई मायनों में संसाधित करने के लिए (संचालन या एनोटेशन कब) है बेहतर समानांतर प्रदर्शन और scalability है।
- इसके विपरीत, work stealing (यानी प्रविष्टियों स्थानीय रूप से भंडारण और अन्य धागे से प्रविष्टियां चोरी) यदि प्रत्येक प्रविष्टि, केवल एक ही तरह से संसाधित करने के लिए disjointly disruptor में एक से अधिक थ्रेड पर प्रविष्टियों वितरण के बाद से है बेहतर समानांतर प्रदर्शन और scalability है पैटर्न विवाद का कारण बनता है।
मेरे (और disruptor पैटर्न अभी भी इतना अन्य लॉकसेल बहु निर्माता बहु उपभोक्ता कतार की तुलना में तेजी (जैसे from boost) जब कई उत्पादकों (यानी CAS operations) शामिल कर रहे हैं? है) विस्तार में स्थिति:
, एक प्रवेश कई नए प्रविष्टियों, जो अंततः संसाधित किया जाना चाहिए उत्पादन कर सकते हैं का संसाधन भी। प्रदर्शन की सर्वोच्च प्राथमिकता है, एफआईएफओ आदेश में संसाधित प्रविष्टियों की दूसरी प्राथमिकता है।
वर्तमान कार्यान्वयन में, प्रत्येक धागा एक स्थानीय फीफो, जहां उसे उसके नए प्रविष्टियों जोड़ता है। निष्क्रिय धागे अन्य धागे के स्थानीय फीफो से काम चुरा लेते हैं। थ्रेड की प्रसंस्करण के बीच निर्भरता को लॉकलेस, mechanically sympathetic हैश टेबल (बाल्टी ग्रैन्युलरिटी के साथ लिखने पर सीएएस) का उपयोग करके हल किया जाता है। इसका परिणाम बहुत कम विवाद में होता है लेकिन फीफो ऑर्डर कभी-कभी टूट जाता है।
विघटन पैटर्न का उपयोग करने से फीफो ऑर्डर की गारंटी होगी। लेकिन धागे पर प्रविष्टियों को वितरित नहीं करना काम के चोरी के साथ स्थानीय फीफो के मुकाबले ज्यादा उच्च विवाद (उदाहरण के लिए एक पाठ कर्सर पर सीएएस) का कारण बनता है (प्रत्येक थ्रेड का थ्रूपुट उसी के बारे में है)?
संदर्भ मैं the standard technical paper on the disruptor (अध्याय 5 + 6) में
प्रदर्शन परीक्षणों पाया है संबंध तोड़ना काम वितरण को कवर नहीं है।
https://groups.google.com/forum/?fromgroups=#!topic/lmax-disruptor/tt3wQthBYd0 केवल संदर्भ मैं disruptor + चोरी काम पर पाया गया है। यह बताता है कि यदि कोई साझा राज्य है तो प्रति थ्रेड कतार नाटकीय रूप से धीमी है, लेकिन विस्तार से नहीं जाती है या क्यों समझाती है। मुझे संदेह है कि यह वाक्य मेरी स्थिति पर लागू होता है:
- साझा स्थिति को लॉकलेस हैश तालिका के साथ हल किया जा रहा है;
- उपभोक्ताओं के बीच विवादों को विचलित रूप से वितरित करना;
- कार्य चोरी के अलावा, प्रत्येक धागा केवल अपनी स्थानीय कतार में पढ़ता है और लिखता है।
अपने जवाब के लिए धन्यवाद। कुछ प्रतिमान ध्वनि के आधार पर एक भेद बनाओ, दुर्भाग्य से मुझे नहीं पता कि संदेश फोकस बनाम कार्य फोकस का अंतर क्या है। एक उपभोक्ता उनके हैश मान के साथ में (एकाधिक) disruptor (रों) प्रविष्टियों annotates, एक और उपभोक्ता एक ध्वज है कि क्या वे में किया गया है के साथ स्थानीय हैश तालिका में उन्हें डालता है और annotates प्रविष्टियों: – DaveFar
मैं disruptors के साथ मेरी समस्या का समाधान डिजाइन किया हैश टेबल पहले से ही है। यह समाधान तेजी से हो सकता है, लेकिन लॉकलेस हैश तालिका के रूप में धागे की संख्या में रैखिक रूप से स्केल नहीं करता है।एक और विघटनकर्ता, सभी नव निर्मित वस्तुओं के लिए एफआईएफओ को लागू करने के लिए कई उत्पादक हैं, इसलिए मुझे यकीन नहीं है कि कोई विघटनकर्ता कार्यान्वयन के इस हिस्से में सुधार करता है या नहीं। – DaveFar
बीटीडब्ल्यू, मेरे कार्य निश्चित रूप से विभिन्न अवधि के हैं, लेकिन संदेश प्रसंस्करण का क्रम कुछ हद तक महत्वपूर्ण है ... – DaveFar