Al fijar, el programador del sistema limita la aplicación en ejecución a una sola CPU, lo que da como resultado más aciertos y calidez de caché. Esto puede ser útil cuando varios subprocesos acceden a los mismos datos. Debido a que esto reduce las fallas de caché, la fijación de CPU aumenta el rendimiento general. Para habilitar la fijación de la CPU, puede ejecutar el comando htop, que muestra las estadísticas de la CPU. El comando htop imprime datos sobre la cantidad de tareas y subprocesos en ejecución, así como los promedios de carga. La asignación de CPU es más eficaz para los sistemas que utilizan topologías NUMA, como las CPU de hipervisor y las CPU virtuales de instancia. Con Linux, los usuarios pueden vincular subprocesos a núcleos que están cerca de las conexiones de red. Debido a que muchas aplicaciones dependen del ancho de banda de la memoria, es fundamental asignar suficiente memoria para cada subproceso. La asignación de CPU también permite a los usuarios utilizar aceleradores de hardware y NIC como recursos. Sin embargo, esta técnica puede no ser la mejor opción para todos. Por lo tanto, al usar la fijación de CPU, siempre debe consultar a un administrador de sistemas antes de usarlo.

¿Qué hace la fijación de CPU?

¿Qué hace la fijación de CPU en Linux? Es una función del sistema que le permite usar la CPU de una CPU en particular, independientemente de la cantidad de subprocesos que se le asignen. Esto es diferente de la reserva de CPU, que le permite reservar un solo núcleo de CPU para ejecutar una sola aplicación. La asignación de CPU es un requisito previo para las arquitecturas de software de un subproceso por núcleo.

¿Qué hace la fijación de CPU?¿Qué es NUMa y la fijación de CPU?¿Cómo conecto un proceso central?¿Qué es la fijación de VM?¿Qué es CPU Affinity Linux?¿Es el nodo NUMa un socket?¿Dónde está el nodo NUMa en Linux?

La afinidad de procesos, también conocida como fijación de CPU, permite que los procesos se asignen a una unidad de región o CPU específica. Esto permite que a un proceso se le asigne una CPU específica y que los procesos secundarios hereden esta afinidad. De manera similar, los conjuntos de CPU permiten a los usuarios reservar CPU para procesos específicos. La afinidad de procesos no está estandarizada, por lo que los diferentes sistemas operativos la implementan de manera diferente. La afinidad de procesos es útil para algunas aplicaciones, pero no es la mejor solución. La fijación de CPU también limita la aplicación a una CPU específica, lo que aumenta la calidez de la memoria caché. La afinidad de la CPU también maximiza el rendimiento de la memoria caché. Las aplicaciones que se ejecutan en varios núcleos tienen muchas más posibilidades de maximizar el rendimiento de cada uno. El resultado son más aciertos de caché y cachés más cálidos. Pero, ¿cómo funciona la fijación de CPU? Aquí hay un tutorial simple:

¿Qué es NUMa y CPU Pinning?

¿Qué es NUMa y CPU pining en Linux? El programador de Linux debe mantener una asignación estable de CPU a nodos NUMA. Los núcleos se anclan a un nodo NUMA cuando se configuran en línea por primera vez y se asignan al nodo NUMA anterior si se configuran fuera de línea. En los sistemas de subprocesos múltiples, una CPU es equivalente a un subproceso. La fijación de CPU en un sistema de este tipo garantiza que las CPU se distribuyan uniformemente entre todas las CPU disponibles. NUMA es un esquema de configuración para un sistema de multiprocesamiento que utiliza un grupo de microprocesadores con varios nodos de memoria. Este tipo de sistema intenta satisfacer las solicitudes de memoria examinando las listas de zonas de las CPU que están más cerca del nodo solicitante. Cuando una CPU solicita memoria, primero intentará usar el nodo que tenga la memoria disponible más cercana y retrocederá a los nodos cercanos si no está disponible. La arquitectura de asignación de CPU y NUMa también mejora el rendimiento. Cuando se ejecuta un proceso, el sistema operativo lo crea y le asigna una CPU según su algoritmo de programación. Una vez transcurrido este tiempo, el despachador del kernel pondrá el proceso anterior en suspensión. Cuando el proceso se despierta, el proceso anterior puede reasignarse a un núcleo diferente. Esto es especialmente cierto en los procesos intensivos de CPU.

¿Cómo anclar un proceso central?

