मेरे पास इन्फिनिबैंड नेटवर्क से जुड़े कुछ मल्टी-कोर कंप्यूटर हैं। मैं रिमोट परमाणु संचालन के साथ साझा स्मृति के पूल पर कुछ कम विलंबता गणना करना चाहता हूं। मुझे पता है कि आरडीएमए जाने का रास्ता है। प्रत्येक नोड पर मैं डेटा साझा करने के लिए एक मेमोरी क्षेत्र (और सुरक्षा डोमेन) पंजीकृत करूंगा।आरडीएमए मेमोरी शेयरिंग
ऑनलाइन आरडीएमए उदाहरण अक्सर एकल-थ्रेडेड सर्वर और एकल-थ्रेडेड क्लाइंट के बीच एक कनेक्शन पर ध्यान केंद्रित करते हैं। अब मैं प्रत्येक इंफिनिबैंड नोड पर एक बहु थ्रेडेड प्रक्रिया करना चाहता हूं। मैं निम्नलिखित के बारे में बहुत हैरान हूँ ...
कितने कतार जोड़े मैं n नोड्स और कुल में मीटर धागे के एक समूह के लिए प्रत्येक नोड पर तैयार करना चाहिए? अधिक विशिष्ट होने के लिए, एक ही नोड पर एकाधिक धागे एक ही कतार जोड़ी साझा कर सकते हैं?
प्रत्येक नोड पर कितनी पूर्णता कतार तैयार की जानी चाहिए? मेरे पास प्रत्येक नोड पर रिमोट रीड/राइट/कैस ऑपरेशंस जारी करने वाले कई थ्रेड होंगे। अगर वे एक सामान्य समापन कतार साझा करना चाहते थे, तो पूरा होने की घटनाओं को मिश्रित किया जाएगा। अगर धागे की अपनी अलग-अलग समाप्ति कतार होती है, तो वास्तव में उनमें से बहुत सारे होंगे।
क्या आप मुझे इस सॉफ़्टवेयर को लिखने के बजाय कोई मौजूदा पुस्तकालय रखने का सुझाव देते हैं? (हम्म, या मुझे इसे एक और ओपन-सोर्स लिखना चाहिए? :-)
आपके तरह के सुझावों के लिए धन्यवाद।
और कतार जोड़े (क्यूपी) का स्रोत कोड, समापन कतार (सीक्यू) और साझा प्राप्त कतार (एसआरक्यू) को अपना खुद का लिखना है, या क्या मैं उनके कार्यान्वयन को तैयार कर सकता हूं (सर्वोत्तम अभ्यास के रूप में) और जहां वे कर सकते हैं लेना? – Alex