Почему ls и mkdir выполняются долго, хотя в рабочем каталоге всего несколько файлов?

Почему ls и mkdir выполняются долго, хотя в рабочем каталоге всего несколько файлов?

У меня есть записанное множество файлов в сетевой файловой системе; Она записана в структуре каталогов, так что каждый конечный каталог в структуре каталогов имеет несколько (около тысячи) файлов. Часть структуры каталогов, которая содержит соответствующие файлы, довольно плоская.

Если я запускаю ls или mkdir foo, соответствующая операция занимает много времени (около 10 минут).

Почему это происходит? Как мне выполнить операции типа ls или mkdir более эффективно?

решение1

Вы используете сетевую файловую систему, поэтому ваша скорость может быть ограничена сетью, а не диском.

При запуске ls, основная операция заключается в считывании всех файлов, их сортировке и последующей печати. ​​Это означает, что каждому lsнужно будет прочитать несколько тысяч записей файлов. Кэширование может помочь, но это все еще медленный процесс.

Аналогично, при запуске mkdirнеобходимо проверить каталог, чтобы убедиться, что у вас еще нет этого каталога.

Решением было бы уменьшить количество файлов в каталоге, сделав структуруузкий и глубокийскорее тогдамелкий и широкий.

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