Hoy me acabo de dar cuenta de que mis ID de proceso son muy altas, de 400,000 (es decir, 449624). Cuando corro ps -ef | more
, es cuando me di cuenta. ¿Es eso normal o eso indica un problema? De lo contrario, los scripts se ejecutan bien.
Estoy usando Redhat 7.3 x64 bit.
Otra cosa que noté es que también tenemos Redhat 7.2 y los pids no son tan altos, solo en sistemas operativos más nuevos. ¿Por qué sería eso? ¿Significa que está relacionado con el sistema operativo y es normal?
No tengo eso kernel_pid_max
en mi sysctl.conf
. Corrí gato /proc/sys/kernel/pid_max
y ya veo 458752
.
kernel_pid_max
en tusysctl.conf
porque debería serkernel.pid_max
.Respuestas:
En el arranque, el núcleo ajusta el valor predeterminado
pid_max
según la cantidad de CPU disponibles. Cuando el número es bajo, se selecciona el 32768 habitual. De lo contrario, el cálculo se realiza de la siguiente manera (mostrando aquí que un kernel 3.10 es similar a RHEL, pero además de algunas variaciones es el mismo para cualquier kernel de Linux reciente):include/linux/threads.h
:0x8000 = 32768 es el valor habitual utilizado en sistemas con menos de 32 subprocesos de CPU disponibles.
y después:
Esos valores luego se usan en
kernel/pid.c
:y más adelante :
Entonces, desde OP esto debería significar un total de 458752/1024 = 448 hilos simultáneos disponibles: bastante. El otro sistema probablemente no tiene tantas CPU / núcleos / hilos, etc., por lo que tiene un valor predeterminado más bajo
pid_max
.fuente
Desde el
proc
documentaton :Puedes ver el con
cat /proc/sys/kernel/pid_max
. También puede consultar esto consysctl
.O:
Modifique
/etc/sysctl.conf
para cambiar el valor permanentemente y vuelva a cargar consysctl -p
.fuente
Una ID de proceso puede ser cualquier valor representado por el
pid_t
tipo, que es específico de su sistema operativo. En la práctica, generalmente es un entero con signo de 32 bits, lo que significa que la ID de proceso máxima sería 2147483647, o aproximadamente 5000 veces más grande que las ID de proceso que está observando.La documentación de GNU dice:
En la práctica, el núcleo generalmente impondrá un límite superior que es más bajo que eso. En un sistema Linux, esto se controla mediante
/proc/sys/kernel/pid_max
el valor predeterminado de 32768. Si su sistema es Linux, puede verificar ese archivo para ver cuál es el límite actual.El límite puede ser diferente en diferentes sistemas operativos; por ejemplo, parece que en macOS
PID_MAX
está codificado como 99999 .fuente
pid_t
tamaño de 64 bits.