कार्यपत्रक का उपयोग करके सीपीयू कोर के लिए एक कार्यक्रम कैसे असाइन करें

चूंकि मल्टी-कोर प्रोसेसर सर्वर, लैपटॉप या डेस्कटॉप पीसी में अधिक से अधिक सामान्य हो जाते हैं, और यहां तक ​​कि मोबाइल डिवाइस भी, इस प्रकार के सिस्टम के लिए अधिक से अधिक एप्लिकेशन अनुकूलित होते हैं। हालांकि, कभी-कभी किसी प्रोग्राम या प्रक्रिया को एक या अधिक विशिष्ट गुठली से जोड़ना उपयोगी हो सकता है। आइए देखें इसे कैसे प्राप्त करें ...

कार्यपत्रक स्थापित करें

कार्यस्थल उपकरण "उपयोग-लिनक्स" पैकेज का हिस्सा है। अधिकांश लिनक्स वितरण डिफ़ॉल्ट रूप से पहले से स्थापित पैकेज के साथ आते हैं। यदि कार्यपत्रक उपलब्ध नहीं है, तो इसे निम्नानुसार स्थापित करना संभव है:

En Debian / Ubuntu और सहायक उपकरण:

sudo apt-get install यूज़-लिनेक्स

En फेडोरा और सहायक उपकरण:

sudo yum install उपयोगिता-linux

एक रनिंग प्रोसेस का CPU एफिनिटी देखें

किसी प्रक्रिया के लिए CPU आत्मीयता की जानकारी प्राप्त करने के लिए, निम्न प्रारूप का उपयोग करें:

कार्यपत्र -p PID

उदाहरण के लिए, PID 2915 के साथ एक प्रक्रिया के CPU की आत्मीयता की जांच करने के लिए:

कार्यक्षेत्र -प 2915

परिणाम देता है:

पीआईडी ​​2915 का वर्तमान संबंध मुखौटा: एफएफ

कार्यपत्रक वर्तमान CPU आत्मीयता को एक हेक्साडेसिमल बिट मास्क प्रारूप में लौटाता है। उदाहरण में, आत्मीयता (एक हेक्साडेसिमल बिट मास्क में प्रतिनिधित्व) बाइनरी प्रारूप में "11111111" से मेल खाती है, जिसका अर्थ है कि प्रक्रिया आठ अलग-अलग सीपीयू कोर (0 से 7) में से किसी पर भी चल सकती है।

हेक्साडेसिमल बिट मास्क में सबसे कम बिट कोर आईडी 0 से मेल खाती है, कोर आईडी 1 के दाईं ओर से दूसरी सबसे कम बिट, कोर आईडी 2 में सबसे कम बिट, आदि। इसलिए, उदाहरण के लिए, एक सीपीयू आत्मीयता "0x11" कोर आईडी 0 और 4 का प्रतिनिधित्व करता है।

कार्यपत्रक सीपीएम आत्मीयता को एक बिटमस्क के बजाय प्रोसेसर की सूची के रूप में प्रदर्शित कर सकता है, जिसे पढ़ना बहुत आसान है। इस प्रारूप का उपयोग करने के लिए, आपको "-c" विकल्प के साथ कार्यस्थल चलाना होगा। उदाहरण के लिए:

कार्यक्षेत्र -सीपी 2915

परिणाम देता है:

pid 2915 की वर्तमान आत्मीयता सूची: 0-7

एक विशिष्ट कर्नेल पर चलने के लिए एक प्रक्रिया को बाध्य करें

कार्यपत्रक का उपयोग करके, एक चल रही प्रक्रिया को एक विशिष्ट CPU कोर को सौंपा जा सकता है। ऐसा करने के लिए, आपको निम्नलिखित प्रारूप का उपयोग करना होगा:

कार्यपत्र -p COREMASK PID कार्य-समूह CORE-LIST PID

उदाहरण के लिए, कोर 0 और 4 को प्रोसेस करने के लिए, आप दौड़ेंगे:

कार्यपत्र -p 0x11 9030

क्या परिणाम देता है:

पिड 9030 का वर्तमान आत्मीयता मुखौटा: एफएफ पिड 9030 का नया आत्मीयता मुखौटा: 11

समान रूप से, आप चला सकते हैं:

कार्यक्षेत्र -सीपी 0,4 9030

