Trim (kørekommando)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 10. maj 2020; checks kræver 19 redigeringer .

Trim ( eng.  to trim  - trim) - en ATA -grænsefladekommando , der gør det muligt for operativsystemet at underrette solid-state-drevet om, hvilke datablokke ( sider ) der ikke bærer en nyttelast og ikke kan lagres fysisk.

Trim er en del af ATA -grænsefladespecifikationen , som er ved at blive standardiseret af T13-gruppen af ​​INCITS [1] .

Årsager til

Kommandoen blev introduceret kort efter fremkomsten af ​​solid state-drev (SSD'er) for at gøre dem til et konkurrencedygtigt alternativ til traditionelle HDD'er i personlige computere.

For internt er implementeringen af ​​operationer i en SSD meget forskellig fra implementeringen af ​​de samme operationer i traditionelle mekaniske harddiske, de sædvanlige metoder for operativsystemer til operationer såsom sletning af filer og formatering af en disk (uden direkte adgang til de berørte sektorer/ sider på drev) fører til en gradvis forringelse af ydeevnen af ​​skriveoperationer på SSD'en [2] .

Brugen af ​​Trim gør det muligt for SSD'en at reducere virkningen af ​​affaldsindsamling , hvilket ellers ville resultere i et fald i ydeevnen af ​​skriveoperationer til de berørte sektorer [3] .

Andre løsninger

Selvom hjælpeprogrammer til at "nulstille" nogle drev til deres oprindelige tilstand allerede var tilgængelige før fremkomsten af ​​Trim, slettede de blandt andet alle data på drevet, hvilket gjorde dem praktisk talt ubrugelige til optimering [4] .

Egenskaber ved solid state-drev

filsystemniveau

På grund af de særlige kendetegn ved sletningsmetoder, der almindeligvis anvendes i filsystemer, ved drev ikke, hvilke sektorer/sider der faktisk er i brug, og hvilke der kan anses for inaktive.

Sletningsoperationer er normalt begrænset til at markere datablokke som "ubrugte" i filsystemet [5] [6] . I modsætning til f.eks. en overskrivningsoperation, vil sletning ikke resultere i en fysisk skrivning til de berørte sektorer, der indeholder data. Da drevet ikke har adgang til filsystemstrukturer - såsom listen over ubrugte klynger - efterlades drevet i mørke om at frigøre blokke.

Selvom dette ofte gjorde det muligt at gendanne slettede data på traditionelle HDD'er , selvom de blev markeret som "slettet" af operativsystemet, betød det også, at når operativsystemet senere udførte en skriveoperation til en af ​​de sektorer, der blev betragtet som ledig plads, denne operation vil blive betragtet som en overskrivningsoperation fra drevets synspunkt. For traditionelle harddiske er denne operation ikke forskellig fra skrivning til en inaktiv sektor, for SSD, på grund af slidudjævning, er overskrivning af data væsentligt forskellig fra skrivning til en inaktiv sektor (hver skrivning til den samme logiske sektor vil blive lavet til forskellige fysiske sektorer), potentielt forringende ydeevne yderligere skriveoperationer [6] .

På det fysiske niveau af hukommelse

SSD'er gemmer data i flashhukommelsesceller grupperet (i en MLC SSD) i "sider" (typisk 4 KB hver), som igen er grupperet i blokke (typisk 128 sider eller 512 KB i alt) [5] [7 ] .

NAND-flashceller kan kun skrives direkte til, hvis de er tomme. I det tilfælde, hvor de gemmer data, skal indholdet af cellerne ryddes, før der skrives nye data til dem. I SSD-drev kan skriveoperationen kun udføres for sider, men på grund af hardwarebegrænsninger udføres slettekommandoen altid på hele blokken [7] . Som et resultat er det meget hurtigt at skrive til SSD-medier, så længe der er tomme sider, men det går betydeligt langsommere, hvis forudskrevne sider skal ryddes.

Da celler på en side skal ryddes, før de kan skrives til igen, men kun en hel blok kan ryddes, starter omskrivningsprocessen en read-clear-modify-write-cyklus [5] [8] : indholdet af hele blokken skal bevares i cachen, før den kan fjernes fra drevet, de overskrevne data ændres i cachen, og først derefter skrives hele blokken (med den opdaterede side) til drevet. Dette fænomen er kendt som skriveforstærkning[9] [10] .

SSD-controllerniveau

I deres SSD-controllere bruger producenterne forskellige teknikker til optimalt at fordele skriveoperationer i hele flashdrevet [5] [11] . Dette gøres ikke kun for at optimere hastigheden ved at minimere skriveforstærkning, men også for at øge flashcellernes levetid ( , konventionelle MLC flashceller kan modstå 3000-5000 skrivecyklusser [11] . En anden tilgang er at bruge ekstra (backup)hukommelse, der ikke er deklareret til operativsystemet eller endda BIOS , til at levere rene sider til skriveoperationer så længe som muligt, før man begynder at overskrive andre sider [3] .

Effektiviteten af ​​disse metoder afhænger i høj grad af udvekslingen af ​​information mellem OS og SSD-controlleren om, hvilke sider der kan betragtes som optaget, og hvilke sider der kan betragtes som ledige. Traditionelt informerer de fleste operativsystemer ikke drev om slettede sektorer/sider, hvilket ikke tillader SSD-controllere optimalt at allokere ledig plads. Trim-kommandoen blev indført for at afhjælpe dette ved at rydde ubrugte celler, før de skrives til, og dermed reducere adgangstiden [3] .

Da kommandoen fuldstændig sletter dataene i cellerne, er det normalt ikke muligt at gendanne data fra dem [12] .

Trim er ikke altid understøttet i RAID -arrays [13] .

Teamsupport til operativsystemer og drev

Ældre SSD'er, der er fremstillet før tilføjelsen af ​​Trim-kommandoen til ATA-standarden, kræver en firmwareopdatering ,  ellers vil kommandoen blive ignoreret. Trim-kommandoen understøttes heller ikke af alle operativsystemer .

Trim support i operativsystemer
Operativ system Support
Windows 8 og nyere Understøttet siden den endelige udgivelse (oktober 2012)
Windows Server 2012 Understøttet siden den endelige udgivelse (oktober 2012)
Windows 7 Understøttet siden den endelige udgivelse (oktober 2009) [14]
Windows Server 2008 R2 Understøttet siden den endelige udgivelse (oktober 2009) [15] [16]
Linux 2.6.33 Understøttet siden februar 2010 [17] , ioctl BLKDISCARD
OpenSolaris Understøttet siden juli 2010 [18]
FreeBSD 8.3, 9.2, 10.0 Understøttet med UFS [19] , understøttet med ZFS [20] [21] .
MacOS X Understøttet (siden version 10.10.4 for enhver SSD, før det kun Apple-leverede SSD'er [22] )
Android Fra version 4.3 blev understøttelse af fstrim-funktionen tilføjet til systemet, som er en analog af Trim [23] [24]
ubuntu Understøttet siden Ubuntu 14.04.

Andre metoder og tilfælde

I nogle tilfælde, når Trim ikke understøttes af operativsystemet, er der hjælpeprogrammer , der giver dig mulighed for at sende denne kommando "manuelt". Typisk kompilerer sådanne programmer ved hjælp af operativsystemværktøjerne en liste over gratis blokke og overfører den til drevet i form af en sekvens af Trim-kommandoer. Sådanne produkter findes både i form af universelle hjælpeprogrammer ( hdparm version 9.17 og nyere) og i form af software til individuelle typer drev (Intel [25] , G.Skill [26] ).

SCSI -analogen til Trim -kommandoen er Unmap og Write same [27] kommandoerne .

Noter

  1. T13-dokumenter, der henviser til  Trim . INCITER T13 . INCITERER. Hentet 8. juli 2009. Arkiveret fra originalen 30. juni 2012.
  2. Shimpi, Anand Lal. SSD-antologien  4. AnandTech.com (18. marts 2009) . Hentet 19. juni 2010. Arkiveret fra originalen 30. juni 2012.
  3. 1 2 3 Shimpi, Anand Lal. (2009-03-18). s. ti.
  4. Shimpi, Anand Lal. (2009-03-18). s. elleve.
  5. 1 2 3 4 Savill, John. Jeg har hørt solid-state diske (SSD'er) lider af et fald i skriveydeevne, efterhånden som de bruges. Hvorfor?  (engelsk) . WindowsITPro (21. april 2009). Hentet 19. juni 2010. Arkiveret fra originalen 30. juni 2012.
  6. 1 2 Shimpi, Anand Lal. (2009-03-18). s. 7.
  7. 1 2 Shimpi, Anand Lal. (2009-03-18). s. 5.
  8. Shimpi, Anand Lal. (2009-03-18). s. otte.
  9. Skriv Amplification: Intel's Secret Sauce . Hentet 20. september 2010. Arkiveret fra originalen 15. november 2010.
  10. Inde i X25-M-controlleren: Wear Leveling, Write Amplification Control
  11. 1 2 Shimpi, Anand Lal. (2009-03-18). s. 6.
  12. For trim? Når SSD-datagendannelse er  umulig . TechGage . TechGage (5. marts 2010). Hentet 16. april 2010. Arkiveret fra originalen 30. juni 2012.
  13. Gareth Halfacree. Intel frigiver Trim til  RAID . bit-tech.net (23. marts 2010). Hentet 2. november 2010. Arkiveret fra originalen 30. juni 2012.
  14. Support og Q&A til Solid State-  drev . MSDN (9. maj 2009). Hentet: 2010-08-12]. Arkiveret fra originalen den 30. juni 2012.
  15. Windows 7-forbedringer til Solid-State-  drev . Microsoft downloads . Microsoft Corporation (12. november 2008). Hentet 8. juli 2009. Arkiveret fra originalen 30. juni 2012.
  16. Sp. Hvad er Trim-funktionen for solid state-diske (SSD'er), og hvorfor er den vigtig?  (engelsk)  (utilgængeligt link) . Windows IT Pro. Hentet 1. september 2010. Arkiveret fra originalen 2. januar 2010.
  17. Trim på Linux  (engelsk)  (downlink) . Kernel-nybegyndere. Hentet 1. september 2010. Arkiveret fra originalen 30. juni 2012.
  18. SATA Trim-understøttelse i OpenSolaris (29. juli 2010). Arkiveret fra originalen den 30. juni 2012.
  19. SVN revision 216796 (29. december 2010). Arkiveret fra originalen den 30. juni 2012.
  20. SVN revision 240868 (23. september 2012). Arkiveret fra originalen den 25. oktober 2012.
  21. TRIM-klynger (downlink) (5. maj 2011). Arkiveret fra originalen den 30. juni 2012. 
  22. Daniel Eran Dilger. Apples MacBook Pros leveres med aktiv SSD TRIM  - understøttelse i Snow Leopard . appleinsider.com (4. marts 2011). Hentet 7. marts 2011. Arkiveret fra originalen 30. juni 2012.
  23. Sådan virker det: TRIM . https://iguides.ru/ . Hentet 7. januar 2021. Arkiveret fra originalen 9. januar 2021.
  24. TRIM-teknologien i Android 4.3 vil holde en jævn drift  (russisk)  ? . fullhub.ru . Hentet 7. januar 2021. Arkiveret fra originalen 10. januar 2021.
  25. Intel SSD Optimizer White Paper  (eng.) (pdf). Intel Corp. Dato for adgang: 23. januar 2010. Arkiveret fra originalen 30. juni 2012.
  26. wiper.exe til Falcon  Series . XtremeSystems. Dato for adgang: 23. januar 2010. Arkiveret fra originalen 30. juni 2012.
  27. Bemærkning til SCSI UNMAP support i FreeBSD postliste . Arkiveret fra originalen den 30. juni 2012.

Links