क्या यह एक प्रक्रिया को चलाने के लिए तेजी से है जो एन थ्रेड्स को जन्म देती है या एन प्रक्रियाओं को चलाने के लिए?


2

मुझे अपने लैब के सर्वर पर ~ 1500 नौकरियां चलाने की आवश्यकता है। मैं जिस प्रोग्राम का उपयोग कर रहा हूं ( blastpgp यदि कोई परवाह करता है) समानांतर मोड में चलने में सक्षम है, तो "-a" विकल्प सेट करता है कि यह कितने थ्रेड लॉन्च करेगा। प्रश्न में सर्वर में 40 64 बिट ओप्टरॉन सीपीयू उपलब्ध हैं।

मेरे पास निम्नलिखित विकल्प हैं:

  1. एक-एक करके, क्रमिक रूप से, अनुमति देकर नौकरियों को चलाएं blastpgp 40 धागे लॉन्च करके सभी 40 कोर पर कब्जा करने के लिए ( -a 40 )।

  2. समानांतर में 40 काम चलाते हैं, जिससे प्रत्येक को केवल एक धागा लॉन्च करने की अनुमति मिलती है।

इन दोनों विकल्पों में से कौन सा विकल्प तेज होगा? क्या वे समकक्ष हैं? मुझे लगता है कि यह विशेष हार्डवेयर / सॉफ्टवेयर / नौकरी के विवरण पर निर्भर हो सकता है, लेकिन एक क्लस्टर पर एक मूल समानांतर कार्यक्रम चलाने पर एक सामान्य नियम है?


मुझे उम्मीद है कि धागे थोड़े तेज़ होंगे, लेकिन आप इसे क्यों नहीं आज़माते?
Karthik T

@KarthikT क्योंकि प्रत्येक कार्य को चलाने में कुछ समय लगता है और परिणाम सर्वर के वर्तमान भार के आधार पर भिन्न हो सकते हैं, और मेरे पास वास्तव में एक संपूर्ण परीक्षा करने का समय नहीं है। मुझे उम्मीद थी कि यहां किसी को पता चल जाएगा। इसके अलावा, यह एक साझा सर्वर है इसलिए मैं अपने पदचिह्न को सीमित करने की कोशिश कर रहा हूं ताकि अन्य उपयोगकर्ताओं को परेशान न करें।
terdon

यदि आपके परिणाम सर्वर लोड पर निर्भर हैं, तो इससे कोई फर्क नहीं पड़ता!
Dave

@DaveRook। परिणाम हमेशा प्रोसेसर लोड पर निर्भर करेगा। यदि एक उच्च प्राथमिकता प्रक्रिया चल रही है, तो मेरा काम सीपीयू के 100% का उपयोग नहीं कर पाएगा। किसी भी मामले में, मैं एक सामान्य नियम खोज रहा हूं।
terdon

@terdon - क्षमा करें। उस स्थिति में, और मैं केवल .NET के साथ अपने अनुभव के बारे में बात कर रहा हूं, जहां समानांतर वर्ग बहुत शक्तिशाली और कुछ से अधिक शक्तिशाली है जो मैं लिख सकता था (जैसा कि यह दक्षता के लिए अनुकूलित है), इसलिए मेरा जवाब -a का उपयोग करें और इसे बनाएं सभी समानांतर (हालांकि तकनीकी रूप से यह अभी भी धारावाहिक है, क्योंकि प्रत्येक प्रक्रिया का एक-दूसरे से कोई लेना-देना नहीं है)।
Dave

जवाबों:


2

मैंने स्टैकओवरफ़्लो पर एक समान (समान नहीं) प्रश्न पूछा और आम सहमति से ऐसा लगता है कि मल्टी-थ्रेडिंग तेजी से होगा क्योंकि:

  1. थ्रेड्स प्रक्रियाओं की तुलना में हल्के होते हैं, सिस्टम पर एक तनाव कम रखते हैं
  2. थ्रेडिंग का अर्थ है केवल एक बार प्रोग्राम को लॉन्च करना, इसलिए किसी भी आरंभीकरण कार्यों को केवल एक बार किया जाना चाहिए।
  3. ओएस आमतौर पर मेमोरी और शेड्यूलिंग के प्रबंधन में उपयोगकर्ता की तुलना में बेहतर होता है, इसलिए कई थ्रेड लॉन्च करना बेहतर होता है और ओएस को उन्हें छाँटने देना चाहिए।

मैं इसे सामुदायिक विकि के रूप में चिह्नित कर रहा हूं क्योंकि यह स्टैकओवरफ्लो में प्राप्त उत्तरों का सारांश है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.