[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#4308) poor performance under load
Spicer, Kevin wrote:
> -----Original Message-----
> From: Howard Chu [mailto:hyc@symas.com]
>
>
>> Attach to the slapd process with gdb and get a stack trace. We need to
>> see what that CPU hogging thread is doing.
>>
>
> I have to confess I don't know very much about using gdb, and have never
> done it with threads before - so I hope you'll excuse me and point me in
> the right direction if this isn't what you want...
>
That's about right, but we need a slapd built without optimization, and
with debug symbols intact. The stack trace you got here shows a sequence
that doesn't occur in the code; this often happens on optimized code.
> ######
> First... output of prstat -L
> ######
>
> PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/LWPID
> 22870 ldap 258M 33M stop 30 0 0:00:26 17% slapd/2
> 22870 ldap 258M 33M stop 49 0 0:00:01 0.9% slapd/7
> 22870 ldap 258M 33M stop 49 0 0:00:01 0.7% slapd/5
> 22870 ldap 258M 33M stop 49 0 0:00:01 0.7% slapd/4
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.7% slapd/8
> 22870 ldap 258M 33M stop 49 0 0:00:01 0.6% slapd/6
> 22870 ldap 258M 33M stop 49 0 0:00:01 0.6% slapd/3
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.5% slapd/13
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.4% slapd/10
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.4% slapd/9
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.4% slapd/17
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.4% slapd/11
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.4% slapd/12
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.4% slapd/18
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.4% slapd/15
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.4% slapd/14
> 22870 ldap 258M 33M stop 49 0 0:00:00 0.3% slapd/16
> 22870 ldap 258M 33M stop 59 0 0:00:00 0.0% slapd/1
>
> ######
> now gdb (I've included the full output so you can see if I'm doing
> anything wrong!)
> ######
>
> GNU gdb 6.0
> Copyright 2003 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you
> are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for
> details.
> This GDB was configured as "sparc-sun-solaris2.9".
> (gdb) attach 22870
> Attaching to process 22870
> Reading symbols from /usr/local/libexec/slapd...(no debugging symbols
> found)...
> done.
> Reading symbols from /usr/local/ssl/lib/libssl.so.0.9.7...
> (no debugging symbols found)...done.
> Loaded symbols for /usr/local/ssl/lib/libssl.so.0.9.7
> Reading symbols from /usr/local/ssl/lib/libcrypto.so.0.9.7...
> (no debugging symbols found)...done.
> Loaded symbols for /usr/local/ssl/lib/libcrypto.so.0.9.7
> Reading symbols from /usr/lib/libresolv.so.2...(no debugging symbols
> found)...
> done.
> Loaded symbols for /usr/lib/libresolv.so.2
> Reading symbols from /usr/lib/libgen.so.1...(no debugging symbols
> found)...
> done.
> Loaded symbols for /usr/lib/libgen.so.1
> Reading symbols from /usr/lib/libnsl.so.1...(no debugging symbols
> found)...
> done.
> Loaded symbols for /usr/lib/libnsl.so.1
> Reading symbols from /usr/lib/libsocket.so.1...(no debugging symbols
> found)...
> done.
> Loaded symbols for /usr/lib/libsocket.so.1
> Reading symbols from /usr/lib/libdl.so.1...(no debugging symbols
> found)...done.
> Loaded symbols for /usr/lib/libdl.so.1
> Reading symbols from /usr/sfw/lib/libwrap.so.1...
> (no debugging symbols found)...done.
> Loaded symbols for /usr/sfw/lib/libwrap.so.1
> Reading symbols from /usr/lib/libpthread.so.1...(no debugging symbols
> found)...
> done.
> Loaded symbols for /usr/lib/libpthread.so.1
> Reading symbols from /usr/lib/libc.so.1...(no debugging symbols
> found)...done.
> Loaded symbols for /usr/lib/libc.so.1
> Reading symbols from /usr/local/lib/libgcc_s.so.1...done.
> Loaded symbols for /usr/local/lib/libgcc_s.so.1
> Reading symbols from /usr/lib/libmp.so.2...done.
> Loaded symbols for /usr/lib/libmp.so.2
> ---Type <return> to continue, or q <return> to quit---
> Reading symbols from
> /usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1...done.
> Loaded symbols for /usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1
> Reading symbols from /usr/lib/libthread.so.1...done.
> warning: sol_thread_new_objfile: td_ta_new: Debugger service failed
> Loaded symbols for /usr/lib/libthread.so.1
> Reading symbols from /usr/lib/libldap.so.5...done.
> warning: sol_thread_new_objfile: td_ta_new: Debugger service failed
> Loaded symbols for /usr/lib/libldap.so.5
> Reading symbols from /usr/lib/librt.so.1...done.
> warning: sol_thread_new_objfile: td_ta_new: Debugger service failed
> Loaded symbols for /usr/lib/librt.so.1
> Reading symbols from /usr/lib/libmd5.so.1...done.
> warning: sol_thread_new_objfile: td_ta_new: Debugger service failed
> Loaded symbols for /usr/lib/libmd5.so.1
> Reading symbols from /usr/lib/libaio.so.1...done.
> warning: sol_thread_new_objfile: td_ta_new: Debugger service failed
> Loaded symbols for /usr/lib/libaio.so.1
> Reading symbols from
> /usr/local/libexec/openldap/ppolicy-2.3.so.0...done.
> warning: sol_thread_new_objfile: td_ta_new: Debugger service failed
> Loaded symbols for /usr/local/libexec/openldap/ppolicy-2.3.so.0
> Reading symbols from /usr/local/lib/libltdl.so.3...done.
> warning: sol_thread_new_objfile: td_ta_new: Debugger service failed
> Loaded symbols for /usr/local/lib/libltdl.so.3
> Retry #1:
> Retry #2:
> Retry #3:
> Retry #4:
> [New LWP 1]
> Symbols already loaded for /usr/local/ssl/lib/libssl.so.0.9.7
> Symbols already loaded for /usr/local/ssl/lib/libcrypto.so.0.9.7
> Symbols already loaded for /usr/lib/libresolv.so.2
> Symbols already loaded for /usr/lib/libgen.so.1
> Symbols already loaded for /usr/lib/libnsl.so.1
> Symbols already loaded for /usr/lib/libsocket.so.1
> Symbols already loaded for /usr/lib/libdl.so.1
> Symbols already loaded for /usr/sfw/lib/libwrap.so.1
> Symbols already loaded for /usr/lib/libpthread.so.1
> Symbols already loaded for /usr/lib/libc.so.1
> Symbols already loaded for /usr/local/lib/libgcc_s.so.1
> Symbols already loaded for /usr/lib/libmp.so.2
> Symbols already loaded for
> /usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1
> Symbols already loaded for /usr/lib/libthread.so.1
> Symbols already loaded for /usr/lib/libldap.so.5
> Symbols already loaded for /usr/lib/librt.so.1
> Symbols already loaded for /usr/lib/libmd5.so.1
> Symbols already loaded for /usr/lib/libaio.so.1
> Symbols already loaded for /usr/local/libexec/openldap/ppolicy-2.3.so.0
> Symbols already loaded for /usr/local/lib/libltdl.so.3
> 0xff01f870 in _lwp_wait () from /usr/lib/libc.so.1
> (gdb) info threads
> 18 LWP 2 0xff01fb74 in time () from /usr/lib/libc.so.1
> 17 LWP 3 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 16 LWP 4 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 15 LWP 5 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 14 LWP 6 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 13 LWP 7 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 12 LWP 8 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 11 LWP 9 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 10 LWP 10 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 9 LWP 11 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 8 LWP 12 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 7 LWP 13 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 6 LWP 14 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 5 LWP 15 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 4 LWP 16 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 3 LWP 17 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> 2 LWP 18 0xfef158f4 in __lwp_park () from /usr/lib/libthread.so.1
> * 1 LWP 1 0xff01f870 in _lwp_wait () from /usr/lib/libc.so.1
> (gdb) thread 18
> [Switching to thread 18 (LWP 2)]#0 0xff01fb74 in time ()
> from /usr/lib/libc.so.1
> (gdb) bt
> #0 0xff01fb74 in time () from /usr/lib/libc.so.1
> #1 0x000e6d14 in ldap_pvt_runqueue_resched ()
> #2 0x0003b660 in slapd_daemon_destroy ()
> #3 0xfef157bc in _lwp_start () from /usr/lib/libthread.so.1
> (gdb) detach
> Detaching from program: LWP 2
> (gdb) quit
>
>
--
-- Howard Chu
Chief Architect, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc
OpenLDAP Core Team http://www.openldap.org/project/