Низкая производительность rm на разделе ext4

Низкая производительность rm на разделе ext4

Удаление, как мне кажется, умеренного количества файлов занимает очень много времени. Например:

$ pv linux-3.0.16.tar.bz2 | tar xj
73.2MB 0:00:16 [4.55MB/s]
$ pv linux-3.0.16.tar.bz2 | tar xj
73.2MB 0:03:16 [ 382kB/s]

Раздел отформатирован ext4, смонтирован relatime,error=remount-ro. Пика загрузки процессора при удалении файлов нет. Есть ли у кого-нибудь идеи, что может происходить?

Обновлять: Выполнение указанных выше команд или запуск rm -rfс правами root работают так, как и ожидалось... обновлять: разобрался. Системный администратор ящика установил нелепое количество правил аудита глобально на ящике. Удаление их исправляет это.

решение1

Когда вы заменяете или удаляете файл, это, упрощенно говоря, происходит следующим образом:

  1. Найдите индекс файла.
  2. Проверьте разрешения, пользователя и группу отдельного файла.
  3. Удалите также файлы в каталоге, если файл является каталогом (повторите шаги 1–4 для каждого файла).
  4. Удалите ссылку на файл и его индексный дескриптор.

Это, очевидно, сильно замедлит производительность, потому что это намного сложнее, чем просто добавить новый inode и записать файл на диск. Это побочный эффект того, что это список таблиц inode, если бы это было дерево inode, то вместо этого оно могло бы просто удалить целую ветку. Хотя это ничего не изменит, так как вы распаковываете, поскольку распаковка будет делать это файл за файлом независимо от способа хранения inode...

Запуск от имени root отключает шаг 2, что может иметь, а может и не иметь большого значения.


Пробовали ли вы смонтировать обратно в ext3 и сравнить время выполнения?

Потому что ext4 удаляет быстрее из-за использования экстентов. Было бы замечательно, если бы он был медленнее...

Связанный контент