Kaip priskirti programą procesoriaus branduoliui naudojant „taskets“

Kai kelių branduolių procesoriai tampa vis labiau paplitę serveriuose, nešiojamuosiuose kompiuteriuose ar staliniuose kompiuteriuose ir net mobiliuosiuose įrenginiuose, vis daugiau programų yra optimizuotos šio tipo sistemoms. Tačiau kartais gali būti naudinga susieti programą ar procesą su vienu ar keliais konkrečiais branduoliais. Pažiūrėkime, kaip tai gauti ...

Įdiekite taskset

„Taskset“ įrankis yra „util-linux“ paketo dalis. Daugumoje „Linux“ paskirstymų paketas iš anksto įdiegtas pagal numatytuosius nustatymus. Jei nėra „tasket“, jį galima įdiegti taip:

En „Debian“ / „Ubuntu“ ir dariniai:

sudo apt-get install util-linux

En Minkšta fetrinė skrybėlė ir dariniai:

sudo yum įdiekite util-linux

Peržiūrėkite vykdomo proceso procesoriaus bendrumą

Norėdami gauti procesoriaus bendrų procesų informaciją, naudokite šį formatą:

užduočių rinkinys -p PID

Pavyzdžiui, norėdami patikrinti proceso su PID 2915 procesoriaus giminingumą:

Taskset -p 2915

Pateikia rezultatą:

PID 2915 dabartinė giminingumo kaukė: ff

taskset grąžina dabartinį procesoriaus afinitetą šešioliktainės bitų kaukės formatu. Pavyzdyje afinitetas (pavaizduotas šešioliktainių bitų kauke) atitinka „11111111“ dvejetainiu formatu, o tai reiškia, kad procesas gali vykti bet kuriame iš aštuonių skirtingų procesoriaus branduolių (nuo 0 iki 7).

Mažiausias bitas šešioliktainėje bitų kaukėje atitinka šerdies ID 0, antras žemiausias bitas iš dešinės į šerdies ID 1, trečias mažiausias bitas iki šerdies ID 2 ir kt. Pavyzdžiui, procesoriaus afinitetas „0x11“ reiškia pagrindinius 0 ir 4 ID.

Taskset gali rodyti procesoriaus giminingumą kaip procesorių sąrašą, o ne bitmaską, kurį daug lengviau perskaityti. Norėdami naudoti šį formatą, turite paleisti užduotį naudodami parinktį „-c“. Pavyzdžiui:

Taskset -cp 2915

Pateikia rezultatą:

dabartinis „pid 2915“ giminingumo sąrašas: 0–7

Priverskite procesą vykdyti konkrečiame branduolyje

Naudojant „taskets“, vykdomas procesas gali būti priskirtas konkrečiam procesoriaus branduoliui. Norėdami tai padaryti, turite naudoti šį formatą:

taskset -p COREMASK PID taskset -cp CORE-LIST PID

Pvz., Norėdami priskirti procesą 0 ir 4 šerdims, vykdykite:

užduočių rinkinys -p 0x11 9030

Ką grąžina rezultatas:

„Pid 9030“ dabartinė giminingumo kaukė: „ff pid 9030“ naujoji giminingumo kaukė: 11

Lygiaverčiai galite paleisti:

uždaviniai -cp 0,4 9030

Naudodami parinktį „-c“ galite nurodyti skaitinių branduolių ID sąrašą, atskirtą kableliais, arba galite įtraukti diapazonus (pvz., 0,2,5,6–10).

Paleiskite programą naudodami konkretų branduolį

Taskset taip pat leidžia paleisti naują programą, naudojant daugybę konkrečių branduolių. Norėdami tai padaryti, jis turi būti naudojamas tokiu formatu:

Vykdomoji koremaskos užduotis

Pvz., Norėdami paleisti VLC programą CPU core ID 0 naudokite šią komandą:

uždaviniai -c 0 vlc

Skirkite branduolį tik tam tikrai programai

Nors taskset leidžia priskirti programą tam tikram branduoliui, tai nereiškia, kad nėra kitų programų ar procesų, kurie ja naudojasi. Norėdami to išvengti ir paskirti visą branduolį konkrečiai programai, turite naudoti branduolio parametrą „isolcpus“, kuris leidžia rezervuoti branduolį paleidimo metu.

Norėdami tai padaryti, GRUB branduolio eilutėje turite pridėti parametrą "isolcpus =". Pavyzdžiui, norėdami rezervuoti 0 ir 1 ID šerdis, pridėkite „isolcpus = 0,1“.

