nonpasaran

SSD (Solid State Drive) Hakkında Her şey III : Write Amplification Fenomeni

Bir önceki yazıda SSD üniteleri hakkında hayati bir konu olan Write Amplification fenomeninden bahsetmiş ve kısaca tanımlamıştım;

"Write Amplification, SSD kontrolcüsünün yazmak zorunda olduğu veri miktarı ile işletim sisteminin yazmak istediği veri miktarı arasındaki orandır. Bu değer standart bir SSD için 1'in üstündedir. Yani 1 MB veri yazmak istediğinizde SSD bunu yapabilmek için 1 MB'tan fazla miktarda yazma işlemi yapmak zorundadır."

Bu yazıda "Neden, 1 MB boyutunda veri yazmak istediğinizde SSD bunu yapabilmek için 1 MB'tan fazla miktarda yazma işlemi yapmak zorundadır?" sorusunun cevabını ve bu oranı düşürmek için ne gibi teknikler/teknolojiler kullanıldığını basit bir şekilde anlatmaya çalışacağım...



  1. Giriş: Neden SSD?
  2. SSD Ünitelerinin Yapısı ve Çalışma Mantığı
  3. Write Amplification Fenomeni
  4. Performansı Doğru Algılama ve SSD Seçimi
  5. Montaj, İşletim Sistemi Kurulumu ve Optik Sürücüye 2. Disk Sürücü Montajı
  6. Secure Erase
  7. Maksimum performans için ayarlama: SSD optimizasyonu
  8. Özet: Sık sorulan sorular ve cevapları
  9. EK 1: OCZ Toolbox ve Linux based Tools ile Firmware Güncelleme



              Yazı boyunca Page, Block, Plane, Write Amplification, Over-provisioning,
               Garbage collection vs. gibi pek çok Türkçe olmayan ama SSD literatüründe bu
               şekilde bilinen terim geçecek veya geçti.
Normalde bunların Türkçe karşılıklarını kullanma taraftarıyım ama alttaki sebeplerden dolayı -istemeyerek de olsayazı boyunca bütün terimleri orjinal hallerinde kullandım:

  • SSD teknolojisi yeni bir teknoloji olduğu için bu kavramların -tamamının- dilimizde yerleşmiş karşılıkları yok. Örneğin "Fazla Tahsis" diye Google'da bir arama yapsanız hiçbir sonuca ulaşamazsınız. Oysa  Over-provisioning diye ararsanız ulaşırsınız gibi...
  • Özellikle Page ve Block kavramlarını Sayfa ve Blok olarak kullanmak mümkündü ama Sayfa çevirisini kullanmak, gerçek sayfa anlamı ile karıştırılabilir ve kavram karmaşasına yol açabilir diye korktum. Öte yandan bir terimi "Page" olarak orjinal halinde kullanırken, diğerini -Block olan orijinali yerine- Blok olarak kullanmak, yarısı Türkçe yarısı İngilizce bir terim haznesi kullanmak olacaktı ki bu da anlamsız.

Hatam oldu ise affola.





          Bir önceki yazıda Nand Flash depolamada bilmemiz gereken 3 temel kuraldan bahsetmiştim. İşte temel olarak Write Amplificatioın'un sebebi bu 3 kuraldır. Özetlersek: (1) Bir SSD ünitesinde sadece tamamen silinmiş alanlara yazma işlemi yapılabilir. (2) Okuma ve yazma işleminde minimum yazma, okuma alanı büyüklüğü 4 KB büyüklüğündeki Page'lerdir. (3) Silme işleminde minimum silme alanı büyüklüğü 512 KB büyüklüğündeki Block'lardır. Altta HDD ve SSD sürücü tiplerinin işletim sistemi üzerinde gerçekleştirdiğiniz eylemlere verdikleri tepkileri gösteren bir tablo görüyorsunuz. Üstüne Yazma durumundaki farka dikkat edin;


