[Dovecot] More efficient Deleting of a whole folder (or Purging Trash)

Asheesh Laroia asheesh at asheesh.org
Wed Jan 30 06:17:54 EET 2008


On Tue, 29 Jan 2008, Bill Cole wrote:

> At 6:32 PM -0800 1/29/08, Asheesh Laroia imposed structure on a stream 
> of electrons, yielding:
>> On Tue, 29 Jan 2008, Bill Cole wrote:
>> 
>>> For Dovecot, the mailbox index also has to be updated for each 
>>> deletion, and while that in itself is not terribly expensive per 
>>> message, it has to be done one message at a time to maintain 
>>> consistency between the index and the real mail.
>> 
>> In general, this isn't really true - because Dovecot can deal with 
>> other programs accessing the Maildir, it can't treat the index as 
>> canonical.
>
> I was speaking specifically of what Dovecot might be able to do to speed 
> up user experience, which would be to update (i.e. clear) the index, 
> then spawn off something to actually do the slow task of deleting the 
> files. To keep that behavior from cascading into pointless index 
> rebuilds during the cleanup time, there would need to be some big 
> changes in how Dovecot keeps index files in synch.

Ah, I see.

> Or put another way: the consistency problem is not that Dovecot can't 
> regenerate its index files from the mailbox, but rather that it can and will 
> do so whenever it sees a directory change, and it always trusts the data over 
> the index (that's GOOD.) If the index were to be updated ahead of a slow 
> change of the data in order to provide the user the appearance of speed, it 
> violates the design of the  index system.
>
>> Therefore if Dovecot knows it is deleting a whole folder, Dovecot could 
>> just as easily skip over the index updates or equivalently "decide to do 
>> them all at once at the end", at which point the index is empty.
>
> Except that it wouldn't really help. The index updates are not the expensive 
> part, the changes to the filesystem are. In this case it looks like an issue 
> with XFS, a filesystem that is not normally recommended for usage that 
> involves the creation and deletion of a lot of small files. Changing a little 
> bit of data in an index file is very fast compared to the deletion of a file 
> from a directory with 35k entries.

I misunderstood the cause of the slowness then, if it is really true that 
updating the index is not an important factor.  I don't remember seeing 
profiling, but since I don't have any myself I'll take your word for it.

-- Asheesh.

-- 
"Atomic batteries to power, turbines to speed."
 		-- Robin, The Boy Wonder


More information about the dovecot mailing list