UIE Meeting

giovedì 17 maggio ore 20,30 - Casa delle Associazioni

Home Articoli archiviati

Sab

02

Mag

2009

Ottimizzazioni Per I Dischi SSD PDF Stampa
Scritto da Santiago   

Salve a tutti oggi voglio farvi vedere come ho ottimizzato ubuntu nel netbook.
Ho un EeePc 901 con due dischi SSD. Ho installato Jaunty con i file systems Ext4.
vedremo come limitare le scritture sul disco, come risparmiare energia e come velocizzare ulteriormente il boot.

Tanto per chiarire se fate queste modifiche è sottintesso che voi sapiate cosa state facendo, quindi usate questa guida a vostro rischio e pericolo.

Ottimizzazione dentro il file fstab:

sudo gedit /etc/fstab

incollare le seguenti righe alla fine del file:

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/log/apt tmpfs defaults,noatime 0 0

aggiungere la voce noatime dentro le opzioni delle partizioni al posto della voce relatime, Esempio:

UUID=[serie-di-numeri] / ext4 relatime,errors=remount-ro 0 1
UUID=[serie-di-numeri] /home ext4 relatime 0 2

Diventerà:

UUID=[serie-di-numeri] / ext4 noatime,commit=100,nouser_xattr 0 1
UUID=[serie-di-numeri] /home ext4 noatime,commit=100,nouser_xattr 0 2

Personalmente suggerisco, come si vede dall'esempio, alcune opzioni oltre a noatime. È importante che le opzioni siano attaccate e non abbiano spazi: noatime,commit=100,nouser_xattr,ecc,ecc

Se usate un file system con journaling vi consiglio di aggiungere queste opzioni:  barrier=0,data=writeback,nobh
Se avete Ext4 senza journaling ad esempio non fatelo. Aggiungendo queste opzioni verrebbe una cosa del genere:

UUID=[serie-di-n°] / ext4 noatime,barrier=0,nobh,commit=100,nouser_xattr 0 1
UUID=[serie-di-n°] /home ext4 noatime,barrier=0,data=writeback,nobh,commit=100,nouser_xattr 0 2

per aggiungere l'opzione data=writeback dentro alla partizione  / bisogna entrare da live o da recovery e dare il comando:

tune2fs -o journal_data_writeback /dev/sdXX

dove sdXX è la partizione in questione esempio: sda1
dopo di che possiamo aggiungere la opzione data=writeback alla partizione / nel fstab

Sempre per quanto riguarda la partizione root (/) per l'opzione commit=100 bisogna editare il file menu del grub con questo comando:

sudo gedit /boot/grub/menu.lst

cercare un passaggio simile a questo, dove ci sia l'ultima riga "#defoptions= ecc ecc" :

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash vga=773

E aggiungere l'opzione rootflags=commit=100:

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash vga=773 rootflags=commit=100

Dopo di che salvate, chiudete e date questo comando:

sudo update-grub


Per fare chiarezza ecco qualche delucidazione:


writeback:
        Una modalità di journaling per Ext4 che scrive di meno nel disco con rispetto alla modalità di default data=ordered, per questo a mio giudizio converrebbe sia attivata per i dischi SSD.

nobh:
        Aiuta l'opzione data=writeback ad essere più efficente.

barrier:
        Disattivare questa opzione, cioe mettere barrier=0 aiuta ad avere più performace, tuttavia se non hai un portatile è melgio questa opzione rimanga attiva.

noatime :
        Grazie a questa opzione il sistema ad ogni accesso ad un file non scrive la data di accesso, limitando le scritture sul disco. Cosa che conviene avendo un SSD. Inoltre si limita a scrivere la data di accesso solo quando l file viene effettivamente modificato e non solo letto, aumentando quindi anche la velocità di accesso ai file.

relatime :

    Relatime scrive la data di accesso anche se il file è solamente letto. Pratica più sicura ma che comporta ovviamente più riscritture sul filesystem. Nel caso di un disco SSD conviene sia sostituita dall'opzione noatime.

commit :

    Aumenta l'intervalo per cui il sistema fa una operazione di sincronizzazione tra i dati e i metadati, da default questo intervallo è di 5 secondi, noi lo aumentiamo a 100 secondi, in questo modo ci sono meno scritture. Potete scegliere anche 90 o 80, a voi la scelta.

nouser_xattr :
    Disabilita Extended User Attributes se non ne hai bisogno. se stai usando una distro versione desktop a casa o in una officina piccola, insomma se sei un singolo utente che fa le solite cose e non ha un server ma solo un pc questa opzione si può disabilitare.

errors=remount-ro :
    possiamo toglierlo tranquillamente.


Ottimizzare il kernel:

sudo gedit /etc/rc.local

aggiungiamo certi parametri al foglio appena aperto, in fondo al file prima di exit 0:

echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
echo 20 > /proc/sys/vm/dirty_ratio
echo 10 > /proc/sys/vm/dirty_background_ratio

echo 1 > /sys/devices/system/cpu/sched_smt_power_savings
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
echo 5 > /proc/sys/vm/laptop_mode


Velocizzare il boot ulteriormente:

Con jaunty non c'è ne bisogno ma l'anima di uno smanettone non è mai placcata e quindi su! velocizziamolo ancora, e che cazz..!
aprite il grub:

sudo gedit /boot/grub/menu.lst

Aggiungere “elevator=noop” alla linea del kernel.

Per esempio:

    title                  Ubuntu 8.04.1, kernel 2.6.24-19-generic
    root                  (hd0,0)
    kernel              /boot/vmlinuz-2.6.24-19-generic root=UUID=090cbd4d-5696-4e8c-9aa5-f6e13d93f0bc ro quiet splash elevator=noop

    initrd               /boot/initrd.img-2.6.24-19-generic
    quiet

Se invece usate Karmic Koala, e quindi avete il grub2:

sudo gedit /etc/default/grub

cerchiamo la riga

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

e aggiungiamo il parametro, in modo che rimanga cosi.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

infine:

sudo update-grub2

Questo è tutto per adesso, se volete approfondire queste ottimizzazioni vi rimando alle fonti:
Tunning ext4
Ext4 on SSD fedora forum
Zdnet

Se infine volete chiedere aiuto o confrontare le diverse performance nei dischi ssd vi invito al forum di EeePc.it dove troverette pane per i vostri denti.

Alla prossima!


Commenti (17)add comment

Doc said:

...
Veramente ottimo! Complimenti!
02 maggio 2009

leonardo said:

...
Complimenti per questa guida, ne sto leggendo tante per cercare di migliorare le prestazioni del mio mini9, e la tua è davvero chiara e molto completa.
Due domande:
- qualcuno (tra gli altri http://ubuntuforums.org/showpo...stcount=10 ) suggerisce di usare hdparm -W1 /dev/sda con data=writeback insieme a tune2fs. Non è necessario?
- elevator=noop in grub è un'opzione system wide. se uso solo il disco SSD e altri supporti flash non c'è problema, ma che succede se collego un HD USB esterno tradizionale?
02 giugno 2009

Santiago said:

...
ciao, grazie dei complimenti.
per quanto riguarda il passo di hdparm non penso sia necessario se segui la mia procedura. credo che quella opzione vada abbinata al cambiamento ma io per cambiare abbino queste due cose: (prima da live faccio)
tune2fs -o journal_data_writeback /dev/sdXX
e poi aggiungo l'opzione data=writeback alla partizione / nel fstab

ora non ho molto tempo di capire bene cosa fa hdparm ma ti lascio questo:

hdparm options:
-w Perform a device reset (DANGEROUS). Do NOT use this option. It
exists for unlikely situations where a reboot might otherwise be
required to get a confused drive back into a useable state.

-W Get/set the IDE/SATA drive´s write-caching feature.

come già detto io non lo farei.

Per quanto riguarda elevator=noop non sono sicurissimo ma penso che il kernel carichi quella opzioni quando è ora di montare i dischi all'avvio, quindi se dopo monti qualcosa che non è nel fstab non credo ci siano problemi. Ad ogni modo se monti una chiavetta usb flash non dovresti preoccupati. sono sempre memorie flash.
02 giugno 2009 | url

leonardo said:

...
leggendo qui https://www.blogger.com/comment.g?blogID=38892787&postID=47073772663401167 sembra che hdparm possa aiutare (sono i commenti a uno degli articoli citati)
circa lo scheduler avevo letto proprio nel quarto articolo citato (zdnet) sulle implicazioni per i dischi non flash:
This parameter sets the default I/O scheduler system wide, so if you have mixed SSD and conventional disks in your computer, you will want to set the scheduler on a drive-by-drive basis.

Non parla di dischi montati successivamente al boot ma dal momento che uso regolarmente un hd usb esterno per i backup, per me è molto importante non creare problemi su questo disco.
02 giugno 2009

Hessian said:

...
Grazie per la guida. chiara e ben fatta.
Ho seguito tutto ciò che suggerisci passo per passo e non ho avuto particolari problemi.
L'unica cosa da notare è che ubuntu nel mio caso è su penna usb provvista di led il quale lampeggia costantemente come un pazzo anche se il computer non stà facendo assolutamente nulla. Prima del tuo aiuto utilizzato ext2 e la cosa non si presentava.
Che tu sappia esiste un modo per monitorare il numero di scritture su disco?
Grazie ancora.
18 giugno 2009

Santiago said:

@Hessian
Ciao Hessian..forse il problema è il journaling, il file system Ext2 non ce l'ha, mentre il 3 e il 4 sì.
Ma oggi ho pubblicato una guida per togliere il journal a Ext4.
http://www.uielinux.org/guide-e-tutorial/2-configurazione/188-ext4-senza-journaling-ottimo-per-dischi-ssd.html

prova e fammi sapere.
01 luglio 2009 | url

PauLoX said:

Aggiornamento per GRUB2
Ciao e complimenti per la guida devo dire che è la giusta sintesi di molte gude che ho trovato in giro.

Personalmente ho installato Ubuntu 9.10 Karmic sul mio Dell mini10v con disco SSD da 8Gb.

Ho seguito la tua guida ma non posso applicare le modifiche a GRUB poichè Karmic installa di default GRUB2 che ha delle impostazioni differenti.

Sapresti suggerire come applicare gli accorgimenti per Grub su Grub2 ?

Sono sicuro che sarà utile per tutte lepersone che a breve passeranno ad utilizzare Grub2.

Grazie.
10 ottobre 2009 | url

Santiago said:

@PauloX
ciao, stavo pensando di studiare un po' come funziona grub2. Purtroppo oltre ad essere pigro non ho tempo in questo periodo, però spero di riuscire a farlo prima o nei giorni successivi all'uscita di karmic. Ti tengo aggiornato.
Ti linko una guida che mi sono promesso di leggere ma ancora non l'ho fatto:
http://streetcross.wordpress.com/2009/04/11/grub2-impariamolo/

PS: se riesci a risolvere prima di me non ti azzardare a tenertelo per te! smilies/smiley.gif
10 ottobre 2009

PauLoX said:

Aggiornamenti
@ Santiago
Avevo dato uno sguardo alla guida che hai linkato, se ne tiro fuori qualcosa di funzionante ovviamente la condivido ;-)

