Linux – How to Interpret kworker Thread Names

linuxlinux-kernel

On Linux 3.11.0-13-generic running on top of a dual socket Xeon X5650 hexa core board, htop shows different kworker threads. Sorted by names (I tweaked the result I am showing here a little bit to have the threads on core 2 before the ones on core 10), here is the result:

kworker/0:0H
kworker/0:1
kworker/0:2
kworker/1:0
kworker/1:0H
kworker/1:1
kworker/2:0
kworker/2:0H
kworker/2:1
.....
kworker/11:0
kworker/11:0H
kworker/11:1
kworker/u48:0
kworker/u49:4
kworker/u49:5
kworker/u50:1
kworker/u50:2
.......

The threads whose names start with a number are pinned to the core with the same number. So the first number is the core running the thread and I am wondering what the symbol after : (0 or 0H or 1) is for these threads?

I am also wondering what is the meaning of the uXX:Y symbols?

I have only a vague knowledge of what kworker threads do: they handle asynchronous events caused by system calls performing I/O. Are they documented somewhere?

Best Answer

According to kernel.org, the syntax is kworker/%u:%d%s (cpu, id, priority). The u designates a special CPU, the unbound cpu, meaning that the kthread is currently unbound.

The workqueue workers which have negative nice value have 'H' postfixed to their names. (source)

Related Question