Put only cyrus.index and cyrus.cache in metadata partitions ?
Bron Gondwana
brong at fastmail.fm
Mon Aug 30 18:01:17 EDT 2010
On Mon, Aug 30, 2010 at 07:00:39PM +0200, Eric Luyten wrote:
> I just ran some tests on an empty test configuration and obtained surprising
> results with different data/metadata split situations.
>
>
> Server : SunFire X4170 with 72 GB of RAM, 2 x 300 GB internal disks in ZFS
> mirror configuration, 32 GB "LogZilla" SSD, 2 x 1 Gbps iSCSI SAN connection
> with multisession failover and load balancing capabilities.
>
>
> Test : start four parallel streams invoking /usr/cyrus/bin/deliver on a 50 KB
> message and send it 5000 (five thousand) times to a different mailbox.
>
> Metadata merged in data (on iSCSI SAN) : 114 seconds elapsed time, 175 msgs/s
> Metadata on SAS disks : 200 seconds elapsed time, 100 msgs/s
> Metadata on SSD : 97 seconds elapsed time, 206 msgs/s
>
> The ZFS 'atime' attribute was 'off' on all devices.
>
> The SSD is also used for the Cyrus DB's (mailboxes.db, deliver.db) and 'proc'
> directory.
Symlink the 'proc' directory out into a tmpfs/ramfs. It doesn't need to
be on real storage.
> Dtrace shows that the Cyrus metadata files attract many synchronous writes.
Yes, yes they do. We 'fsync' after each mailbox write - specifically both
to the cyrus.index and cyrus.cache. We also exclusively lock (fcntl or
flock) the cyrus.index to keep consistency during the append.
Now the iSCSI data is interesting - but the question is IOPS - what sort of
random write IO can your SAN sustain? Particulary - does it have battery
backed write cache? Remember that you only get one disk's worth of IO for
random writes on a RAID1, because it can't return until it's in solid
storage on both pieces of spinning rust.
Bron.
More information about the Info-cyrus
mailing list