Jak přiřadit program k jádru CPU pomocí sady úkolů

Jelikož se vícejádrové procesory stále častěji vyskytují na serverech, laptopech nebo stolních počítačích a dokonce i v mobilních zařízeních, je pro tento typ systému optimalizováno stále více aplikací. Někdy však může být užitečné propojit program nebo proces s jedním nebo více konkrétními jádry. Uvidíme, jak to získat ...

Nainstalujte si sadu úloh

Nástroj sady úloh je součástí balíčku „util-linux“. Většina distribucí Linuxu je ve výchozím nastavení dodávána s předinstalovaným balíčkem. Pokud sada úloh není k dispozici, je možné ji nainstalovat následujícím způsobem:

En Debian / Ubuntu a deriváty:

sudo apt-get install util-linux

En Fedora a deriváty:

sudo yum nainstalovat util-linux

Zobrazit spřažení CPU běžícího procesu

Chcete-li načíst informace o afinitě CPU pro proces, použijte následující formát:

sada úloh -p PID

Chcete-li například zkontrolovat afinitu CPU procesu s PID 2915:

sada úloh -p 2915

Vrátí výsledek:

Současná afinitní maska ​​pid 2915: ff

tasket vrací aktuální afinitu CPU v hexadecimálním formátu bitové masky. V tomto příkladu afinita (představovaná v hexadecimální bitové masce) odpovídá „11111111“ v binárním formátu, což znamená, že proces může běžet na kterémkoli z osmi různých jader CPU (0 až 7).

Nejnižší bit v hexadecimální bitové masce odpovídá ID jádra 0, druhý nejnižší bit zprava do ID jádra 1, třetí nejnižší bit do ID jádra 2 atd. Například afinita CPU „0x11“ představuje jádra ID 0 a 4.

Sada úloh může ukázat afinitu CPU jako seznam procesorů namísto bitové masky, která je mnohem snazší číst. Chcete-li použít tento formát, musíte spustit sadu úloh s možností „-c“. Například:

sada úloh -cp 2915

Vrátí výsledek:

aktuální seznam afinit pid 2915: 0-7

Vynutit spuštění procesu na konkrétním jádře

Pomocí sady úloh lze běžící proces přiřadit konkrétnímu jádru CPU. Chcete-li to provést, musíte použít následující formát:

sada úloh -p COREMASK PID sada úloh -cp CORE-LIST PID

Chcete-li například přiřadit proces jádrům 0 a 4, spustili byste:

sada úloh -p 0x11 9030

Co se vrátí výsledek:

Současná afinitní maska ​​pid 9030: ff Nová afinitní maska ​​pid 9030: 11

Ekvivalentně můžete spustit:

sada úloh -cp 0,4 9030

Pomocí volby "-c" můžete zadat seznam číselných ID jádra, oddělených čárkami, nebo můžete dokonce zahrnout rozsahy (například 0,2,5,6-10).

Spusťte program pomocí konkrétního jádra

Sada úloh také umožňuje spuštění nového programu pomocí řady konkrétních jader. Chcete-li to provést, musí být použit v následujícím formátu:

EXECUTABLE COREMASK sada úloh

Chcete-li například spustit program VLC na ID jádra CPU 0, použijte následující příkaz:

sada úloh -c 0 vlc

Věnujte jádro pouze určitému programu

Ačkoli sada úloh umožňuje přiřadit program ke konkrétnímu jádru, neznamená to, že neexistují žádné jiné programy nebo procesy, které jej využívají. Chcete-li se tomu vyhnout a věnovat celé jádro určitému programu, musíte použít parametr jádra „isolcpus“, který umožňuje rezervovat jádro během spouštění.

Chcete-li to provést, musíte do řádku jádra v GRUBu přidat parametr "isolcpus =". Chcete-li například rezervovat ID jádra 0 a 1, přidejte „isolcpus = 0,1“.

