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