Синтаксис:kworker/%u:%d%s (cpu, id, priority)
Не знаю насчет u
, похоже, это обозначает несвязанный процессор
https://www.kernel.org/doc/Documentation/kernel-per-CPU-kthreads.txt
Как интерпретировать имена потоков kworker?
Имя задачи kworker кодирует ее привязку к ЦП (, если есть ), идентификатор, ее правильность (, если есть ), а также имя или описание рабочей очереди. Большая часть имени рабочей очереди обычно усекается из-за относительно небольшого размера поля связи.
Например, поле связи kworker
kworker/6:11-mm_
означает, что поток ядра kworker ЦП 6 с идентификатором 11 выполняет рабочую очередь -, имя которой начинается с mm_
.
Чтобы получить список всех возможных имен рабочих очередей, в основном нужно выполнить поиск исходных кодов ядра Linux, например.вот так:
$ grep 'alloc_workqueue("[^"]\+"'. -ro | grep '"mm'
./drivers/mmc/core/block.c:alloc_workqueue("mmc_complete"
./drivers/mmc/host/omap.c:alloc_workqueue("mmc_omap"
./drivers/staging/greybus/sdio.c:alloc_workqueue("mmc-%s"
./mm/vmstat.c:alloc_workqueue("mm_percpu_wq"
Итак, здесь мы имеем дело с очередью mm_percpu_wq
work -.
См. также, как создается задача kworker :
if (pool->cpu >= 0)
snprintf(id_buf, sizeof(id_buf), "%d:%d%s", pool->cpu, id,
pool->attrs->nice < 0 ? "H" : "");
else
snprintf(id_buf, sizeof(id_buf), "u%d:%d", pool->id, id);
worker->task = kthread_create_on_node(worker_thread, worker, pool->node,
"kworker/%s", id_buf);
Таким образом, символ u
указывает идентификатор пула -вместо номера ЦП (для kworkers без сходства ЦП ), а H
указывает на отрицательное значение nice.
И см. также , как имя рабочей очереди заканчивается суффиксом связи .