Pretože sú viacjadrové procesory čoraz bežnejšie na serveroch, notebookoch alebo stolových počítačoch a dokonca aj v mobilných zariadeniach, čoraz viac aplikácií je optimalizovaných pre tento typ systému. Niekedy však môže byť užitočné prepojiť program alebo proces s jedným alebo viacerými konkrétnymi jadrami. Pozrime sa, ako to získať ...
Nainštalujte si sadu úloh
Nástroj sady úloh je súčasťou balíka „util-linux“. Väčšina distribúcií systému Linux je predvolene predinštalovaná. Ak sada úloh nie je k dispozícii, je možné ju nainštalovať nasledovne:
En Debian / Ubuntu a deriváty:
sudo apt-get nainštalovať util-linux
En Fedora a deriváty:
sudo yum nainštalovať util-linux
Zobrazte afinitu CPU bežiaceho procesu
Ak chcete načítať informácie o afinite procesora k procesu, použite nasledujúci formát:
sada úloh -p PID
Napríklad na kontrolu afinity CPU procesu s PID 2915:
sada úloh -p 2915
Vráti výsledok:
súčasná maska príbuznosti pid 2915: ff
Sada úloh vráti aktuálnu afinitu CPU v hexadecimálnom formáte bitovej masky. V tomto príklade afinita (predstavovaná v hexadecimálnej bitovej maske) zodpovedá „11111111“ v binárnom formáte, čo znamená, že proces môže bežať na ktoromkoľvek z ôsmich rôznych jadier CPU (0 až 7).
Najnižší bit v hexadecimálnej bitovej maske zodpovedá ID jadra 0, druhý najnižší bit sprava od ID jadra 1, tretí najnižší bit od ID jadra 2 atď. Napríklad afinita CPU „0x11“ predstavuje ID jadra 0 a 4.
Sada úloh môže zobraziť afinitu procesora ako zoznam procesorov namiesto bitovej masky, ktorá sa číta oveľa ľahšie. Ak chcete použiť tento formát, musíte spustiť sadu úloh s voľbou „-c“. Napríklad:
sada úloh -cp 2915
Vráti výsledok:
súčasný zoznam záujmov pid 2915: 0-7
Vynútiť spustenie procesu na konkrétnom jadre
Pomocou sady úloh možno spustený proces priradiť ku konkrétnemu jadru CPU. Ak to chcete urobiť, musíte použiť nasledujúci formát:
sada úloh -p PORMAZNÁ PID sada úloh -cp CORE-LIST PID
Napríklad na priradenie procesu k jadrám 0 a 4 by ste spustili:
sada úloh -p 0x11 9030
Čo sa vráti výsledok:
súčasná afinitná maska pid 9030: ff Nová afinitná maska pid 9030: 11
Rovnako môžete spustiť:
sada úloh -cp 0,4 9030
Pomocou voľby „-c“ môžete určiť zoznam číselných ID jadra oddelených čiarkami alebo môžete dokonca zahrnúť rozsahy (napríklad 0,2,5,6-10).
Spustite program pomocou konkrétneho jadra
Sada úloh tiež umožňuje spustiť nový program pomocou niekoľkých špecifických jadier. Musí byť použitý v nasledujúcom formáte:
COREMASK EXECUTABLE sada úloh
Napríklad na spustenie programu VLC na jadre procesora ID 0 použite nasledujúci príkaz:
sada úloh -c 0 vlc
Jadro venujte iba konkrétnemu programu
Aj keď množina úloh umožňuje priradiť program k určitému jadru, neznamená to, že neexistujú žiadne ďalšie programy alebo procesy, ktoré ho využívajú. Ak sa tomu chcete vyhnúť a vyhradiť celé jadro konkrétnemu programu, musíte použiť parameter jadra „isolcpus“, ktorý umožňuje rezervovať jadro počas spustenia.
Aby ste to dosiahli, musíte do riadku s jadrom v GRUBe pridať parameter "isolcpus =". Napríklad na rezerváciu ID jadier 0 a 1 pridajte „isolcpus = 0,1“.
Akonáhle je to hotové, plánovač Linuxu nepriradí rezervovanému jadru žiadne bežné procesy, pokiaľ to nebude špecificky priradené k množine úloh.
Fuente: xmodulo & manuálové stránky sady úloh.
Dobrý príspevok :).
Dobrý príspevok, ale bez úmyslu trollovať ...
Na čo slúži priradenie programu ku konkrétnemu jadru ???
Myslím; Ak máte počítač s 12 jadrami, logické by bolo, aby sa určitý program používal s týmito 12 jadrami a neobmedzoval ho, pretože tak dosiahneme najvyšší možný výkon.
Čo vidím, je užitočné, je možnosť, ktorá nám umožňuje nepriradiť žiadny proces určitému jadru, takže jeho výlučné použitie je ponechané určitému programu.
Má zmysel, čo spomínate, tým, že plánovač nechá použiť všetky jadrá, zdroje sú lepšie vyvážené, ale niekedy je potrebné vyhradené jadro, napríklad spustenie virtuálneho stroja s konkrétnou úlohou, výkon tohto stroja sa podstatne zlepší, keď v pridelenom jadre beží viac procesov.
Atte
jvk85321
Presne! Vďaka, jvk! 🙂
Ale keď vytvárate virtuálny stroj, požiada vás, aby ste vybrali množstvo prideleného CPU ... na čo je výber tejto hodnoty, ak to operačný systém nakoniec vynechá a vykoná ho na všetkých CPU ... Lebo príklad nie je najlepší ...
Aby Flash fungoval na Windows 8.1 x64, AMD a Firefox, bolo odporúčané zvoliť, aby Flash bežal iba na CPU, ale to mi nefungovalo. Bolo by tiež vhodné, keby ste ho pridali (ak ešte nie je k dispozícii) správcom úloh rôznych DE, alebo aspoň KDE.
ach, nepochopil som koniec komentára ... Ale na to by museli byť zakázané všetky procesy na CPU bežiacom virtuálny stroj. Alebo ich priraďte k iným procesorom. Zaujímavý a veľmi dobrý komentár.
Používa sa na vytvorenie geniálnych superpočítačov
Je to pochopiteľné.
Ďakujem za objasnenie.
Čo sa stane s vyhradením jadra pre konkrétny program s vykonávacími vláknami? V prípade, že to urobíte s jadrom s HT, vyhradí pre program 2 vykonávacie vlákna.
Tento príkaz sa nemusí zdať veľmi užitočný na počítačoch s niekoľkými jadrami, ale pre tých z nás, ktorí majú Dual Core, je to celkom praktické. Napríklad mám hru, ktorá keď otvorím, použije všetky jadrá procesora a ak mám aj iné programy, ktoré potrebujú CPU (napríklad nejaké vyhľadávanie s grepom vo veľkých súboroch), systém sa spomalí. Riešenie je také jednoduché ako obmedzenie hry na použitie iba jedného z jadier.
Súhlasím tiež s tým, že by to mali skutočne integrovať do správcov úloh (tých, ktoré som doteraz vyskúšal na Gentoo, myslím, že žiaden to nemá), zvlášť keď vo Windows existuje niečo, čo existuje od XP (kliknite pravým tlačidlom myši na proces> „Nastaviť afinitu ...“), ale pred nejakým časom som našiel nasledujúci skript, ktorý z množiny úloh urobí niečo intuitívnejšie (pôvodne publikované tu a dokonca existujú aj prípady, v ktorých je nevyhnutné riadiť použitie jadier):
#!/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
S niektorými úpravami by mohol byť namiesto PID uvedený názov procesu (alebo že akceptuje oba a že rozhoduje, či je daný parameter jednou alebo druhou vecou).
neexistuje grafické rozhranie pre množinu úloh pre nových používateľov, bolo by to pekné