Kopyalama sırasında flash diskimin hızı neden yavaşlıyor?


27

Birkaç dakikalık kopyalama işleminden sonra yavaşlar ve yavaşlar. Niye ya?

örn. 20 MByte / sn ile başlar ve bitince 10 MByte @ s.

Çeşitli dosyalar, büyük, küçük vb.

GÜNCELLEME: soru çeşitli işletim sistemleri ile ilgili, bu yüzden "genel bir soru"


Bilgisayarınızda ne kadar boş hafıza varsa, ne kadar kopyalıyorsunuz?
KCotreau

PC -> USB-FLASH sürücü: birkaç yüz
GByte

1
Öncelikle bellekte dosyalar önbelleğe alınmış olduğundan şüpheleniyorum, böylece hızlı bir şekilde aktarılıyorlar ve ardından sabit sürücüden taşınmaya başladıklarında yavaşlıyor. Yine de senin durumunda emin olamıyorum.
KCotreau

bu yüzden bana "sync" komutunu daha sık kullanmamı tavsiye ediyorsun?
LanceBaynes

Eşitleme komutu ile ne demek istediğinizi anlamıyorum. Soruyla ilgili hiçbir bağlam vermediniz. Ne işletim sistemi olduğundan bile emin değilim.
KCotreau

Yanıtlar:


25

Bu davranış flash sürücünüze özgü değildir, bunu sabit sürücülerle de görebilirsiniz. Çoğu işletim sisteminin ve disklerin küçük yazma işlemlerini hızlandırmak için kullandığı önbellekleme mekanizmasıyla ilgili.

Gördüğünüz 20 MB / sn, disk önbelleğine yazılan verilerdir (genellikle hızlı ancak küçük bellek). Bu önbellek dolduktan sonra diske boşaltılmalıdır - ve şimdi yavaş disk tarafından tıkanmışsınızdır.

Örnek 1: Efekt, gerçekten büyük bir önbelleğe sahip bir denetleyiciniz (iyi RAID5 denetleyici gibi) olduğunda belirgindir, burada ~ 500mb veri diske boşaltılmadan önce hızlı bir şekilde önbelleğe alınabilir.

Örnek 2: Flash sürücüyü aynı anda kopyaladığınızda aynı anda flash sürücüyü çıkarırsanız, oynatılan önbelleği görebilirsiniz. Bu noktada, dosyanız disk ve önbellek arasında bölünmüştür - bu nedenle, işletim sistemi söz konusu olduğunda, kopya "bitti", ancak disk denetleyicisinin yine de önbellekte kalanı diske yazması gerekir. Flash sürücüyü tekrar yerleştirirseniz ve dosyayı incelerseniz, hepsinin orada olmadığını görürsünüz.

Feragatname: İşletim sisteminizde / diskte yazma önbelleği etkin değilse bu örnekler işe yaramaz.

Dahası, eğer iş yerinde disk önbelleğe almıyorsa , gördüğünüz şeyin parçalanmanın bir etkisi olması muhtemeldir. Disk doluyken ve doluyorken daha az bitişik boş alan mevcut olur ve dosya sistemi dosyalarınızı koyabileceğiniz yerleri bulmak için daha çok çalışmalıdır.


Ayrıca bir flash sürücü olduğunu unutmayın. Donanımı hiçbir zaman hız için optimize edilmedi, daha uygun fiyatta kullanıldı.
surfasb

Uzun dosya kopyaları sırasında performansın neden düşeceğini açıklayacağını sanmıyorum. Aksine performans sürücünün ömrü boyunca düşecek, evet?
ta.speot.is

Mükemmel mantıklı. Sürdürülebilir işlemler için değil seri çekim hızları için optimize edilmiştir. Flash sürücülere yüklenen dosyaların ortalama boyutunu düşünün. 30 saniyelik bir dosya aktarımı için optimize eder misiniz yoksa 2 saniyelik bir aktarım için optimize eder misiniz? Bunu iki örneğinize ekleyin ve bolca açıklayın.
surfasb

Aynı anda iki kişiyi ortalama bir kapıdan sıkıştırmaya çalıştığınızda olduğu gibi. İlk başta hesaplayabilirsiniz. Vay be, ben sıfır kapıdan o kapıdan iki kişiye gittim. Hızım harika. Sonra çizgi uzar ve örneklemeniz daha iyi hale gelir ve sonunda küçük numunenin = kötü matematik olduğunu fark edersiniz. . .
surfasb

@ ta.speot.is Bu disk önbelleğinin sabit diskteki işletim sistemi tarafından işlendiğini ve sabit disklerin dahili olarak sahip olduğu donanım önbelleğinden farklı olduğunu varsayalım.
sepehr

1

