57 votos

¿Por qué macOS se limita a los procesos 1064?

En macOS, el sistema está limitado a ejecutar no más de 1064 procesos en todo el sistema, y los usuarios individuales están limitados a 709. ¿Por qué es eso?

85voto

Old Pro Puntos 2851

Por lo que puedo contar, la respuesta es parte de la larga historia de la computación.

macOS está basado en Darwin, que es el núcleo del sistema operativo de Apple, y que en sí misma está basada en xnu, que es un híbrido de FreeBSD en capas de más de Mach, que se basan en... hasta que llegas muy lejos, no sé, Ada Lovelace? Lo creas o no, que es una simplificación de los macOS de la historia, pero cubre los puntos necesarios para entender lo que sigue.

En los días en que FreeBSD se estaba desarrollando, la memoria era caro, así que había un fuerte incentivo para utilizar como poco como sea posible, pero no tan caro, que no se podía construir un sistema compartido por un departamento de la Universidad. La idea era tener 1 equipo que podría ser utilizado por varias personas a la vez, e incluso si la memoria era caro, los usuarios fueron consumiendo únicamente era algo de memoria y espacio en disco, en lugar de todo un equipo, por lo que quería ser capaz de servir a la gente como muchos como usted puede, sin comprometer todo el sistema.

El núcleo tiene una sección de memoria reservado para almacenar la información de cada proceso, y que el tamaño de la tabla era lo que limita el número total de procesos que el sistema puede ejecutar a la vez, así que quería mantener esa mesa tan pequeña como sea posible, pero al mismo tiempo lo suficientemente grande como para ejecutar suficiente procesos para atender a todos sus usuarios. Otro núcleo de memoria de las reservas, tales como el número de búferes asignado para almacenar el tráfico de red de forma temporal, también es necesario para la escala con el número de usuarios simultáneos, por lo tanto FreeBSD introducido un parámetro de ajuste llamado MAXUSERS, que no era un verdadero límite en el número de usuarios del sistema de manejar, pero en lugar de un parámetro de ajuste que se establece para indicar el número máximo de usuarios que la intención de manejar a la vez. Se ajusta el equilibrio entre la memoria asignada para el núcleo y la memoria disponible para los usuarios.

Antes de interfaces gráficas de usuario, los usuarios individuales en un sistema Unix normalmente corrió muy pocos procesos. Se corrió una terminal de shell, que tal vez se corrió un editor, un programa de correo electrónico, un compilador, y algún otro programa, cada uno de los cuales fue un proceso. El programa de correo electrónico y el compilador podría ejecutar algunos otros procesos. En algún momento alguien se estima que un usuario muy probable que necesite ejecutar no más de 16 procesos a la vez.

Alguien (probablemente la misma persona) estima que el sistema en sí puede ser limitada con seguridad a unos 20 procesos.

Esto proporcionó la base para la ampliación del tamaño de la tabla de procesos basado en el número de usuarios simultáneos, el sistema de apoyo:

#define NPROC (20 + 16 * MAXUSERS)

En el momento en que Apple incorporó xnu en su sistema (y, presumiblemente, en el momento xnu bifurcada de FreeBSD) MAXUSERS de pago a 32. Con 32 usuarios, NPROC fue de 532. Y así fue que en OS X 10.0. 532 fue el sistema de límite en el número total de procesos. Los usuarios individuales se limita a la mitad que: 266.

Y así quedó, hasta OS X 10.7 Lion, momento en el que Apple ha añadido un factor de escala. (De hecho, ha un factor de escala mucho antes de que Lion para el Rendimiento del Servidor de Modo, pero con el Lion fue un poco al modo normal.) Si su ordenador está ejecutando Lion o posterior y tiene 3 Gb o más de memoria, a continuación, maxproc se duplica, y maxprocperuid, lo cual es una fracción de la maxproc, sube aún más. maxproc va de 532 a 1064 y maxprocperuid va de 266 (maxproc / 2) a 709 ((maxproc * 2) / 3).

Y así obtener su moderna (10.7 Lion a través de 10.12 Sierra) límites de 709 procesos por usuario y 1064 de los procesos de todo el sistema.

Afortunadamente, esos límites están subiendo. Si su equipo está ejecutando macOS 10.13 Alta Sierra o posterior y tiene al menos 12 Gb de memoria, entonces usted consigue macproc = 532 * memory / 4 GiB hasta un máximo de 8512. En cualquier caso, al menos ahora sabemos por qué maxproc es un múltiplo de 532 en lugar de la más común de 512 o 500.

Si usted desea aumentar sus límites más, usted tiene que cambiar a modo de servidor. Usted puede leer más acerca de cómo hacerlo y por qué en Revisión "horquilla: recurso temporalmente no disponible" en OS X. Usted puede leer una gran cantidad de detalles acerca de lo que el modo de servidor que realmente le da a Lo que hace serverperfmode=1 hacer realmente en macOS?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X