On Wed, 22 Sep 2004, Timo Sirainen wrote:
On 22.9.2004, at 00:36, dovecot@spam.turbolink.net wrote:
If I switch to mail_read_mmaped=no everything works, but performance is extremely bad.
There shouldn't be hardly any performance difference with mmaped=no vs. yes, but I'll look into that problem..
That was meant to be all together, the performance issue is the one of re-reading the mailbox from the beginning.
I have a few test mailboxes with about 20k messages and if I toggle a message flag from unread to read, dovecot seems to re-read the entire mailbox up to that message (I saw this with strace).
You set the flag with Dovecot? It shouldn't do that (and doesn't with me). Did anything else modify the mbox at the same time, for example if new mail was just written to the mbox? What OS is this? What filesystem? Can I see the strace log?
Well, I clicked 'Mark as Unread' in Thunderbird.
This is on Linux 2.4.21, INBOX is on NFS. No new messages are delivered. Nothing else has the mailbox open or is even trying.
Here is the snippet of an ngrep log I captured as I hit 'Mark as Unread':
# T 192.168.196.53:143 -> 192.168.199.48:57262 [AP] 26 OK Idle completed... ## T 192.168.199.48:57262 -> 192.168.196.53:143 [AP] 27 uid store 5957 -Flags (\Seen)..
very large delay here, 60-90 seconds
## T 192.168.196.53:143 -> 192.168.199.48:57262 [AP]
- 5957 FETCH (FLAGS ())..27 OK Store completed...
T 192.168.199.48:57262 -> 192.168.196.53:143 [AP] 28 check.. ## T 192.168.196.53:143 -> 192.168.199.48:57262 [AP] 28 OK Check completed... # T 192.168.199.48:57262 -> 192.168.196.53:143 [AP] 29 IDLE.. ## T 192.168.196.53:143 -> 192.168.199.48:57262 [AP]
- idling..
I didn't save the strace but I can generate a new one. I did do a gdb backtrace, while it was re-reading:
#0 0x0808ab02 in i_strdup_until () #1 0x0806a833 in mbox_from_parse () #2 0x0806a07b in i_stream_create_raw_mbox () #3 0x0806a1d5 in istream_raw_mbox_get_body_size () #4 0x08067b37 in mbox_sync_seek () #5 0x080687a4 in mbox_sync_seek () #6 0x08069003 in mbox_sync_seek () #7 0x080694ca in mbox_sync () #8 0x0806439f in mbox_transaction_commit () #9 0x0807e3ea in mailbox_transaction_commit () #10 0x080562fb in cmd_store () #11 0x080565df in cmd_uid () #12 0x08056d5a in _client_reset_command () #13 0x08056e69 in _client_input () #14 0x0808c768 in io_loop_handler_run () #15 0x0808bead in io_loop_run () #16 0x0805d107 in main () #17 0x40037bb4 in __libc_start_main () from /lib/libc.so.6
- Mike