Con un SSD, devo cambiare la mia swappiness per aumentare la durata dell'SSD?


35

Ho incontrato questo articolo che include il seguente suggerimento:

Scambio e swappiness

Ho mantenuto la mia partizione di swap sul vecchio HDD. Lo scambio sull'SSD sarebbe più veloce, ma accorcerebbe anche la vita dell'SSD.

Il mio sistema ha molta memoria, quindi ho anche ridotto il valore di swapiness a 0 per dire a Ubuntu di scambiare solo quando assolutamente necessario. L'ho fatto aggiungendo la riga vm.swappiness = 0 a /etc/sysctl.conf.

È vero che l'impostazione dello swappiness su zero aumenterà la durata del mio SSD? Non riesco a trovare riferimenti a questo altrove.

Risposte:


30

Ridurre lo swappiness a 0 significa che il sistema operativo inizierà a utilizzare l'SSD per lo scambio solo quando non è più disponibile RAM libera.

Teoricamente questo può aumentare la durata dell'SSD perché l'SSD subirà meno scritture. Dipende se praticamente aumenta la durata dell'SSD:

  • Linux usa raramente lo swap (specialmente rispetto a Windows) anche con valori di swapiness più alti, quindi questa impostazione probabilmente non cambierà il comportamento dello swap su sistemi con molta RAM rispetto all'utilizzo della RAM. Se sei a corto di RAM, lo scambio può avvenire abbastanza frequentemente con il valore predefinito di 60, in questo caso la riduzione dello swap avrà probabilmente un impatto significativo sul limite del ciclo di scrittura dell'SSD.

  • La resistenza in scrittura dell'SSD è ancora piuttosto elevata per un semplice utilizzo da parte del consumatore, almeno per gli SSD basati su MLC . Dicono che gli attuali SSD basati su MLC possano tollerare ca. 3000-5000 cicli di scrittura prima che si esauriscano. Calcolando con il limite di 3000 ciò significa che un SSD da 128 GB con una scrittura giornaliera di 10 GB funzionerà felicemente per ca. 38000 giorni, ciò significa ca. 100 anni. Se hai un SSD più grande, ovviamente, si consumerà molto più tardi. Quindi è molto improbabile che il tuo SSD muoia a causa dell'esaurimento delle cellule. (Ovviamente se usi il tuo SSD in un ambiente aziendale / server, le scritture quotidiane sono molto più alte, ma negli ambienti aziendali di solito vengono utilizzati SSD basati su SLC .)

  • Questo limite del ciclo di scrittura è così elevato che i produttori di SSD (inizialmente SAMSUNG) hanno iniziato a produrre SSD basati su TLC per i consumatori, che possono tollerare solo ca. 1000 cicli di scrittura, ma sono più economici. Queste aziende affermano che anche il limite del ciclo di scrittura di questi SSD durerà più a lungo del tempo previsto per l'utilizzo del prodotto. (È improbabile che nel 2024 useremo ancora i nostri SSD da 128 GB) Anche se hai un SSD basato su TLC e scrivi abbastanza frequentemente su quell'unità, ad esempio 50 GB / giorno, la riduzione del valore di swap probabilmente avrà un effetto significativo sulla durata della tua SSD.
  • Ecco un thread gigante in cui gli appassionati hanno testato la resistenza dell'SSD scrivendo costantemente a loro. Sebbene il loro metodo di prova probabilmente non sia del tutto corretto, i loro risultati sono piuttosto impressionanti e rilassanti.

Quindi, per riassumere: in teoria sì, la riduzione della swapiness comporterà una durata più lunga dell'SSD, in pratica probabilmente non lo farà. Ma se hai un SSD basato su TLC e sei a corto di RAM e generalmente scrivi frequentemente sull'SSD, allora può avere anche un effetto pratico.

Ho un SSD basato su MLC, 128 GB e uso principalmente il mio sistema per l'ufficio / la navigazione e ho molta RAM rispetto al mio utilizzo della RAM, quindi il mio SSD non è sotto carico pesante di scrittura (sebbene la mia macchina sia attiva 24 ore su 24, 7 giorni su 7). Ma poiché non ho affatto bisogno di scambiare ed è così facile ridurre la swapiness che ho fatto per me stesso impostando lo swapiness su 0 quando ho installato i miei SSD, perché perché non farlo? (In realtà ho impostato lo swappiness su 0 su tutte le mie macchine, anche su macchine che hanno solo HDD.)

