¿Cómo se puede configurar la prioridad de E/S del disco automáticamente?

¿Cómo se puede configurar la prioridad de E/S del disco automáticamente?

Si uso alguna aplicación intensiva de IO (como Virtualbox, verificación de datos de Steam o incluso dd), mi sistema casi deja de responder. A pesar de que todo se inicia con prioridad normal, hacen que el escritorio sea muy lento y retrasan mucho el inicio de otras aplicaciones.

Sé que puedo usar algo como ionicecambiar la prioridad a inactiva, por ejemplo, pero en el caso de Virtualbox, que genera muchos procesos, se vuelve difícil.

¿Puedo dar algún tipo de sugerencias al sistema, para que al iniciar algunas aplicaciones específicas se inicien con la menor prioridad de IO?

Respuesta1

Nota: Esta solución solo funciona con el programador cfq, como se explicaaquí. Debe verificar cuál se utiliza emitiendo

cat /sys/block/sda/queue/scheduler

ycambiarsi es necesario.

Si entendí correctamente, desea que ionicese aplique alguna configuración cada vez que inicie un comando. Puedes hacerlo de esta manera:

echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/

El primer comando crea un archivo VirtualBoxcon el texto entre comillas simples como contenido. Este debería tener la ruta completa al programa, ya que si solo VirtualBoxla especificamos podemos interpretarlo como el archivo que acabamos de crear y crear un "bucle".

El segundo comando lo hace ejecutable y el tercero mueve este nuevo archivo a una carpeta que está frente a la carpeta bin del "sistema" /usr/bin, por lo que nuestro nuevo archivo se ejecuta en lugar del original. La parte "$@" contiene todos los argumentos con los que se invocó el comando, por lo que se reenvían al comando real de VirtualBox.

Según la respuesta ("sí") a esta pregunta de superusuario¿Los procesos infantiles heredan prioridades iónicas de sus padres? ¿Cómo se verifica la prioridad IO de un proceso en ejecución?, debería ser suficiente para ioniceel proceso padre, así:

ionice -c 3 VirtualBox

Deionice página de manual, están disponibles los siguientes valores de clase de programación de E/S:

  • 0 para ninguno
  • 1 en tiempo real
  • 2 para el mejor esfuerzo
  • 3 para inactivo (usado en el ejemplo anterior)

Se puede utilizar un número o nombre de clase.

Además, -n levella opción es aplicable para clases en tiempo real y de mejor esfuerzo, con 0-7 como datos válidos (niveles de prioridad).

Respuesta2

Puede utilizar el comando 'renice' para priorizar procesos:

renice -<priority> <application's pid>

También podría ser que su disco esté girando demasiado, por lo que cuando desee iniciar una aplicación como Virtualbox, debe girar antes de poder comenzar a solucionarlo (esto puede llevar un tiempo).

información relacionada