top incorrectly reporting process time

Ott Köstner OttK at zzz.ee
Fri Nov 28 04:14:38 PST 2008


Mel wrote:

> On Friday 28 November 2008 11:52:26 Ott Köstner wrote:
>   

>> Second computer FreeBSD 7.1-PRERELEASE #3 (exact copy / paste):
>>
>> # ps -ax|grep mysql; echo; ps -axH|grep mysql
>>  1015 con- I      0:00.01 /bin/sh /usr/local/bin/mysqld_safe
>> --defaults-extra-file=/var/db/mysql/my.c
>>  1079 con- S    582:49.60 [mysqld]
>>
>>  1015 con- I      0:00.01 /bin/sh /usr/local/bin/mysqld_safe
>> --defaults-extra-file=/var/db/mysql/my.c
>>  1079 con- S      2:00.40 [mysqld]
>>  1079 con- I      0:00.00 [mysqld]
>>  1079 con- I      0:01.32 [mysqld]
>>  1079 con- I      0:47.04 [mysqld]
>>  1079 con- I      0:03.56 [mysqld]
>>  1079 con- S      0:26.43 [mysqld]
>>  1079 con- S      3:13.97 [mysqld]
>>  1079 con- S      4:12.72 [mysqld]
>>  1079 con- S      0:03.72 [mysqld]
>>
>> 582 minutes is clearly wrong.
>>     
>
> Not if it's the sum of all threads that lived and died during the lifetime of 
> the process. It's value is taken from the kernel's idea of the runtime. With 
> KERN_PROC_INC_THREAD set, it will look at the thread storage for active 
> threads, including the 'main()' thread.
> I haven't looked into detail, but I suspect when a thread dies it gets added 
> to process runtime, and is stored nowhere else.
>
>   
I see. Thank You!


> Aside from the different machines, you also took 2 different daemons, which 
> fits this:
> named uses a static thread pool, by design, sum(nthreads) will equal the 
> process time
> mysqld uses a dynamic thread pool, sum(nthreads) is really 
> sum(nthreads_active).
>
> I haven't looked into detail
>
>   
I see.


Regards,
O.K.




More information about the freebsd-questions mailing list