Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Dec 2007 22:35:31 +1300
From:      Andrew Thompson <thompsa@FreeBSD.org>
To:        Robert Watson <rwatson@FreeBSD.org>
Cc:        hackers@FreeBSD.org, current@FreeBSD.org
Subject:   Re: procstat(1) committed to CVS HEAD
Message-ID:  <20071203093531.GA31649@heff.fud.org.nz>
In-Reply-To: <20071203090800.U74097@fledge.watson.org>
References:  <20071202233435.G74097@fledge.watson.org> <20071203032422.GC30756@heff.fud.org.nz> <20071203090800.U74097@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 03, 2007 at 09:10:27AM +0000, Robert Watson wrote:
>
> On Mon, 3 Dec 2007, Andrew Thompson wrote:
>
>> On Sun, Dec 02, 2007 at 11:38:45PM +0000, Robert Watson wrote:
>>>
>>> Dear all, (and FYI to hackers@ where I previousl sought feedback):
>>>
>>> I've now committed procstat(1) to CVS.  I've found it to be quite a 
>>> helpful debugging tool, am particularly pleased with -k/-kk, and would 
>>> welcome feedback and ideas on further improving it.
>>
>> I would like to give some feedback. I listed the threads of proc 12 which 
>> is intr,
>>
>> # procstat -t 12
>>  PID    TID COMM                 CPU  PRI STATE   WCHAN
>>   12 100003 intr                   0   40 wait    -
>>   12 100004 intr                   0   52 wait    -
>>   12 100030 intr                   0   16 wait    -
>>   [...]
>>   12 100036 intr                   0   36 wait    -
>>   12 100037 intr                   0   24 wait    -
>>
>> I had expected it to show the thread name such as 'irq14: ata0', is this 
>> possible (and a good thing to do)?
>
> I just print out the 'comm' field returned by the generic sysctl, and I 
> notice that top(1) with -S is now having the same problem as procstat(1).  
> I think this is a kernel bug in how we initialize or otherwise handle 
> thread names, and fairly recent, as it's not present on my 7.0BETA2 box.  
> If I had to guess, it's that these are now 'true threads' under the single 
> 'intr' proc, and that we're not exporting the thread name?

Changing to ki_ocomm gets the desired result for single and
multithreaded processes.


Andrew

Index: procstat_threads.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/procstat/procstat_threads.c,v
retrieving revision 1.1
diff -u -p -r1.1 procstat_threads.c
--- procstat_threads.c  2 Dec 2007 23:31:45 -0000       1.1
+++ procstat_threads.c  3 Dec 2007 06:06:46 -0000
@@ -82,8 +82,8 @@ procstat_threads(pid_t pid, struct kinfo
                kipp = &kip[i];
                printf("%5d ", pid);
                printf("%6d ", kipp->ki_tid);
-               printf("%-20s ", strlen(kipp->ki_comm) ?
-                   kipp->ki_comm : "-");
+               printf("%-20s ", strlen(kipp->ki_ocomm) ?
+                   kipp->ki_ocomm : "-");
                if (kipp->ki_oncpu != 255)
                        printf("%3d ", kipp->ki_oncpu);
                else if (kipp->ki_lastcpu != 255)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071203093531.GA31649>