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.
Hyvä viesti :).
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.
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
Tarkka! Kiitos, jvk! 🙂
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.
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.
Käytetään nerokkaiden supertietokoneiden luomiseen
Se on ymmärretty.
Kiitos selvennyksestä.
Mitä varataan ytimelle tietylle ohjelmalle, mitä suoritussäikeille tapahtuu? Siinä tapauksessa, että teet sen ytimen kanssa HT: n kanssa, se varaa 2 suorituslangaa ohjelmalle.
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).
tehtäville ei ole graafista käyttöliittymää, jota uudet käyttäjät haluaisivat