Kuinka määrittää ohjelma CPU-ytimeen käyttämällä tasksetia

Kun moniydinsuorittimet yleistyvät yhä enemmän palvelimissa, kannettavissa tietokoneissa tai pöytätietokoneissa ja jopa mobiililaitteissa, yhä useammat sovellukset on optimoitu tämän tyyppiselle järjestelmälle. Joskus voi kuitenkin olla hyödyllistä linkittää ohjelma tai prosessi yhteen tai useampaan tiettyyn ytimeen. Katsotaanpa, miten se saadaan ...

Asenna taskset

Taskset-työkalu on osa util-linux-pakettia. Useimpien Linux-jakelujen mukana toimitetaan paketti valmiiksi esiasennettuna. Jos tasksetia ei ole saatavana, se voidaan asentaa seuraavasti:

En Debian / Ubuntu ja johdannaiset:

sudo apt-get install util-linux

En Fedora ja johdannaiset:

sudo yum asenna util-linux

Tarkastele käynnissä olevan prosessorin affiniteettia

Voit hakea prosessorin suhdetietoja prosessille seuraavassa muodossa:

tehtäväsarja -p PID

Esimerkiksi prosessin suorittimen affiniteetin tarkistaminen PID 2915: llä:

Taskset -p 2915

Palauttaa tuloksen:

pid 2915: n nykyinen affiniteettimaski: ff

taskset palauttaa nykyisen suorittimen affiniteetin heksadesimaalibittimaskimuodossa. Esimerkissä affiniteetti (jota edustaa heksadesimaalibittimaski) vastaa "11111111" binaarimuodossa, mikä tarkoittaa, että prosessi voi toimia missä tahansa kahdeksasta eri suorittimen ytimestä (0-7).

Heksadesimaalibittimaskin alin bitti vastaa ytintunnusta 0, toinen alin bitti oikealta ytintunnukselle 1, kolmas alin bitti ytintunnukselle 2 ja niin edelleen. Joten esimerkiksi suorittimen affiniteetti "0x11" edustaa ytimiä 0 ja 4.

taskset voi näyttää suorittimen affiniteetin prosessoriluettelona bitimaskin sijaan, mikä on paljon helpompi lukea. Jos haluat käyttää tätä muotoa, sinun on suoritettava "-c" -vaihtoehto. Esimerkiksi:

Taskset -cp 2915

Palauttaa tuloksen:

pid 2915: n nykyinen affiniteettiluettelo: 0-7

Pakota prosessi ajamaan tietyllä ytimellä

Tasksetin avulla käynnissä oleva prosessi voidaan määrittää tietylle suorittimen ytimelle. Tätä varten sinun on käytettävä seuraavaa muotoa:

taskset -p COREMASK PID taskset -cp YDINLISTA PID

Voit esimerkiksi määrittää prosessin ytimille 0 ja 4 suorittamalla:

taskit -p 0x11 9030

Mitä tulos palauttaa:

pid 9030: n nykyinen affiniteettinaamio: ff pid 9030: n uusi affiniteettimaski: 11

Vastaavasti voit suorittaa:

tehtäväjoukko -cp 0,4 9030

"-C" -vaihtoehdolla voit määrittää luettelon numeerisista ytintunnuksista pilkuilla erotettuna tai jopa lisätä alueita (esimerkiksi 0,2,5,6-10).

Käynnistä ohjelma tietyn ytimen avulla

taskset mahdollistaa myös uuden ohjelman käynnistämisen käyttämällä useita erityisiä ytimiä. Tätä varten sitä on käytettävä seuraavassa muodossa:

TOTEUTETTAVA KOREMASKI

Esimerkiksi käynnistääksesi VLC-ohjelman CPU core ID 0: lla, käytä seuraavaa komentoa:

taskit -c 0 vlc

Omista ydin vain tietylle ohjelmalle

Vaikka taskset sallii ohjelman osoittamisen tietylle ytimelle, se ei tarkoita, ettei ole muita ohjelmia tai prosesseja, jotka käyttävät sitä. Tämän välttämiseksi ja koko ytimen omistamiseksi tietylle ohjelmalle on käytettävä ytimen parametria "isolcpus", jonka avulla voit varata ytimen käynnistyksen aikana.

Tätä varten sinun on lisättävä parametri "isolcpus =" ytimen riville GRUB: ssa. Esimerkiksi ID-ytimien 0 ja 1 varaamiseksi lisää "isolcpus = 0,1".

Kun tämä on tehty, Linux-ajastin ei määritä säännöllisiä prosesseja varatulle ytimelle, ellei sitä ole erikseen määritetty taskilla.