Kai tai bus padaryta, „Linux“ tvarkaraštis nepriskirs jokių reguliarių procesų rezervuotam branduoliui, nebent specialiai priskirtas užduotims.

Fuente: xmodulis & taskset žmogaus puslapiai.


11 komentarai, palikite savo

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   peterčekas sakė

    Geras įrašas :).

  2.   luis sakė

    Geras įrašas, bet neketinant trollinti ...

    Kuo naudinga priskirti programą konkrečiam branduoliui ???

    Turiu omeny; Jei turite kompiuterį su 12 branduolių, logiška būtų tai, kad tam tikra programa būtų vykdoma naudojant tuos 12 branduolių, ir to neapribotų, nes tokiu būdu gauname kuo didesnį našumą.

    Mano nuomone, yra naudinga parinktis, leidžianti nepriskirti jokio proceso tam tikram branduoliui, paliekant jo naudojimą tik tam tikrai programai.

    1.    jvk85321 sakė

      Tikslinga tai, ką jūs minite, leidžiant planuotojui naudoti visas šerdis, ištekliai yra geriau subalansuoti, tačiau kartais reikia tam skirto branduolio, pavyzdžiui, paleisti virtualią mašiną su konkrečia užduotimi, tos mašinos našumas žymiai pagerėja, kai nebėra procesų, veikiančių priskirtame branduolyje.

      Atte
      jvk85321

      1.    naudokime linux sakė

        Tiksliai! Ačiū, jvk! 🙂

      2.    lf sakė

        Bet kai kuriate virtualią mašiną, ji paprašo pasirinkti priskirtą procesoriaus kiekį ... kokia naudinga pasirinkti šią vertę, jei galų gale operacinė sistema to praleidžia ir vykdo ją visuose procesoriuose ... Nes čia pavyzdys nėra geriausias ...

        Kad „Flash“ veiktų „Windows 8.1 x64“, „AMD“ ir „Firefox“, buvo rekomenduojama pasirinkti, kad „Flash“ veiktų tik su vienu procesoriumi, tačiau man tai neveikė. Taip pat būtų patogu, jei jį pridėtumėte (jei jo dar nėra) prie skirtingų DE ar bent jau KDE užduočių valdytojų.

      3.    lf sakė

        ak, aš nesupratau komentaro pabaigos ... Bet tam teks uždrausti visus procesorius, veikiančius virtualioje mašinoje. Arba priskirkite juos kitiems procesoriams. Įdomus ir labai geras komentaras.

    2.    Fernando sakė

      Naudojamas genialiems superkompiuteriams kurti

  3.   luis sakė

    Tai suprantama.

    Ačiū už paaiškinimą.

  4.   Teck sakė

    Kas vyksta su vykdymo gijomis rezervuojant branduolį konkrečiai programai? Tuo atveju, jei tai darote su branduoliu su „HT“, programa pasilieka 2 vykdymo gijas.

  5.   jungiklis sakė

    Ši komanda gali pasirodyti nelabai naudinga kompiuteriuose su keliais branduoliais, tačiau mums, turintiems dvigubą branduolį, ji yra gana praktiška. Pvz., Turiu žaidimą, kurį atidarius naudojamas visas procesoriaus šerdis ir jei turiu kitų programų, kurioms reikalingas procesorius (pvz., Kai kurios paieškos su grep dideliuose failuose), tada sistema sulėtėja. Sprendimas yra toks paprastas, kaip apriboti žaidimą, kad būtų naudojamas tik vienas iš branduolių.
    Aš taip pat sutinku su lf, jie tikrai turėtų tai integruoti į užduočių tvarkykles (tas, kurias iki šiol bandžiau „Gentoo“, manau, kad nė vienas jos neturi), ypač kai „Windows“ sistemoje tai egzistuoja nuo XP (dešiniuoju pelės mygtuku spustelėkite procesas> „Nustatyti bendrumą ...“), bet prieš kurį laiką radau šį scenarijų, kuris paverčia užduotį šiek tiek intuityvesniu (iš pradžių paskelbtas čia ir netgi yra atvejų, kai reikia valdyti šerdžių naudojimą):
    #!/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

    Atlikus tam tikrus pakeitimus, vietoje PID galima nurodyti proceso pavadinimą (arba kad jis priima abu ir kad jis nusprendžia, kada tas parametras yra vienas ar kitas).

  6.   jorsas sakė

    nėra grafinės sąsajos, skirtos naujiems vartotojams, būtų malonu