मल्टी-कोर प्रोसेसिंग में लाभ और कमियां हो सकती हैं, और कभी-कभी आपको सर्वश्रेष्ठ प्रदर्शन प्राप्त करने के लिए प्रोग्राम (उर्फ "सीपीयू एफ़िनिटी") को सीपीयू कोर मैन्युअल रूप से असाइन करने की आवश्यकता होती है। लिनक्स के तहत, प्राथमिक उपकरण टास्कसेट है। यह संभावित रूप से डरावना लगता है, लेकिन प्रक्रिया को आसान बनाने के लिए हम इसे आसान चरणों में विभाजित करेंगे।
टास्कसेट की मूल बातें
टास्कसेट का उपयोग दो भागों में विभाजित किया जा सकता है:लॉन्च किए जाने वाले कार्यक्रमों के साथ सीपीयू आत्मीयता और पहले से चल रहे कार्यक्रमों के साथ। प्रोग्राम लॉन्च करना दोनों में से आसान है, इसलिए हम वहीं से शुरुआत करेंगे। लॉन्च कमांड इस तरह दिखता है:
taskset -c cpu-core-number(s) application
सीपीयू कोर की संख्या दर्ज करने से पहले जिसे आप असाइन करना चाहते हैं, यह न भूलें कि यूनिक्स नंबरिंग योजना आम तौर पर 0 से शुरू होती है, इसलिए आपका पहला कोर 0 होगा, आपका दूसरा कोर 1 होगा, और इसी तरह। इस प्रकार, एक डुअल-कोर मशीन में कोर 0 और 1 होंगे, और एक क्वाड-कोर मशीन में कोर 0, 1, 2 और 3 होंगे।
मान लीजिए कि आप दोहरे कोर सिस्टम पर ऑडेसिटी चलाना चाहते हैं, और आप इसे अपने दूसरे कोर पर चलाना चाहते हैं। वह आदेश होगा:
taskset -c 1 audacity
एकाधिक कोर का उपयोग करना
हमारी मशीनों में से एक पर, वीडियो स्ट्रीमिंग करते समय क्रोम कभी-कभी फ्रेम छोड़ देता है लेकिन दो कोर को असाइन किए जाने पर स्वयं व्यवहार करेगा। यदि आप क्वाड-कोर सिस्टम पर एक ही चीज़ आज़माना चाहते हैं और क्रोम को कोर तीन और चार में असाइन करना चाहते हैं, तो कमांड होगा:
taskset -c 2,3 google-chrome
आपको अनुक्रमिक कोर के लिए सीपीयू एफ़िनिटी असाइन करने की ज़रूरत नहीं है - आप किसी भी कोर को यादृच्छिक रूप से चुन सकते हैं। मान लें कि आपके पास छह-कोर मशीन है और आप दो और छह कोर पर क्रोम का उपयोग करना चाहते हैं। आप कमांड दर्ज करेंगे:
taskset -c 1,5 google-chrome
आप किसी एप्लिकेशन को कई कोर पर फैलाने के लिए डैश का उपयोग भी कर सकते हैं। उदाहरण के लिए, कई पुराने प्रोग्राम या सिस्टम फ़ंक्शन आपके पहले कोर पर डिफ़ॉल्ट होंगे। क्या होगा यदि आप अपने अन्य सभी कोर में एक बड़े एप्लिकेशन को फैलाते हुए पहले कोर को यथासंभव मुक्त छोड़ना चाहते हैं?
मान लें कि आपके पास आठ-कोर सिस्टम है और आप स्टीम को दूसरे कोर से आठवें तक चलाना चाहते हैं। वह आदेश होगा:
taskset -c 1-7 steam
पहले ही लॉन्च हो चुके प्रोग्राम के लिए एफ़िनिटी बदलना
टास्कसेट केवल एप्लिकेशन लॉन्च करने तक सीमित नहीं है। आप पहले से चल रहे प्रोग्राम के लिए CPU एफ़िनिटी भी बदल सकते हैं। हालांकि, इससे पहले कि आप किसी एप्लिकेशन के एफ़िनिटी को बदल सकें, आपको पहले इसकी प्रक्रिया आईडी (या संक्षेप में पीआईडी) को जानना होगा।
अपने एप्लिकेशन के PID का पता लगाने के लिए, आप अपने डेस्कटॉप के सिस्टम मॉनिटर का उपयोग करने का प्रयास कर सकते हैं, लेकिन सबसे तेज़ तरीका केवल top
का उपयोग करना है . अप्रत्याशित रूप से, यह कमांड का उपयोग करता है:
top
सभी चल रहे आदेशों के नाम स्क्रीन के दाईं ओर हैं। संबंधित प्रक्रिया आईडी बाईं ओर हैं।
अपना पीआईडी लिखें क्योंकि आप इसे एक पल में उपयोग करेंगे। इस उदाहरण के लिए, हम वीएलसी का उपयोग करेंगे, जो छह कोर वाले पुराने पीसी पर हाई-डेफिनिशन मैट्रोस्का वीडियो चलाने के बीच में है। वीएलसी से सर्वश्रेष्ठ प्रदर्शन को निचोड़ने के लिए हम विभिन्न सीपीयू एफिनिटीज के साथ प्रयोग कर रहे हैं।
किसी मौजूदा प्रक्रिया की समानता को बदलने के लिए, सिंटैक्स इस तरह दिखता है:
taskset -cp core-numbers PID
यदि आप ऊपर हमारा स्क्रीनशॉट देख सकते हैं, तो वीएलसी की प्रोसेस आईडी 20485 है। हम चौथे, पांचवें और छठे कोर पर वीएलसी चलाने की कोशिश करने जा रहे हैं, जो यूनिक्स में 3-5 होगी। तो उसके बाद, कमांड होगी:
taskset -cp 3-5 20485
लेकिन क्या होगा यदि आप मौजूदा आत्मीयता को बदलने से पहले उसकी जांच करना चाहते हैं? उसके लिए, कोई कोर नंबर दर्ज न करें, और टास्कसेट आपको बताएगा कि एफ़िनिटी कैसे असाइन की जाती है। इसलिए यदि हम अंतिम कमांड को इसमें बदलते हैं:
taskset -cp 20485
यह हमें दिखाता है कि वीएलसी सभी कोर में फैला हुआ है।
आइए एक अलग कार्यक्रम के साथ फिर से कोशिश करें। मान लीजिए कि हम इसके बजाय SMPlayer के साथ एक बड़ा Matroska चलाते हैं, और SMPlayer पहले ही लॉन्च किया जा चुका है। शीर्ष का कहना है कि पीआईडी 16058 है।
लेकिन पहले हम इसकी मौजूदा आत्मीयता को जानना चाहते हैं। -cp
. के साथ कमांड का उपयोग करना स्विच करें लेकिन कोई कोर नंबर नहीं है, हम देख सकते हैं कि वर्तमान में एफ़िनिटी सभी कोर में फैली हुई है।
अब हम SMPlayer को उन्हीं तीन कोर में फैलाने का प्रयास कर सकते हैं जैसे VLC कमांड के साथ प्रयोग करता है:
taskset -cp 3-5 16058
यह आसान है, है ना? यदि आप अपने पीसी को बेंचमार्क करना चाहते हैं, तो अपने सीपीयू को तनाव-परीक्षण करने के लिए 8 उपयोगी टूल पर हमारी मार्गदर्शिका देखें।