Nota: questa soluzione funziona solo con lo scheduler cfq, come spiegato qui . È necessario verificare quale viene utilizzato emettendo
cat /sys/block/sda/queue/scheduler
e cambiarlo se necessario.
Se ho capito bene, si desidera ionice
applicare alcune impostazioni ogni volta che si avvia un comando. Puoi farlo in questo modo:
echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/
Il primo comando crea un file VirtualBox
con il testo a virgoletta singola come contenuto. Questo dovrebbe avere il percorso completo per il programma, perché se uno solo lo specifica VirtualBox
può interpretarlo come il file che abbiamo appena creato e creare un "loop".
Il secondo comando lo rende eseguibile e il terzo sposta questo nuovo file in una cartella che si trova di fronte alla cartella bin "di sistema" /usr/bin
, in modo che il nostro nuovo file venga eseguito anziché l'originale. La parte "$ @" contiene tutti gli argomenti con cui è stato invocato il comando, quindi vengono inoltrati al comando VirtualBox reale.
Secondo la risposta ("sì") a questa domanda da superutente I processi dei bambini ereditano le priorità di ionice dai genitori? Come si controlla la priorità di I / O di un processo in esecuzione? , dovrebbe essere sufficiente per ionice
il processo padre, in questo modo:
ionice -c 3 VirtualBox
Dalla ionice
pagina man sono disponibili i seguenti valori della classe di pianificazione I / O:
- 0 per nessuno
- 1 per tempo reale
- 2 per il massimo sforzo
- 3 per inattivo (utilizzato nell'esempio sopra)
È possibile utilizzare un numero o un nome di classe.
Inoltre, l' -n level
opzione è applicabile per le classi in tempo reale e migliori, con 0-7 come dati validi (livelli di priorità).