On Mon, Sep 11, 2023 at 11:02:00AM +0200, Marc Espie wrote:
> I was reading through ps.1, which has two slightly different options
>      -H      Also display information about kernel visible threads.
>      -k      Also display information about kernel threads.
> 
> It's not at all obvious what the difference between these options might be.
> 
 
kernel threads == kthread(9) created threads

Those should have K in STAT and the name is in () like:
 3141 ??  RK/1   4057:57.90 (idle1)

kernel visible threads == __tfork_thread(3) created threads for userland
applications. For example:

43838  556612 ??  IpU      0:01.58 firefox (firefox/Cache2 I/O)
43838  415551 ??  IpU      0:00.01 firefox (firefox/Cookie)
43838  377915 ??  IpU      0:00.01 firefox (firefox/Worker Launcher)

These threads all share the same PID but have different TID.

I think the "kernel visible" is there to tell that pure userland threads
can not be reported by ps. I think go routines are such an example.

> From the log:
> --------------------
> revision 1.77
> date: 2011/09/25 00:29:59;  author: guenther;  state: Exp;  lines: +5 -3;
> Add -H option to show rthreads, hiding them by default
> 
> Diff from uwe@
> --------------------
> so slightly more info.
> 
> Looking at the code, now this is KERN_PROC_KTHREAD vs KERN_PROC_SHOW_THREADS
> in kvm_getprocs(3).
> 
> Now KERN_PROC_KTHREAD is documented, but there is nothing about
> KERN_PROC_SHOW_THREADS.
> 
> The code around (dothreads) in kvm* doesn't make things really obvious.
> 

-- 
:wq Claudio

Reply via email to