İşl. Sist. DavranışıHDD'nin DavranışıSSD'nin Davranışı 
Dosya YazmaBir Sector'e yazarBir Page'e yazar
Dosya SilmeHiçbir şey Hiçbir şey 
Üstüne yazmaYeni dosya aynı sektöre yazılırMümkünse boş olan bir başka Page'e yazılır. Mümkün değil ise Block silinir ve ardından aynı Page'e yazılır.


           Bir SSD ilk kullanılmaya başlandığında bütün Page'ler silinmiş pozisyondadır ve yazmaya hazırdır. HDD'lerin aksine verinin bir arada yazılma gerekliliği olmadığı için SSD kontrolcüsü diske veri yazıldıkça bunları diske dağıtarak yazar. Bunun sebebi Flash belleklerin bir yazma/silme ömrünün (Program/Erase
cycles=PECycles) olmasıdır.



Program/Erase Cycles bundan sonra Döngü olarak geçecek. Bir Block'un silinip yeniden yazılması 1 döngü, tekrar silinip yazılması 2. bir döngüdür. Okuma işlemi ise SSD ömrüne negatif etki  etmez.



           Güncel SSD ünitelerinde kullanılan 25nm MLC tipi Nand-Flash hücreler için bu döngü ömrü 3 000-10 000 arasında bir rakamdır. Piyasadaki SSD ünitelerinin tamamı en ekonomik hücreleri kullandığı için bu döngü ömrü şimdilik 3 000. Yani  SSD ünitelerinin Nand-Flash hücrelerine 3 000 defa veri yazıldığında bu hücreler depolama kabiliyetini yavaşça kaybederler ve tabiri caizse ölürler. Bu yüzden SSD kontrolcülerinin öncelikli görevlerinden biri; hücrelerin kullanım oranlarını takip etmek ve bütün hücrelerin yazma/silme sayısını eşit seviyede tutmaktır. Buna Wear Leveling deniyor. Eğer kontrolör bunu yapmaz ve bazı hücreler aşırı kullanılırken bazıları az kullanılırsa bir süre sonra yarısı ölmüş diğer yarısı sağlam hücrelerden oluşan bir SSD ünitemiz olur.

           3 000 döngü ömrü gözünüze az görünmüş olabilir ama oldukça makul bir rakamdır. Bir  SSD ünitesinin ömrü şu şekilde hesaplanır;




           Yani 120 GB boyutunda ve 3 000 döngü ömrü olan bir SSD'nin ömrü 351 TB / Write Amplification olur. Write Amplification ise kullanım senaryolarına göre değiştiği için ortalama bir değer almaktan başka çare yoktur. % 100 4 KB okuma yazmanın kullanıldığı en kötü senaryolarda WA değeri 15 hatta biraz daha üzerine çıkabilir. Yani 4 KB veri yazmak için 60 KB veri yazmak zorunda kalırsınız. %100 sıralı yazmada ise bu rakamı 1 kabul edebiliriz. Gerçek kullanım senaryolarında ise bu değer ikisinin arasında bir yerdedir ve genel kabul 5-7 Write Amplification değeridir. Formüle bu değeri uyguladığımızda 70 TB değerini buluruz. Şimdi bilmemiz gereken bir değer daha var: Günde ne kadar yazıyoruz?

          Ben kendimi örnek alıyorum ve yaklaşık 40 gündür kullandığım (Sayısız format attım)  SSD ünitesinin toplam yazma miktarına bakıyorum. Bu rakam 600 GB civarı olmuş. Yani günde ortalama 15 GB veri yazmışım. (Bu değer normal bir kullanıcıda çok daha düşüktür) Son olarak 70 TB15 GB'a bölüyorum ve  SSD ünitesinin gün olarak ömrünü buluyorum:  4 778  gün!  Yani 13 Yıl. Bu sanırım oldukça yeterli bir rakam.


           Konu dağılmaya oldukça müsait. Hatta şu anda dağılmış durumda. Bu yüzden tekrar ana konumuza yani Write Amplification fenomenine dönelim:

           Şimdiye kadar hep teoriden kurallardan bahsettiğim için okuyucunun olayı yüzeysel olarak anladığı düşüncesine kapılmak yersiz olmaz. Bu yüzden gelin teoriden pratiğe geçiş yapalım ve şimdiye kadar bahsettiklerimizin gerçekte nasıl çalıştığını anlamaya çalışalım. Bunu yapabilmek için; kendi "HayaliSSD ünitemizi oluşturacağız. Bunun için gidip bir üreticiden bir kontrolcü ve bir miktar Nand Flash bellek hücreleri aldığımızı düşünün. Bütçemiz az olduğu için oluşturacağımız  SSD ünitesi, 10 Page'den oluşan -dolayısıyla- 40 KB büyüklüğünde bir  SSD ünitesi olacak.

            Miktar az mı geldi?
            Sonuçta hayali bir  SSD ünitesi umursamayın!
            Altta diskimizin özellikler tablosunu görüyorsunuz;



