GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de comandos de tareas de Linux para principiantes (con ejemplos)

¿Has oído hablar del término afinidad del procesador? Es una función que le permite vincular o desvincular procesos a una unidad central de procesamiento en particular o a un rango de CPU. Sí, puede decirle al sistema qué núcleo(s) de CPU se deben usar para ejecutar un proceso en particular. Para obtener detalles teóricos sobre por qué existe la afinidad del procesador, diríjase aquí.

Aquí, en este tutorial, hablaremos de una utilidad denominada taskset - que le permite lograr la afinidad del procesador. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos de este tutorial se probaron en una máquina con Ubuntu 20.04 LTS y en Debian 10.

Comando de conjunto de tareas de Linux

El comando tasket le permite configurar o recuperar la afinidad de CPU de un proceso. La siguiente es su sintaxis:

taskset [options] mask command [argument...]
taskset [options] -p [mask] pid

Así es como la página de manual de la herramienta lo explica:

       taskset  is  used  to  set  or  retrieve  the CPU affinity of a running
       process given its pid, or to launch a new  command  with  a  given  CPU
       affinity.   CPU affinity is a scheduler property that "bonds" a process
       to a given set of CPUs on the system.  The Linux scheduler  will  honor
       the  given CPU affinity and the process will not run on any other CPUs.
       Note that the Linux scheduler also supports natural CPU  affinity:  the
       scheduler attempts to keep processes on the same CPU as long as practi?
       cal for performance reasons.  Therefore, forcing a specific CPU  affin?
       ity is useful only in certain applications.

       The CPU affinity is represented as a bitmask, with the lowest order bit
       corresponding to the first logical CPU and the highest order bit corre?
       sponding  to  the  last logical CPU.  Not all CPUs may exist on a given
       system but a mask may specify more CPUs than are present.  A  retrieved
       mask  will  reflect only the bits that correspond to CPUs physically on
       the system.  If an invalid mask is given (i.e., one that corresponds to
       no  valid  CPUs on the current system) an error is returned.  The masks
       may be specified in hexadecimal (with or without a leading "0x"), or as
       a CPU list with the --cpu-list option.  For example,

           0x00000001  is processor #0,

           0x00000003  is processors #0 and #1,

           0xFFFFFFFF  is processors #0 through #31,

           32          is processors #1, #4, and #5,

           --cpu-list 0-2,6
                       is processors #0, #1, #2, and #6.

       When  taskset returns, it is guaranteed that the given program has been
       scheduled to a legal CPU.

Los siguientes son algunos ejemplos con estilo de preguntas y respuestas que le darán una mejor idea de cómo funciona el comando taskset.

P1. ¿Cómo usar el conjunto de tareas para recuperar la afinidad de CPU de un proceso?

Si desea que el conjunto de tareas muestre la afinidad de la CPU de un proceso que ya se está ejecutando, use el comando de la siguiente manera:

taskset -p [PID]

Simplemente reemplace PID con la ID del proceso cuya afinidad de CPU desea obtener. Por ejemplo:

taskset -p 9726

El comando anterior devolvió el siguiente resultado:

pid 9726's current affinity mask: f

Entonces, el valor hexadecimal 'f' aquí significa que el proceso puede ejecutarse en cualquiera de los 4 núcleos del procesador:0,1,2,3.

Si desea que la salida sea en términos de rango de CPU, puede agregar la opción de línea de comando -c.

taskset -cp 9726

El siguiente es el resultado en este caso:

pid 9726's current affinity list: 0-3

P2. ¿Cómo cambiar la afinidad de la CPU usando el conjunto de tareas?

Para modificar la afinidad de la CPU de un proceso existente, debe especificar el ID del proceso (como hicimos en la sección anterior) junto con una máscara hexadecimal que define la nueva afinidad.

Por ejemplo, la afinidad de CPU actual del proceso Gedit (PID:9726) es 'f'.

Para cambiar la afinidad a 0x11, use el siguiente comando:

taskset -p 0x11 9726

Y luego puede verificar nuevamente la nueva afinidad usando el siguiente comando:

taskset -p 9726

Las siguientes capturas de pantalla muestran los resultados de estos comandos en mi caso:

Para que pueda ver que la afinidad cambió.

P3. ¿Cómo asignar un rango de CPU al cambiar la afinidad?

Esto no es gran cosa. Todo lo que tiene que hacer es agregar la opción de línea de comando -c al comando que usamos en la sección anterior junto con el rango de núcleo de CPU como entrada.

Este es un ejemplo:

conjunto de tareas -cp 0,3 9726

La siguiente es la salida producida en este caso:

pid 9726's current affinity list: 0
pid 9726's new affinity list: 0,3

Q4. ¿Cómo lanzar un proceso con afinidad de CPU predefinida?

Sí, también puede iniciar un proceso con una afinidad de CPU establecida.

Por ejemplo, inicié el editor de texto gedit con afinidad de CPU 0xa.

conjunto de tareas 0xa gedit

Conclusión

De acuerdo, el comando taskset no es para un usuario de línea de comandos promedio. Es utilizado principalmente por expertos del lado del servidor para la optimización de procesos en un entorno de varios núcleos. Hemos discutido los conceptos básicos de la herramienta aquí. Para obtener más información, diríjase a su página de manual.


Linux
  1. Linux expand Command Tutorial para principiantes (con ejemplos)

  2. Tutorial de comando de factor Linux para principiantes (con ejemplos)

  3. Tutorial de comando yes de Linux para principiantes (con ejemplos)

  4. Tutorial de comandos para usuarios de Linux para principiantes (con ejemplos)

  5. Tutorial de comando Linux sum para principiantes (con ejemplos)

Tutorial de comando Linux sha1sum para principiantes (con ejemplos)

Tutorial de comandos de apariencia de Linux para principiantes (con ejemplos)

Tutorial del comando lsattr de Linux para principiantes (con ejemplos)

Tutorial del comando tload de Linux para principiantes (con ejemplos)

Tutorial del comando Linux znew para principiantes (con ejemplos)

Tutorial de comando Linux tr para principiantes (con ejemplos)