Önbellekleme bunlardan bazılarına neden olurken, tek faktör bu değildir. Önbellekleme tek faktör olsaydı, yazma hızının birkaç yüz MB / sn'den sürücünün gerçek yazma hızına çok hızlı bir şekilde düşmesini ve yazının geri kalanı için orada kalmasını beklerdik. Ancak, diske ve diske büyük transferler yaparken gözlemlediğim şey bu değil (örneğin, önyükleme görüntüleri yazma). Bunun yerine gözlemlediğim şey, hızın tüm işlem boyunca giderek azaldığı.

Bu yavaşlama, bazı blokların bir kereden fazla yazılmasını gerektiren verileri depolamak için kullanılan flaş çipindeki veri miktarından kaynaklanmaktadır.

Bir flaş çipinde, üzerine yazılabilecek bir veri bloğu vardır. Yazarken, bilgisayarın yapabileceği yalnızca iki şey vardır: bir bloğun tamamını silebilir veya bir bloktaki bitlerin bir kısmını (veya tümünü) 0'dan 1'e değiştirebilir.

Ancak, bu blokların bazıları diğerlerinden daha iyidir, özellikle düşük kaliteli flash sürücülerde ve sonuç olarak yeni veriler yazarken, bazı bitler yazıldıktan hemen sonra kendi başlarına 0 durumuna dönebilir ve değişmedi. Bu nedenle, bir bloğa yazarken, işletim sisteminin tüm verilerin doğru yazıldığından emin olmak için kontrol etmesi gerekir ve aynı veriyi aynı bloğa iki veya üç kez yazarak bloğu yeniden yapmak zorunda değilse veri yapışana kadar.

Bu nedenle, bilgisayarınız flash sürücüye bir sürü veri yazarken, bunun nasıl yapılacağına ilişkin bir açıklama (tamamen doğru değil, ancak yeterince iyi):

  1. Yazılacak ilk blok dizisini alın ve hepsini yazın.
  2. Yeni yazdığımız tüm blokları tekrar oku ve uyuşmayanların bir listesini yap.
  3. Bir sonraki blok kümesini ve en son doğru yazılmayanları yazın.
  4. Tüm bloklar doğru yazılana kadar 2-3'ü tekrarlayın.

Bilgisayar sürücüye yazarken, sürücüye ilk defa blok yazma hızını bildirir. Aynı zamanda önceki blokları aynı anda yeniden yazmak zorunda kalacağından, bakire bloklar için kullanılabilecek toplam verimlilik, aynı zamanda gerçekleşmesi gereken yeniden yazma sayısı arttıkça düşer. Böylece, görünen yazma hızı zamanla azalır.


NTFS olarak biçimlendirilmiş yeni bir USB 3.0 flash sürücüye 12 Gig 7zip dosyası yazıyorum. İlk dakika yaklaşık 100 MB / s olacak, sonra yaklaşık bir dakika 25ish MB / s'ye düşmüş, daha sonra yaklaşık 10 dakika 11 ya da öteye düşmüştür. Kademeli aşağı doğru bir eğim değildi, 3 ayrı plato idi.
Eric

Eski i7 dizüstü bilgisayarımın arşivini 16 GB RAM ile kopyalıyordum. Bu aynı 7zip arşivini 32gigs RAM'le yeni Xeon dizüstü bilgisayarımda aynı thumbdrive'dan kopyalamak 2 dakika sürdü ve hızda bir düşüş olmadı.
Eric

0

Dosya bir sürücüye yazıldığında, flaş bir USB sürücüsü veya bir sabit sürücü olsun, veriler uyuşup uyuşmadığını görmek için geri / NOT olarak okunmaz. Bu sonsuza dek sürecek. yazımın doğrulanması donanım tarafından yapılır (Döngüsel Artıklık kontrolü) ve bir hata meydana gelirse, bir hata tespit edilen donanımdan uygulamaya geri gönderilir. Oluşan ve yavaşlayan (duraklamada bile) durma, CPU'nun cihazın kaldırabileceğinden daha hızlı yazmasından kaynaklanır. Bunu iç sabit disklere bulamazsınız. Bir Windows işletim sisteminde gerçekte neler olduğunu asla göremezsiniz, ancak Linux'ta USB donanımının devam edeceğini söyleyene kadar CPU'nun durakladığını görebilirsiniz


Farklı depolama cihazlarının yazma hızlarındaki fark aşırı olabilir, örneğin eski bir SD kartın yazma hızını SATA III SSD'nin yazma hızıyla karşılaştırın.
karel

3
Lütfen kişisel hakaretlerden kaçının. Yayınınız doğru olsa da, topluluk standartlarımıza uyması için düzenlemelisiniz .
Ben N
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.