Hayali SSD'miz
"Page" boyutu4 KB
"Block" boyutu10 Page (40 KB)
SSD toplam kapasite1 Block (40 KB)
Okuma Hızı2 KB/s
Yazma Hızı1 KB/s


            Altta ise bu  SSD ünitesinin -Gerçekle uzaktan yakından alakası olmayan- hayali bir canlandırması var. (Normalde her sarıyla kaplanmış Nand Flash bellek çipi bu Page'lerin milyonlarcasını barındırır.)





           Şimdi gelin bu  SSD ünitesini kullanmaya başlayalım.  SSD ünitesi daha hiç kullanılmadığı için bütün Page'ler boş (Silinmiş) durumda;



           Şimdi bu  SSD ünitesine 8 KB büyüklüğünde enpedi logosunu kaydediyorum: Bu isteğim işletim sistemi tarafından SSD kontrolcüsüne ulaştırılıyor. Kontrolcü dosya büyüklüğü 8 KB olduğu için ilk 2 Page'e bu veriyi yazıyor ve -yazacağımız alan hali hazırda boş olduğu için- bu dosyayı yazmamız 8 sn. sürüyor. (Hatırlayın diskimizin yazma hızı 1 KB/s) Şimdi sürücümüzün %20'si dolu.



Tekrar  SSD ünitesini kullanma ihtiyacım bu sefer bir Word dokümanı için doğuyor. Kaydetmek istediğim doküman 12 KB büyüklüğünde olsun. Yine bu istek işletim sistemi tarafından kontrolcüye yönlendiriliyor ve kontrolcü bu veriyi Block'ta bulunan sıradaki 3 Page'e yazıyor. -Yazacağımız alan hali hazırda boş olduğu için- bu dosyayı yazmamız 12 sn. sürüyor. (Hatırlayın diskimizin yazma hızı 1 KB/s) Şimdi sürücümüzün % 50'si dolu:



           Artık enpedi logosuna ihtiyacım kalmadığı için siliyorum. İşletim sistemi kendi adreslemesinde bu alanı (İlk 2 Page) boş/yazılabilir olarak işaretliyor ama SSD kontrolcüsünün bundan haberi yok!


              Yazının başındaki tabloyu incelerseniz, silme durumunda HDD ve SSD ünitelerinin 
              davranışı ortaktır: Hiçbir şey yapma!

               Neden böyle olduğu sorusu aklınıza takılabilir. Bunu bir önceki yazıda "NAND flash depolama nasıl işler?" başlığı altında anlatmıştım. Ama kısaca tekrar edersek HDD ünitelerinde bir veriyi SSD ünitelerinde ki gibi silme gerekliliği yoktur. Çünkü HDD üniteleri bir veriyi tamamen silmeden direk üzerine yazabilir. Bu yüzden işletim sistemleri bir veriyi silmek gerektiğinde sadece kendi haritalarında silindi olarak işaretlerler, sürücüye ayrıca "Sil" sinyali yollamazlar. Bu örneğin 500 GB gibi bir veriyi 1 sn.de silme olanağı sağlar. Oysa flash depolamada bu mümkün değildir bu 500 GB verinin depolandığı alanı tekrar kullanabilmeniz için ayrıca silmeniz yani -Doğru bir tanım değil ama anlaşılabilmesi açısından- 0 olarak yazmanız gerekir. Bu da SSD bile olsa oldukça vakit alır. 

             E siz de "Ben HDD'den iyiyim!" diye ortaya çıkıyorsanız işletim sistemi de "Bu senin sorunun kardeşim, sen üstüne yazmayı beceremiyorsun diye neden ben bir de silmekle uğraşıp yavaşlayayım, kullanıcıma mahçup olayım!" der ve sonuna kadar haklıdır. Beceremiyorsanız siz gidersiniz yerinize bir HDD gelir!



             Bu durumda işletim sistemine göre SSD ünitemizin 1, 2, 6, 7, 8, 9 ve 10. Page'leri olmak üzere 7 Page'i boş yani 4x7= 28 KB boş alan var. Oysa SSD kontrolcüsüne göre sadece 6, 7, 8, 9 ve 10. Page'leri boş yani 20 KB boş alan var. Yani 1 ve 2. Page'ler İşletim sistemine göre boş, SSD kontrolcüsüne göre dolu.




            Şimdi SSD'ye 28 KB büyüklüğünde bir video kaydetmek istiyorum. Ben bunu yaptığımda işletim sistemi tereddüt etmeden isteğimi yerine getirip bu isteği SSD kontrolcüsüne iletecektir çünkü onun kayıtlarına göre diskte bu kadar boş alan mevcut.  Bu emir SSD kontrolcüsüne geldiğinde beraberinde 1 ve 2. Page'in üzerine yazılabileceği bilgisiyle beraber gelir. (Normalde sürücü ilk halinde yani boş olsa 28 KB'lık verinin yazılmasının 28 sn. süreceğini aklınızda not edin)






             Ancak ortada flash depolamanın olmazsa olmaz 3 kuralının sebep olduğu bir sorunlar yumağı vardır: SSD kontrolcüsüne göre direkt yazabileceği sadece 5 boş Page (20 KB) vardır. Diğer 2 Page'in (1 ve 2. Page'ler) kullanılabilmesi için silinmesi gerekmektedir. Bu normalde biraz işimizi yavaşlatır. (Çünkü bu 2 Page'i okumak için 4 sn. silmek için ise 8 sn. ekstradan süre gerekecektir yani 28 sn. de yapılacak iş 40 sn. sürecektir.) Ama asıl sorunun bu olduğunu zannediyorsanız yanılırsınız çünkü 2. kural devreye girer ve işler iyice sarpa sarar: Silebileceğiniz en küçük boyut Block'tur. Page'leri tek tek silemezsiniz. Yani silmek istemediğimiz 3, 4 ve 5. Page'lerdeki dokümanımızı silmeden bu dosyayı yazamazsınız!

Peki o zaman ne yapacağız?

            Ne yapacağımız aslında belli: Bu Block'daki tüm veriyi bi başka konumda belleklemeliyiz ki bütün Block'u veri kaybetmeden silebilelim. Bunu bir dosyaya sağ tıklayıp "Kopyala" dediğimizde panoya kopyalamamıza benzetebilirsiniz yada biçimlendireceğiniz bir diskteki işinize yarayan verileri harci bir diske yedeklemeye. Ancak bu belleklemenin nasıl yapılacağı, yöntemi SSD ünitesinin model/markasına, kontrolör markasına, işletim sistemine, diskin doluluk oranına göre değişiyor ve farklı teknikler kullanılabiliyor. Bu teknikler ise; Tampon Bellek kullanmak, Over-provisioning, Garbage collection ve TRIM komutu kullanmak.

Tampon Bellek kullanmak;

        SSD ünitelerinin neredeyse tamamında az veya çok tampon bellek bulunur. Bazı modellerde her Zar'ın (Die) kendi tampon belleği olabileceği gibi çiplere atanmış veya tüm sürücünün ortak kullandığı bellekler olabilir. Bunlar karalama defteri gibi kullanıldığı için RAM benzeri bir çalışma karakteristiğinin olmasında bir sakınca yoktur çünkü burada veri depolanmaz sadece geçici olarak belleklenir. (Ram tipi belleklerin enerji kesildiğinde bilgiyi muhafaza edemediğini hatırlatayım) Yukarıda anlattığım türden bir sorunu tampon bellek ile çözeceksiniz işlem şu şekilde yapılır:


1- Kontrolcü Blok'taki verileri bellekler (Okuma için 10 sn harcanır. Tampon Bellekte yapılan işlemlerin süresini görmezden geliyorum.)




2- Bellek Nand-Flash kısıtlamalarına sahip olmadığı için silmek istediğimiz 1 ve 2. Page'deki veri burada silinir ve sadece 3, 4 ve 5. Page'lerdeki veriler muhafaza edilir.




3- Yazmak istediğimiz yeni veri (28 KB olan) belleklenir. (Okuma için 14 sn.)




4- Block silinir. (40 KB boyutundaki Block'u silmek (0 olarak yazmak için) için 40 sn.)




5- Block silindiği için artık yazmaya müsaittir ve belleklenen 40 KB veri (12 KB eski veri + 28 KB yeni veri) bu Block'a yazılır. (40 KB verinin yazılması için 40 sn.)





6- Artık belleklenen veriye ihtiyaç kalmamıştır. Bir daha kullanıldığında yada güç kesildiğinde tampon bellek boşalır.





          Gördüğünüz gibi tek yapmak istediğiniz 28 KB boyutundaki bir video dosyasını diske yazmaktı. Üreticimizin verdiği özelliklere göre (Yani kendimiz :D) diskimizin yazma hızı 1 KB/s idi. Yani işlemin 28 sn.de tamamlanması gerekiyordu. Peki, ne kadar sürdü: 104 sn.!
Peki, 28 KB veriyi yazmak için kaç KB veri yazdık: 80 KB!
Yani Write Amplification oranımız 80/28= 2.85 oldu.
Yazma hızımız ise tam 3.71 kat azaldı, yani yazma hızımız 0.27 KB/s'ye düştü!




Over-provisioning

         Over-provisioning, Türkçeye çevrilmesi çok mümkün olmayan ("Fazladan Tahsis" size ne ifade ediyorsa o kadar çevriliyor işte) ve aynı zamanda tanımı hakkında her kafadan ayrı bir sesin çıktığı bir terim. Bazı yerlerde Spare Area olarak da geçebilir. Bu terim hakkında bunca kafa karışıklığının olmasının hatta bu konunun en yetkili ağızları olan üreticilerin dahi farklı tanımlamalar yapmalarının kaynağında Over-provisioning terimini karşılayan birden fazla seviye ve teknik olması. Hatta yukarıda anlattığım Tampon Bellek kullanmak da Over-provisioning tanımının içine giriyor ve aslında Over-provisioning tekniğinin bir ayağı/seviyesi.

          En kısa şekilde tanımlamak gerekirse; bir SSD ünitesinde kutusunun üzerinde yazan kapasiteden fazla kapasite bulunur. Kullanıcı ve işletim sistemi bu fazla alanı göremez ve kullanamaz. Bu alanın kontrolü -Write Amplification oranını azaltmak ve yazma hızlarının düşmesini engellemek için- tamamen SSD kontrolcüsüne aittir. Altta bu durumda aynı işlemi nasıl yapacağımızı görüyorsunuz. (Beyaz alanlar bahsettiğim, kontrolü SSD kontrolcüsünde olan ve kullanıcının / işletim sisteminin göremediği alanlar. (Over-provisioning-Fazladan Tahsis))




Sonuç: Yazma süresi sadece 28 sn.!




Şimdiye kadar -anlatımı sadeleştirmek adına- her şeyi yazının başlarında özelliklerini verdiğim 40 KB büyüklüğünde, tek Block'luk bir disk üzerinden anlattım. Ama bir SSD ünitesinde -SSD'lerin Yapısı ve Çalışma Mantığı bölümünde gördüğümüz üzere- binlerce Block bulunur. Artık hayali SSD ünitemizi unutun, o görevini yaptı artık anlatım binlerce Block'a sahip bir normal SSD ünitesi üzerinden olacak.


              Tahmin edebileceğiniz gibi bir SSD ünitesinde kullanılmayan boş alanlar Over-provisioning katkısı sağlarlar. Üreticilerin, kullanıcılara "Diskinizin % 80'den fazlasını doldurmamaya özen gösterin" önerisinde bulunmasının altında yatan teknik gerçek de budur. Bu durumda yukarıda anllatığım yöntemler kullanılmadan bahsettiğim video dosyası direkt boş bir Block'a yazılacaktır;



Sonuç;





Garbage Collection 
(Çöp Toplama)


         ...Ancak zamanla boş Block'lar dolacak ve yazma performansımız düşmeye başlayacaktır. İşte bu sebeple disk boştayken çöpler toplanır. (Garbage Collection) Bunun anlamı bizim örneğimizdeki gibi verimli kullanılamayan Block'lar daki verilerin daha verimli olarak başka bir Block'ta birleştirilmesi ve verimsiz kullanılmış Block'ların, silinerek (Doğrusu; boş olarak programlanarak) tekrar kullanıma açılmasıdır. Yine örneğimiz üzerinden gidersek; elimizde 2 tane 40 KB'lık Block var:


  • 1'incisi: 20 KB boş alan, 12 KB dolu alan ve 8 KB işletim sistemine göre boş, SSD kontrolcüsüne göre dolu olan yani silinmesi gereken ama -tek tek Page'leri silememe kuralından dolayı- silinemeyen bir Block
  • 2'ncisi: 28 KB'ı dolu, 12 KB'ı boş olan bir Block.

         Yani 2 Block'taki verinin toplamı 40 KB olduğundan bu 40 KB veriyi 3. bir boş Block'a taşır ve ilk 2 Block'u silersek elimizde 2 tane yarım Block ve 1 tam boş Block olacağına, 1 tam dolu ve 2 tam boş Block'umuz olur ki bunun çok daha verimli olduğu aşikar. Şimdi bu işlemin yani Garbage Collection'ın nasıl yapıldığını resimlerle görelim:


Adım 1: Yarım dolu Block'lardaki verileri yeni bir Block'a taşı




Adım 2: Yarım dolu Block'ları biçimlendir.




             Garbage collection çeşitli marka/model SSD ünitelerinde yine çeşitli seviyelerde ve farklı tekniklerle uygulanıyor. Ama hem kafanızı daha fazla karıştırmamak adına hem de yazının çok fazla uzaması yüzünden bu konuları atlıyorum. Ancak şunu söylemeden konuyu kapatmak istemiyorum:

           Burada sadece 3 Block üzerinden anlatınca çok basit bir işlem gibi görünebilir ama Block sayısı milyonlarca olunca ve Wear Levelling kaygısı da göz önüne alınınca bu işlemin ne kadar karmaşık algoritmalar gerektirdiğini anlayabilirsiniz.



TRIM Komutu


         Sözlük anlamı olarak kırpma, budama anlamına gelen "trim" büyük harflerle yazılmışsa (TRIM) Sata TRIM komutunu simgeler. TRIM komutunu destekleyen işletim sistemleri, TRIM komutuyla artık gerek duyulmayan yani işletim sistemi tarafında silinmiş görünen alanları SSD kontrolcüsüne bildirirler. Eğer yazının başından beri dikkatle okuduysanız, işletim sistemlerinin silinen alanları HDD yada SSD ünitelerine bildirmediklerini ve bunun pek çok soruna yol açtığını görürsünüz.

         TRIM komutunun kullanılabilmesi için hem SSD ünitesinin hem de işletim sisteminin, TRIM desteğine sahip olması gerekir. Güncel bütün SSD üniteleri bu desteğe sahip oldukları için bakmamız gereken ayak işletim sistemi ayağı. Şu anda destekleyen işletim sistemleri şunlar;

  • Windows 7 ve Windows 8
  • 2009 ve sonrasında çıkan bütün Linux dağıtımları
  • Mac OS X Snow Leopard sürüm 10.6.8 ve üzeri *

        Yani SSD kullanıyorsanız -tam verim alabilmek için- bu işletim sistemlerinden birini kullanmak zorundasınız! 

Güncelleme: Ağustos-2016

Burada yanlış anlaşılabilecek bir durumu düzeltmek istiyorum. Mac OS X, 10.6.8 sürümünden itibaren TRIM'i destekliyor ancak bu destek sadece bilgisayarla birlikte gelen orijinal SSD üniteleri için geçerli. Yani 3. parti bir SSD alır ve takarsanız TRIM desteği otomatik olarak yok. 3. parti bir program kullanmak zorundasınız.

OS X 10.10.4 sürümünden itibaren ise 3. parti SSD'ler de resmi ancak desteklenmeyen TRIM özelliğine kavuştular. Resmi ama desteklenmeyen statüsünün sebebi bazı 3. parti SSD'lerde sorunlar yaşanması. (Bunların içinde Samsung'un bazı popüler SSD üniteleri var. Tüm listeyi ise burada görebilirsiniz.) Yine bu sebeple etkinleştirmek için bir komut (trimforce) kullanmanız ve ürkütücü uyarı mesajını görmezden gelmeniz gerekiyor.

Girmeniz gereken komutu burada vereceğim ama önce uyarayım; Küçük de olsa sorun yaşama riskiniz var. Uyarıldınız! Ayrıca Enpedi, Windows üzerine bir platform. Bu konuyla ilgili destek vermeyeceğim.

Öncelikle Terminal'i açmanız gerekiyor. Ardından TRIM'i etkinleştirmek için sudo trimforce enable komutunu, devre dışı bırakmak için ise sudo trimforce disable komutunu girmeniz yeterli.

Uyarı için FireSwords'a teşekkürler.

Peki TRIM nasıl çalışıyor?

            Bunu anlatabilmek için yazının başındaki 40 KB büyüklüğünde ve tek Block'luk "hayali" SSD ünitemize geri dönelim ve başta verdiğim yazma işlemlerini bir de TRIM komutu ile yapalım:


1- 8 KB büyüklüğünde enpedi logosunu kaydediyorum: Bu isteğim işletim sistemi tarafından SSD kontrolcüsüne ulaştırılıyor. Kontrolcü dosya büyüklüğü 8 KB olduğu için ilk 2 Page'e bu veriyi yazıyor ve -yazacağımız alan hali hazırda boş olduğu için- bu dosyayı yazmamız 8 sn. sürüyor. (Hatırlayın diskimizin yazma hızı 1 KB/s) Şimdi sürücümüzün %20'si dolu.




2- Tekrar  SSD ünitesini kullanma ihtiyacım bu sefer bir Word dokümanı için doğuyor. Kaydetmek istediğim doküman 12 KB büyüklüğünde olsun. Yine bu istek işletim sistemi tarafından kontrolcüye yönlendiriliyor ve kontrolcü bu veriyi Block'ta bulunan sıradaki 3 Page'e yazıyor. -Yazacağımız alan hali hazırda boş olduğu için- bu dosyayı yazmamız 12 sn. sürüyor. (Hatırlayın diskimizin yazma hızı 1 KB/s) Şimdi sürücümüzün % 50'si dolu:



3- Artık enpedi logosuna ihtiyacım kalmadığı için siliyorum. İşletim sistemi kendi adreslemesinde bu alanı (İlk 2 Page) boş/yazılabilir olarak işaretliyor ardından bu durumu SSD kontrolcüsüne, "TRIM komutu ile" bildiriyor.




4- İlk örneğimizin aksine; ben daha 28 KB'lık video dosyasını kaydetme ihtiyacı duymadan SSD kontrolcüsü ilk boş zamanında bu Block'u bellekliyor (TRIM komutuyla "Silinebilir" bilgisini aldığı için) (Resim 1), ilk 2 Page'i tampon bellekte siliyor (Resim 2), Block'u siliyor (Resim 3) sonra tekrar geri yazıyor. (Resim 4-5)









5- 28 KB'lık video dosyasını kaydetmek istediğimde Block zaten bunun için hazır duruma getirilmiştir. Yani TRIM komutu kullanılmayan ilk örneğin aksine;


  • Yazma hızımda hiçbir düşme olmadı. 1 KB/s hızla 28 saniyede yazabildik. Oysa TRIM komutu kullanılmadığında bu işlem 104 sn. (!) sürmüştü.
  • Toplamda yine 80 KB veri yazdık yani Write Amplification oranımızda bir değişiklik olmadı.





Sonraki bölüm:

Arşiv

Yorumlar

Twitter

Facebook

İzleyiciler

Rastgele

item