2012-11-20 5 views
12

मैं प्रलेखन समझने के लिए जब यह समझ में आता है + A एन स्विच के माध्यम से async-थ्रेड पूल का आकार बढ़ाने की कोशिश कर पढ रहा हूं।शून्य से async-thread आकार को बढ़ाने के लिए उचित कब है?

मैं बेंचमार्क के लिए पूरी तरह से तैयार हूं, लेकिन मैं सोच रहा था कि अगर किसी को संदेह होना चाहिए कि पूल आकार को 0 से एन (या एन से एन + एम) में बढ़ाना उपयोगी होगा ।

धन्यवाद

उत्तर

18

बीम विशेष सूत्र यह शेड्यूलर कॉल में Erlang कोड चलाता है। डिफ़ॉल्ट रूप से यह आपके प्रोसेसर में प्रत्येक कोर के लिए शेड्यूलर शुरू करेगा। इसे नियंत्रित और समय शुरू किया जा सकता है, उदाहरण के लिए यदि आप सभी कोरों पर एरलांग नहीं चलाना चाहते हैं लेकिन कुछ चीजों के लिए कुछ "आरक्षित" करना चाहते हैं। आम तौर पर जब आप फ़ाइल I/O ऑपरेशन करते हैं तो यह शेड्यूलर में चलाया जाता है और फ़ाइल I/O ऑपरेशंस अपेक्षाकृत धीमी होती है क्योंकि वे चलने के दौरान उस शेड्यूलर को अवरुद्ध कर देंगे। जो वास्तविक समय गुणों को प्रभावित कर सकता है। आम तौर पर आप इतना अधिक फ़ाइल I/O नहीं करते हैं, इसलिए यह कोई समस्या नहीं है।

एसिंक्रोनस थ्रेड पूल ओएस थ्रेड हैं जिनका उपयोग I/O संचालन के लिए किया जाता है। आम तौर पर पूल खाली है, लेकिन यदि आप स्टार्टअप समय में +A का उपयोग तो बीम इस पूल के लिए अतिरिक्त धागे का निर्माण करेगा। इन धागे का उपयोग केवल फ़ाइल I/O संचालन के लिए किया जाएगा जिसका अर्थ है कि शेड्यूलर थ्रेड अब फ़ाइल I/O के लिए प्रतीक्षा अवरुद्ध नहीं होंगे और वास्तविक समय गुणों में सुधार होगा। बेशक यह लागत ओएस धागे मुक्त नहीं है। धागे मिश्रण नहीं करते हैं इसलिए शेड्यूलर थ्रेड केवल शेड्यूलर थ्रेड हैं और एसिंक थ्रेड केवल एसिंक थ्रेड हैं।

यदि आप पोर्ट्स के लिए लिंक-इन ड्राइवर लिख रहे हैं तो ये एसिंक थ्रेड पूल का भी उपयोग कर सकते हैं। लेकिन आपको यह पता लगाना होगा कि वे खुद को कब शुरू कर चुके हैं।

कितने आप की जरूरत बहुत ज्यादा आपके आवेदन पर निर्भर है। डिफ़ॉल्ट रूप से कोई भी शुरू नहीं किया गया है। @ डेमेशचुक की तरह मैंने यह भी सुना है कि रीक को एक बड़ी एसिंक थ्रेड पूल पसंद है क्योंकि वे कई फाइलें खोलते हैं। मेरी एकमात्र सलाह है कि इसे आज़माएं और मापें। सभी अनुकूलन के साथ?

3

डिफ़ॉल्ट रूप से, चल Erlang वीएम में धागे की संख्या प्रोसेसर लॉजिकल कोर की संख्या के बराबर (यदि आप, SMP उपयोग कर रहे हैं निश्चित रूप से) है।

मेरे अनुभव से, बढ़ रही है एक पैरामीटर + कुछ प्रदर्शन में सुधार जब आप कई एक साथ फ़ाइल मैं/हे संचालन कर रहे हैं दे सकता है। और मुझे संदेह है कि + ए बढ़ने से समग्र प्रक्रिया प्रदर्शन बढ़ सकता है, क्योंकि बीईएएम का शेड्यूलर बेहद तेज़ और अनुकूलित है।

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

अंत में, मेरा मानना ​​है कि मैं एक सौ से एक और अधिक + कभी नहीं देखा। इसका मतलब यह नहीं है कि आप इसे सेट नहीं कर सकते हैं, लेकिन इसमें कोई बिंदु नहीं है।

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