[Comm] при большой нагрузке форки не делаются
Ilya Kuznecov
=?iso-8859-1?q?kuznecov_=CE=C1_blok-caf=2Eru?=
Ср Сен 3 09:49:44 MSD 2003
При большом количестве открытых файлов и запущенных процессов простейший
скрипт (запускаемый из Makefile) начинает выдавать ошибку:
./sizer: fork: Resource temporarily unavailable
Но стоит позакрывать программы и всё нормально.
ФС -- EXT3.
% find -type d |wc -l
172
% find -type f |wc -l
2769
Но скрипт вызывается в гораздо более щадящих условиях (1-2 директории с ~10
файлами), но много раз (142 раза, точнее) -- по числу директорий верхнего
уровня.
Идея скрипта -- создать xml-файл вида:
<?xml version="1.0" encoding="utf-8"?><main>
<file name='abc' size='100K'/>
...
<file name='def' size='1M'/>
</main>
#!/bin/sh
rec() {
for i in $1/* ; do
if [ -d $i ]; then rec $i
else
A=`LANG=C du --max-depth 10 -h $i|awk '{print $1}'`
B=`echo $i | sed 's/\.\///'`
echo "<file name='$B' size='$A'/>"
fi
done
}
echo '<?xml version="1.0" encoding="utf-8"?><main>'
cd $1
rec '.'
echo '</main>'
% ulimit
unlimited
Система -- АЛМ22 с апдейтами.
--
chumpa, Cybernetic Humanoid Used for Mathematics and Potential Assassination
kuznecov на blok-caf.ru http://chumpa.izhnet.ru icq 122393064
Подробная информация о списке рассылки community