Что такое ALGORITHM UNIX DU COMMERS использует для расчета дискового пространства?
Вопрос
Я пытался использовать du
Рассчитать использование диска сегодня в одном каталоге. Размер каталога составляет 6 ГБ, и для расчета требуется следующее количество времени:
prompt> time du -sh .
6.0G .
real 1m32.405s
user 0m2.053s
sys 0m16.552s
Что использует команда Algorithm Unix du для расчета пространства диска? Почему это так медленно? Есть ли какие -либо альтернативы для более эффективного расчета дискового пространства? Платформа вызова Sun
. Отказ Каталог, для которого был рассчитан размер, установлен NFS.
Решение
Я думаю, что это просто рекурсивно идет в каталог, при этом добавляя размеры найденных файлов. Довольно просто, правда, но, конечно, требуется время. Это может быть быстрее, если файловая система делает эти операции быстрее.
Другие советы
DU должен перечислить все каталоги и статику
При получении размеров файлов это суммирует их, и после того, как закончите, она печатает сумму
Например, в этом один каталог с 2 миллионами файлов на файловой системе SSHFS:
prompt$ time du -sh .
367G .
real 12m53.093s
user 0m3.848s
sys 0m14.265s
Но из -за кэширования для второго запуска, который он требует:
prompt$ time du -sh .
367G .
real 4m56.875s
user 0m4.136s
sys 0m15.257s
Его скорость зависит от количества файлов/каталогов. Если у вас есть каталог с 6 1 ГБ файлам, для расчета потребуется гораздо меньше времени. Он вычисляет размер файлов в данном каталоге и рекурсивно для каждого детского каталога.