[horde] Bottleneck ? CPU or HDisk IO or RAM

Andrew Morgan morgan at orst.edu
Thu Feb 5 01:34:01 UTC 2009


On Tue, 3 Feb 2009, Linux Advocate wrote:

> Andy,
>
> A. supposing its two boxes of Dual Core Dual Xeons, 8GB RAM and 7.2k rpm 
> 750 GB SATA disks ( 6 or more ) in a RAID10, i.e one for horde, one for 
> imap/pop/webmail ,will the 7.2k rpm sata drives cut it ? since imap is 
> hard disk i/o intensive ( as mentioned in one of the posts here ) ?

It is very hard to know how well it will perform.  It depends a lot on how 
Dovecot (I think you said Dovecot) works.  I have experience using Cyrus, 
but not Dovecot.  With Cyrus, there are message files which are 
infrequently accessed and require very little performance (SATA on RAID5 
would be fine).  There are also metadata files (indexes, cached headers, 
etc) which are read and updated constantly.  The metadata files should be 
on high-speed disks (10k or 15k rpm) in RAID1 or RAID10.

You can make some rough guesses by thinking about how IMAP works and what 
your users will do:

1. New mail is received - message must be written to disk, metadata 
updated.

2. Mailbox is opened - metadata files must be read to obtain the list of 
messages and the message states.

3. Message is read - message file (and possibly metadata files) must be 
read.  Seen state in metadata must be updated.

4. Message marked as deleted - metadata must be updated.

5. Mailbox purged - metadata updated and message files deleted.

Those are the most common things your users will do.  If you can make an 
estimate of how often these will happen, you can also estimate how many 
I/O's Per Second (IOPS) you need.  Once you know your IOPS requirements, 
you can determine how many disks you'll need as RAID10 and how many disks 
you'll need as RAID5.

Generally, a single disk drive can do this many IOPS per disk:

15k rpm: 180-210 IOPS
10k rpm: 130-150 IOPS
7200 rpm: 80-100 IOPS
5400 rpm: 50-80 IOPS

In a mirrored configuration:

   Disk IOPS = Read IOPS + (2 * Write IOPS)

In a parity (RAID5) configuration:

   Disk IOPS = Read IOPS + (4 * Write IOPS)

For example, if you estimate that you need to support 40 Read IOPS (40 
reads/sec) and 80 Write IOPS (80 writes/sec):

   (mirrored)
     40 r/s + (2 * 80 w/s) = 200 Disk IOPS
     Using 7200 rpm drives, you need: 200 / 50 = 4 disk drives

   (parity)
     40 r/s + (4 * 80 w/s) = 360 Disk IOPS
     Using 7200 rpm drives, you need: 360 / 50 = 7.2 disk drives

And you can recalculate based on faster drives if you want to know the 
results for 10k SAS drives, etc.

> C. What hardware do u use and how many users do u handle?

See http://onid.oregonstate.edu/docs/technical/servers.shtml for a 
listing.  Specifically, look at the Mail, Webmail, and MySQL server 
sections.  We have approximately 10,000 unique Webmail users in a given 
day and a total user population of about 30,000 active accounts.

It is a lot easier to start from a working system and plan upgrades, 
rather than planning for a new system where you can't measure the 
workload.  :)

 	Andy


More information about the horde mailing list