Paano magtalaga ng isang programa sa isang core ng CPU gamit ang tasket

Tulad ng mga multi-core na processor na nagiging mas at mas karaniwan sa mga server, laptop o desktop PC, at kahit na mga mobile device, mas maraming mga application ang na-optimize para sa ganitong uri ng system. Gayunpaman, maaari itong maging kapaki-pakinabang minsan upang mag-link ng isang programa o proseso sa isa o higit pang mga tukoy na kernel. Tingnan natin kung paano ito makuha ...

I-install ang tasket

Ang tool na worksheet ay bahagi ng "util-linux" na pakete. Karamihan sa mga pamamahagi ng Linux ay kasama ang package na paunang naka-install bilang default. Kung sakaling hindi magagamit ang tasket, posible na i-install ito tulad ng sumusunod:

En Debian / Ubuntu at derivatives:

sudo apt-get install ng util-linux

En Fedora at derivatives:

sudo yum i-install ang util-linux

Tingnan ang affinity ng CPU ng isang tumatakbo na proseso

Upang makuha ang impormasyon sa pagiging affinity ng CPU para sa isang proseso, gamitin ang sumusunod na format:

workset -p PID

Halimbawa, upang suriin ang pagkakaugnay ng CPU ng isang proseso sa PID 2915:

tasket -p 2915

Ibinabalik ang resulta:

Kasalukuyang affinity mask ng pid 2915: ff

Ibinabalik ng tasket ang kasalukuyang pagkakaugnay sa CPU sa isang hexadecimal bit mask na format. Sa halimbawa, ang ugnayan (na kinakatawan sa isang hexadecimal bitmask) ay tumutugma sa "11111111" sa binary format, na nangangahulugang ang proseso ay maaaring tumakbo sa alinman sa walong magkakaibang mga core ng CPU (0 hanggang 7).

Ang pinakamababang bit sa isang hexadecimal bit mask ay tumutugma sa core ID 0, ang pangalawang pinakamababang bit mula sa kanan hanggang sa core ID 1, ang pangatlong pinakamababang bit sa core ID 2, atbp. Kaya, halimbawa, ang isang affinity ng CPU na "0x11" ay kumakatawan sa mga pangunahing ID 0 at 4.

Ang tasket ay maaaring magpakita ng CPU affinity bilang isang listahan ng mga processor sa halip na isang bitmask, na mas madaling basahin. Upang magamit ang format na ito, dapat mong patakbuhin ang tasket na may pagpipiliang "-c". Halimbawa:

tasket -cp 2915

Ibinabalik ang resulta:

kasalukuyang listahan ng pagkakaugnay ng pid 2915: 0-7

Pilitin ang isang proseso na tumakbo sa isang tukoy na kernel

Gamit ang tasket, ang isang tumatakbo na proseso ay maaaring italaga sa isang tukoy na core ng CPU. Upang magawa ito, dapat mong gamitin ang sumusunod na format:

workset -p COREMASK PID tasket -cp CORE-LIST PID

Halimbawa, upang magtalaga ng isang proseso sa mga core 0 at 4, tatakbo ka:

tasket -p 0x11 9030

Ano ang nagbabalik na resulta:

Kasalukuyang affinity mask ng pid 9030: bagong pid na affinity mask ng pid pid 9030: 11

Katumbas, maaari kang tumakbo:

tasket -cp 0,4 9030

Sa pagpipiliang "-c", maaari mong tukuyin ang isang listahan ng mga numerong kernel ID, na pinaghihiwalay ng mga kuwit, o maaari mo ring isama ang mga saklaw (halimbawa, 0,2,5,6-10).

Ilunsad ang isang programa gamit ang isang tukoy na kernel

Pinapayagan din ng tasket ang paglulunsad ng isang bagong programa gamit ang isang bilang ng mga tukoy na kernel. Upang magawa ito, dapat itong gamitin sa sumusunod na format:

EXECUTABLE na gawain ng COREMASK

Halimbawa, upang simulan ang programa ng VLC sa CPU core ID 0, gamitin ang sumusunod na utos:

tasket -c 0 vlc

Italaga ang isang core lamang sa isang partikular na programa

Bagaman pinapayagan ng tasket ang pagtatalaga ng isang programa sa isang partikular na kernel, hindi ito nangangahulugan na walang ibang mga programa o proseso na gagamitin ito. Upang maiwasan ito at ilaan ang isang buong kernel sa isang partikular na programa, dapat mong gamitin ang parameter ng kernel na "isolcpus", na nagbibigay-daan sa iyo upang magreserba ng isang kernel habang nagsisimula.

Upang magawa ito, kailangan mong idagdag ang parameter na "isolcpus =" sa linya ng kernel sa GRUB. Halimbawa, upang magreserba ng mga core ng ID na 0 at 1, idagdag ang "isolcpus = 0,1".

Kapag tapos na ito, ang tagapag-iskedyul ng Linux ay hindi magtatalaga ng anumang mga regular na proseso sa nakareserba na kernel, maliban kung partikular na nakatalaga sa tasket.

