Соглашение об именах рабочих потоков

Используйте флаг списка архивов --и так:

--archlist=x64
0
26.12.2019, 18:11
2 ответа

Синтаксис:kworker/%u:%d%s (cpu, id, priority)
Не знаю насчет u, похоже, это обозначает несвязанный процессор

.

https://www.kernel.org/doc/Documentation/kernel-per-CPU-kthreads.txt
Как интерпретировать имена потоков kworker?

1
28.01.2020, 02:38

Имя задачи 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_wqwork -.


См. также, как создается задача 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.

И см. также , как имя рабочей очереди заканчивается суффиксом связи .

0
05.06.2021, 17:49

Теги

Похожие вопросы