Puoi controllare quanta scrittura ha sofferto il tuo SSD durante la sua vita smartctl, cercare la linea con Total_LBAs_Written, questo ti mostrerà quanti settori 512b sono stati scritti sull'SSD. (Sì, lo so che gli SSD hanno fisicamente blocchi 4K, non 512b, ma SMART dice ancora: Sector Size: 512 bytes logical/physicale con 512 blocchi ottengo risultati paragonabili tune2fs -lall'output delle scritture Lifetime.) Quindi moltiplica quel numero con 512 e ottieni le scritture in byte o in breve:

sudo smartctl -a /dev/sda | grep Total_LBAs_Written | awk '{print $10*512/1024/1024/1024 " GiB"}'

verrà stampato in GiBs per / dev / sda. (Basta cambiare il nome del dispositivo con il nome del tuo SSD.) Il mio SSD da 128 GB ha subito ca. 800 GB scrive in poco più di un anno, il che significa solo 7 cicli di scrittura utilizzati dal 3000.


Con un file system, è possibile TRIM per ridurre l'amplificazione della scrittura. Esiste un equivalente per una partizione SWAP?
Bryce,

Questa risposta sembra presumere che "swappiness" sia compreso tra 0 e 100 con zero che non significa scambio (e 100 che significa nessuna RAM?). Ma un'altra risposta fornisce ulteriori dettagli sul swappinessvalore, indicando che il numero varia da 0 a 200 e rappresenta un peso relativo verso diversi tipi di scambio.
Palswim,

7

Tutti questi discorsi sull'usura degli SSD sono "congetture". Ho provato gli stessi sentimenti, ma ho iniziato a usarli commercialmente. Ho uno dei più veloci ammassi di oracoli sulla costa orientale. 3 anni fa abbiamo istituito SSD per il nostro intero archivio E filesystem temporanei. Facciamo miliardi di operazioni di scrittura / giorno sugli SSD. Dopo 3 anni non siamo ancora arrivati ​​vicino al 10% di burnout. Se posso farlo commercialmente, non si esauriranno MAI in una situazione residenziale. Quindi-- ho implementato una soluzione SSD appositamente per lo spazio di swap sulla mia workstation Linux e BAM !!!

Quindi, il mio chilometraggio può variare ma SSD è la strada da percorrere in ogni modo.

Dave


Gli SSD pensati per i server possono richiedere più scritture di quelli (più economici) destinati ai consumatori.
jarno,

1
Capito, ma ho SSD consumer installati su workstation che eseguono 24x7 distribuiti in tutta l'azienda e eseguiamo il backup dei delta ogni paio di giorni ma non ho avuto un singolo errore da 2 anni. Tieni presente che l'MTBF per un piatto di spinning fisico è di 3 anni e nella mia esperienza di vendita / manutenzione di sistemi per 25+ anni, è abbastanza preciso. Gli SSD superano tutte le altre opzioni, commerciali o di consumo.
TekOps,

3

. È necessario modificare lo swappiness per aumentare la durata dell'SSD.

Swappiness ti consente di controllare la quantità di file di swap in uso. I valori di swapiness possono essere cambiati da 0 a 100. Più sono alti i valori di swapiness più il kernel tenterà di usare lo spazio di swap, i valori di swapiness più bassi indicano che il kernel utilizzerà uno spazio di swap minore o nullo a seconda delle nostre impostazioni.

Il valore di swapiness predefinito è 60, se hai abbastanza RAM, dovresti evitare di usare lo spazio di swap che scrive e legge sul tuo SSD, ma su un HDD. Per sistemi con 4 GB o più di RAM, provare a ridurre l'utilizzo dello scambio modificando le impostazioni di scambio tra 10 e 0, con il file di scambio su un HDD.

L'esecuzione di uno spazio di scambio richiede molto I / O su disco, e in realtà è un male per un SSD. Un SSD può gestire solo così tante scritture prima che vada male e sei costretto ad acquistare un'altra unità. Quindi, se possibile, sposta il tuo spazio di swap su un disco rotante secondario ... lontano dall'SSD.

Un'unità a stato solido viene consumata relativamente rapidamente dalle azioni di scrittura. Soprattutto le generazioni più vecchie di SSD erano vulnerabili in questo aspetto, ma in misura minore è ancora il caso delle nuove generazioni.

Puoi creare una nuova partizione su un nuovo disco o semplicemente creare un file di scambio; la creazione di una nuova partizione si tradurrà quasi sempre in prestazioni molto migliori.

Se non si dispone di un'unità alternativa su cui spostarsi, è possibile modificare un'impostazione che abiliterà lo scambio solo quando la RAM fisica è piena al 100%, il che ridurrà il carico sul file di scambio e aiuterà l'SSD. Premi Ctrl+ Alt+ Tsulla tastiera per aprire Terminale. Quando si apre, esegui i seguenti comandi:

