4K hızımın nesi yanlış? Neden bu kadar yavaş? Yoksa böyle olması mı gerekiyor?
Bu hız iyi mi? Neden 4K'da bu kadar düşük hıza sahibim?
4K hızımın nesi yanlış? Neden bu kadar yavaş? Yoksa böyle olması mı gerekiyor?
Bu hız iyi mi? Neden 4K'da bu kadar düşük hıza sahibim?
Yanıtlar:
Karşılaştığınız şeyler tipik mekanik HDD'lerdir ve SSD'lerin en büyük yararlarından biri: HDD’lerin korkunç rasgele erişim performansları vardır.
CrystalDiskMark'ta, "Sıra" sıralı erişim anlamına gelirken, "4K" rasgele erişim anlamına gelir (bir seferde 4kB'lik parçalar halinde, çünkü tek baytlar çok yavaş ve gerçekçi olamazdı 1 ).
Genel olarak, bir dosyaya erişmenin iki farklı yolu vardır.
Sıralı erişim, dosyayı birbiri ardına az ya da çok byte okuduğunuz veya yazdığınız anlamına gelir. Örneğin, bir video izliyorsanız, videoyu baştan sona yükleyeceksiniz. Bir dosyayı indiriyorsanız, indirilir ve baştan sona diske yazılır.
Disk açısından "blok # 1 oku, blok # 2'yi oku, blok # 3'ü oku, bayt bloğu # 4'ü oku" 1 gibi komutlar görüyor .
Rasgele erişim, okuma veya yazma işlemlerinde açık bir şablon olmadığı anlamına gelir. Bu gerçekten rastgele demek zorunda değildir; gerçekten "sıralı değil" anlamına geliyor. Örneğin, bir kerede çok sayıda program başlatıyorsanız, sürücünüzün etrafına dağılmış çok sayıda dosyayı okuması gerekir.
Sürücünün bakış açısından, "blok # 56 oku, blok # 5463'ü oku, blok # 14'ü oku, blok # 5'i oku" gibi komutlar görüyor.
Birkaç kez bloklardan bahsettim. Bilgisayarlar bu kadar büyük boyutlarla (1 MB ~ = 1000000 B) uğraştığından, her bir bayt için sürücüye sormanız gerekiyorsa sıralı erişim bile yetersizdir - çok fazla sohbet var. Uygulamada, işletim sistemi bir kerede diskten veri blokları ister .
Bir blok sadece bir bayt aralığıdır; örneğin, blok # 1 bayt # 1- # 512, blok # 2 bayt # 513- # 1024, vb. olabilir. Bu bloklar sürücüye bağlı olarak 512 Bayt veya 4096 Bayttır. Ancak bireysel baytlardan ziyade bloklarla uğraştıktan sonra bile, sıralı blok erişimi rastgele blok erişiminden daha hızlıdır.
Sıralı erişim genellikle rasgele erişime göre daha hızlıdır. Bunun nedeni, sıralı erişimin işletim sistemi ve sürücünün daha sonra neyin gerekli olacağını tahmin etmesine ve önceden büyük bir yığın yüklemesine izin vermesidir. "1, 2, 3, 4" blokları talep ettiyseniz, işletim sistemi daha sonra "5, 6, 7, 8" isteyeceğinizi tahmin edebilir, böylece sürücüye "1, 2, 3, 4 okumasını söyler. , Bir kerede 5, 6, 7, 8 ". Benzer şekilde, sürücü bir kerede fiziksel depolamayı "aramak 1, 1,2,3,4 okumak, 5 aramak, 5,6,7,8 okumak" yerine okuyabilir.
Oh, bir şey aramaktan bahsettim. Mekanik HDD'lerin fiziksel olarak nasıl yerleştirildiğinden dolayı çok yavaş bir arama süresi vardır: Fiziksel kolları diski okumak için ileri geri hareket eden bir dizi ağır metalize diskten oluşur. İşte dönen diskleri ve hareketli kolları görebileceğiniz açık bir HDD'nin videosu.
Http://www.realtechs.net/data%20recovery/process2.html adresinden görüntü
Bu, herhangi bir zamanda, yalnızca kolun ucundaki başlığın altındaki verilerin bitinin okunabileceği anlamına gelir. Sürücünün iki şey beklemesi gerekir: kolun diskin sağ halkasına ("iz") gelmesini beklemesi ve ayrıca diskin dönmesini beklemesi gerekir, böylece gerekli veriler okuma altında olur. kafası. Bu 2 arayan olarak bilinir . Hem eğirme hem de hareketli kolların hareket etmesi fiziksel zaman alır ve hasar riski olmadan çok fazla hızlanamazlar.
Bu tipik olarak gerçek okumadan çok daha uzun zaman alır. Sadece istenen baytın yaşadığı yere ulaşmak için> 5ms'den bahsediyoruz, baytın gerçek okuması sıralı bayt okuma başına ortalama 0.00000625ms (veya 512 B blok başına 0.003125ms).
Diğer taraftan, rastgele erişim, öngörülebilirliğin bu yararına sahip değildir. Bu yüzden 8 blok bayt, belki de "8,34,76,996,112,644,888,341" bloklarından okumak istiyorsanız, sürücünün "8'e, 8'e, 8'e, 34'e, 76'ya, 76'ya ... . Her bir blok için tekrar aramaya ihtiyacı olduğuna dikkat edin. Sıralı 512 B blok başına ortalama 0.003125 ms yerine, şimdi sırayla (5 ms aramak + 0.003125 ms okunur) = blok başına 5.003125 ms. Bu çok, çok daha yavaş. Aslında, binlerce kez daha yavaş.
Neyse ki, şimdi bir çözümümüz var: SSD'ler.
Bir katı hal sürücüsü olan bir SSD, adından da anlaşılacağı gibi katı haldir . Bu, hareketli parçaları olmadığı anlamına gelir . Dahası, bir SSD'nin yerleştirilme şekli , bir baytın yerini aramaya gerek olmadığı anlamına gelir (etkili 3 ); zaten biliyor . Bu nedenle SSD'nin sıralı ve rasgele erişim arasında çok daha az bir performans farkı vardır.
Hala bir boşluk var, ancak bu daha sonra ne olacağını tahmin edememe ve bu verileri istenmeden önyükleme ile yüklenebilir .
1 Daha doğrusu, LBA sürücülerinde verimlilik nedenleriyle 512 bayt (512n / 512e) veya 4kB (4Kn) bloklarda adreslenir. Ayrıca, gerçek programlar neredeyse hiçbir zaman tek bir bayta ihtiyaç duymazlar.
2 Teknik olarak, arama sadece kol hareketini ifade eder. Verilerin başın altında dönmesini beklemek , arama süresinin üstünde dönme gecikmesidir .
3 Teknik olarak, arama tabloları var ve başka nedenlerden ötürü, örneğin aşınma dengelemesi var, ancak bunlar bir HDD'ye kıyasla tamamen ihmal edilebilir ...
Notice how it needs to look for every single byte?
değiştirin: byte
ile block
(ve buna göre EXEMPLE değiştirin). Sürücü 4k parçayı arıyor (512bayt öbek içine daha da dağılabilir, ancak bundan daha az değil. Her byte arasında arama yapmaz!) Bir sonraki blok hemen arkasında değilse, her blok arasında arar. parçalanmış diskler) ve aramak (kafayı tabağın etrafında hareket ettirmek ve bloğun altından geçmesini beklemek) çok uzun sürer (birkaç milisaniye)
Diğer cevaplarda da belirtildiği gibi, "4K" neredeyse kesinlikle 4 KiB boyutundaki bloklarda rastgele erişime atıfta bulunuyor.
Bir sabit diskten (SSD değil) her zaman veri okuması veya yazması istendiğinde, iki önemli gecikme yaşanır:
Bunların her ikisi de, herhangi bir sürücü için nispeten sabit bir süreye sahiptir. Arama gecikmesi, başın ne kadar hızlı hareket edebileceğinin ve ne kadar hareket ettirilmesi gerektiğinin bir fonksiyonudur ve dönme gecikmesi, tablanın ne kadar hızlı döndüğünün bir fonksiyonudur. Dahası , son birkaç on yılda çok fazla değişmediler. Üreticiler, örneğin reklamlarda ortalama arama sürelerini kullanıyorlardı; bölgede çok az gelişme olsa veya hiç gelişme olmadığında bunu yapmayı bıraktılar. Hiçbir üretici, özellikle de yüksek rekabet ortamında, ürünlerinin rakiplerininkinden daha iyi görünmesini istemiyor.
Tipik bir masaüstü sabit diski 7200 devir / dakika hızında döner, buna karşın tipik bir dizüstü bilgisayar sürücüsü yaklaşık 5000 devir / dakika hızında dönebilir. Bu, her saniye, toplam 120 devir (masaüstü sürücü) veya yaklaşık 83 devir (dizüstü bilgisayar sürücüsü) geçirdiği anlamına gelir. Yana ortalama olarak istenen sektör başının altından geçtiği önce disk biz yaklaşık iki kat saniyede birçok G / Ç istekleri olduğunu varsayarak bu disk hizmeti edebilmek için bekleyebilirsiniz bu araçlar, yarım devrim dönmeye gerekecektir
Bu nedenle, erişmesi istenen verinin (okuma veya yazma için) fiziksel olarak nispeten lokalize olması durumunda dönme gecikmesinin sınırlayıcı bir etken olmasına yol açması durumunda saniyede 200 I / O siparişi gerçekleştirebilmeyi beklemeliyiz. Genel durumda, verilerin önemli ölçüde aranması ve arama gecikmesinin sınırlayıcı bir etken olmasını gerektirmesi durumunda, sürücünün plaka veya tablalara yayılması durumunda sürücünün saniyede 100 I / O siparişi gerçekleştirmesini bekleriz. . Depolama açısından, bu " IOPSsabit diskin performansı ", bu sıralı olmayan G / Ç performansı, genellikle gerçek dünyadaki depolama sistemlerinde sınırlayıcı faktördür. (Bu, SSD'lerin kullanımının bu kadar hızlı olmasının büyük bir nedenidir: dönme gecikmesini ortadan kaldırır ve okuma / yazma kafasının fiziksel hareketi elektronik olarak depolanan flaş haritalama katman tablolarında bir tablo araması haline geldiğinden, arama gecikmesini büyük ölçüde azaltın.)
Yazma işlemi bir önbellek temizliği olduğunda genellikle daha yavaştır. Normalde işletim sistemleri ve sabit diskler, performansı arttırmak için rastgele G / Ç'yi sıralı G / Ç'ye dönüştürmek için rastgele yazıları yeniden sıralamaya çalışır. Açık bir önbellek temizleme veya yazma engeli varsa , bu optimizasyon kalıcı depolamadaki verilerin durumunun yazılımın beklediği ile tutarlı olmasını sağlamak amacıyla elimine edilir. Temel olarak aynı sebep, disk önbelleği olmadığında okuma sırasında geçerlidir (hiçbiri mevcut değildir (bugün masaüstü tarzı sistemlerde yaygın değildir)) veya yazılım kasıtlı olarak atladığı için (bu genellikle I / O performansını ölçerken yapılır). Her ikisi de, maksimum potansiyel IOPS performansını daha karamsar bir duruma veya 7200 rpm'lik bir sürücü için 120 IOPS'ye düşürür.
Neredeyse tam olarak numaralarınızla eşleşecek olan bu. Küçük blok boyutlarına sahip rastgele G / Ç, dönme sabit diskleri için mutlak bir performans katildir, bu nedenle ilgili bir ölçüdür.
Tamamen sıralı I / O’ya gelince, 150 MB / s aralığındaki verim modern dönme sabit diskleri için kesinlikle mantıksız değildir. Fakat çok az gerçek dünya G / Ç katı bir şekilde ardışıktır, bu nedenle çoğu durumda, ardışık olarak I / O performansı gerçek dünya performansının bir göstergesinden çok akademik bir alıştırma haline gelir.
4K, rastgele G / Ç'ye karşılık gelir . Bu, diskin test dosyasındaki rastgele noktalardaki küçük bloklara (4 KB boyutunda) erişmesinin istendiği anlamına gelir. Bu, sabit disklerin bir zayıflığıdır; Diskin farklı bölgelerindeki verilere erişme yeteneği, diskin dönme hızı ve okuma-yazma kafalarının ne kadar hızlı hareket edebileceği ile sınırlıdır. Ardışık bloklara erişilen sıralı G / Ç'ler çok daha kolaydır, çünkü sürücü disk dönerken blokları kolayca okuyabilir veya yazabilir.
Yarıiletken bir sürücüde (SSD) rastgele G / Ç ile ilgili bir sorun yoktur, çünkü tüm yapması gereken, verilerin temel bellekte depolandığı yere bakmaktır (tipik olarak NAND flash, 3D XPoint veya hatta DRAM olabilir) ve okunabilir veya verileri uygun yere yazın. SSD'ler tamamen elektroniktir ve verilere erişmek için dönen bir diskte veya hareketli bir okuma-yazma kafasında beklemelerine gerek yoktur; bu da onları bu konuda sabit sürücülerden daha hızlı yapar. Bu nedenle, bir SSD'ye yükseltmenin sistem performansını önemli ölçüde artırdığı görülüyor.
Yan not: Bir SSD'deki sıralı G / Ç performansı genellikle sabit diskte olduğundan çok daha yüksektir. Tipik bir SSD, flash bellek denetleyicisine paralel olarak bağlanmış birkaç NAND yongasına sahiptir ve bunlara aynı anda erişebilir. Verileri bu yongalara yayarak, RAID 0'a benzer bir sürücü düzeni elde edilir ve bu da performansı büyük ölçüde artırır. (Birçok yeni sürücünün, özellikle de daha ucuz olanlarının, veri yazarken yavaş olma eğiliminde olan TLC NAND adlı bir NAND türü kullandığını unutmayın. Bu tampon dolduğunda dramatik bir şekilde yavaşlayın.)