Il ciclo degli SSD (quindi l'SSD è femmina)

Liupen

SSD MAN
Utente Èlite
11,482
5,730


I cicli (P/E), ovvero la sua usura non c'entra con quanto è riempito l'ssd
.


Sono un appassionato e non un esperto, quindi la spiegazione e molto terra terra, ma ad alcuni potrà chiarire alcune idee.

Una cosa sono le scritture una cosa sono i Gb disponibili dell'SSD.

Il sistema operativo scrive, poi cancella, poi riscrive ecc.

Visto che "il" sistema operativo è una testa, e "la" SSD fà di testa sua... LUI per venire incontro a LEI :shutup: gli parla (TRIM) di come dovrebbe mettere a posto casa: questo lo metti lì, questo non lo tenere buttalo pure, ecc.
Il fatto che lei (SSD) ascolti è preoccupante....:look: Nooo, perchè tanto le "pulizie" e gli "spostamenti" in casa (Garbage Collection), l'SSD, li fa di testa sua... e quando ha il Ciclo :asd: è un continuo: togli, sposta, metti!!

Esempio, un po più serio, per chiarire:
Ho un SSD Windows appena installato con 20Gb di spazio utilizzato (l'ssd è da 120Gb)
Su windows oggi copio/incollo 10Gb, poi uso explorer e lui mi memorizza pagine per 5Gb (ma io uso anche ccleaner periodicamente), poi non mi piace un file da 4Gb e lo cancello, e avendo poca memoria mi si attiva il file di paging che scrive 3Gb, e per finire uso l'ibernazione per spegnere il pc (3Gb).
Il risultato, quando il giorno dopo lo accendo, è che lo spazio utilizzato è diventato di 31Gb
MA
il sistema operativo ha eseguito complesivamente sul mio SSD, 20Gb + 21Gb di oggi cioè 41 Gb di scritture host.

Passano i mesi e (con una proporzione, pulendo periodicamente anche le cache) sarò nella condizione di avere il disco pieno per 76Gb ma in realtà il mio SSD avrà appena completato 1° ciclo (lo leggo nei dati SMART di Magician) ovvero ho scrito tutti e i 120Gb di blocchi e ogni cella contiene un valore .

Una volta che, nel mio ipotetico SSD da 120Gb, inizia il 2° ciclo, prima di scrivere su qualsiasi blocco (prima, nel 1° ciclo erano vuoti), l'SSD dovrà cancellare i blocchi da 4K resettando le celle Nand interessate. L'SSD effettua quello che viene definito un CICLO di Programmazione/Erase (cancellazione).

Questo nuovo "lavoro" tenendo più impegnata la CPU del SSD ne riduce (di poco) le performance e ci fà dire a intuito: "non è veloce come quando gli avevo appena installato il sistema operativo ".
[naturalmente, all'epoca, anche il sistema operativo, con meno schifezze, era già più veloce di suo].
 

Tom_Tom

Utente Attivo
955
344
CPU
Intel Core i5-2500K
Scheda Madre
ASRock Fatal1ty Z77 Professional-M
HDD
SanDisk Ultra II SSD 240 GB
RAM
2x4GB Kingston HyperX Fury DDR3-1866
GPU
Intel HD Graphics 3000
Audio
Realtek HD Audio ALC898
Monitor
Acer AL1716
PSU
Cooler Master B600 (RS-600-ACAB-D3)
Case
Acer Aspire T660
OS
Windows 10 Pro / Sabayon Linux
Una volta che, nel mio ipotetico SSD da 120Gb, inizia il 2° ciclo, prima di scrivere su qualsiasi blocco (prima, nel 1° ciclo erano vuoti), l'SSD dovrà cancellare i blocchi da 4K resettando le celle Nand interessate. L'SSD effettua quello che viene definito un CICLO di Programmazione/Erase (cancellazione).
In teoria, la cancellazione dei blocchi usati e non più necessari dovrebbe avvenire dopo l'invio del comando TRIM (in un momento il cui l'SSD è in idle e supponendo che ci siano abbastanza settori contigui da cancellare), senza quindi influire in maniera percettibile sulle prestazioni dell'SSD (a meno di non bombardarlo continuamente con nuove scritture) e senza aspettare il momento in cui viene richiesta la riscrittura del settore in questione.
 
  • Mi piace
Reazioni: Liupen

Liupen

SSD MAN
Utente Èlite
11,482
5,730
In teoria, la cancellazione dei blocchi usati e non più necessari dovrebbe avvenire dopo l'invio del comando TRIM (in un momento il cui l'SSD è in idle e supponendo che ci siano abbastanza settori contigui da cancellare), senza quindi influire in maniera percettibile sulle prestazioni dell'SSD (a meno di non bombardarlo continuamente con nuove scritture) e senza aspettare il momento in cui viene richiesta la riscrittura del settore in questione.

Abbi pazienza, io ho semplificato il concetto, considerando solo il GC e non il lavoro comune TRIM-GC.
Hai ragione, ma ti addentri su un argomento più tecnico che richiederebbe un competente informatico che sicuramente utilizzarebbe i termini giusti... dubito che chiamerebbe "casa" una chip NAND :hihi:.

Come tu dici TRIM semplifica la vita del GC interno del SSD, che inizia a spostare (P/E delle celle..sono scritture!) blocchi che il OS marca come ancora validi, compattandoli il più possibile, al fine di lasciare le PAGE di un blocco tutte valide.
Leggermente diverso da come hai scritto, il comando TRIM non provoca la cancellazione delle celle delle Page dei blocchi non validi (se no con un SSD da 120Gb di cui 20Gb occupati, mi ritroverei sempre 100Gb di celle azzerate, nuove di pacco come subissero in continuazione un secure erase... no, non è così.
Il comando crea una spartizione tra dati validi e dati non validi; fa si che solo i blocchi validi siano "deframmentati" (diciamo :P) mentre i blocchi non più validi, quando viene data una scrittura, non debbano essere anche riconosciuti (previa lettura), ma subito, a livello di cella cancellati e/o riscritti, velocizzandone l'operazione di P/E.

TRIM è utile, perchè quando non c'è, l'SSD, con il proprio GC si porterà in giro dei dati non aggiornati, e ciò significa che, ad un certo punto, la SSD si riempirà di blocchi (che tutti validi non sono) lasciando al controller, se c'è, solo lo spazio libero dell'over-provisioning con cui lavorare... e giù le prestazioni.
Tecnicamente, quindi, TRIM dovrebbe velocizzare le scritture ma anche in questo caso non è sempre così.

Results: TRIM Testing With DriveMaster 2012 - Samsung ...


TRIM, come un qualcosa di esterno alla natura dell'SSD, scatena degli effetti che, "amplificano" le scritture e mette i bastoni tra le ruote di un altro comando importante del GC: il Wear Levelling. Questa è la funzione che tiene conto del consumo delle celle e cerca di distribuire le scritture uniformemente.
Deve essere un equilibrio, una sfida di programmazione.
Questi comandi, che durante il 1° ciclo sono pressochè latenti, dopo possono aumentare il carico di lavoro del controller, che non sempre ha lo spazio di agire durante la modalità idle.
 
Ultima modifica:
  • Mi piace
Reazioni: Tom_Tom e Vizard

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!