Re: mutt: тормозит на sorting headers
On 09.02.2010 15:40, Roman Cheplyaka wrote:
> Вот что сообщил strace -T (в угловых скобках - время проведенное в вызове)
>
> open("/home/feuerbach/Mail/.spam/new", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3 <0.000039>
> fstat64(3, {st_mode=S_IFDIR|0700, st_size=5931008, ...}) = 0 <0.000019>
^^^^^^^
> getdents64(3, /* 30 entries */, 4096) = 2512 <20.111790>
> close(3) = 0 <0.000026>
>
> Убирание .spam из muttrc действительно убрало тормоза.
>
> Почему такое может быть? Директория /home/feuerbach/Mail/.spam/new содержит 28
> файлов суммарным размером 7.3M. ФС ext3.
ext3 не уменьшает размер каталогов после удаления большого числа файлов.
В результате:
$ stat .|grep Size
Size: 1024 Blocks: 2 IO Block: 1024 directory
$ seq 1 1000|xargs touch
$ stat .|grep Size
Size: 17408 Blocks: 36 IO Block: 1024 directory
$ seq 1 1000|xargs rm -f
$ stat .|grep Size
Size: 17408 Blocks: 36 IO Block: 1024 directory
Для сравнения, на reiserfs:
$ stat .|grep Size
Size: 48 Blocks: 0 IO Block: 4096 directory
$ seq 1 1000|xargs touch
$ stat .|grep Size
Size: 24048 Blocks: 47 IO Block: 4096 directory
$ seq 1 1000|xargs rm -f
$ stat .|grep Size
Size: 48 Blocks: 0 IO Block: 4096 directory
Так как в этом каталоге /когда-то/ было очень большое число файлов (см.
подчёркнутое в fstat), то подобный результат вполне ожидаем.
cp -al .spam/new{,.new}; rm -rf .spam/new; mv .spam/new{.new,}
(очевидно, это можно делать только когда никто к .spam/new обращатся не будет)
Reply to: