Avete mai notato che la velocità del computer è sempre inversamente proporzionale alla fretta di chi lo sta usando?

— Sergio Boarina

Limitare i processi

http://www.stenoweb.it/files/blog/quadcore.jpg Anche se parliamo di processi non voglio certo cimentarmi nell'antica polemica sulla lentezza della giustizia italiana, ma bensì sui più prevedibili processi che avvengono all'interno dei nostri umili computer. Spesso (spesso ? uhm, forse no dai ...) capita che si voglia avere un controllo più fine sull'operato del nostro scheduler Linux. Con il famoso e fumoso nice possiamo controllare la priorità di un precesso, ma esistono anche altri comandi come ionice per limitare il solo I/O oppure cpulimit per la sola percentuale della CPU da dedicare ad un processo. Portano vantaggi ? Mah! Spesso no, ma comunque tentar non nuoce. Vediamoli brevemente.

ionice

ionice con tutta probabilità è già installato nella vostra distribuzione. Con questo comando possiamo agire sulla priorità I/O da assegnare. Esistono tre modalità suddivise in livelli:

  • real time: da usare solo con estrema attenzione perché può impedire ad altri l’accesso ai dischi. 8 livelli disponibili (da 0 a 7). Massimo I/O per il processo.
  • best effort: questo è il default. Processi che non hanno necessità particolari di I/O. 8 livelli disponibili (da 0 a 7) . In questa modalità il processo eredita il CPU nice per l' I/O.
  • idle: processi che avranno possibilità di I/O solo quando non ci sarà alcuna attività nel sistema.

Per esempio potremmo lanciare gli script per il backup come best effort con priorità più bassa:

ionice -c2 -n7 /usr/local/sbin/backup full

cpulimit

Come limitare la percentuale di processore per un determinato processo (orrendo gioco di parole) ?
Lo possiamo fare con cpulimit, ormai pacchettizzato per molte distribuzioni. Il programma monitorizza il processo selezionato e continua ad inviare SIGSTOP/SIGCONT per rispettare le richieste.
Nel caso di macchine multiprocessore o multicore la percentuale viene moltiplicata per il numero di cpu/core. Ad esempio per una macchina con un solo processore 100%, mentre per una dual core 200% e così via.

Con Ubuntu e affini lo dobbiamo installare:

sudo apt-get install cpulimit

Poi proviamo ad usarlo. Ad esempio, supponiamo di voler limitare il processo myprog con PID 1234 (che trovo con il comando ps). Possiamo farlo sia specificando il nome che il PID:
cpulimit -e myprog -l 50
cpulimit -p 1234 myprog -l 50

Con uno di questi comandi limito myprog al 50% di un core.

I know this if off topic but I'm looking into starting my own weblog and was curious
what all is required to get setup? I'm assuming having a blog like yours would cost a pretty penny?
I'm not very internet savvy so I'm not 100% positive.
Any suggestions or advice would be greatly appreciated.

Thank you