[Dovecot] dovecot-auth consumes 100% CPU time on Solaris 10

Mark Heitmann Mark.Heitmann at dnw-germany.aero
Wed Nov 28 10:10:49 EET 2007


>
> Mark Heitmann wrote:
> >>/ >>/ Did you compile with Solaris's own LDAP library or with OpenLDAP?
> />>/ />/ I'm using iPlanet DS and Solaris's LDAP library.
> />>/ /
> />>/ People have had different kinds of problems with Solaris LDAP  
> />>/ library. You could try if OpenLDAP works better.
> />/ 
> />/ I have the same problem also with openLDAP (compiled with gcc 3.4.3 on
> />/ Solaris 10 x86 (Update 4)). When I build dovecot with ldap-support, the
> />/ dovecot-auth process gets 100% CPU time, without ldap-support, the
> />/ problem doesn't exists.
> />/ 
> />/ The machine is a Sun Fire X2200 M2 with an AMD Opteron processor
> />/ on actual patch level. Does somebody have a solution for this problem
> />/ (pollsys) under Solaris 10?
> />/ 
> />/ Greets,
> />/ Mark
> />/ 
> /
> What does truss report the verbose arguments to pollsys to be?
>
> eg:
>
> # truss -v pollsys -p `pgrep dovecot-auth`
>   
<snip>

Here is my output from truss:

pollsys(0x08047780, 5, 0x08047758, 0x00000000)  = 0
        fd=9  ev=POLLIN rev=0
        fd=-1 ev=0 rev=0
        ...last pollfd structure repeated 3 times...
        timeout: 0.000000000 sec
pollsys(0x08099448, 11, 0x08047B10, 0x00000000) = 1
        fd=5  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=7  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=1  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=POLLIN|POLLPRI
        fd=0  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=3  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=10 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=11 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=12 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=13 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=14 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=15 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        timeout: 0.478000000 sec
pollsys(0x08047780, 5, 0x08047758, 0x00000000)  = 0
        fd=9  ev=POLLIN rev=0
        fd=-1 ev=0 rev=0
        ...last pollfd structure repeated 3 times...
        timeout: 0.000000000 sec
pollsys(0x08099448, 11, 0x08047B10, 0x00000000) = 1
        fd=5  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=7  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=1  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=POLLIN|POLLPRI
        fd=0  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=3  ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=10 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=11 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=12 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=13 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=14 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        fd=15 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0
        timeout: 0.478000000 sec

The timeout values in the large block change from truss-call to 
truss-call, the
highest values are round about 2.0 sec ... but in many truss calls no 
times 0 (zero)
seconds, just in the short block

My output from dtrace:

  0  61836                    pollsys:entry
              libc.so.1`__pollsys+0x7
              libc.so.1`poll+0x52
              libnspr4.so`_pr_poll_with_poll+0x3c1
              libnspr4.so`PR_Poll+0x16
              libldap.so.5`prldap_poll+0xfa
              libldap.so.5`nsldapi_iostatus_poll+0xbb
              libldap.so.5`wait4msg+0x62c
              libldap.so.5`nsldapi_result_nolock+0x56
              libldap.so.5`ldap_result+0x94
              dovecot-auth`ldap_input+0x64

  0  61836                    pollsys:entry
              libc.so.1`__pollsys+0x7
              libc.so.1`poll+0x52
              dovecot-auth`io_loop_handler_run+0x35
              dovecot-auth`io_loop_run+0x21
              dovecot-auth`main+0x3fa
              dovecot-auth`_start+0x80

  0  61836                    pollsys:entry
              libc.so.1`__pollsys+0x7
              libc.so.1`poll+0x52
              libnspr4.so`_pr_poll_with_poll+0x3c1
              libnspr4.so`PR_Poll+0x16
              libldap.so.5`prldap_poll+0xfa
              libldap.so.5`nsldapi_iostatus_poll+0xbb
              libldap.so.5`wait4msg+0x62c
              libldap.so.5`nsldapi_result_nolock+0x56
              libldap.so.5`ldap_result+0x94
              dovecot-auth`ldap_input+0x64

  0  61836                    pollsys:entry
              libc.so.1`__pollsys+0x7
              libc.so.1`poll+0x52
              dovecot-auth`io_loop_handler_run+0x35
              dovecot-auth`io_loop_run+0x21
              dovecot-auth`main+0x3fa
              dovecot-auth`_start+0x80

Mark


More information about the dovecot mailing list