मल्टीकोर मशीनों पर बहुप्रचारित अनुप्रयोग स्केलिंग

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

लोग किस संसाधन की सिफारिश करेंगे?

अब तक मुझे सटर के कॉलम डॉ। डॉब्स को अच्छी शुरूआत मिली है। मुझे इंटेल थ्रेडिंग बिल्डिंग ब्लॉक पर द आर्ट ऑफ मल्टीप्रोसेसर प्रोग्रामिंग और ओ'रेली पुस्तक मिली है

0
ro fr bn

8 उत्तर

यदि आप बहुत मेमोरी आवंटन कर रहे हैं तो होर्ड पर एक नज़र डालें।

अपने स्वयं के लॉक फ्री लिस्ट को रोल करें। एक अच्छा संसाधन यहां है - यह सी # में है लेकिन विचार पोर्टेबल हैं। एक बार जब आप काम करते हैं तो वे अन्य स्थानों को देखना शुरू कर देते हैं जहां उनका उपयोग किया जा सकता है न केवल सूचियों में।

0
जोड़ा

चूंकि मॉन्टी पायथन "और अब कुछ पूरी तरह से अलग" कहेंगे - आप एक भाषा / पर्यावरण की कोशिश कर सकते हैं जो थ्रेड का उपयोग नहीं करता है, लेकिन प्रक्रियाओं और संदेश (कोई साझा स्थिति नहीं)। सबसे परिपक्व लोगों में से एक erlang है (और यह उत्कृष्ट और मजेदार पुस्तक: http: // www.pragprog.com/titles/jaerlang/programming-erlang )। आपकी परिस्थितियों के लिए बिल्कुल प्रासंगिक नहीं हो सकता है, लेकिन आप अभी भी कई विचारों को सीख सकते हैं जिन्हें आप अन्य उपकरणों में लागू करने में सक्षम हो सकते हैं।

अन्य वातावरण के लिए:

.NET में F # (कार्यात्मक प्रोग्रामिंग सीखने के लिए) है। जेवीएम में स्कैला है (जिसमें अभिनेता हैं, एर्लांग की तरह बहुत अधिक हैं, और कार्यात्मक हाइब्रिड भाषा है)। जावा के लिए डौग ली से "फोर्क जॉइन" फ्रेमवर्क भी है जो आपके लिए बहुत मेहनत करता है।

0
जोड़ा

फ्रीबीएसडी में आवंटक को हाल ही में फ्रीबीएसडी 7 के लिए एक अपडेट मिला है। नए को कहा जाता है। jemaloc और कई धागे के संबंध में स्पष्ट रूप से अधिक पैमाने पर है।

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

0
जोड़ा

मुझे होर्ड, Google परफ्टोल्स और जेमलोक को कभी-कभी चेक-आउट करना होगा। अभी के लिए हम इंटेल थ्रेडिंग बिल्डिंग ब्लॉक से scalable_malloc का उपयोग कर रहे हैं और यह काफी अच्छा प्रदर्शन करता है।

बेहतर या बदतर के लिए, हम विंडोज़ पर सी ++ का उपयोग कर रहे हैं, हालांकि हमारा अधिकांश कोड जीसीसी के साथ ठीक से संकलित होगा। जब तक redhat (मुख्य लिनक्स डिस्ट्रो हम उपयोग करते हैं) में जाने के लिए एक अनिवार्य कारण नहीं है, मुझे संदेह है कि यह सिरदर्द / राजनीतिक परेशानी को स्थानांतरित करने के लायक है।

मुझे एरलांग का उपयोग करना अच्छा लगेगा, लेकिन अब इसे फिर से करने के लिए यहां बहुत कुछ है। यदि हम एक दूरबीन सेटिंग में एरलांग के विकास के आसपास की आवश्यकताओं के बारे में सोचते हैं, तो यह हमारी दुनिया (इलेक्ट्रॉनिक व्यापार) के समान ही है। आर्मस्ट्रांग की किताब मेरे पढ़ने के लिए है :)

4 कोर से 16 कोर तक स्केल करने के लिए मेरे परीक्षण में मैंने कोड के समानांतर हिस्से में किसी भी लॉकिंग / विवाद की लागत की सराहना करना सीखा है। सौभाग्य से हमारे पास एक बड़ा हिस्सा है जो डेटा के साथ स्केल करता है, लेकिन यहां तक ​​कि यह अतिरिक्त लॉक और मेमोरी आवंटक के कारण पहले भी काम नहीं करता था।

0
जोड़ा

जेफरी रिक्टर बहुत थ्रेडिंग में है। उनकी किताबों में थ्रेडिंग पर उनके कुछ अध्याय हैं और उनके ब्लॉग की जांच करें:

http://www.wintellect.com/cs/blogs/jeffreyr/default.aspx.

0
जोड़ा

सहायक होने जा रहे कुछ अन्य पुस्तकें हैं:

साथ ही, समवर्ती प्रक्रियाओं के बीच साझा करने वाले राज्य पर कम निर्भर होने पर विचार करें। यदि आप इससे बच सकते हैं तो आप बहुत अधिक स्केल करेंगे क्योंकि आप उनके बीच अधिक सिंक्रनाइज़ेशन किए बिना काम की स्वतंत्र इकाइयों को पार्सल कर पाएंगे।

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

0
जोड़ा

मैं एक समवर्ती लिंक ब्लॉग बनाए रखता हूं जो कि जारी ब्याज का हो सकता है:

http://concurrency.tumblr.com

0
जोड़ा

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

0
जोड़ा