LINUX.ORG.RU

Почему линукс так долго вычисляет объем каталога?

 , ,


0

2

Пользуюсь системой Linux mint уже порядка двух лет и никогда не задавался этим вопросом. К слову, захотелось посмотреть объем папки, в которой хранятся снимки системы и через GUI я ждал минут 10, пока объем папки вычислится. Помню, как на винде было просто в этом плане. Открыл свойства папки и сразу же видишь по ней полную информацию.

Так подскажите, если Linux такая быстрая и совершенная система, то почему такие простые операции приносят столько боли?

Ответ на: комментарий от anonymous

Да.

du -sh тоже думает долго. А кулеры на ноуте начинают работать так, будто комп не память вычисляет, а ракету в космос запускает.

К слову, папка весит 33G. Но я не думаю, что это прям такой большой объем данных

vstarikov ()

Открыл свойства папки и сразу же видишь по ней полную информацию.

Неправда. Позавчера смотрел свойства мамки c:/windows, пришлось ждать с минуту, и это на SSD.

anonymous ()

если что, винда всегда долго считает, там цифры продолжают бежать в окне свойств. Таким же образом, тотал коммандер долго считает размеры всех объектов в каталоге. Это норма, в общем.

zendrz ()
Ответ на: комментарий от gremlin_the_red

Поддерживаю.

$ time du -sh ~
387G    /home/legolegs

real    0m9,205s
user    0m0,543s
sys     0m4,473s
$ time du -sh ~
387G    /home/legolegs

real    0m2,735s
user    0m0,379s
sys     0m2,301s
$ find ~ -type f | wc -l
994166

Правда, у меня кеш на ssd. На разделе без кеша всё медленнее (в первый раз).

legolegs ★★★★★ ()

Так подскажите, если Linux такая быстрая и совершенная система, то почему такие простые операции приносят столько боли?

Для грамотных линукс быстр и совершенен

Что касается долгого подсчета, может фрагментация фс, может файл открыт, может чтото с фс не так

ism ★★★ ()

Долго?

time du -sh /var/spool/avreg/
69T /var/spool/avreg/

real 0m13.688s
user 0m0.265s
sys 0m3.453s

time du -sh /var/spool/avreg/
69T /var/spool/avreg/

real 0m3.803s
user 0m0.224s
sys 0m3.510s

Да не так уж и долго, в общем-то. А второй раз так и вообще скорострельно.

imul ★★★★★ ()
Ответ на: комментарий от legolegs

Правда, у меня кеш на ssd. На разделе без кеша всё медленнее (в первый раз).

На обычном винчестере не просто медленнее, а:

$ time du -sh [...]
925M	[...]

real	0m26.200s
user	0m0.098s
sys	0m0.861s

$ find [...] -type f | wc -l
20949

считается в 135 раз медленнее (по кол-ву файлов). Т.е. на целых два порядка.

ФС: ext4.

gag ★★★★★ ()
Последнее исправление: gag (всего исправлений: 1)
Ответ на: комментарий от anonymous

Уверен?

Согласно приведенному листингу - да.

Вот тебе файлопомойка:

А это уже SSD. Ну или не ext4, а какая-то чудо-фс, или ext4 отформатированная так, что метаинформация не раскидана по всему диску, а расположена сконцентрировано.

gag ★★★★★ ()
Последнее исправление: gag (всего исправлений: 1)

Не линукс, а файл менегер тормозной. Nautilus этим грешит например.

Linux такая быстрая и совершенная система

Очень толсто. Никто такое не заявлял, да и вам лично никто не обязан ничем.

xDShot ★★★★★ ()

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

Это не Linux, это просто du тормоз лютый. А «свойства папки» быстрая программа.

Вот на Windows 10 запустил du:

