On Tue 20 Feb 2007 at 02:09PM, Timo Sirainen wrote:
http://dovecot.org/releases/dovecot-1.0.rc23.tar.gz http://dovecot.org/releases/dovecot-1.0.rc23.tar.gz.sig
Documentation is probably the only important thing left before v1.0.
I'm seeing dovecot-auth in a pretty tight poll loop on rc23, which I have now deployed. It's not chewing up so much CPU that the machine can't deal, so I'll leave it alone for now. It looks like this:
# truss -d -p 245083 .... 0.3679 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 0.3686 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 0.3779 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 0.3786 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 0.3978 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 0.3982 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 0.4080 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 ...
[timestamps in column 1 are time elapsed since start of truss]
So what fd's are we polling?
# truss -v poll -p 245083 ... pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 fd=5 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=0 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=3 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=7 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=8 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=9 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 timeout: 0.000000000 sec pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 fd=5 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=0 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=3 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=7 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=8 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 fd=9 ev=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL rev=0 timeout: 0.009000000 sec
(timeout seems to oscillate back and forth between 0 and 0.009).
The pfiles output looks like:
245083: dovecot-auth Current rlimit: 256 file descriptors 0: S_IFSOCK mode:0666 dev:321,0 ino:59624 uid:0 gid:0 size:0 O_RDWR SOCK_STREAM SO_SNDBUF(16384),SO_RCVBUF(5120) sockname: AF_UNIX 1: S_IFCHR mode:0666 dev:314,0 ino:6815752 uid:0 gid:3 rdev:13,2 O_RDONLY|O_LARGEFILE /devices/pseudo/mm@0:null 2: S_IFIFO mode:0000 dev:322,0 ino:98020 uid:0 gid:0 size:0 O_RDWR 3: S_IFSOCK mode:0666 dev:321,0 ino:25491 uid:0 gid:0 size:0 O_RDWR|O_NONBLOCK SOCK_STREAM SO_SNDBUF(16384),SO_RCVBUF(5120) sockname: AF_UNIX /var/run/dovecot//login/default 4: S_IFCHR mode:0644 dev:314,0 ino:99614726 uid:0 gid:3 rdev:190,1 O_RDONLY|O_LARGEFILE FD_CLOEXEC /devices/pseudo/random@0:urandom 5: S_IFIFO mode:0000 dev:322,0 ino:98021 uid:0 gid:0 size:0 O_RDWR FD_CLOEXEC 6: S_IFIFO mode:0000 dev:322,0 ino:98021 uid:0 gid:0 size:0 O_RDWR FD_CLOEXEC 7: S_IFSOCK mode:0666 dev:321,0 ino:61121 uid:0 gid:0 size:0 O_RDWR|O_NONBLOCK SOCK_STREAM SO_SNDBUF(16384),SO_RCVBUF(5120) sockname: AF_UNIX /var/run/dovecot//login/default peername: AF_UNIX 8: S_IFSOCK mode:0666 dev:321,0 ino:59618 uid:0 gid:0 size:0 O_RDWR|O_NONBLOCK SOCK_STREAM SO_SNDBUF(16384),SO_RCVBUF(5120) sockname: AF_UNIX /var/run/dovecot//login/default peername: AF_UNIX 9: S_IFSOCK mode:0666 dev:321,0 ino:59629 uid:0 gid:0 size:0 O_RDWR|O_NONBLOCK SOCK_STREAM SO_SNDBUF(16384),SO_RCVBUF(5120) sockname: AF_UNIX /var/run/dovecot//login/default peername: AF_UNIX 10: S_IFDOOR mode:0444 dev:324,0 ino:43 uid:0 gid:0 size:0 O_RDONLY|O_LARGEFILE FD_CLOEXEC door to nscd[162385] /var/run/name_service_door
And the pstack is:
245083: dovecot-auth ff148a8c pollsys (5cf90, 6, ffbffae8, 0) ff0f5c5c poll (5cf90, 6, 9, 10624dd3, 22551, 895440) + 7c 00031fec io_loop_handler_run (5c758, 54670, 18, 5c7b0, 3d, 80000000) + 20 000319d8 io_loop_run (5c758, 3, 0, 1, bd524, 0) + 34 00023250 main (1, ffbffcac, 0, 53c00, 54400, 53c00) + 2b4 0001af18 _start (0, 0, 0, 0, 0, 0) + 5c
Config is:
jurassic # /usr/sos/sbin/dovecot -n # /usr/sos/etc/dovecot.conf base_dir: /var/run/dovecot/ log_path: /dev/stderr info_log_path: /dev/stderr protocols: imap listen: *:150 ssl_disable: yes disable_plaintext_auth: no login_dir: /var/run/dovecot//login login_executable: /usr/sos/libexec/dovecot/imap-login mail_extra_groups: mail mail_location: mbox:~:INBOX=/var/mail/%u:INDEX=%h/Mail/imapd-indices mail_debug: yes dotlock_use_excl: yes mbox_read_locks: dotlock fcntl mail_executable: /usr/sos/libexec/dovecot/rawlog /usr/sos/libexec/dovecot/imap auth default: mechanisms: plain gssapi krb5_keytab: /etc/krb5/krb5.keytab passdb: driver: pam userdb: driver: passwd
When a user arrives, they get logged in OK, I think... the truss for that looks like this:
read(9, " A U T H\t 1\t P L A I N".., 4072) = 94 pipe() = 11 [12] forkx(0) = 246563 lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 0xFFBFFEFF [0x0000FFFF] close(12) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 7, 0xFFBFFAE8, 0x00000000) = 1 read(11, "\0\0\001", 5120) = 4 close(11) = 0 write(9, " O K\t 1\t u s e r = d d".., 18) = 18 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 1 read(0, " R E Q U E S T\t 3 5\t 2".., 341) = 20 getuid() = 0 [0] getuid() = 0 [0] door_info(10, 0xFFBFF5E8) = 0 door_call(10, 0xFFBFF690) = 0 writev(0, 0xFFBFF810, 2) = 72 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 0 Received signal #18, SIGCLD, in pollsys() [caught] siginfo: SIGCLD CLD_EXITED pid=246563 status=0x0000 pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) Err#4 EINTR lwp_sigmask(SIG_SETMASK, 0x00020000, 0x00000000) = 0xFFBFFEFF [0x0000FFFF] write(6, "12", 1) = 1 setcontext(0xFFBFF490) pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 1 read(5, "12", 512) = 1 waitid(P_ALL, 0, 0xFFBFF768, WEXITED|WTRAPPED|WNOHANG) = 0 waitid(P_ALL, 0, 0xFFBFF768, WEXITED|WTRAPPED|WNOHANG) Err#10 ECHILD pollsys(0x0005CF90, 6, 0xFFBFFAE8, 0x00000000) = 1 read(9, 0x000642B6, 3978) = 0 close(9) = 0
As always, thanks,
-dp
-- Daniel Price - Solaris Kernel Engineering - dp@eng.sun.com - blogs.sun.com/dp