Fuente: xmodulo & pages ng tao ng workset.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   peterczech dijo

    Magandang post :).

  2.   Luis dijo

    Magandang post ngunit nang walang balak na mag-troll ...

    Ano ang silbi ng pagtatalaga ng isang programa sa isang tukoy na kernel ???

    Ibig kong sabihin; Kung mayroon kang isang computer na may 12 core, ang lohikal na bagay ay para sa isang tiyak na programa upang maipatupad gamit ang 12 core na iyon at hindi limitahan ito dahil sa ganoong paraan nakuha namin ang pinakamataas na posibleng pagganap.

    Ang nakikita kong kapaki-pakinabang ay ang pagpipilian na nagpapahintulot sa amin na hindi magtalaga ng anumang proseso sa isang tiyak na kernel, na iniiwan ang eksklusibong paggamit nito sa isang tiyak na programa.

    1.    jvk85321 dijo

      May katuturan kung ano ang binanggit mo, sa pamamagitan ng pagpapaalam sa tagaplano na gamitin ang lahat ng mga core, ang mga mapagkukunan ay mas mahusay na balansehin, ngunit kung minsan ay kinakailangan ng isang eksklusibong core ng pagtatalaga, tulad ng pagpapatakbo ng isang virtual machine na may isang tukoy na gawain, ang pagganap ng makina na iyon ay nagpapabuti nang malaki sa pamamagitan ng wala nang mga proseso na tumatakbo sa itinalagang kernel.

      atte
      jvk85321

      1.    gumamit tayo ng linux dijo

        Sakto! Salamat, jvk! 🙂

      2.    lf dijo

        Ngunit kapag lumilikha ka ng virtual machine, hinihiling nito sa iyo na piliin ang dami ng inilaan na CPU ... ano ang paggamit ng pagpili ng halagang ito kung sa huli tinanggal ito ng operating system at isinasagawa ito sa lahat ng mga CPU ... Para doon ang halimbawa ay hindi ang pinakamahusay ...

        Upang magawa ang Flash sa Windows 8.1 x64, AMD at Firefox, inirerekumenda na piliin na ang Flash ay tumatakbo lamang sa isang CPU, subalit hindi ito gumana para sa akin. Magiging maginhawa din kung idagdag mo ito (kung wala ito doon) sa mga tagapamahala ng gawain ng iba't ibang DE, o hindi bababa sa isang KDE.

      3.    lf dijo

        ah, hindi ko naintindihan ang katapusan ng komento ... Ngunit para doon, lahat ng mga proseso sa CPU na nagpapatakbo ng virtual machine ay dapat na ipagbawal. O italaga ang mga ito sa iba pang mga CPU. Kagiliw-giliw at napakahusay na komento.

    2.    Fernando dijo

      Ginamit upang lumikha ng mga henyo na supercomputer

  3.   Luis dijo

    Naiintindihan ito.

    Salamat sa paglinaw.

  4.   Teck dijo

    Kapag nagrereserba ng isang kernel para sa isang tukoy na programa, ano ang nangyayari sa mga thread ng pagpapatupad? Sa kaso na gawin mo ito sa isang kernel na may HT, nagreserba ito ng 2 mga thread ng pagpapatupad para sa programa.

  5.   Switcher dijo

    Ang utos na ito ay maaaring hindi gaanong kapaki-pakinabang sa mga computer na may maraming mga core, ngunit para sa atin na may isang Dual Core ito ay lubos na praktikal. Halimbawa, mayroon akong isang laro na kapag binuksan ko ito ay gumagamit ng lahat ng mga core ng processor at kung mayroon din akong iba pang mga programa na kailangan ng CPU (tulad ng ilang paghahanap na may grep sa malalaking mga file) pagkatapos ay bumagal ang system. Ang solusyon ay kasing simple ng paglilimita sa laro upang magamit lamang ang isa sa mga core.
    Sumasang-ayon din ako sa lf, dapat talaga nilang isama ito sa mga tagapamahala ng gawain (ang mga sinubukan ko sa ngayon sa Gentoo, sa palagay ko wala ito), lalo na kapag sa Windows ito ay isang bagay na mayroon mula noong XP (pag-right click sa isang proseso> "Itakda ang pagiging kaparehas ...") ngunit ilang oras ang nakakaraan nahanap ko ang sumusunod na script na ginawang isang bagay na medyo mas madaling maunawaan (orihinal na na-publish dito at mayroong kahit ilang mga kaso kung saan kinakailangan upang pamahalaan ang paggamit ng mga core):
    #!/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

    Sa ilang mga pagbabago, ang pangalan ng proseso ay maaaring ipahiwatig sa halip na ang PID (o tumatanggap ito ng pareho at nagpapasya ito kapag ang parameter na iyon ay isa o iba pa).

  6.   mga jors dijo

    walang graphic na interface para sa mga tasket para sa mga bagong gumagamit magiging maganda ito