dovecot works really well for me on openbsd. i've only used it with maildir format but with a bit of attention to the documentation and mail list gave me every bit of information i could possibly use and the performance is simply EXCELLENT compared to courier (or especially uw-imap.)
Samuel Mo?ux [EMAIL PROTECTED] wrote: > It seems that Francesco pointed me in the right direction in a private > message. Cyrus in OpenBSD can't use mmap since it assumes that changes > in an mmaped file are inmediately seen by VFS system calls. OpenBSD > hasn't an unified buffer and page cache so this semantic requirement > of mmap isn't met (requires and explicit msync()). Another > implementation based in lseek and xmalloc must be used, which performs > much worse than the mmap based. > > I think this explains memory usage, and the high number of IOPS. > > Now, I must switch the IMAP server or the operating system. > > Thanks to everyone, specially Francesco. > > 2007/10/16, Samuel Moqux <[EMAIL PROTECTED]>: > > Hello everyone, > > > > I running into some problems with a Cyrus Imap server. A year ago I > > asked about sizing the server and it was defined as "overkill" (Dell > > 1850, Perc 4e/DC, 4 300GB 10krpm disks in Raid 10) for 300 users, but > > now I'm suffering of really high loads and performance problems. I > > think it's due I/O contention (more than a thousand t/s in iostat), > > but don't know why Cyrus is so intensive in I/O that this hardware > > can't handle it. Memory consumption is also very high. > > > > When I started with ~60 users everything was ok, but after surpasing > > the one hundred, performance problems arised. I added a imap proxy > > which sited between the server and the webmail(Squirrel) and improved > > overall performance, but now we have 215 users and the server has > > severe problems during peak hours, when load can reach values of 12 or > > more. Users perceive degraded response times. > > > > Top usually lota of imap processes waiting for getblk, biowait, lockf, > > or select. Vmstat also shows always proceses blocked waiting for I/O. > > > > I had to tweak default kernel values because server crashed when > > importing old mailboxes: > > maxusers 64 # estimated number of users > > option NKMEMPAGES_MAX=65535 > > option BUFCACHEPERCENT=15 > > > > Cyrus was compiled from ports, with default options. The server is > > running Sendmail and a lightly loaded openldap. > > > > I don't know where to look at or what to tweak. Any ideas will be welcome. > > > > Best regards. > > > > Dmesg and other relevant data (non peak hours). > > > > load averages: 10.36, 6.97, 5.79 > > 17:59:50 > > 259 processes: 258 idle, 1 on processor > > CPU states: 3.7% user, 0.0% nice, 20.6% system, 1.9% interrupt, 73.8% > idle > > Memory: Real: 1135M/1702M act/tot Free: 312M Swap: 47M/2196M used/tot > > > > PID USERNAME PRI NICE SIZE RES STATE WAIT TIME CPU COMMAND > > 9503 _cyrus 2 0 2716K 4392K sleep select 0:08 1.12% imapd > > 16618 _cyrus -5 0 3976K 5728K sleep biowai 0:08 1.03% imapd > > 14158 _cyrus 2 0 3544K 5568K sleep select 0:01 0.68% imapd > > 23082 _cyrus -5 0 11M 11M sleep getblk 0:06 0.54% imapd > > 4397 _cyrus 2 0 1664K 3396K sleep select 0:00 0.54% imapd > > 831 _cyrus -5 0 14M 16M sleep getblk 0:01 0.34% imapd > > 30096 _cyrus 2 0 6136K 7464K sleep select 0:03 0.29% imapd > > 10307 _cyrus -5 0 5572K 5908K sleep getblk 0:00 0.29% imapd > > 28758 _cyrus -5 0 7664K 9412K sleep biowai 0:02 0.20% imapd > > 27091 _cyrus -5 0 10M 12M sleep getblk 0:02 0.20% imapd > > 15191 _cyrus 2 0 1740K 3664K sleep select 0:00 0.20% imapd > > 17387 _cyrus 2 0 2216K 4056K sleep select 0:02 0.15% imapd > > 25614 _cyrus 2 0 2056K 3952K sleep select 0:02 0.15% imapd > > > > # iostat 5 5 > > tty sd0 sd1 cd0 > > fd0 cpu > > tin tout KB/t t/s MB/s KB/t t/s MB/s KB/t t/s MB/s KB/t t/s > > MB/s us ni sy in id > > 0 8 10.77 18 0.19 14.30 242 3.38 0.00 0 0.00 0.00 0 > > 0.00 18 0 5 1 77 > > 0 54 9.93 34 0.33 15.00 956 14.00 0.00 0 0.00 0.00 0 > > 0.00 3 0 13 0 84 > > 0 18 12.07 80 0.95 14.33 615 8.61 0.00 0 0.00 0.00 0 > > 0.00 7 0 15 1 77 > > 0 18 8.68 9 0.08 14.03 575 7.88 0.00 0 0.00 0.00 0 > > 0.00 1 0 6 1 92 > > 0 18 10.21 30 0.30 13.26 709 9.19 0.00 0 0.00 0.00 0 > > 0.00 1 0 9 2 88 > > > > # vmstat 5 5 > > procs memory page disks traps cpu > > r b w avm fre flt re pi po fr sr sd0 sd1 int sys cs us sy > id > > 7 2 01206040 321392 1719 0 0 11 0 174 12 430 573 4294967005 > > 446 18 6 77 > > 1 7 01200372 329816 7117 0 0 0 0 0 28 1497 1488 8354 1469 11 > 17 72 > > 0 2 01198584 331560 4741 0 0 0 0 0 15 1770 1390 5770 1202 3 > 14 83 > > 0 2 01189932 341820 2549 0 0 0 0 0 37 778 800 2981 592 2 8 > 90 > > 1 5 01196632 334756 5348 0 0 0 0 0 56 1622 1455 6145 1247 3 > 18 78 > > > > > > /etc/sysctl.conf : > > > > kern.maxproc=1024 > > kern.maxfiles=8000 > > net.inet.tcp.sendspace=65535 > > net.inet.tcp.recvspace=65535 > > > > # mount > > /dev/sd0a on / type ffs (local) > > /dev/sd0i on /home type ffs (local, nodev, softdep) > > /dev/sd0d on /tmp type ffs (local, nodev, nosuid) > > /dev/sd0f on /usr type ffs (local, nodev) > > /dev/sd0e on /var type ffs (local, nodev, nosuid, softdep) > > /dev/sd0h on /var/spool type ffs (local, noatime, nodev, nosuid, softdep) > > /dev/sd1a on /das0 type ffs (local, noatime, nodev, nosuid, softdep) > > > > # df -h > > Filesystem Size Used Avail Capacity Mounted on > > /dev/sd0a 500M 99.9M 375M 21% / > > /dev/sd0i 50.7G 42.4G 5.8G 88% /home > > /dev/sd0d 124M 16.0K 117M 0% /tmp > > /dev/sd0f 7.9G 3.3G 4.2G 44% /usr > > /dev/sd0e 2.0G 344M 1.5G 18% /var > > /dev/sd0h 3.9G 55.7M 3.7G 1% /var/spool > > /dev/sd1a 550G 78.3G 444G 15% /das0 > > > > # cat /etc/cyrus.conf > > START { > > # do not delete this entry! > > recover cmd="ctl_cyrusdb -r" > > > > # this is only necessary if using idled for IMAP IDLE > > idled cmd="idled" > > } > > > > # UNIX sockets start with a slash and are put into /var/imap/socket > > SERVICES { > > # add or remove based on preferences > > imap cmd="imapd -U 30" listen="imap" prefork=10 > > # imaps cmd="imapd -s" listen="imaps" prefork=0 > > pop3 cmd="pop3d" listen="pop3" prefork=1 > > # pop3s cmd="pop3d -s" listen="pop3s" prefork=0 > > sieve cmd="timsieved" listen="sieve" prefork=1 > > > > # these are only necessary if receiving/exporting usenet via NNTP > > # nntp cmd="nntpd" listen="nntp" prefork=0 > > # nntps cmd="nntpd -s" listen="nntps" prefork=0 > > > > # at least one LMTP is required for delivery > > # lmtp cmd="lmtpd" listen="lmtp" prefork=0 > > #lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=1 > > maxchild=40 > > lmtpunix cmd="lmtpd -a" listen="/var/imap/socket/lmtp" > > prefork=5 maxchild=10 > > > > # this is only necessary if using notifications > > notify cmd="notifyd" listen="/var/imap/socket/notify" > > proto="udp" prefork=1 > > } > > > > EVENTS { > > # this is required > > checkpoint cmd="ctl_cyrusdb -c" period=30 > > > > # this is only necessary if using duplicate delivery suppression, > > # Sieve or NNTP > > delprune cmd="cyr_expire -E 3" at=0400 > > > > squatter cmd="squatter -s -r user" at=0100 > > # this is only necessary if caching TLS sessions > > # tlsprune cmd="tls_prune" at=0400 > > } > > > > > > > > OpenBSD 3.9-stable (GENERIC) #3: Sat Aug 26 23:30:07 CEST 2006 > > [EMAIL PROTECTED]:/usr/src/sys/arch/i386/compile/GENERIC > > cpu0: Intel(R) Xeon(TM) CPU 3.20GHz ("GenuineIntel" 686-class) 3.20 GHz > > cpu0: > FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUS > H,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,CNXT-ID > > real mem = 2146807808 (2096492K) > > avail mem = 1779486720 (1737780K) > > using 4278 buffers containing 280363008 bytes (273792K) of memory > > mainbus0 (root) > > bios0 at mainbus0: AT/286+(00) BIOS, date 01/09/06, BIOS32 rev. 0 @ 0xffe90 > > pcibios0 at bios0: rev 2.1 @ 0xf0000/0x10000 > > pcibios0: PCI IRQ Routing Table rev 1.0 @ 0xfb260/304 (17 entries) > > pcibios0: PCI Interrupt Router at 000:31:0 ("Intel 82801EB/ER LPC" rev > 0x00) > > pcibios0: PCI bus #11 is the last bus > > bios0: ROM list: 0xc0000/0xb000! 0xcb000/0x1000 0xcc000/0x1000 > > 0xcd000/0x2200 0xcf800/0x2200 0xec000/0x4000! > > ipmi0 at mainbus0: version 1.5 interface KCS iobase 0xca8/8 spacing 4 > > cpu0 at mainbus0 > > pci0 at mainbus0 bus 0: configuration mode 1 (no bios) > > pchb0 at pci0 dev 0 function 0 "Intel E7520 MCH" rev 0x09 > > ppb0 at pci0 dev 2 function 0 "Intel MCH PCIE" rev 0x09 > > pci1 at ppb0 bus 1 > > ppb1 at pci1 dev 0 function 0 "Intel IOP331 Channel 0" rev 0x06 > > pci2 at ppb1 bus 2 > > ami0 at pci2 dev 14 function 0 "Dell PERC 4e/Di" rev 0x06: irq 7 Dell 16c > 32b > > ami0: FW 521X, BIOS vH430, 256MB RAM > > ami0: 1 channels, 0 FC loops, 1 logical drives > > scsibus0 at ami0: 40 targets > > sd0 at scsibus0 targ 0 lun 0: <AMI, Host drive #00, > SCSI2 0/direct fixed > > sd0: 69880MB, 69880 cyl, 64 head, 32 sec, 512 bytes/sec, 143114240 sec > total > > scsibus1 at ami0: 16 targets > > safte0 at scsibus1 targ 6 lun 0: <PE/PV, 1x2 SCSI BP, 1.0> SCSI2 > > 3/processor fixed > > ppb2 at pci1 dev 0 function 2 "Intel IOP331 Channel 1" rev 0x06 > > pci3 at ppb2 bus 3 > > ppb3 at pci0 dev 4 function 0 "Intel MCH PCIE" rev 0x09 > > pci4 at ppb3 bus 4 > > ppb4 at pci4 dev 0 function 0 "Intel IOP331 Channel 0" rev 0x07 > > pci5 at ppb4 bus 5 > > ami1 at pci5 dev 14 function 0 "Symbios Logic MegaRAID 320-2E" rev > > 0x07: irq 7 Dell 2 32b > > ami1: FW 521X, BIOS vH430, 128MB RAM > > ami1: 2 channels, 0 FC loops, 1 logical drives > > scsibus2 at ami1: 40 targets > > sd1 at scsibus2 targ 0 lun 0: <AMI, Host drive #00, > SCSI2 0/direct fixed > > sd1: 572160MB, 572160 cyl, 64 head, 32 sec, 512 bytes/sec, 1171783680 sec > total > > scsibus3 at ami1: 16 targets > > ses0 at scsibus3 targ 6 lun 0: <DELL, PV22XS, E.19> SCSI3 3/processor fixed > > scsibus4 at ami1: 16 targets > > ppb5 at pci4 dev 0 function 2 "Intel IOP331 Channel 1" rev 0x07 > > pci6 at ppb5 bus 6 > > ppb6 at pci0 dev 5 function 0 "Intel MCH PCIE" rev 0x09 > > pci7 at ppb6 bus 7 > > ppb7 at pci7 dev 0 function 0 "Intel PCIE-PCIE" rev 0x09 > > pci8 at ppb7 bus 8 > > em0 at pci8 dev 7 function 0 "Intel PRO/1000MT (82541GI)" rev 0x05: > > irq 11, address 00:13:72:5c:87:e9 > > ppb8 at pci7 dev 0 function 2 "Intel PCIE-PCIE" rev 0x09 > > pci9 at ppb8 bus 9 > > em1 at pci9 dev 8 function 0 "Intel PRO/1000MT (82541GI)" rev 0x05: > > irq 3, address 00:13:72:5c:87:ea > > ppb9 at pci0 dev 6 function 0 "Intel MCH PCIE" rev 0x09 > > pci10 at ppb9 bus 10 > > uhci0 at pci0 dev 29 function 0 "Intel 82801EB/ER USB" rev 0x02: irq 11 > > usb0 at uhci0: USB revision 1.0 > > uhub0 at usb0 > > uhub0: Intel UHCI root hub, rev 1.00/1.00, addr 1 > > uhub0: 2 ports with 2 removable, self powered > > uhci1 at pci0 dev 29 function 1 "Intel 82801EB/ER USB" rev 0x02: irq 10 > > usb1 at uhci1: USB revision 1.0 > > uhub1 at usb1 > > uhub1: Intel UHCI root hub, rev 1.00/1.00, addr 1 > > uhub1: 2 ports with 2 removable, self powered > > uhci2 at pci0 dev 29 function 2 "Intel 82801EB/ER USB" rev 0x02: irq 7 > > usb2 at uhci2: USB revision 1.0 > > uhub2 at usb2 > > uhub2: Intel UHCI root hub, rev 1.00/1.00, addr 1 > > uhub2: 2 ports with 2 removable, self powered > > ehci0 at pci0 dev 29 function 7 "Intel 82801EB/ER USB2" rev 0x02: irq 5 > > usb3 at ehci0: USB revision 2.0 > > uhub3 at usb3 > > uhub3: Intel EHCI root hub, rev 2.00/1.00, addr 1 > > uhub3: 6 ports with 6 removable, self powered > > ppb10 at pci0 dev 30 function 0 "Intel 82801BA AGP" rev 0xc2 > > pci11 at ppb10 bus 11 > > vga1 at pci11 dev 13 function 0 "ATI Radeon VE QY" rev 0x00 > > wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) > > wsdisplay0: screen 1-5 added (80x25, vt100 emulation) > > ichpcib0 at pci0 dev 31 function 0 "Intel 82801EB/ER LPC" rev 0x02 > > pciide0 at pci0 dev 31 function 1 "Intel 82801EB/ER IDE" rev 0x02: > > DMA, channel 0 configured to compatibility, channel 1 configured to > > compatibility > > atapiscsi0 at pciide0 channel 0 drive 0 > > scsibus5 at atapiscsi0: 2 targets > > cd0 at scsibus5 targ 0 lun 0: <TEAC, CD-ROM CD-224E-N, 3.AB> SCSI0 > > 5/cdrom removable > > cd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2 > > pciide0: channel 1 disabled (no drives) > > isa0 at ichpcib0 > > isadma0 at isa0 > > pckbc0 at isa0 port 0x60/5 > > pckbd0 at pckbc0 (kbd slot) > > pckbc0: using irq 1 for kbd slot > > wskbd0 at pckbd0: console keyboard, using wsdisplay0 > > pcppi0 at isa0 port 0x61 > > midi0 at pcppi0: <PC speaker> > > spkr0 at pcppi0 > > npx0 at isa0 port 0xf0/16: using exception 16 > > pccom0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo > > fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 > > fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec > > biomask ffe5 netmask ffed ttymask ffef > > pctr: user-level cycle counter enabled > > uhub4 at uhub3 port 3 > > uhub4: Dell product 0xa001, rev 2.00/0.00, addr 2 > > uhub4: 2 ports with 2 removable, self powered, multiple transaction > translators > > dkcsum: sd0 matches BIOS drive 0x80 > > dkcsum: sd1 matches BIOS drive 0x81 > > root on sd0a > > rootdev=0x400 rrootdev=0xd00 rawdev=0xd02 > > WARNING: / was not properly unmounted > > arplookup: unable to enter address for 192.168.10.229 > > arplookup: unable to enter address for 192.168.10.243 > > uvm_mapent_alloc: out of static map entries > > uvm_mapent_alloc: out of static map entries > > uvm_mapent_alloc: out of static map entries > > uvm_mapent_alloc: out of static map entries -- "Give me the power to issue a nation's money, and I care not who writes the laws" -- Mayer Amschel Rothschild