लिनक्स पर एक उच्च नेटवर्क गहन सर्वर अनुप्रयोग विकसित करने के लिए, किस प्रकार की वास्तुकला को प्राथमिकता दी जाती है? विचार यह है कि यह ऐप आमतौर पर कई कोर (या तो आभासी या भौतिक) वाली मशीनों पर चलता है। यह मानते हुए कि प्रदर्शन मुख्य मानदंड है, क्या यह बहु-थ्रेडेड एप्लिकेशन या मल्टी-प्रोसेस डिज़ाइन वाले किसी के लिए जाना बेहतर है? मुझे पता है कि कई प्रक्रियाओं से ऐसे संसाधनों तक पहुंच के लिए संसाधनों और सिंक्रनाइज़ेशन का साझा करना बहुत सारे प्रोग्रामिंग ओवरहेड है, लेकिन जैसा कि पहले बताया गया है कि समग्र प्रदर्शन मुख्य आवश्यकता है और इसलिए हम उन चीजों को अनदेखा कर सकते हैं। और प्रोग्रामिंग भाषा सी/सी ++ होगी।प्रदर्शन - मल्टीथ्रेड या मल्टीप्रोसेस अनुप्रयोग
मैंने सुना है कि बहु-थ्रेडेड एप्लिकेशन (एकल प्रक्रिया) कई कोर का लाभ उठा सकते हैं और प्रत्येक थ्रेड को अलग-अलग कोर पर स्वतंत्र रूप से चला सकते हैं (जब तक कोई सिंक समस्या नहीं होती है)। और यह शेड्यूलिंग कर्नेल द्वारा किया जाता है। यदि हां, तो बहु-थ्रेडेड अनुप्रयोगों और बहु-प्रक्रिया अनुप्रयोगों के बीच प्रदर्शन में बहुत अंतर नहीं है? Nginx एक बहु-प्रक्रिया आर्किटेक्चर का उपयोग करता है और वास्तव में तेज़ है, लेकिन क्या बहु-थ्रेडेड अनुप्रयोगों के साथ एक ही प्रदर्शन प्राप्त कर सकता है?
धन्यवाद।
@ पी-एल: आपके उत्तर के लिए धन्यवाद। हां, योजना नेटवर्क आधारित घटनाओं के आधार पर भी आधारित वास्तुकला और कार्य का उपयोग करना है। और रनटाइम के दौरान कोई अतिरिक्त धागे और प्रक्रियाएं नहीं बनाई जाती हैं। यह देखते हुए, क्या आप बहु-थ्रेडेड और बहु-प्रक्रिया अनुप्रयोगों के बीच कोई प्रदर्शन अंतर नहीं देखते हैं? उदाहरण के लिए: यदि 4 कोर कहने वाला कोई सिस्टम है, तो आर्किटेक्चर दोनों के बीच प्रदर्शन में कोई ध्यान देने योग्य नहीं होगा? – sthustfo
सबसे बड़ा संभव अंतर शेड्यूलिंग में होगा, और इसे कार्य के सीपीयू एफ़िनिटी के साथ संशोधित किया जा सकता है, प्रत्येक कार्य (थ्रेड/प्रक्रिया) को विशिष्ट सीपीयू में पिन करना। सर्वर प्रक्रिया द्वारा किए गए वास्तविक कार्यों और नेटवर्क हिस्से के साथ यह कैसे इंटरैक्ट करता है, उससे अधिक अंतर हो सकते हैं। स्मृति से कैसे पहुंचा जा सकता है इससे संबंधित मतभेद हो सकते हैं, लेकिन NUMA सिस्टम पर सामान्य रूप से स्मृति साझा करने के लिए धागे/प्रक्रिया अंतर से कम संबंधित - हालांकि यह संभव है कि मौजूदा कर्नेल को विभिन्न NUMA में कोड सेगमेंट की प्रतिलिपि बनाने के लिए समर्थन मिले जोन (उनके पास कर्नेल के लिए अतीत में ही था)। –