Cómo administrar la prioridad de los procesos de E / S en Linux

¿Alguna vez ha copiado o movido decenas o cientos de gigabytes de datos? Si lo hizo, seguramente notó que el sistema se vuelve mucho menos receptivo durante ese tiempo. En Linux puede evitar esto con la ayuda del ionice mando.

¿Qué es la prioridad de E / S?

E / S es la abreviatura de entrada / salida. Hay muchos tipos de dispositivos de E / S, pero en este caso se trata de dispositivos de almacenamiento.

A cada proceso que desea leer o escribir datos en dicho dispositivo se le asigna una clase de programación y un número de prioridad (o valor “agradable”). Esto se aplica en Linux a sistemas de archivos como ext4. Otros sistemas de archivos, como ZFS, pueden implementar métodos ligeramente diferentes para programar operaciones de lectura / escritura en el disco. Además, el programador CFQ debe estar activo para que esto funcione. Puedes consultar con

Un proceso con un valor alto “agradable” tiene una prioridad más baja. La lógica detrás de esto es que cuanto mayor es el número, más “agradable” es el proceso para otros procesos.

¿Cómo funciona la prioridad de E / S?

Obviamente, un dispositivo de almacenamiento tiene un número limitado de operaciones de E / S que puede realizar por segundo (IOPS). Entonces, cuando dos procesos quieren leer / escribir al mismo tiempo, cada uno obtiene una parte de IOPS. Si tienen la misma prioridad, obtienen alrededor del 50% de IOPS cada uno.

Semáforos Ionice

Pero IOPS puede parecer abstracto y complicado. En aras de la simplicidad, puede pensar en el resultado final: velocidades de lectura / escritura. Suponga que su disco puede escribir con 100 MB / s como máximo. El proceso A comienza una operación de escritura. Escribe en disco con 100 MB / s. El proceso B aparece y quiere escribir en el mismo disco. Escribirá con alrededor de 50 MB / s, llevando la velocidad de escritura del proceso A al mismo valor, 50 MB / s. Ahora, si asigna al proceso B un valor agradable de E / S más alto, escribirá con 20 MB / sy dejará que el proceso A escriba con 80 MB / s. Cuando el proceso A finaliza, el proceso B comenzará a escribir con 100 MB / s.

Este ejemplo es útil para comprender algo que podría confundir a algunas personas. Si un proceso tiene una prioridad muy baja (valor agradable alto), no significa que escribirá lentamente todo el tiempo. Si es el único proceso que usa el disco, leerá / escribirá con la máxima velocidad. Pero cuando otros procesos necesitan el disco, se apartará temporalmente y les permitirá utilizar más ancho de banda del disco. Para una operación de copia / escritura que tardará horas en completarse, es una buena idea darle baja prioridad si desea usar su computadora durante ese tiempo.

Cómo utilizar el comando ionice

La sintaxis general del comando es:

Clases de programación de ionice

Ocioso (clase 3): los procesos de esta clase solo leen / escriben cuando ningún otro programa necesita acceso al disco. Esto significa que el proceso lee / escribe a toda velocidad cuando no tiene competencia. Cuando otro programa necesita tiempo de disco, el proceso en la clase inactiva solo leerá / escribirá con los recursos restantes. De 100 MB / s puede escribir temporalmente con 5 MB / s, luego volver a 100 MB / s cuando el otro programa haya terminado de acceder al disco. Esta es la clase perfecta para trabajos de larga duración que no desea ralentizar su sistema. No es necesario especificar ninguna prioridad para esta clase.

Comando de ejemplo:

Mejor esfuerzo (clase 2): Toma un valor de prioridad / agradable entre 0 y 7. Recuerde, un número más bajo significa una prioridad más alta. Utilice esta clase cuando desee ajustar el tiempo del disco para dos o más procesos.

Por ejemplo, desea que su copia de seguridad finalice más rápido y le asigne un buen valor 0. También está moviendo seis películas a otro disco pero no tiene prisa, por lo que le asigna un buen valor de 7.

Comando de ejemplo:

Prioridad 0 de Ionice frente a prioridad 7

Tiempo real (clase 1): debe usarse solo si es vital que el proceso se escriba lo antes posible, sin que ningún otro programa lo interrumpa. La mayoría de los usuarios nunca necesitarán esto y deberían evitarlo, excepto en casos especiales. También admite valores agradables entre 0 y 7. Sólo root puede usar esta clase, lo que significa que probablemente prefijará el comando con sudo. Tenga en cuenta que un proceso en la clase de tiempo real con prioridad 0 puede privar a otros procesos de recursos. En términos prácticos, significa que otro programa podría tener que esperar minutos o incluso horas para terminar de escribir / leer unos pocos megabytes de datos. Úselo con cuidado, solo si está seguro de que lo necesita. Si un proceso vital en la clase 2 o 3 necesita acceso al disco, su sistema puede congelarse hasta que el proceso en tiempo real termine de escribir.

Comando de ejemplo:

Ejemplos útiles de ionice

En el último ejemplo, en lugar de ejecutar un comando copiar / mover, se ha lanzado un shell (Bash). Ahora, cada comando posterior que escriba en ese shell heredará la prioridad y la clase de programación de E / S. También puede hacer esto en una interfaz gráfica.

El último comando iniciará un explorador de archivos en el entorno de escritorio LXDE. Reemplace “pcmanfm” con el nombre del explorador de archivos de su escritorio en particular. Ahora, todas las operaciones de disco que inicie allí se realizarán con la clase de programación de E / S inactiva.

En otras situaciones, es posible que ya esté activa una operación de copiar / mover. En este caso, puede utilizar ionice de una forma diferente.

Esto cambia la clase de prioridad del programa que se ejecuta con el ID de proceso 4910. Puede encontrar el PID (ID de proceso) con su administrador de tareas o con un comando como pgrep.

Prioridad Io del proceso de cambio de Ionice

Conclusión

ionice puede ser útil en escritorios en los que no desea retrasarse mientras copia / mueve archivos grandes. Pero tenga en cuenta que esto también puede ser aún más útil en los servidores. Ciertamente, no desea que un sitio web que pueda alojar allí se quede atrás de sus visitantes mientras realiza una copia de seguridad completa.

¿Es útil este artículo?

Puedes compartirlo con algun conocido(a) que le pueda resultar de ayuda

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *