SDB:Prestazioni unità SSD
Provato su openSUSE | Articoli consigliati | Articoli correlati | |||
|
Questo articolo spiega come ottimizzare openSUSE per un'unità SSD.
Indice
Situazione iniziale
Il tuo computer nuovo di zecca ha un'unità SSD installata. Non vorresti usurarlo troppo in fretta e vorresti ottenere tutto ciò che è possibile dalle sue prestazioni. Si pone dunque dapprima il problema di quale file system usare, e poi se si possa fare dell'altro per ottenere lo scopo voluto. Lo scoprirai qui.
Massimizzare prestazioni e durata
Questo articolo descrive varie azioni che si dovranno scegliere:
Intel SSD
Nelle vecchie versioni del firmware delle unità SSD di Intel è presente un bug che causerà blocchi al sistema quando è in esecuzione il demone smartd, che è abilitato per default. Per risolvere il problema aggiornare il firmware dell'unità dal sito [1].
Filesystem
I file system che meglio funzionano con le unità SSD sono BTRFS ed EXT4. Tuttavia BTRFS è ancora in fase sperimentale, per cui Ext4 è la scelta più sicura.
In ogni caso se intendi usare Tumbleweed, i kernel più recenti di quello predefinito in openSUSE 11.4 con ogni probabilità inizieranno ad offrire prestazioni migliori su BTRFS che su Ext4, man mano che quel file system matura.
In questo articolo si assume che /dev/sda sia la tua unità SSD.
Crea i filesystem TMPFS
Si raccomanda vivamente di mettere le parti più volatili dei tuoi dati su un TMPFS - questo include, in particolare, la directory /tmp. Questa directory contiene soltanto file temporanei che vengono eliminati subito dopo il riavvio del sistema. Tenere questi dati in memoria è un ottimo modo per risparmiare un po' di carico di lavoro all'unità SSD. Bisogna notare che se si tiene il proprio sistema in esecuzione continuativamente, per un lungo periodo, la dimensione di questa directory (e da qui il suo utilizzo di memoria) può crescere considerevolmente. Si raccomanda di fare il logout dal proprio DE, rimuovere il contenuto della directory, e fare nuovamente il login se ti stai imbattendo in problemi di scarsezza di memoria.
Monta /tmp in a filesystem tmpfs:
# ln -s /usr/lib/systemd/system/tmp.mount /etc/systemd/system/local-fs.target.wants/tmp.mount
Questo farà si che la cartella /tmp venga creata in memoria dal prossimo riavvio del sistema.
Inizia creando la (le) directory per la configurazione personalizzata, ovvero con:
come sopra.
Crea il file unit per systemd (usando vi o il tuo editor preferito):
e copia e incolla il testo qui sotto al suo interno (per incollare in vi: i seguito da Shift-Ins), poi salvalo (in vi: :wq)
# This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. [Unit] Description=Temporary Directory Documentation=man:hier(7) Before=local-fs.target [Mount] What=tmpfs Where=/tmp Type=tmpfs Options=mode=1777,strictatime
Infine crea il collegamento simbolico, in modo simile a quanto scritto sopra:
Una seconda modifica che dovresti applicare al file fstab è assicurati che per l'unità SSD sia impostata l'opzione noatime:
/dev/sda1 / ext4 noatime,defaults 0 1
noatime
potrebbe danneggiare il funzionamento di alcuni strumenti di backup; usando l'opzione
relatime
dovresti risolvere il problema.
Altre modifiche
Qualche altra modifica che si può mettere in atto:
Mettere a punto il kernel
Si raccomanda di modificare lo scheduler (pianificatore I/O) predefinito da cfq a deadline (o in alternativa con noop) , ma solo per dischi non-rotating (ovvero che non siano di tipo a piatti rotanti):
#set noop scheduler for non-rotating disks ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline" # set cfq scheduler for rotating disks ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"
readahead
Dovresti disabilitare readahead, dato che è del tutto inutile sulle unità SSD, con le loro ridottissime latenze.
È tutto per questa sezione.
Misure aggiuntive
La memoria Flash è gestita in blocchi, più grandi delle unità di 512 byte con cui sono misurate le partizioni. Con gli strumenti predefiniti di linux, probabilmente il filesystem verrà allineato in modo tale che genererà dell'inutile IO (ma non dovrebbe più essere un probleme se si usano openSUSE sufficientemente recenti, indicativamente da 12.2 in su) poichè, ogni volta che verranno scritti dei dati, si andranno ad interessare duo blocchi invece di uno solo. Puoi risolvere questo problema allineando le partizioni, e i filesystem su di esse, a blocchi più grandi di 512 byte ed assicurandoti che inizino da 0.
Tuttavia è un procedimento non da poco e lo applicherai solo ad una unità SSD nuova. Puoi trovare le informazioni su come fare il tutto nei collegamenti qui sotto (in inglese):
- Ted Ts'o sul sito di Linux Foundation (lo stesso sul suo blog)
- blog di nuclex sull'allineamento di un'unità ssd su linux