El procesamiento de múltiples núcleos puede tener ventajas e inconvenientes y, a veces, es necesario asignar manualmente núcleos de CPU a programas (también conocido como «afinidad de CPU») para obtener el mejor rendimiento. En Linux, la herramienta principal es conjunto de tareas. Eso suena potencialmente aterrador, pero lo dividiremos en pasos sencillos para simplificar el proceso.
Conceptos básicos del conjunto de tareas
El uso del conjunto de tareas se puede dividir en dos partes: la afinidad de la CPU con los programas que se ejecutarán y con los programas que ya se están ejecutando. Lanzar programas es el más fácil de los dos, así que comenzaremos por ahí. Un comando de inicio tiene este aspecto:
taskset -c cpu-core-number(s) application
Antes de ingresar el número del núcleo de la CPU que desea asignar, no olvide que un esquema de numeración de Unix generalmente comienza en 0, por lo que su primer núcleo será 0, su segundo núcleo 1, y así sucesivamente. Por lo tanto, una máquina de doble núcleo tendrá núcleos 0 y 1, y una máquina de cuatro núcleos tendrá núcleos 0, 1, 2 y 3.
Digamos que quiere ejecutar Audacity en un sistema de doble núcleo y quiere que se ejecute en su segundo núcleo. Ese comando sería:
taskset -c 1 audacity
Usando múltiples núcleos
En una de nuestras máquinas, Chrome a veces soltaba cuadros al transmitir video, pero se comportaba cuando se asignaba a dos núcleos. Si desea probar lo mismo en un sistema de cuatro núcleos y desea asignar Chrome a los núcleos tres y cuatro, el comando sería:
taskset -c 2,3 google-chrome
No tiene que asignar afinidad de CPU a núcleos secuenciales; puede elegir cualquier núcleo al azar. Digamos que tiene una máquina de seis núcleos y desea usar Chrome en los núcleos dos y seis. Ingresarías el comando:
taskset -c 1,5 google-chrome
También puede utilizar un guión para distribuir una aplicación en varios núcleos. Por ejemplo, muchos programas o funciones del sistema más antiguos estarán predeterminados en su primer núcleo. ¿Qué pasaría si quisiera dejar el primer núcleo lo más libre posible mientras distribuye una aplicación grande en todos sus otros núcleos?
Digamos que tiene un sistema de ocho núcleos y desea ejecutar Steam desde el segundo núcleo hasta el octavo. Ese comando sería:
taskset -c 1-7 steam
Cambio de afinidad para un programa que ya se lanzó
El conjunto de tareas no se limita simplemente a iniciar aplicaciones. También puede cambiar la afinidad de la CPU para un programa que ya se está ejecutando. Sin embargo, antes de que pueda cambiar la afinidad de una aplicación, primero debe conocer su ID de proceso (o PID para abreviar).
Para averiguar el PID de su aplicación, puede intentar usar el monitor del sistema de su escritorio, pero la forma más rápida es simplemente usar top. Como era de esperar, usa el comando:
top
Los nombres de todos los comandos en ejecución están en el lado derecho de la pantalla. Los identificadores de proceso correspondientes están a la izquierda.
Anote su PID ya que lo usará en un momento. Para este ejemplo, usaremos VLC, que está en medio de la reproducción de un video Matroska de alta definición en una PC más antigua con seis núcleos. Estamos experimentando con diferentes afinidades de CPU para obtener el mejor rendimiento de VLC.
Para cambiar la afinidad de un proceso existente, la sintaxis se ve así:
taskset -cp core-numbers PID
Si puede ver nuestra captura de pantalla anterior, el ID de proceso de VLC es 20485. Intentaremos ejecutar VLC en los núcleos cuarto, quinto y sexto, que en Unix la numeración será 3-5. Entonces, después de todo eso, el comando será:
taskset -cp 3-5 20485
Pero, ¿qué sucede si desea verificar la afinidad existente antes de cambiarla? Para eso, no ingrese ningún número principal, y el conjunto de tareas le dirá cómo se asigna la afinidad. Entonces, si cambiamos el último comando a:
taskset -cp 20485
nos muestra que VLC se distribuye en todos los núcleos.

Intentémoslo de nuevo con un programa diferente. Digamos que ejecutamos un gran Matroska con SMPlayer en su lugar, y SMPlayer ya se ha lanzado. Top dice que el PID es 16058.

Pero primero queremos conocer su afinidad existente. Usando el comando con el -cp switch pero sin números de núcleo, podemos ver que la afinidad actualmente se extiende a todos los núcleos.

Ahora podemos intentar distribuir SMPlayer en los mismos tres núcleos que el experimento de VLC con el comando:
taskset -cp 3-5 16058
Eso es fácil, ¿no? Si está buscando comparar su PC, consulte nuestra guía sobre 8 herramientas útiles para probar su CPU.
Apoya nuestro trabajo ❤️
Si te ha gustado este artículo, considera dejar una propina para ayudarnos a seguir publicando contenido de calidad.




















