LINUX.ORG.RU

Нельзя одновременно запустить >N процессов, где N - максимальное кол-во пидов. По очереди можно.

drull ★☆☆☆
()

А интереса ради не пробовал посмотреть ps ax у компьютера с аптаймом в месяц-другой? Как только достигается предел, номера раздаются заново, сначала.

Другой вопрос: PIDы могут кончится, т.к. вы запустите одновременно 65536 процессов. Вот это проблема. Надо ядро фиксить...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от KERNEL_PANIC

>Вот как. Это же гдето настраивается? Скорее всего при сборке ядра, правда?

Что конкретно настраивается?

dikiy ★★☆☆☆
()
Ответ на: комментарий от Sylvia

Можно и так:

for a in $(seq 1 3000); do echo "a" > /dev/null;usleep 1 ; done
А на другом терминале watch 'ps ax|tail'

Eddy_Em ☆☆☆☆☆
()

Если много zombie — очень даже могут. Но в последнее время такого нигде не наблюдается.

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

А хз. Ты что форк-бомбу тестишь? Если нет, то какая разница? Столько процессов в здравом уме не бывает.

dikiy ★★☆☆☆
()
Ответ на: комментарий от KERNEL_PANIC

>У меня 2 зомби постоянно висят =)

У меня год зомби провисел и ничего :)

dikiy ★★☆☆☆
()
Ответ на: комментарий от drull

я пытался поставить > 32768, вот и не получалось.

┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> cat /proc/sys/kernel/pid_max 
131072

Числа выбирать надо с умом.

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

Ну хз. УМВР. Как оказалось, можно и не «с умом», но есть верхний предел — 2^22 (4194304), дальше уже 'write error: Invalid argument'.

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

случаем в ней похоже


echo 131072 > /proc/sys/kernel/pid_max

bash: echo: write error: Invalid argument

uname -m

i686


~ # echo 131072 > /proc/sys/kernel/pid_max
~ # uname -m
x86_64

Sylvia ★★★★★
()

Действительно, тут гораздо большую проблему представляют зомби, которые занимают пиды. Может не хватить на всех.

melkor217 ★★★★★
()

$ calc 2**22
4194304
root@mws64:/tmp# echo 4194304 > /proc/sys/kernel/pid_max
root@mws64:/tmp# echo 4194305 > /proc/sys/kernel/pid_max
bash: echo: ошибка записи: Недопустимый аргумент


Что за странное ограничение?

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

да, иногда нельзя и если инит тем более,
но все равно большое количество висящих зомби - повод подумать над неоптимальностью того что работает на сервере )

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

Ух ты, а я и не заметил вторую строчку. Действительно, бред какой-то.

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

Процесс зомбируется, когда умирает. Состояние зомби нужно чтобы родитель мог получить информацию о статусе завершения процесса.

simplex
()
Ответ на: комментарий от Sylvia

>тогда надо разбираться с родителем этих зомби...

это же не совсем нормальная ситуация


- Добрый день! Где саш сын?
- Умер...
- А вот и нет! Пройдемте!

Pavval ★★★★★
()

освобождённые пиды через некоторое время используются заново

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

16 bit signed
что-то не так ? вполне разумно смотрится

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

> Имею ввиду что число 32769 ввести уже нельзя. Почему меня обделили?

# cat /proc/sys/kernel/pid_max
32768
# echo 32769 >/proc/sys/kernel/pid_max
# cat /proc/sys/kernel/pid_max
32769
#
arsi ★★★★★
()
Ответ на: комментарий от YAR

угу, уже дочитал, и уже на`grep`ал…

/*
 * This controls the default maximum pid allocated to a process
 */
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL ? 0x1000 : 0x8000)

/*
 * A maximum of 4 million PIDs should be enough for a while.
 * [NOTE: PID/TIDs are limited to 2^29 ~= 500+ million, see futex.h.]
*/
#define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \
    (sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT)) 

arsi ★★★★★
()
Ответ на: комментарий от shell-script
export PS1='\[\e[36m\]┌\[\e[0m\]\[\e[30;1m\]┤\[\e[0m\]\
\[\e[32;1m\]$(prompt_adam2 mypwd)\[\e[0m\]\[\e[30;1m\]├\[\e[0m\]\[\e[36m\]$(prompt_adam2 dashes)\
\[\e[30;1m\]┤\[\e[0m\]\[\e[36m\]\u\[\e[1m\]@\[\e[0m\]\[\e[36m\]\h\
\[\e[30;1m\]├\[\e[0m\]\[\e[36m\]─\[\e[0m\]\n\
\[\e[36m\]└\[\e[0m\]\[\e[36m\]─\[\e[0m\]\
\[\e[37;1m\]>\[\e[0m\] '

export PS2='\[\e[37;1m\]> \[\e[0m\]'

function prompt_adam2(){
local WHOAMI=${USER};
local HOSTNAME=${HOSTNAME};
local USER_AT_HOST_LEN=$((${#WHOAMI}+${#HOSTNAME}+3));
local WIDTH=$(tput cols);
local MYPWD="$PWD";
if [[ "$HOME" == ${MYPWD:0:${#HOME}} ]]; then
	local PWD_LEN=$((${#MYPWD}-${#HOME}+3));
	local MYNEWPWD="~${MYPWD:${#HOME}}";
else
	local PWD_LEN=$((${#MYPWD}+2));
	local MYNEWPWD="$MYPWD";
fi
local DASHES=$((${WIDTH}-${USER_AT_HOST_LEN}-${PWD_LEN}-2));
local PWD_LIM=$((${WIDTH}-${USER_AT_HOST_LEN}-12));
if (( ${#MYNEWPWD} >= ${PWD_LIM} )); then
	local TRUNC_SEQ="/.../";
	PWD_LEN=${#MYNEWPWD};
	if [[ "$HOME" == ${MYPWD:0:${#HOME}} ]]; then
	MYNEWPWD="~"$TRUNC_SEQ"${MYNEWPWD:${PWD_LEN}-${PWD_LIM}:999}";
	DASHES=1;
	else
	MYNEWPWD=""$TRUNC_SEQ"${MYNEWPWD:${PWD_LEN}-${PWD_LIM}:999}";
	DASHES=1;
	fi
fi
if [ "$1" == "dashes" ]; then
for (( i=1; i<=${DASHES}; i++)); do
	echo -n '─';
done
elif [ "$1" == "mypwd" ]; then
	echo -n ${MYNEWPWD};
fi
}

Приводить код в более вменяемый вид желания нету...

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

> Иногда нельзя вот так просто прибить процесс. Кстати, а если родителем зомби окажется инит?

В солярисе для упокоения зомби имеется команда preap. Правда, если родителя уже нет, и зомби оказался усыновлен init'ом - то и она не поможет.

mukoh
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.