Si alguna vez se ha preguntado cómo “fijar” un proceso central, este artículo lo ayudará. La función de fijación en Linux es una opción que le permite controlar dónde se asignan las CPU virtuales a un proceso. Esta característica se conoce comúnmente como fijación de CPU o afinidad de CPU. Al establecer esta opción, puede restringir a qué procesos de CPU se asignan y cuánta memoria reciben. También puede utilizar la fijación para optimizar su rendimiento, utilizando herramientas como tasket y numactl. Una afinidad de CPU está determinada por el bit más bajo de la máscara de bits hexadecimal. Por ejemplo, los núcleos 0 y 4 están asociados con la afinidad de CPU 0x11. Puede usar el comando tasket para asignar procesos a núcleos de CPU específicos. También puede especificar un rango de ID de núcleo de CPU, si es necesario. Esta opción funcionará tanto para las tareas como para los procesos del núcleo.

¿Qué es la fijación de máquinas virtuales?

VM Pinning es el proceso de vincular máquinas virtuales a un host y se puede utilizar para garantizar que una máquina en particular siempre se ejecute en la misma configuración de hardware que su host. En la mayoría de los casos, la fijación se puede habilitar desde la pestaña Máquinas virtuales, donde las máquinas virtuales se enumeran por nombre. Las máquinas virtuales se pueden pinear de forma suave o difícil, según el tipo de pinning. La fijación de máquinas virtuales se habilita cuando se asigna un núcleo físico específico a una máquina virtual. Funciona asignando la CPU de cada VM a un socket correspondiente en el host. El kernel tiene un indicador llamado socket CPU1, que permite fijar este núcleo. Los indicadores de socket CPU1 deben usarse solo para una sola máquina virtual de usuario por nodo, pero es posible usar varias máquinas virtuales en el mismo núcleo físico. El uso de CPU pining en Linux puede mejorar el rendimiento de la máquina virtual. Anclar CPU virtuales a un hiperproceso reduce los cambios de contexto y evita el acceso lento a la memoria desde los nodos NUMA remotos. Es una técnica de virtualización efectiva y tiene pocos efectos secundarios negativos conocidos. Puede probar la configuración de fijación de vCPU en su host con estos puntos de referencia. Si no está seguro de si la fijación de CPU es adecuada para su sistema, pruébelo hoy.

¿Qué es CPU Affinity Linux?

CPU Affinity es una nueva característica introducida en el kernel de Linux en la versión 2.5. Le permite vincular procesos a procesadores específicos. De forma predeterminada, Linux utiliza un procesador por proceso. Pero los usuarios pueden especificar qué núcleos debe usar un proceso con el conjunto de tareas. Por ejemplo, si su proceso VLC solo usa un núcleo, puede configurar la afinidad de CPU para todos ellos. Para probar la afinidad de la CPU en un proceso, ejecute htop. Este comando muestra la cantidad de subprocesos que actualmente utilizan un procesador. La afinidad de CPU le permite vincular un conjunto de procesadores a procesos de trabajo. En Linux y FreeBSD, puede usar la directiva worker_cpu_affinity para configurar esta configuración. Para verificar la afinidad de un proceso específico, use una herramienta como Process Explorer o Task Manager. También puede escribir /affinity en la terminal. Debería mostrar la afinidad en la pestaña Procesos.

¿Es el nodo NUMa un socket?

¿Cuál es la diferencia entre una CPU y un nodo NUMA? Las CPU tienen memoria local a la que pueden acceder todas las CPU, y los nodos NUMA son las parejas de CPU y memoria. Las CPU en un sistema de dos zócalos tienen su propia memoria local, por lo que acceder a la memoria en el otro zócalo requerirá más ciclos de CPU. Un nodo NUMA define el patrón de acceso a la memoria para cada CPU. Una máquina de dos sockets, por ejemplo, tendría 2 nodos NUMA y cada CPU tendría su propia memoria local. Una de las formas de identificar la cantidad de nodos NUMA es usar el Administrador de tareas de Windows. En el Administrador de tareas de Windows, debería ver una opción de “Historial de la CPU”, pero no será visible para usted a menos que su CPU tenga un diseño NUMA. Alternativamente, puede abrir CoreInfo y ver la cantidad de núcleos lógicos en su procesador. PerfMon mostrará que cada nodo NUMA tiene 12 procesadores.

¿Dónde está el nodo NUMa en Linux?

Quizás se esté preguntando: “¿Dónde está el nodo NUMa en Linux?” Este artículo discutirá las diferentes formas de encontrar esta información. En primer lugar, debes saber que NUMA es un tipo de unidad numérica. El kernel de Linux lo utiliza para determinar qué procesadores son los más adecuados para NUMA. Los sistemas basados ​​en NUMA se utilizan a menudo en entornos de servidor. Pero, ¿qué necesita saber para saber cuáles son los adecuados para su sistema? El primer método involucra el uso de la función numa_set_membind(). Establece los nodos desde los que se puede asignar memoria. Con este método, una tarea asignará memoria solo de los nodos especificados en la máscara de nodo. Si la máscara de nodo está vacía o no tiene ningún nodo en la máscara devuelta, se genera un error. Además, puede llamar a numa_get_membind() para averiguar cuántos nodos están disponibles para la asignación de memoria.