Separating master processes for different services to utilise multiple cores/cpus

Andrew Morgan morgan at
Mon Mar 2 20:40:30 EST 2009

> On Wed, Feb 25, 2009 at 11:47 PM, Atif Ghaffar <atif.ghaffar at>wrote:
>> Hello,
>> I am a long time cyrus user but have not been hands on for a while.
>> At my current job we are running cyrus to manage all mailstore for our ISP.
>> Recently I have migrate a couple of boxes to newer ones with more cores per
>> cpu.
>> when running htop -u cyrus,  i see that only one core is being used for
>> most of the work and that seems to be a waste of the rest of the cpus.
>> We are using the following services (imap, pop3, lmtp, sieve)
>> One thought that comes to mind is to run different master processes which
>> do one service at a time.
>> I am thinking on consolidating into
>> 1. cyrus-master-main (running imap/sieve)
>> 2. cyrus-master-pop3 (running pop3)
>> 3. cyrus-master-lmtp (running lmtp)
>> Does this makes any sense?
>> Would this balance the usage of the CPUs.
>> If yes, I will post the config files for inspection.

Cyrus is already a multi-process program.  Each new incoming connection 
spawns a separate imapd, pop3d, timsieved, or lmtpd process.  You won't 
gain any additional efficiency by running multiple master processes.

Most of the time, Cyrus is not limited by your cpu performance but it is 
often limited by your I/O (disk) performance.

On some operating systems, all I/O operations are handled by one 
particular cpu.  For example, I/O from a network card may always be 
processed by cpu #0.  It is possible that is happening to you, although I 
don't know if Linux does that.

Are you having a performance problem?


More information about the Info-cyrus mailing list