Ako priradiť program k jadru CPU pomocou sady úloh

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.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   peterczech dijo

    Dobrý príspevok :).

  2.   Luis dijo

    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.

    1.    jvk85321 dijo

      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

      1.    pouzivajme linux dijo

        Presne! Vďaka, jvk! 🙂

      2.    lf dijo

        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.

      3.    lf dijo

        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.

    2.    Fernando dijo

      Používa sa na vytvorenie geniálnych superpočítačov

  3.   Luis dijo

    Je to pochopiteľné.

    Ďakujem za objasnenie.

  4.   Teck dijo

    Č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.

  5.   prepínač dijo

    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).

  6.   hlupáci dijo

    neexistuje grafické rozhranie pre množinu úloh pre nových používateľov, bolo by to pekné