lähde: xmodulo & taskset-man-sivut.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Petercheco dijo

    Hyvä viesti :).

  2.   Luis dijo

    Hyvä viesti, mutta ilman tarkoitusta uisteluun ...

    Mitä hyötyä on ohjelman osoittamisesta tietylle ytimelle ???

    Tarkoitan; Jos sinulla on tietokone, jossa on 12 ydintä, olisi loogista, että tietty ohjelma suoritettaisiin käyttämällä näitä 12 ydintä eikä rajoittaisi sitä, koska tällä tavoin saavutamme parhaan mahdollisen suorituskyvyn.

    Mielestäni on hyödyllinen vaihtoehto, jonka avulla emme voi määrätä mitään prosessia tietylle ytimelle, jättäen sen yksinomaisen käytön tietylle ohjelmalle.

    1.    jvk85321 dijo

      On järkevää, mitä mainitset, antamalla suunnittelijan käyttämään kaikkia ytimiä, resurssit ovat tasapainoisempia, mutta joskus tarvitaan yksinomainen omistautumisen ydin, kuten virtuaalikoneen suorittaminen tietyllä tehtävällä, koneen suorituskyky paranee huomattavasti, kun ei enää prosesseja käynnissä määritetyssä ytimessä.

      Atte
      jvk85321

      1.    käytetään Linuxia dijo

        Tarkka! Kiitos, jvk! 🙂

      2.    lf dijo

        Mutta kun luot virtuaalikoneen, se pyytää sinua valitsemaan jaetun suorittimen määrän ... mitä hyötyä on tämän arvon valitsemisesta, jos käyttöjärjestelmä lopulta jättää tämän pois ja suorittaa sen kaikissa suorittimissa ... esimerkki ei ole paras ...

        Jotta Flash toimisi Windows 8.1 x64: ssä, AMD: ssä ja Firefoxissa, on suositeltavaa valita, että Flash toimii vain suorittimella, mutta se ei toiminut minulle. Olisi myös kätevää, jos he lisäävät sen (ellei sitä vielä ole) eri DE: n tai ainakin KDE: n tehtävänhallinnoille.

      3.    lf dijo

        ah, en ollut ymmärtänyt kommentin loppua ... Mutta sitä varten kaikki virtuaalikoneen suorittavan prosessorin prosessit olisi kiellettävä. Tai määritä ne muille suorittimille. Mielenkiintoinen ja erittäin hyvä kommentti.

    2.    Fernando dijo

      Käytetään nerokkaiden supertietokoneiden luomiseen

  3.   Luis dijo

    Se on ymmärretty.

    Kiitos selvennyksestä.

  4.   Teck dijo

    Mitä varataan ytimelle tietylle ohjelmalle, mitä suoritussäikeille tapahtuu? Siinä tapauksessa, että teet sen ytimen kanssa HT: n kanssa, se varaa 2 suorituslangaa ohjelmalle.

  5.   kytkin dijo

    Tämä komento ei ehkä näytä kovin hyödylliseltä tietokoneilta, joissa on useita ytimiä, mutta niille meistä, joilla on kaksoisydin, se on melko käytännöllinen. Minulla on esimerkiksi peli, jonka avaamisen yhteydessä se käyttää kaikkia suorittimen ytimiä ja jos minulla on myös muita ohjelmia, jotka tarvitsevat suorittimen (kuten jotkut hakemukset suurten tiedostojen grepillä), järjestelmä hidastuu. Ratkaisu on yhtä yksinkertainen kuin pelin rajoittaminen käyttämään vain yhtä ydintä.
    Olen myös samaa mieltä lf: n kanssa, heidän pitäisi todella integroida tämä tehtävänhallintaan (ne, joita olen kokeillut tähän mennessä Gentoolla, mielestäni kenelläkään ei ole), varsinkin kun Windowsissa on jotain XP: n jälkeen (napsauta hiiren kakkospainikkeella prosessia "Aseta suhde ..."), mutta jokin aika sitten löysin seuraavan komentosarjan, joka muuttaa tehtävän jotain intuitiivisemmaksi (alun perin julkaistu täällä ja jopa joitain tapauksia, joissa ytimien käyttöä on tarpeen hallita):
    #!/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

    Joillakin muutoksilla prosessin nimi voidaan ilmoittaa PID: n sijasta (tai että se hyväksyy molemmat ja että se päättää, milloin kyseinen parametri on yksi tai toinen asia).

  6.   jorss dijo

    tehtäville ei ole graafista käyttöliittymää, jota uudet käyttäjät haluaisivat