GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistím, ve kterém jádru CPU běží vlákno?

K tomu může pomoci příkaz "top", který nemá CPU seskupený seznam vláken, ale spíše můžete vidět seznam vláken (pravděpodobně pro jeden proces) a na kterých jádrech CPU vlákna běží

top -H -p {PROC_ID}

poté stiskněte f pro přechod do výběru pole j pro povolení sloupce CPU core a Enter zobrazit.


Můžete také použít ps , něco jako toto:

ps -mo pid,tid,%cpu,psr -p `pgrep BINARY-NAME`

Níže uvedená odpověď již není od roku 2014 přesná

Úkoly nespí v žádném konkrétním jádru. A plánovač nebude dopředu vědět, na kterém jádru poběží vlákno, protože to bude záviset na budoucím využití těchto jader.

Chcete-li získat požadované informace, podívejte se do /proc//task//status. Třetí pole bude 'R', pokud vlákno běží. Šesté z posledního pole bude jádro, na kterém vlákno aktuálně běží, nebo jádro, na kterém běželo naposledy (nebo do kterého bylo migrováno), pokud zrovna neběží.

31466 (bc) S 31348 31466 31348 34819 31466 4202496 2557 0 0 0 5006 16 0 0 20 0 1 0 10196934 121827328 1091 18446744073709551615 4194304 4271839 140737264235072 140737264232056 217976807456 0 0 0 137912326 18446744071581662243 0 0 17 3 0 0 0 0 0

Momentálně neběží. Naposledy běžel na jádru 3.

31466 (bc) R 31348 31466 31348 34819 31466 4202496 2557 0 0 0 0 3818 12 0 0 20 0 1 0196934 12182737264400114020404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040940940950940909090404 007300702020409090904 004090909030. 0 0 0 0 0

Aktuálně běží na jádru 2.

Chcete-li zjistit, co znamenají ostatní pole, podívejte se na zdrojový kód linuxového jádra – konkrétně na do_task_stat funkce v fs/proc/array.c nebo Documentation/filesystems/stat.txt .

Všimněte si, že všechny tyto informace mohou být v době, kdy je získáte, zastaralé. V určitém okamžiku mezi tím, kdy jste vytvořili open, to byla pravda zavolejte na soubor v proc a když se toto volání vrátí.


Vlákna nejsou nutná k vázání jednoho konkrétního jádra (pokud jste ho nepřipnuli). Chcete-li tedy vidět nepřetržité přepínání jádra, můžete použít (upravená odpověď Dmitrije):

watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep BINARY-NAME\`

Například:

watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep firefox\`

Linux
  1. Jak zkontrolovat, která verze Postgresu je spuštěná/nainstalovaná

  2. Jak můžete zjistit číslo procesoru, na kterém běží vlákno?

  3. Dokáže python zjistit, pod kterým OS běží?

  1. Jak otestovat, na kterém portu MySQL běží a zda se k němu lze připojit?

  2. Jak zjistím, která distribuce Linuxu běží?

  3. Jak mohu vidět výstup dmesg, když se mění?

  1. Linux – Jak zjistit, která Linuxová distribuce běží?

  2. Linux – Jak omezit proces na jedno jádro CPU v Linuxu?

  3. Jak získat Tty ve kterém Bash běží?