NVMe ssd: 4k yazma neden okumaktan daha hızlı?


51

PCIe Gen.3x4 çalışırken NVMe'de Samsung 960 Pro 512 GB SSD var. Samsung NVMe Driver 2.0.0.1607 kullanıyorum. SSD iyi çalışıyor. Bununla birlikte, neden 4k'nin yazılmasının 4k'nin okunmasından daha hızlı olduğunu anlamıyorum. AS Benchmark kullanıyorum:

görüntü tanımını buraya girin

3 faktörüdür! Bir sorun mu var (benim sistemimle veya AS Benchmark'la) veya bu normal mi?


Ve hala dönen bir sabit diskten çok daha hızlı!
Zan Lynx

Yanıtlar:


76

4k okur, sürücünün yapabileceği en zor şey hakkında olacak. Bunlar, sürücünün kullanabileceği en küçük blok boyutları arasındadır ve sürücünün büyük miktarlarda veriyi önyüklemesinin bir yolu yoktur, gerçekte sürücü öndeki mantığı bir şey okumak istiyorsa, muhtemelen oldukça yetersizdirler. 4 kb'den büyük.

"Normal" sürücü okumaları 4kb'den daha büyük olma olasılığı daha düşüktür, çünkü bu kadar küçük olan çok az sayıda dosya vardır ve sayfa dosyasının bile bir programın "yalnızca" olması garip olacağından büyük parçalarda okunması olasıdır. 4 KB bellek disk belleği çıkarıldı. Bu, sürücünün yapmaya çalıştığı herhangi bir önyüklemenin aslında sürücü çıkışını cezalandırması anlamına gelir.

4K okur, sürücü tamponundan geçebilir, ancak testin "rastgele" kısmı onları tamamen tahmin edilemez hale getirir. Denetleyici, sürücünün ne zaman normal "büyük" okumaların tekrar gerekli olduğunu bilmez.

Öte yandan 4K yazarları sırayla tamponlanabilir, sıraya alınabilir ve sırayla yazılabilir. Sürücü tamponu, tasarlandığı yakalama ve yazma işinin çoğunu yapabilir ve aşınma düzeneği, tüm bu 4K yazmalarını aynı sürücü silme bloğuna tahsis edebilir, ara sıra 4K'lık "rastgele" bir yazının ne olduğunu çevirebilir sıralı bir yazmaya daha yakın bir şey.

Aslında, "4K-64Thrd" yazarken bunun ne olduğundan şüpheliyim, "64-Thrd" görünüşe göre büyük bir kuyruk derinliği kullanıyor , böylece sürücüye okumak veya yazmak için büyük miktarda veri bulunduğunu işaret ediyor . Bu, birçok yazma kümesini tetikler ve böylece sürücünün sıralı yazma hızına yaklaşır. 4K'lık bir yazma yapmak için hala bir ek yük var, ancak şimdi arabellek potansiyelini tamamen ortaya çıkarıyorsunuz. Testin Read versiyonunda, sürücü kontrolörü, şimdi çok sabit ağır yük altında olduğunu algılayarak, önyükleme verilerini durdurur, muhtemelen tampondan kaçınır ve bunun yerine tekrar sıralı okuma hızına yaklaşan "ham" okuma moduna geçer.

Temel olarak sürücü kontrol ünitesi 4K yazmayı daha verimli hale getirmek için bir şeyler yapabilir, özellikle bir küme benzer bir zamanda gelirse, tek bir 4K okumayı daha verimli hale getirmek için hiçbir şey yapamaz , özellikle de optimize etmeye çalışıyorsa veri önbelleğe önceden yüklenerek veri akışı.


5
Cevabın bir parçası değil, ancak "4K okuma" (64Thrd olmayan sürüm) gerçekten sürücü varsayılan okuma bloğu boyutunu 32K veya 64K olarak gösterdiğinden şüpheleniyorum. Bu, 2600/50 = 52 (bazılarının üzerinde 64K + orjinal 4K okuması) veya 1200/50 = 24 (bazılarında yük + 32K okuduğunu düşürerek okuma) olabilir.
Mokubai

16
Genel olarak iyi bir cevap, ancak "bu kadar küçük çok az dosya olduğuna" inanmıyorum. Aslında çoğu sistemde şüpheli çoğunluk dosyalarının 4k veya daha küçüktür. Uzayın çoğunluğunu almazlar , ama bu başka bir mesele.
Hobbs

3
En basit cevap muhtemelen şudur: Bunları birer birer yaparsanız, okumaları üst üste bindiremezsiniz, çünkü önceki okumadan verileri döndürene kadar bir sonraki okunan bloğun ne olduğunu bile bilmiyorsunuz. Ancak, bir önceki yazı üzerinde çalışırken, bir sonraki yazıma ilişkin tüm verileri alabileceğiniz için yazıların üstesinden gelebilirsiniz.
David Schwartz

2
@hobbs Örneğin NTFS alırsanız, varsayılan küme boyutu 4K'dır (veya bunun bir çoğu), dosyalar ve / veya meta veriler daha küçük olsalar bile NTFS dosya sisteminin 4K blokta çalıştığı anlamına gelir. Yani daha küçük dosyalar farketmez. Tüm niyet ve amaçlar doğrultusunda, bir Windows sistemi 4K'lık bloklar veya katlarında okur / yazar.
Tonny

1
@hobbs: NTFS ile bu tür küçük dosyaları ücretsiz olarak okuyabilirsiniz (!). Küçük dosyalar, dizin adına girerek dosya adına bitişik olarak saklanır. Diskte gerçek bir 4KB dosya olması için 4KB'ye yakın bir dosya boyutuna ulaşmanız gerekir.
MS-

16

Diğer cevaplar, yazmanın okumadan daha hızlı olmasının neden olabileceğini zaten açıkladı; Bu sürücü için, incelemelerde bulabileceğiniz ölçütler tarafından onaylandığı için bu kesinlikle normal olduğunu eklemek isterim.

ArsTecnica adlı kullanıcının yorumu

ArsTechnica , hem versiyonunuz (512 GB) hem de 2 TB olan sürücüyü inceledi:

Arstechnica (Bu grafik incelemede hemen görünmüyor, ilk galeride 5. sırada, tıklamanız gerekiyor)

Bu 2 modelin performansı çok benzer ve sayıları sizinkilere benziyor: sürücü 37 MB / s'de okuyabilir ve 151 MB / s'de yazabilir.

AnandTech adlı kullanıcının yorumu

AnandTech , sürücüyü de inceledi: sıra derinliği 1, 2 ve 4 olan testlerin sonuçlarını ortalayan 2 TB modelini kullandılar. Bunlar grafikler:

AnandTech 4K okumak AnandTech 4K yazmak

Sürücü 137 MB / s'de okuyor ve 437 MB / s'de yazıyor. Sayı, sizinkinden çok daha yüksek, ancak muhtemelen daha yüksek kuyruk derinliği nedeniyle. Her neyse, yazma hızı, durumunuzda olduğu gibi okuma hızının 3 katı.

PC World'ün incelemesi

PC World tarafından bir inceleme daha : 1 TB versiyonunu test ettiler ve 4K için sonuçlar okuma için 30 MB / sn ve yazma için 155 MB / sn: PC dünya grafiği Yazma hızı sizinki ile aynı, fakat sürücü burada okumada daha yavaş. Sonuç, oranın bire bir değil, beşe bir olmasıdır.

Sonuç

Yorumlar bu sürücü için rastgele 4K için yazma hızının okuma hızından çok daha hızlı olduğunu doğrular: teste bağlı olarak 5 kat daha hızlı olabilir.

Sürücün iyi. Hatalı olduğuna inanmak için hiçbir neden yok veya sisteminizin bir sorunu var.


8

SSD kontrol cihazı önbellekteki yerleşik NVRAM'da yazıyor ve elverişli zamanlarda medyayı flaş yapmak için temizliyor. Bu nedenle yazma gecikmesi, önbellek erişim gecikmesidir, genellikle 20us'tur. Aksine, okumalar, en iyi 120-150us erişim süresi olan medyadan sunulmaktadır.


1

Andrey'in cevabını genişleterek, SSD'nin bilgisayara işlemin tamamlandığını bildirmesi için ilgili ek yüke bakmanız gerekir.

Yazma için, veriler yalnızca dahili bir RAM önbelleğine yazılmalıdır. Daha sonra flash belleğe yazılacak, diğer 4k blokları ve onu kontrol etmek, hatalarını düzeltmek ve bulmak için gereken meta veriler yazacak.

Bir okuma için, SSD önce verileri bulmalıdır. Bilgisayarın okumak istediği yere mantıksal adres adı verilir ve verilerin flash bellekteki fiziksel konumu ile doğrudan bir ilişkisi yoktur. SSD, mantıksal adresi, flash belleğin geometrisine (hücrelerin düzenlenme şekline), hatalı blok kapamaya, aşınma seviyesine ve çeşitli diğer faktörlere dayanarak fiziksel bir adrese çevirir. Daha sonra verileri flaştan almadan önce diğer işlemlerin bitmesini beklemek zorundadır, daha sonra kontrol eder ve gerekirse yeniden okuma ve hata düzeltmesini uygular, hatta tüm bloğu başka bir yere bile yeniden yazar.

Yazma işlemi tarafından alınan toplam süre, tipik bir okuma işleminden daha uzun olsa da, SSD'nin, işlemin daha fazla komut işleyebildiği ölçüde tamamlandığını bildirmesi için geçen süre daha düşüktür. Büyük bloklarla tepegöz sınırlayıcı bir faktör değildir, ancak birçok küçük blokla okuma / yazma hızını sınırlamaya başlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.