Итак, на моем Linux-сервере, на котором работает Ubuntu 12.04, у меня есть папка с ~ 3000 папками, и в каждой из этих папок содержится около 3000 текстовых файлов. В общей сложности это занимает примерно 80 ГБ.
Поэтому всякий раз, когда я захожу в любую из этих папок, система начинает работать ужасно медленно. Система представляет собой Xeon E5-2620 с 64 ГБ оперативной памяти, а жесткий диск - это простой жесткий диск Seagate 7200 об / мин (не помню, SATA 3.0 это или нет).
Я также сейчас удаляю файлы, потому что их нужно регенерировать. Процесс rm выполняется довольно медленно, однако я просто использую многопоточную команду rm -rf, так что, вероятно, там есть некоторые улучшения.
Какие-нибудь советы, которые вы могли бы дать, чтобы немного ускорить это все? Спасибо
Ожидается, что это будет медленно. Когда вы запускаете команду ls, смотрите с большим количеством файлов, все индексные дескрипторы файлов необходимо извлечь и поместить в память. Также все файлы будут проходить по одному пути в своем списке файлов. Ядро также кэширует эту информацию. Итак, когда вы запускаете ls в первый раз, он обязательно будет медленным.
Довольно простая диагностическая мера - запустить ls в новом каталоге с одной вкладки, а затем перейти на другую вкладку и запустить slabtop -o
. Это покажет увеличение использования ext4 в кэше и Dentry Slab. После кеширования последующие команды ls в том же каталоге будут занимать меньше времени.
Единственное улучшение, которое вы можете сделать, - это получить более мощные диски или чередовать данные. Таким образом, требуется меньше поиска диска, что дает прирост производительности.