$ cd /c/windows
$ time du -sh
du: невозможно прочитать каталог './appcompat/Programs': Permission denied
du: невозможно прочитать каталог './CSC': Permission denied
du: невозможно прочитать каталог './LiveKernelReports': Permission denied
du: невозможно прочитать каталог './Logs/HomeGroup': Permission denied
du: невозможно прочитать каталог './Logs/SystemRestore': Permission denied
du: невозможно прочитать каталог './Logs/Telephony': Permission denied
du: невозможно прочитать каталог './ModemLogs': Permission denied
du: невозможно прочитать каталог './Prefetch': Permission denied
du: невозможно прочитать каталог './Provisioning/Autopilot': Permission denied
du: невозможно прочитать каталог './Resources/Themes/aero/VSCache': Permission denied
du: невозможно прочитать каталог './security/audit': Permission denied
du: невозможно прочитать каталог './security/cap': Permission denied
du: невозможно прочитать каталог './ServiceProfiles/LocalService': Permission denied
du: невозможно прочитать каталог './ServiceProfiles/NetworkService': Permission denied
du: невозможно прочитать каталог './ServiceState': Permission denied
du: невозможно прочитать каталог './System32/appmgmt/MACHINE': Permission denied
du: невозможно прочитать каталог './System32/appmgmt/S-1-5-18': Permission denied
du: невозможно прочитать каталог './System32/Com/dmp': Permission denied
du: невозможно прочитать каталог './System32/config': Permission denied
du: невозможно прочитать каталог './System32/Configuration': Permission denied
du: невозможно прочитать каталог './System32/drivers/DriverData': Permission denied
du: невозможно прочитать каталог './System32/DriverState': Permission denied
du: невозможно прочитать каталог './System32/FxsTmp': Permission denied
du: невозможно прочитать каталог './System32/ias': Permission denied
du: невозможно прочитать каталог './System32/LogFiles/Fax/Incoming': Permission denied
du: невозможно прочитать каталог './System32/LogFiles/Fax/Outgoing': Permission denied
du: невозможно прочитать каталог './System32/LogFiles/Firewall': Permission denied
du: невозможно прочитать каталог './System32/LogFiles/HTTPERR': Permission denied
du: невозможно прочитать каталог './System32/LogFiles/WMI/RtBackup': Permission denied
du: невозможно прочитать каталог './System32/MsDtc': Permission denied
du: невозможно прочитать каталог './System32/networklist': Permission denied
du: невозможно прочитать каталог './System32/SleepStudy': Permission denied
du: невозможно прочитать каталог './System32/spool/PRINTERS': Permission denied
du: невозможно прочитать каталог './System32/spool/SERVERS': Permission denied
du: невозможно прочитать каталог './System32/sru': Permission denied
du: невозможно прочитать каталог './System32/Tasks': Permission denied
du: невозможно прочитать каталог './System32/Tasks_Migrated': Permission denied
du: невозможно прочитать каталог './System32/wbem/MOF': Permission denied
du: невозможно прочитать каталог './System32/WDI': Permission denied
du: невозможно прочитать каталог './SysWOW64/Com/dmp': Permission denied
du: невозможно прочитать каталог './SysWOW64/config': Permission denied
du: невозможно прочитать каталог './SysWOW64/Configuration': Permission denied
du: невозможно прочитать каталог './SysWOW64/FxsTmp': Permission denied
du: невозможно прочитать каталог './SysWOW64/Msdtc': Permission denied
du: невозможно прочитать каталог './SysWOW64/networklist': Permission denied
du: невозможно прочитать каталог './SysWOW64/sru': Permission denied
du: невозможно прочитать каталог './SysWOW64/Tasks': Permission denied
du: невозможно прочитать каталог './Temp': Permission denied
15G     .

real    1m27,898s
user    0m9,593s
sys     0m58,999s
fsb4000 ★★★★★ ()

Если там какая сетевая директория подключена в .gvfs, то она тоже может считаться, минимум через du. а это уже ой как не быстро станет.

Avial ★★★★★ ()

HDD? Для них это нормально. В некоторых случаях размер отображается быстро, потому что сохранён в кэше. Также если смотреть корень диска, там тоже быстро, потому что другой способ получения информации. А чтобы подсчитать размер каждой директории, нужно посчитать размеры всех файлов в ней.

Возможно есть какая низкоуровневая хитрость на уровне ФС или даже драйвера, но, похоже, всем лень настолько заморачиватся (решение будет не универсальным).

InterVi ★★★ ()

Первый проход

523G	/home/shpinog
du -sh /home/shpinog   
1,86s user  
18,34s system  
2:07,84 total
ls -Ra ~/|wc -l
1567888

Второй проход.

512G	/home/shpinog

du -sh /home/shpinog 
0,37s user  
2,33s system  
2,713 total

Сначала надо разработать, второй раз уже нормально.

shpinog ★★★ ()