echo 0 > /proc/sys/vm/swappiness

L'usura dell'SSD ha a che fare con i cicli di scrittura

Un'unità a stato solido viene consumata relativamente rapidamente dalle azioni di scrittura. Soprattutto le generazioni più vecchie di SSD erano vulnerabili in questo aspetto, ma in misura minore è ancora il caso delle nuove generazioni.

Usa Trim

TRIM è un vantaggio che si utilizza con gli SSD. Funziona con il software e comunica con il controller SSD, indicando quali "blocchi" non sono più necessari al filesystem e possono essere ripuliti e sovrascritti in modo sicuro. Ciò non comporterà realmente un miglioramento delle prestazioni, ma allungherà piuttosto la vita del tuo SSD.

Fonti: modifiche SSD Linux e come fare per ottimizzare il tuo SSD


Vorrei sapere cosa c'è che non va? L'OP ha chiesto se ha bisogno di cambiare la sua swapiness per aumentare la vita dell'SSD, e la risposta è sì, ha bisogno di cambiare la swapiness.
Mitch

Comprendo che le ultime versioni di Ubuntu utilizzano automaticamente TRIM per SSD.
Paddy Landau,

L'ultimo Ubuntu utilizza TRIM solo per alcuni modelli di SSD. @PaddyLandau
Bryce,

2

È vero che l'impostazione dello swappiness su zero aumenterà la durata del mio SSD?

Ciò causerebbe che Linux sposta i blocchi di memoria meno frequentemente nella partizione di swap. La scrittura sullo swap normalmente utilizza cicli di scrittura se lo swap si trova nell'SSD. Ricorda che lo swap viene utilizzato solo quando necessario e se hai abbastanza RAM potresti essere meglio senza di essa (a meno che tu non voglia l'ibernazione, ma questo è un altro problema).

Gli effetti di queste azioni possono variare, ma farlo solo per salvare alcuni cicli di scrittura nell'SSD lo sta facendo in modo sbagliato. I moderni SSD (circa dal 2012 in poi) hanno tonnellate di cicli di scrittura e le prestazioni potrebbero essere ridotte per le tue applicazioni quando stai quasi esaurendo tutta la RAM. Durante l'installazione dei programmi si utilizzano più cicli di scrittura rispetto al dovuto swap. Ricorda, ancora, che lo swap viene utilizzato solo quando è necessario per impostazione predefinita.

Se sei preoccupato per i tuoi cicli di scrittura SSD utilizzati per lo scambio, puoi rimuovere / disattivare completamente lo scambio se hai abbastanza RAM e attivare uno scambio temporaneo in un HDD invece di fare confusione con lo swapiness. Sarebbe la strada migliore.


0

Consiglio vivamente di modificare l'impostazione di swappiness su un valore inferiore, il migliore è "0" se si dispone di memoria / RAM sufficiente per il proprio sistema 4 GB di RAM o più. Anche se swappiness a 10 con un sistema ram alto, vedo a malapena ubuntu mettere qualcosa sulla partizione di swap poiché quasi tutto è già su ram.

Ho fatto una piccola ricerca su Google e ho trovato questa pagina http://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html

potrebbe aiutarti a ottimizzare e ottimizzare SSD per il tuo sistema Ubuntu in modo più efficiente e mantenere il tuo SSD più a lungo


0

La modifica della swappiness potrebbe non avere effettivamente un impatto. Abbiamo giocato molto con esso in sistemi a corto di RAM e vogliamo spingere il più possibile sull'SSD e ha effettivamente avuto un impatto minimo, gli elementi rimangono in memoria (il che significa che sono necessari). Questo potrebbe essere un punto controverso.


0

Mi è piaciuta l'idea di controllare l' smartctloutput, tuttavia il mio codice è un po 'più compatto. Non ho mai capito perché le persone semplicemente non sappiano che awkha le grepcapacità integrate.

sudo smartctl -a /dev/sdb | awk ' ($0 ~ /Total_LBAs_Written/) {print ($10*512)/(1024^3) " GiB"}'

Anche se questo è il codice che uso:

sudo smartctl -a ${device} | awk ' ($0 ~ /Total_LBAs_Written/) { if (($10*512)/(1024^3) > 1000) { msg="TiB"; size=($10*512)/(1024^4); } else { msg="GiB"; size=($10*512)/(1024^3); }; printf "\nThis device has had %.2
f %s written to it.\n",size,msg; }'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.