Floyd>> Так что же они там читают ?Mishka> А ты подумай
Так что же об утилизации памяти.
Не спроста это утверждение пончалу поставило меня в тупик
Вот результаты тестов с HP-UX 11.31 PA
touch {1..100000} - в виду ограничения на длину аргумента
code text
User CPU % Thrd Disk Memory Block
Process Name PID Name ( 400% max) Cnt IOrate RSS/VSS On
--------------------------------------------------------------------------------
touch 8960 root 99.8 1 6.0 2.3mb 2.3mb PRI
rm * для 100000 файлов
code text
User CPU % Thrd Disk Memory Block
Process Name PID Name ( 400% max) Cnt IOrate RSS/VSS On
--------------------------------------------------------------------------------
rm 6940 root 64.7 1 230.4 2.2mb 2.2mb died
2.2 mb против 20 на линуксе
find -exec rm -f
code text
User CPU % Thrd Disk Memory Block
Process Name PID Name ( 400% max) Cnt IOrate RSS/VSS On
--------------------------------------------------------------------------------
find 9658 root 39.4 1 8.8 2.3mb 2.3mb SLEEP
Опять же 2.2 против 20 на линуксе
rm -rf /tmp/22222/ для 100000 файлов
code text
User CPU % Thrd Disk Memory Block
Process Name PID Name ( 400% max) Cnt IOrate RSS/VSS On
--------------------------------------------------------------------------------
rm 13151 root 47.2 1 387.7 292kb 356kb IO
356kb против 20mb на линуксе
rm -rf /tmp/22222/ на 700000 файлов
code text
User CPU % Thrd Disk Memory Block
Process Name PID Name ( 400% max) Cnt IOrate RSS/VSS On
--------------------------------------------------------------------------------
rm 18101 root 63.4 1 427.5 292kb 356kb PRI
356kb против 150mb на линуксе
WTF?
Чпукс выполняет последовательность lstat/sysfs/unlink после каждой порции структур полученных getdents
code text
getdents(6, 0x40007790, 8192) ......................................................................................................... = 3960
lstat64("340", 0x77ff1268) ............................................................................................................ = 0
sysfs(GETFSIND, 0x400017a0, 0x77ff1268) ............................................................................................... = 7
unlink("340") ......................................................................................................................... = 0
lstat64("341", 0x77ff1268) ............................................................................................................ = 0
sysfs(GETFSIND, 0x400017a0, 0x77ff1268) ............................................................................................... = 7
unlink("341") ......................................................................................................................... = 0
lstat64("342", 0x77ff1268) .............
В то время как Linux формирует массив дескрипторов и залпом делает unlink для всех
Что лучше, что хуже однозначно судить не возьмусь - резмен скорости на память.
И еще одна статейка по теме
I needed to list all files in a directory, but ls, find, and os.listdir all hung. This is my story. NOTE: there is no good reason that you should ever have 8 million files in the same directory, but if you do, this is your solution . TLDR: Write a C program that calls the...
// www.olark.com