Re: How does one know how many thread a process owns?

From: Scott Long <scottl_at_samsco.org>
Date: Wed, 13 Apr 2005 01:19:20 -0600
Jiawei Ye wrote:
>>From top in pkgsrc, one can know that a certain process has some
> number of LWP in it.
> load averages:  1.89,  1.72,  1.68;  up 119+05:28:10                   13:30:48
> 154 processes: 152 sleeping, 1 running, 1 on cpu
> CPU states:     % idle,     % user,     % kernel,     % iowait,     % swap
> Memory: 1024M real, 414M free, 841M swap in use, 1956M swap free
> 
>    PID USERNAME LWP PRI NICE  SIZE   RES STATE    TIME    CPU COMMAND
>  21891 bond       1   4    2   19M 1864K run     31.7H 77.04% upd_twd_15min
>  17153 bond       1  50    2   82M 6164K sleep   37:37 12.98% dataserver.tsk
>  17151 bond       1  53    2   82M   81M sleep   41:57  0.96% dataserver.tsk
>  13742 otc        1  53    2   30M   21M sleep    3:31  0.89% dataserver.tsk
>  17204 mtrs       1  53    2   82M 6144K sleep    2:47  0.67% dataserver.tsk
>  17321 mtrs       1  53    2   25M 7908K sleep    2:21  0.49% otcmgr.tsk
>  16250 root       1  59    0 4136K 2224K sleep    0:00  0.47% sshd
>  13745 otc        1  53    2   30M 2496K sleep    2:55  0.36% dataserver.tsk
>   3821 jessica    1  59    0   31M 4816K sleep    6:25  0.34% dataserver.tsk
>  17227 bond       1  53    2   25M 7908K sleep    2:46  0.31% otcmgr.tsk
>  17553 otc        1  53    2   17M 1208K sleep    0:46  0.18% icbc_pricing
>  16269 leafy      1  45    0 3360K 1688K sleep    0:00  0.13% bash
>  17202 mtrs       1  53    2   82M   19M sleep    1:08  0.12% dataserver.tsk
>  17154 bond       1  53    2   82M 8004K sleep    0:35  0.12% dataserver.tsk
>  13746 otc        1  53    2   30M 5136K sleep    0:37  0.11% dataserver.tsk
> 
> In our top, show threads does not tell you how many threads exactly
> exists in a process, is there any way to imitate the other top's
> behaviour?
> 
> Jiawei

With KSE threads (the default libpthread.so library), the kernel doesn't
know about all of the process-scope threads that are alive it only
knows about the ones that are running currently or are blocked within
the kernel.  These are not the same as LWP, since they are scheduled in
userland and thus are somewhat invisible to the kernel.  There are
various ways to set libpthread to create only process-scope threads that
look a little more like LWP, or you can switch to the libthr.so library
that exclusively creates 1:1 threads that are always visible to the
kernel.

Scott
Received on Wed Apr 13 2005 - 05:22:32 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:32 UTC