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.5prldap_poll+0xfa libldap.so.5
nsldapi_iostatus_poll+0xbb
libldap.so.5wait4msg+0x62c libldap.so.5
nsldapi_result_nolock+0x56
libldap.so.5ldap_result+0x94 dovecot-auth
ldap_input+0x64
0 61836 pollsys:entry
libc.so.1__pollsys+0x7 libc.so.1
poll+0x52
dovecot-authio_loop_handler_run+0x35 dovecot-auth
io_loop_run+0x21
dovecot-authmain+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.5prldap_poll+0xfa libldap.so.5
nsldapi_iostatus_poll+0xbb
libldap.so.5wait4msg+0x62c libldap.so.5
nsldapi_result_nolock+0x56
libldap.so.5ldap_result+0x94 dovecot-auth
ldap_input+0x64
0 61836 pollsys:entry
libc.so.1__pollsys+0x7 libc.so.1
poll+0x52
dovecot-authio_loop_handler_run+0x35 dovecot-auth
io_loop_run+0x21
dovecot-authmain+0x3fa dovecot-auth
_start+0x80
Mark