From owner-freebsd-current@FreeBSD.ORG Wed Apr 13 07:53:12 2005 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3617316A4CE for ; Wed, 13 Apr 2005 07:53:12 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id E239C43D2D; Wed, 13 Apr 2005 07:53:11 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from [127.0.0.1] (davidxu@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j3D7rAfQ014967; Wed, 13 Apr 2005 07:53:10 GMT (envelope-from davidxu@freebsd.org) Message-ID: <425CD009.6040208@freebsd.org> Date: Wed, 13 Apr 2005 15:53:45 +0800 From: David Xu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.6) Gecko/20050319 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Scott Long References: <425CC7F8.3030803@samsco.org> In-Reply-To: <425CC7F8.3030803@samsco.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit cc: freebsd-current@freebsd.org cc: Jiawei Ye Subject: Re: How does one know how many thread a process owns? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Apr 2005 07:53:12 -0000 Scott Long wrote: > 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 I believe he wants to see total threads number in a process. add a column to top to display total kernel threads in per-process, p_numthreads in proc structure is what you need . :) David Xu