"-सी" विकल्प के साथ, आप संख्यात्मक कर्नेल आईडी की एक सूची निर्दिष्ट कर सकते हैं, जिसे अल्पविराम से अलग किया जाता है, या आप रेंज भी शामिल कर सकते हैं (उदाहरण के लिए, 0,2,5,6-10)।

एक विशिष्ट कर्नेल का उपयोग करके एक प्रोग्राम लॉन्च करें

कार्यपत्रक भी कई विशिष्ट गुठली का उपयोग करके एक नया कार्यक्रम शुरू करने की अनुमति देता है। ऐसा करने के लिए, इसका उपयोग निम्न प्रारूप में किया जाना चाहिए:

COREMASK विशिष्ट कार्यक्षेत्र

उदाहरण के लिए, CPU कोर ID 0 पर VLC प्रोग्राम शुरू करने के लिए, निम्नलिखित कमांड का उपयोग करें:

कार्यक्षेत्र -c 0 vlc

एक विशेष कार्यक्रम के लिए केवल एक कोर समर्पित करें

यद्यपि कार्यपत्रक किसी विशेष कर्नेल के लिए एक कार्यक्रम निर्दिष्ट करने की अनुमति देता है, लेकिन इसका मतलब यह नहीं है कि कोई अन्य कार्यक्रम या प्रक्रियाएं नहीं हैं जो इसका उपयोग करती हैं। इससे बचने के लिए और एक विशेष कार्यक्रम के लिए पूरे कर्नेल को समर्पित करने के लिए, आपको कर्नेल पैरामीटर "आइसोलपस" का उपयोग करना चाहिए, जो आपको स्टार्टअप के दौरान कर्नेल को आरक्षित करने की अनुमति देता है।

ऐसा करने के लिए, आपको GRUB में कर्नेल लाइन में पैरामीटर "आइसोलपेकस =" जोड़ना होगा। उदाहरण के लिए, आईडी कोर 0 और 1 को आरक्षित करने के लिए, "आइसोलिपस = 0,1" जोड़ें।

एक बार ऐसा करने के बाद, लिनक्स अनुसूचक आरक्षित कर्नेल को कोई नियमित प्रक्रिया नहीं सौंपेगा, जब तक कि उसे विशेष रूप से कार्यपत्रक के साथ न सौंपा जाए।

