[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