[Dovecot] Possible sort optimization (?)
Michael M Slusarz
slusarz at curecanti.org
Mon Feb 25 06:29:42 EET 2013
Quoting Timo Sirainen <tss at iki.fi>:
> On 6.2.2013, at 1.02, Michael M Slusarz <slusarz at curecanti.org> wrote:
>
>> a UID SORT RETURN (ALL COUNT) (DATE) UTF-8 SUBJECT "foo"
>>
>> is always about 10 percent slower than this split query (I've done
>> this 4-5 times, and the numbers are similar):
>>
>> a UID SEARCH RETURN (SAVE) CHARSET UTF-8 SUBJECT "foo"
>> b UID SORT RETURN (ALL COUNT) (DATE) UTF-8 UID $
>>
>> (The particular query I used matched 5 messages out of the 21,000+)
>
> I think the main difference is that the first command fetches also
> Date: header from dovecot.index.cache. Did you check if the slowness
> was because of additional userspace CPU usage (instead of disk IO)?
>
> See if the attached patch makes a difference?
Without patch - single query (time output):
3.126u 2.763s 1:54.87 5.1% 0+0k 491192+19016io 11pf+0w
3.236u 2.663s 2:14.62 4.3% 0+0k 491064+18616io 9pf+0w
With patch - single query:
2.909u 2.689s 2:20.58 3.9% 0+0k 491064+15816io 11pf+0w
2.989u 2.673s 2:07.51 4.4% 0+0k 491056+15720io 11pf+0w
Userspace CPU usage dropped slightly, along with significant I/O.
(FYI: Split query with patch):
2.806u 2.696s 2:27.17 3.7% 0+0k 491200+11848io 11pf+0w
2.929u 2.626s 2:23.37 3.8% 0+0k 491064+11856io 11pf+0w
> One possible solution would be to do the prefetching when search
> program is "all", but not otherwise. But if most of the messages
> match the search query then this is slower..
Above results are from a search that matches 42 out of 26300 messages.
michael
More information about the dovecot
mailing list