Fuente: xmodulo & कार्यपत्रक मैन पेज.


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   Petercheco कहा

    अच्छी पोस्ट :)।

  2.   लुइस कहा

    अच्छी पोस्ट लेकिन ट्रोलिंग की भावना के बिना ...

    एक विशिष्ट कर्नेल को प्रोग्राम असाइन करने का क्या फायदा है ???

    मेरा मतलब; यदि आपके पास 12 कोर के साथ एक कंप्यूटर है, तो तार्किक बात उन 12 कोर का उपयोग करके निष्पादित किए जाने वाले एक निश्चित कार्यक्रम के लिए होगी और इसे सीमित नहीं किया जाएगा क्योंकि हम उच्चतम संभव प्रदर्शन प्राप्त करते हैं।

    मैं जो देखता हूं वह उपयोगी है वह विकल्प है जो हमें एक निश्चित कर्नेल के लिए किसी भी प्रक्रिया को निर्दिष्ट करने की अनुमति नहीं देता है, इसके अनन्य उपयोग को एक निश्चित कार्यक्रम पर छोड़ देता है।

    1.    जेवीके85321 कहा

      यह समझ में आता है कि आप क्या उल्लेख करते हैं, योजनाकार को सभी कोर का उपयोग करने की अनुमति देने से, संसाधन बेहतर संतुलित होते हैं, लेकिन कभी-कभी एक समर्पित कोर की आवश्यकता होती है, जैसे कि एक विशिष्ट कार्य के साथ एक वर्चुअल मशीन चलाने से, उस मशीन का प्रदर्शन काफी हद तक बेहतर हो जाता है जब कोई नहीं असाइन किए गए कर्नेल में अधिक प्रक्रियाएं चल रही हैं।

      atte
      जेवीके85321

      1.    चलो linux का उपयोग करते हैं कहा

        सटीक! धन्यवाद, jvk! 🙂

      2.    lf कहा

        लेकिन जब आप वर्चुअल मशीन बना रहे होते हैं, तो यह आपको आवंटित सीपीयू की मात्रा चुनने के लिए कहता है ... यदि ऑपरेटिंग सिस्टम इसे छोड़ देता है और सभी सीपीयू पर इसे निष्पादित करता है, तो इस मूल्य को चुनने का क्या फायदा है ... उदाहरण सबसे अच्छा नहीं है ...

        विंडोज 8.1 x64, एएमडी और फायरफॉक्स पर फ्लैश काम करने के लिए, यह चुनने की सिफारिश की गई थी कि फ्लैश केवल एक सीपीयू पर चले, हालांकि यह मेरे लिए काम नहीं करता था। यदि आप इसे जोड़ते हैं (तो यह पहले से ही वहां नहीं है) या अलग-अलग DE के टास्क मैनेजरों के लिए, या कम से कम KDE एक के लिए सुविधाजनक होगा।

      3.    lf कहा

        आह, मुझे टिप्पणी का अंत समझ में नहीं आया था ... लेकिन इसके लिए, वर्चुअल मशीन चलाने वाले सीपीयू पर सभी प्रक्रियाओं पर प्रतिबंध लगाना होगा। या उन्हें अन्य CPU को असाइन करें। रोचक और बहुत अच्छी टिप्पणी।

    2.    फर्नांडो कहा

      जीनियस सुपर कंप्यूटर बनाने के लिए उपयोग किया जाता है

  3.   लुइस कहा

    यह समझा जाता है।

    स्पष्टीकरण के लिए धन्यवाद।

  4.   टेक कहा

    किसी विशिष्ट प्रोग्राम के लिए कर्नेल को जलाते समय, निष्पादन थ्रेड्स के साथ क्या होता है? यदि आप इसे HT के साथ कर्नेल के साथ करते हैं, तो यह प्रोग्राम के लिए 2 निष्पादन थ्रेड्स को आरक्षित करता है।

  5.   स्विचर कहा

    यह कमांड कई कोर के साथ कंप्यूटर पर बहुत उपयोगी नहीं लग सकता है, लेकिन हममें से जिनके पास डुअल कोर है, वे काफी व्यावहारिक हैं। उदाहरण के लिए, मेरे पास एक गेम है जब मैं खोलता हूं तो यह सभी प्रोसेसर कोर का उपयोग करता है और अगर मेरे पास अन्य प्रोग्राम भी हैं जो कि सीपीयू की आवश्यकता होती है (जैसे कि बड़ी फ़ाइलों में grep के साथ कुछ खोज) तो सिस्टम धीमा हो जाता है। समाधान केवल एक कोर का उपयोग करने के लिए खेल को सीमित करने के रूप में सरल है।
    मैं भी lf से सहमत हूं, उन्हें वास्तव में कार्य प्रबंधकों (जिनको मैंने Gentoo पर अब तक आज़माया है, मुझे लगता है कि यह किसी के पास नहीं है) में एकीकृत करना चाहिए, खासकर जब विंडोज में यह कुछ ऐसा है जो XP के बाद से मौजूद है (एक प्रक्रिया पर राइट क्लिक करें> "आत्मीयता सेट करें ...") लेकिन कुछ समय पहले मुझे निम्नलिखित स्क्रिप्ट मिली जो कि कार्यस्थल को कुछ अधिक सहज (मूल रूप से प्रकाशित) में बदल देती है यहां और यहां तक ​​कि कुछ मामले भी हैं जिनमें कोर के उपयोग का प्रबंधन करना आवश्यक है):
    #!/bin/bash
    read -p 'Ingrese el ID del proceso en cuestión: ' ID
    read -p 'Ingrese la lista de procesadores separados por comas: ' P
    echo 'Su ID es '$ID' y los procesadores son '$P
    sudo taskset -p -c $P $ID
    read -p 'Listo, presione enter para finalizar' P

    कुछ संशोधनों के साथ, प्रक्रिया का नाम PID के बजाय संकेत दिया जा सकता है (या यह कि यह दोनों को स्वीकार करता है और यह तय करता है कि जब यह पैरामीटर एक या दूसरा है)।

  6.   जोर का कहा

    नए उपयोगकर्ताओं के लिए कार्यपत्रक का कोई ग्राफ़िकल इंटरफ़ेस नहीं है, यह अच्छा होगा