RSS

Rendere Linux 10 volte più reattivo!

21 Novembre 2010

Varie

percent-64

Da alcuni giorni sta circolando una patch del kernel che risolve uno dei pochi problemi di Linux in ambito desktop.
Se il sistema è sotto pieno carico, con tutta le memoria esaurita, può succedere che, pur funzionando tutti i servizi, la reattività del sistema ne risenta. Tipico è quando una applicazione comincia a fagocitare tutta la memoria per un suo funzionamento anomalo e finchè il processo non viene killato dal sistema in automatico non si riesce più a lavorare causa apparenti blocchi del sistema (basterebbe anche riuscire ad andare in una console virtuale per killare il processo, ma l’operazione è appunto ostacolata da questa mancata reattività).

Questa patch è in grado di rendere il sistema 10 volte più reattivo pertanto sarebbe auspicabile poterla applicare sul proprio sistema, per compensare l’eventuale saturazione di memoria.

Bisogna però aspettare un nuovo Kernel che utilizzi la patch, oppure smanettare e compilarsi i sorgenti da soli, visto che la patch si applica solo al ramo in via di sviluppo del Kernel.

Invece c’è chi ha trovato come modificare il sistema per farlo operare come se fosse presente la patch! Anzi sembra che questo metodo sia da preferire perchè risulta ancora più veloce

Queste sono le istruzioni per chi vuole provare, ma non è detto che funziono (confrontare alla fine dell’articolo)

Prepariamoci dunque, aprendo una console testuale e digitando:

nano ~/.bashrc

ora andiamo alla fine di quello che c’è in questo file e scriviamo:

if [ "$PS1" ] ; then
mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$
echo $$ > /sys/fs/cgroup/cpu/user/$$/tasks
fi

Salviamo il tutto con CTRL+O e usciamo con CTRL+X
Apriamo una nuovo console, ma come super utente, e digitiamo:

mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user

Chiudiamo la console: dovremo già avere un sistema più reattivo in caso di sistema sotto torchio 😉

Ci sono alcuni punti poco chiari di questa procedura:

  • Viene modificata l’impostazione del profilo dell’utente corrente (bashrc), ma sappiamo che Linux è multiutente, per cui quantomeno sembrerebbe auspicabile che debba venir modificato ogni profilo degli utenti definiti nel sistema
  • Viene caricato il filesyem cgroup, ma a meno che cgroup non ricordi quello che gli è stato detto, al successivo riavvio il comando dovrebbe essere ripetuto (ma bisognerebbe sviscerare meglio il funzionamento di cgroup per rispondere).
  • Infine non è detto che cgroup sia attivo e configurato nel vostro sistema! Ad esempio in Fedora 12, ne va  installato una parte con yum install libcgroup, ma ciò non basta perchè il servizio va poi fatto partire (/etc/init.d/cgconfig start), ammesso che parta con la configurazione di default!
  • Per Ubuntu la procedura da attuarsi è più complicata, dovendo modificare più files e lanciare molti più comandi.

Che dire…forse conviene aspettare direttamente il nuovo Kernel, a meno che uno non voglia provare (al massimo si può tornare indietro) per sfizio.

Di sicuro io posso contare su una mano le volte che ho avuto un sistema non responsivo per saturazione della memoria, pertanto è un evento così raro che se dovesse succedere non mi preoccuperebbe più di tanto 😉

,

No comments yet.

Leave a Reply