¿Cuántos puede manejar? ¿o cuántos puede manejar antes de que pierdas algún beneficio? también que kernel? Sospecho que esta respuesta cambia algo para una computadora parcheada para ejecutar una supercomputadora. Me parece recordar haber leído sobre una sola instancia con procesadores 4096 ...
xenoterracide
qué conjunto de parches, el conjunto de parches normal no puede manejar los procesadores 4096, pero Linux ha sido parcheado para hacerlo. (IIRC algunas respuestas parecen sugerir que puede)
xenoterracide
@xeno Creo que el hecho de que incluso haya un parche que maneje procesadores 4096 es algo que debería mencionarse en la Respuesta.
tshepang
No recuerdo mucho más que eso, de lo contrario daría una respuesta, ¿también su aumento de rendimiento pasa 16? los núcleos eran limitados ... y que ciertas partes del núcleo necesitaban una reescritura que ya había comenzado. pero realmente no tengo citas y no estoy 100% por eso no estoy respondiendo.
Al menos 2048 en la práctica. Como ejemplo concreto, SGI vende su sistema UV , que puede usar 256 zócalos (2.048 núcleos) y 16 TB de memoria compartida, todo bajo un solo núcleo. Sé que hay al menos algunos sistemas que se han vendido en esta configuración.
De acuerdo con SGI:
Altix UV ejecuta Linux completamente sin modificar, incluidas las distribuciones estándar de Novell y Red Hat.
Esto es lo que Launchpad tiene que decir sobre Ubuntu, así que supongo que se aplica a otros:
1.Intel x86:
Maximum CPUs: 32 (including logical CPUs)
Maximum memory: 64GB
Maximum filesize: 8TB
Maximum filesystem size (ext3) 16TB
Maximum per-process virtual address space: 4GB
2.AMD64/EM64T:
Maximum CPUs: 64
Maximum memory: 128GB
Maximum filesize: 8TB
Maximum filesystem size (ext3): 16TB
Maximum per-process virtual address space: N/A
These are standard max limitations whereas Linux cluster systems can scale up to 1024 CPU's.
Eso es 32 o 64 CPU para x86 y x86_64 respectivamente.
Redhat dice lo mismo, pero en una tabla amigable para la administración . Redhat EL6 puede hacer 32 para x86, o 128 o 4096 núcleos de CPU para x86_64.
arch / x86 / Kconfig dice que estos CONFIG_NR_CPUSlímites pueden aumentarse si CONFIG_MAXSMPestá habilitado.
Ephemient
6
El núcleo Linux x86_64 puede manejar un máximo de 4096 subprocesos del procesador en una sola imagen del sistema. Esto significa que con Hyper Threading habilitado, el número máximo de núcleos de procesador es 2048. Sí, hay computadoras con más de 2048 núcleos de procesador; pero estos se ejecutan como clústeres donde varios núcleos de Linux cooperan, conectados con una interconexión de alta velocidad, típicamente una estructura Infiniband.
desde el núcleo más reciente 3.13, en ~ / arch / x86 / Kconfig:
config NR_CPUS
---help---
This allows you to specify the maximum number of CPUs which this
kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum
supported value is 4096, otherwise the maximum value is 512. The
minimum value which makes sense is 2.
This is purely to save memory - each supported CPU adds
approximately eight kilobytes to the kernel image.
Sé que esta es una publicación anterior, pero está vinculando a una computadora en clúster. La pregunta es sobre la ejecución de una sola instancia de kernel.
frodeborli
1
Los hilos son subjetivos para el modelo multitarea y el esquema de gestión de hilos. El Gdt de los sistemas basados en Intel se usa en Linux si no recuerdo mal. La idea es que tiene una posibilidad de 8192 hilos en tamaño máximo. Esto supone que el sistema está usando el gdt para administrar los hilos. En máquinas de 32 bits, la conmutación de tareas se gestiona y los vectores de interrupción en máquinas de 32 y 64 bits deben tener entradas gdt. No estoy seguro de cómo lo hace el brazo, pero se debe lograr la misma articulación. Los conceptos de cambio de tareas iteran el GDT en los modelos de tareas.
Si se sale del esquema gdt, se puede llegar a lo que tiene memoria para cuando tiene, para cada subproceso, un marco de pila de páginas, una base de código de página para el subproceso y la página de espacio de almacenamiento dinámico. No puede asumir que tiene una página de código o montón, que son las variables aleatorias. En general, hay dos marcos de pila para cada subproceso, uno mantenido por el subproceso y otro mantenido por el kernel de Linux. Agregas conceptos de memoria virtual del espacio de intercambio y el modelo sale del agua, pero se trata de la prioridad del hilo.
Si está utilizando un Linux como Controlling en el UV SGI, y está utilizando los Bladecenters con ella en su propio Kernel 4.15, puede usarlo en el Momento:
4096 Bastidores de cuchillas. 1 bastidor con 1024 núcleos x 4096 núcleos. Esta configuración será en el momento en que el núcleo más alto lo use bajo Linux. Puede controlar todos los núcleos bajo Red Hat.
Respuestas:
Al menos 2048 en la práctica. Como ejemplo concreto, SGI vende su sistema UV , que puede usar 256 zócalos (2.048 núcleos) y 16 TB de memoria compartida, todo bajo un solo núcleo. Sé que hay al menos algunos sistemas que se han vendido en esta configuración.
De acuerdo con SGI:
fuente
Esto es lo que Launchpad tiene que decir sobre Ubuntu, así que supongo que se aplica a otros:
Eso es 32 o 64 CPU para x86 y x86_64 respectivamente.
Redhat dice lo mismo, pero en una tabla amigable para la administración . Redhat EL6 puede hacer 32 para x86, o 128 o 4096 núcleos de CPU para x86_64.
fuente
CONFIG_NR_CPUS
límites pueden aumentarse siCONFIG_MAXSMP
está habilitado.El núcleo Linux x86_64 puede manejar un máximo de 4096 subprocesos del procesador en una sola imagen del sistema. Esto significa que con Hyper Threading habilitado, el número máximo de núcleos de procesador es 2048. Sí, hay computadoras con más de 2048 núcleos de procesador; pero estos se ejecutan como clústeres donde varios núcleos de Linux cooperan, conectados con una interconexión de alta velocidad, típicamente una estructura Infiniband.
desde el núcleo más reciente 3.13, en ~ / arch / x86 / Kconfig:
config NR_CPUS
Actualización: en los núcleos más nuevos, esto es específico de la arquitectura; por ejemplo, en 4.15 x86_64 le permite establecer NR_CPUS en 8192 en las circunstancias correctas, mientras que el brazo de 32 bits se detiene en 32 .
fuente
¡Este bebé corre 10,368!
fuente
Los hilos son subjetivos para el modelo multitarea y el esquema de gestión de hilos. El Gdt de los sistemas basados en Intel se usa en Linux si no recuerdo mal. La idea es que tiene una posibilidad de 8192 hilos en tamaño máximo. Esto supone que el sistema está usando el gdt para administrar los hilos. En máquinas de 32 bits, la conmutación de tareas se gestiona y los vectores de interrupción en máquinas de 32 y 64 bits deben tener entradas gdt. No estoy seguro de cómo lo hace el brazo, pero se debe lograr la misma articulación. Los conceptos de cambio de tareas iteran el GDT en los modelos de tareas.
Si se sale del esquema gdt, se puede llegar a lo que tiene memoria para cuando tiene, para cada subproceso, un marco de pila de páginas, una base de código de página para el subproceso y la página de espacio de almacenamiento dinámico. No puede asumir que tiene una página de código o montón, que son las variables aleatorias. En general, hay dos marcos de pila para cada subproceso, uno mantenido por el subproceso y otro mantenido por el kernel de Linux. Agregas conceptos de memoria virtual del espacio de intercambio y el modelo sale del agua, pero se trata de la prioridad del hilo.
fuente
También:
Si está utilizando un Linux como Controlling en el UV SGI, y está utilizando los Bladecenters con ella en su propio Kernel 4.15, puede usarlo en el Momento:
4096 Bastidores de cuchillas. 1 bastidor con 1024 núcleos x 4096 núcleos. Esta configuración será en el momento en que el núcleo más alto lo use bajo Linux. Puede controlar todos los núcleos bajo Red Hat.
fuente