TRIM

Da Wikipedia, l'enciclopedia libera.

Il comando TRIM permette ad un sistema operativo di indicare i blocchi che non sono più in uso in un'unità a stato solido (o "SSD"), come ad esempio i blocchi liberati dopo l'eliminazione di uno o più file. Generalmente, nell'operazione di cancellazione eseguita da un Sistema Operativo (OS), i blocchi data vengono contrassegnati come non in uso. Il TRIM permette all'OS di passare questa informazione al controller dell'SSD, il quale altrimenti non sarebbe in grado di sapere quali blocchi eliminare.

Lo scopo dell'istruzione è di mantenere la velocità dell'SSD per tutto il suo ciclo di vita, evitando il rallentamento che i primi modelli hanno incontrato una volta che tutte le celle erano state scritte, una alla volta[1].

Anche se gli strumenti erano già disponibili per resettare alcuni dispositivi ad uno stato aggiornato, essi eliminavano tutti i dati sul dispositivo i quali non consentivano il loro uso come un'ottimizzazione.

La causa principale del problema è che i dispositivi SSD non conoscono quali blocchi sono realmente in uso e quali sono liberi. Mentre il file system su un SSD continuerà a mantenere una lista dei blocchi in uso, gli SSD non capiscono i file system, e quindi non possono accedere a quella lista. Ciò causa dei problemi in due punti:

  • Gli SSD possono scrivere blocchi di 4 KiB alla volta, ma, dato le limitazione dell'hardware, essi devono eliminare blocchi più grandi (es. 128 KiB - 512 KiB). Dal momento che il dispositivo non conosce quali blocchi sono ancora in uso, se sono stati scritti in precedenza, ogni scrittura richiederà un grande numero di ciclo di lettura-eliminazione-modifica-scrittura, assumendo che non ci siano altri blocchi disponibili sull'SSD (dopo tutto i blocchi sono almeno parzialmente pieni). Il termine per questo fenomeno è Write Amplification[2] [3].
  • Wear levelling consente a un dispositivo di riorganizzare i suoi dati così che le scritture non vengano confinate a uno degli angoli del chip flash. Le celle flash tollerano solo un limitato numero di scritture prima che si rompano, così alcune SSD spostano i dati intorno all'SSD in modo tale che le celle vengano utilizzate in modo equo. Dato che il dispositivo non conosce quali blocchi sono realmente in uso, ogni blocco di dati scritti sul dispositivo richiederanno un scrittura aggiuntiva a causa del blocco spostato.

La specifica del comando TRIM[4] sta per diventare standard come parte dell'interfaccia standard AT Attachment (ATA), guidata da Technical Committee T13 dell'International Committee for Information Technology Standards.[5]

Supporto dei sistemi operativi[modifica | modifica sorgente]

TRIM è stato aggiunto inizialmente in Linux 2.6.28[6][7][8], in seguito è stato pienamente supportato in Linux 2.6.33 [9]. In Microsoft Windows, TRIM è stato implementato in Windows 7[10] e in Windows Server 2008 R2[11] [12]. Su sistemi Apple Mac OS X, benché precedentemente attivabile con opportune modifiche alle kernel extensions, TRIM è ufficialmente implementato a partire dalla versione 10.6.8. I vecchi SSD necessitano di un aggiornamento del firmware, altrimenti il nuovo comando verrà ignorato.

Alcuni dispositivi (come il Gskill Falcon) hanno uno strumento chiamato wiper.exe che asserisce di utilizzare TRIM su richiesta. Si tratta di uno strumento di deframmentazione per le SSD (i normali strumenti di deframentazione non funzionano sugli SSD).[13] Lo strumento pulisce semplicemente lo spazio non usato, mentre TRIM informa il controller dello spazio non usato, permettendogli di gestire costantemente le risorse per una migliore performance.

Il 24 luglio 2013 Google annuncia la versione 4.3 del suo OS per dispositivi mobili Android introducendo il comando TRIM al fine di ottimizzare la velocità delle memorie SSD integrate negli stessi.

Note[modifica | modifica sorgente]

  1. ^ The SSD Anthology: Understanding SSDs and New Drives from OCZ in AnandTech, AnandTech, Inc, 18 marzo 2009. URL consultato l'8 luglio 2009.
  2. ^ Write Amplification: Intel's Secret Sauce
  3. ^ Inside the X25-M Controller: Wear Leveling, Write Amplification Control
  4. ^ Data Set Management Commands Proposal for ATA8-ACS2 (revision 6) in INCITS T13, INCITS T13, 12 dicembre 2007. URL consultato l'8 luglio 2009. (draft specification T13/e07154r6)
  5. ^ T13 documents referring to TRIM in INCITS T13, INCITS T13. URL consultato l'8 luglio 2009.
  6. ^ Trim on Linux
  7. ^ Linux Block layer discard requests
  8. ^ The truth about Linux
  9. ^ kernel commit
  10. ^ been Trim in Windows
  11. ^ Windows 7 Enhancements for Solid-State Drives in Microsoft downloads, Microsoft Corporation, 12 novembre 2008. URL consultato l'8 luglio 2009.
  12. ^ Q. What is the TRIM function for solid state disks (SSDs) and why is it important?
  13. ^ wiper.exe - TRIM COMMAND for Falcon Series SSD in XtremeSystems Forums, Jelsoft Enterprises Ltd, 12 maggio 2009. URL consultato l'8 luglio 2009.

Collegamenti esterni[modifica | modifica sorgente]

From write() down to flash chips – an explanation on how the TRIM command lets SSDs erase data not used by the filesystem