Per quanto riguarda invece le modifiche per /etc/fstab ho degli aggiornamenti:
- ho dovuto eliminare la riga "tmpfs /var/log/apt tmpfs defaults,noatime 0 0" poichè ubuntu si blocca in fase di boot, ed inoltr questa riga è l'unica che io non abbia trovato suggerita nelle altre guide simili
- usando questi parametri non riesco più a visualiizare i grafici di bootchart che prima trovavo in /var/log/bootchart
10 ottobre 2009 | url

canrabbioso said:

errore con software center?
ciao, innanzitutto grazie per la guida. mi è stata molto utile.
L'unica cosa ho notato è che aggiungendo al /fstab queste modifiche

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/log/apt tmpfs defaults,noatime 0 0

ho un problema col software center: le applicazioni vengono installate e disinstallate correttamente ma alla fine dell operazione mi da un errore.
ti risulta? non è niente di grave in termini di usabilita ma se si puo sistemare è meglio. smilies/smiley.gif

sono anch'io su un eeepc 901 con karmic e etx4
08 novembre 2009

Santiago said:

Aggiornamento guida 11 dicembre 2009
Ho aggiornato la guida ora si può anche applicare gli accorgimenti per coloro che usano Grub2

@ PauloX e canrabbioso:
il vostro problema è dovuto alle 2 ultime righe
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/log/apt tmpfs defaults,noatime 0 0

se non volete ricevere errori dovete commentarle o non metterle in fstab, L'errore di canrabbioso non rappresenta niente di grave, se riesci a convivere puoi tenerlo così.

Scusate il ritardo delle risposte.
11 dicembre 2009

PauLoX said:

GRUB2
Grazie santiago per l'aggiornamento della guida per l'opzione "elevator=noop" nel caso si utilizzi GRUB2 (ad esempio con Karmic).

Per quanto riguarda l'opzione "rootflags=commit=100" come si può applicare a GRUB2 ?
11 dicembre 2009 | url

Santiago said:

idem
È la stessa procedura,la metti dopo o prima di elevator=noop:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rootflags=commit=100 elevator=noop"


Grazie, non mi ero reso conto che c'era anche quella voce.
12 dicembre 2009

PauLoX said:

Karmic
Ciao Santiago, grazie per la chiarificazione, a questo punto forse converrebbe fare una sezione a parte in cui riassumere le configurazione per karmic in maniera da facilitare chi non ha seguito tutto il discorso.

Grazie ancora per la tua guida.
13 dicembre 2009 | url

mallo said:

...
Ciao,

non sono sicuro della tua interpretazione del parametro relatime.
Da come spieghi sembra esegua un maggior numero di scritture di atime.
Puoi leggere qui:

http://kerneltrap.org/node/14148
25 luglio 2011

Santiago said:

...
Ciao Mallo, sì l'interpretazione è quella.
il parametro "relatime" effettua più scritture che "atime", per questo consiglio di mettere soltanto "atime" nel fstab.
25 luglio 2011 | url

sacarde said:

...
ciao,
io per mettendo come opzione commit=100
nel mount vedo:

(rw,noatime,commit=100,commit=0)


quindi deduco che viene applicato il default 0


su arch64




grazie

27 agosto 2011

Lascia la tua opinione
Accorcia box | Allunga box
I filtri ti rompono? Iscriviti


busy
 

UIELinux, oltre il Rubicone (anche oltre i soliti luoghi comuni)
Joomla! è un software libero rilasciato sotto licenza GNU/GPL
UIElinux All UIELinux Blog UIELinux Guide UIELinux Progetti