Jakmile je to hotovo, plánovač Linuxu nepřidělí vyhrazené jádro žádné běžné procesy, pokud to není výslovně přiřazeno sadě úkolů.

zdroj: xmodulo & manuálové stránky sady úloh.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Petr Čech řekl

    Dobrý příspěvek :).

  2.   Luis řekl

    Dobrý příspěvek, ale bez ducha trollování ...

    Jaké je použití přiřazení programu ke konkrétnímu jádru ???

    Myslím; Pokud máte počítač s 12 jádry, logické by bylo, aby byl určitý program spuštěn pomocí těchto 12 jader a neomezoval jej, protože tak získáme nejvyšší možný výkon.

    To, co vidím, je užitečné, je možnost, která nám umožňuje nepřidělit žádný proces určitému jádru a ponechat jeho výlučné použití určitému programu.

    1.    jvk85321 řekl

      Dává smysl, co zmíníte, tím, že plánovač použije všechna jádra, jsou zdroje lépe vyvážené, ale někdy je vyžadováno výhradní jádro věnování, jako je běh virtuálního stroje s konkrétním úkolem, výkon tohoto stroje se podstatně zlepší, když v přiděleném jádře již nepracují žádné procesy.

      Atte
      jvk85321

      1.    pojďme použít linux řekl

        Přesný! Díky, jvk! 🙂

      2.    lf řekl

        Ale když vytváříte virtuální stroj, požádá vás, abyste zvolili množství přiděleného CPU ... jaké je použití volby této hodnoty, pokud to nakonec operační systém vynechá a provede jej na všech procesorech ... Zde příklad není nejlepší ...

        Aby Flash fungoval na Windows 8.1 x64, AMD a Firefox, bylo doporučeno zvolit, aby Flash běžel pouze na CPU, ale pro mě to nefungovalo. Bylo by také vhodné, kdyby jej přidali (pokud tam ještě není) správcům úloh různých DE, nebo alespoň KDE.

      3.    lf řekl

        ah, nepochopil jsem konec komentáře ... Ale kvůli tomu by musely být zakázány všechny procesy na CPU běžícím virtuálním strojem. Nebo je přiřaďte k jiným CPU. Zajímavý a velmi dobrý komentář.

    2.    Fernando řekl

      Slouží k vytvoření geniálních superpočítačů

  3.   Luis řekl

    Je to pochopitelné.

    Díky za vysvětlení.

  4.   Teak řekl

    Při rezervaci jádra pro konkrétní program, co se stane s prováděcími vlákny? V případě, že to uděláte s jádrem s HT, rezervuje 2 prováděcí vlákna pro program

  5.   přepínač řekl

    Tento příkaz se nemusí na počítačích s několika jádry zdát příliš užitečný, ale pro ty z nás, kteří mají Dual Core, je to docela praktické. Například mám hru, která při otevření využívá všechna jádra procesoru a pokud mám také další programy, které potřebují CPU (jako nějaké hledání s grepem ve velkých souborech), pak se systém zpomalí. Řešení je stejně jednoduché jako omezit hru pouze na použití jednoho z jader.
    Souhlasím také s lf, měli by to opravdu integrovat do správců úloh (těch, které jsem zatím zkoušel na Gentoo, myslím, že žádný to nemá), zvláště když ve Windows existuje něco, co existuje od XP (klikněte pravým process> "Set affinity ..."), ale před nějakou dobou jsem našel následující skript, který proměňuje sadu úloh v něco intuitivnějšího (původně publikováno zde a jsou zobrazeny i některé případy, kdy je nutné řídit použití jader):
    #!/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 některými úpravami by mohl být uveden název procesu namísto PID (nebo že přijímá oba a že rozhoduje, když je tento parametr jedna věc nebo druhá).

  6.   blázni řekl

    neexistuje nové grafické rozhraní pro sadu úkolů, které by si noví uživatelé přáli