El comando "superior" puede ayudar con esto, no tiene una lista de subprocesos agrupados por CPU, sino que puede ver la lista de subprocesos (probablemente para un solo proceso) y en qué núcleos de CPU se ejecutan los subprocesos
top -H -p {PROC_ID}
luego presionando f para ir a la selección de campos, j para habilitar la columna del núcleo de la CPU y Intro para mostrar.
También puedes usar ps
, algo como esto:
ps -mo pid,tid,%cpu,psr -p `pgrep BINARY-NAME`
La respuesta a continuación ya no es precisa a partir de 2014
Las tareas no duermen en ningún núcleo en particular. Y el programador no sabrá de antemano en qué núcleo ejecutará un subproceso porque eso dependerá del uso futuro de esos núcleos.
Para obtener la información que desea, busque en /proc/
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
No se está ejecutando actualmente. Se ejecutó por última vez en Core 3.
31466 (bc) R 31348 31466 31348 34819 31466 4202496 2557 0 0 0 3818 12 0 0 20 0 1 0 10196934 121827328 1091 184444444073737095551615 4194304 4271839 1407372642350722242242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242422342232322323223223232ES 0 0 0 0 0
Actualmente se ejecuta en el núcleo 2.
Para ver qué significan el resto de los campos, eche un vistazo a la fuente del kernel de Linux, específicamente el do_task_stat
función en fs/proc/array.c
o Documentation/filesystems/stat.txt
.
Tenga en cuenta que toda esta información puede estar obsoleta para cuando la obtenga. Fue cierto en algún momento entre cuando hiciste el open
llame al archivo en proceso y cuando regrese esa llamada.
Los subprocesos no son necesarios para vincular un Core en particular (si no lo fijó). Por lo tanto, para ver el cambio continuo del núcleo, puede usar (una respuesta modificada de Dmitry):
watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep BINARY-NAME\`
Por ejemplo:
watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep firefox\`