[Dovecot] index IO patterns
Timo Sirainen
tss at iki.fi
Fri May 11 19:27:00 EEST 2012
On 11.5.2012, at 13.56, Javier de Miguel Rodríguez wrote:
>> Even without LDA/LMTP dovecot-imap needs to write right? It would
>> need to update the index every time an imap connect happens and
>> new mails are found in the mail store.
>
> Well of course. Indexes are also updated when flags are modified, moved a messages, delete a message, etc.. But in my setup there are 65% reads and the rest writes
There are several hard coded values related to read/write percentages. If you're interested you could try if changing them increases the read%:
mail-index-private.h:
/* Write to main index file when bytes-to-be-read-from-log is between these
values. */
#define MAIL_INDEX_MIN_WRITE_BYTES (1024*8)
#define MAIL_INDEX_MAX_WRITE_BYTES (1024*128)
mail-cache-private.h:
/* Never compress the file if it's smaller than this */
#define MAIL_CACHE_COMPRESS_MIN_SIZE (1024*50)
/* Compress the file when deleted space reaches n% of total size */
#define MAIL_CACHE_COMPRESS_PERCENTAGE 20
/* Compress the file when n% of rows contain continued rows.
200% means that there's 2 continued rows per record. */
#define MAIL_CACHE_COMPRESS_CONTINUED_PERCENTAGE 200
Increasing this might also improve read performance, compat.h:
/* Try to keep IO operations at least this size */
#ifndef IO_BLOCK_SIZE
# define IO_BLOCK_SIZE 8192
#endif
All of these are just runtime checks (not saved anywhere), so there's no danger in changing them.
More information about the dovecot
mailing list