Gigabit bağlantısı üzerinden Teracopy 31MB / s yapar, ancak Windows 8 saniyede ~ 109MB'da mı çalışır?
Buna tam olarak ne sebep oluyor? Ve bu hızları Teracopy ile etkinleştirebilir miyim? Teracopy'nin sahip olduğu ekstra özellikleri gerçekten kazıyorum, kesinlikle onları özleyeceğim: D
İki kelime: doğrulama ve önbellek
Teknik Açıklama
Windows Gezgini ile bir dosyayı kopyalamak için genel prosedür budur:
- Kaynak sürücüden belleğe bir yığın veri okuyun
- Yığını sistem (ler) üzerinden gönderme
- Yığını hedef sürücüye yazın
- Henüz yapılmadıysa, 1. adıma dönün
Bu basit ve yeterince kısa görünüyor. Bu aktarım algoritması ile, dosyanın her baytı sadece iki kez işlenir: bir okuma, bir yazma.
Ancak ek olarak, Windows bazı verileri önbelleğe almak için bellek kullanır (sürücünün kendisi gibi). Bu nedenle, bir önceki parçanın yazılmasını bitirmesini beklemek ve ardından bir sonraki parçayı okumak yerine, bir önceki parçayı hala yazarken yeni bir parça okunabilir . Açıkçası bu sonsuza kadar dayanamaz, ancak Windows kalan tüm boş belleği, bellekte okunan dosyanın tamamı olmasa da, çoğunu saklamak için geçici bir arabellek olarak kullanabilir.
Büyük bir dosyayı (veya çok sayıda dosya içeren bir klasörü) bir sürücüden diğerine kopyalayarak ve hemen ikisini karşılaştırarak önbelleğe almayı çalışırken görebilirsiniz. Karşılaştırma , dosya (lar) hala bellekte olduğu için daha sonra yaptığınızdan çok daha hızlı olacaktır , bu yüzden onları sürücülerden okumaz.
Bellek çok hızlı olduğundan ve okuma hızları yazma hızlarından biraz daha hızlı olma eğiliminde olduğundan, nihai aktarım hızı yalnızca hedef sürücünün yazma hızı ile sınırlanır.
Terakopi, Explorer'ın yapmadığı bir dosya aktarımını yavaşlatabilecek iki şey yapabilir:
Aktarım sırasında yalnızca temel hataları kontrol eden Explorer'dan farklı olarak Teracopy, aktarım ortamındaki (ağ / sürücü kablosu / vb.) Sorunlar nedeniyle oluşabilecek veri bozulmasını önlemek için verilerin hedef sürücüye doğru yazıldığını doğrulayabilir. ) veya sürücünün kendisi (bozuk sektör vb.) Bunu yapmak, dosyayı orijinal ile karşılaştırmak için hedeften okuması gerektiği anlamına gelir .
Kullanılan algoritmaya ve dosyanın boyutuna bağlı olarak, doğrulama, Explorer'in ikisinin aksine her dosya / dosya yığını için üç sürücü işlemi kadar düşük (ancak en az değil) kadar optimize edilebilir : dosyayı kaynaktan okuyun, dosyasını hedefe gidin ve dosyayı hedeften okuyun.
Teracopy ile (HDD için optimize edilmiş bir algoritmayla) bir dosyayı kopyaladığınızda neler olduğuna bakın:
- Kaynak sürücüden bir yığın okuma
- Kaynak sürücüden okunan yığın
- Yığını sistem (ler) üzerinden gönderme
- Hedef sürücüye yazın
- Önbellekleri temizle
- Hedefi hedef sürücüden geri okuyun
- Hedefi hedef sürücüden ayırın
- Karmaları karşılaştır
- Bir sonraki adımı belirle
- Karma eşleşmiyorsa hata verin ve kullanıcıdan işlem yapmasını isteyin
- Karma eşleşir ve tamamlanmazsa, 1. adıma geri dönün
Sorun, aktarım sırasında dosyaları önbelleğe alırsanız, hedef sürücüdeki gerçek verileri okumadığınız için karşılaştırma işe yaramaz hale gelir, kaynakta bellekte önbelleğe alınmış kopyayı okuyorsunuz. Bu nedenle, doğru bir şekilde doğrulamak için önbelleği temizlemelisiniz. Bu, her okuma ve yazma işleminden sonra (herhangi bir önemli boyuttaki dosya için sayısız kez yapılması gereken ekstra bir işlemdir) veya tüm dosya aktarıldıktan hemen sonra yapılabilir .
Aşağıdaki ekran görüntüsüne göre, TeraCopy dosyalar aktarıldıktan sonra değil , doğrulama işlemi gerçekleştirir . Bu, bunun yerine bu CPU / RAM için optimize edilmiş aktarım algoritmasını kullandığı anlamına gelir:
- Kaynak sürücüden bir yığın okuma
- Yığını sistem (ler) üzerinden gönderme
- Hedef sürücüye yazın
- Henüz yapılmadıysa, 1. adıma dönün
- Kopyalama işlemi tamamlandı, çok açık önbellekler ve doğrulama
- Kaynak sürücüden bir yığın okuma
- Hedefi hedef sürücüden ayırın
- Hedef sürücüden bir yığın okuma
- Hedefi hedef sürücüden ayırın
- Karmaları karşılaştır
- Bir sonraki adımı belirle
- Karma eşleşmiyorsa hata verin ve kullanıcıdan işlem yapmasını isteyin
- Karma eşleşir ve tamamlanmazsa 6. adıma geri dönün
Bu algoritma CPU ve RAM'e biraz daha az zorlama getirirken, sürücü (ler) de çok daha fazla zorlama koyar, çünkü şimdi her dosya dört kez işlenmelidir : tüm dosyayı kaynaktan okuyun, hedefe yazın , ardından kaynaktan tekrar ve tekrar hedeften okuyun.
(TeraCopy ağ aktarımları için optimize edilmişse, tüm dosyayı doğrulama için ikinci kez göndermekten kaçınabilir ve yalnızca çok daha küçük olan ancak şu anda böyle görünmeyen karmaları gönderebilir ve ağ sürücüleri aynı şekilde ele alınır. yerel sürücü olarak, bu yüzden aslında kaynağı yeniden okur.)
Varsayılan olarak, TeraCopy önbelleği doğrulamaz veya kullanmaz. Doğrulamamak aktarımı hızlandıracaktır (veya daha doğru bir şekilde yavaşlatmayacaktır ), önbellek kullanmamanız ise yavaşlatacaktır.
Uygulama
Özel hız sonuçlarınızı belirlemek için ayarlarınızı değiştirip değiştirmediğinizi kontrol etmeniz gerekir. Ardından, farklı ayarlarla ne tür hızlar elde edeceğinizi tahmin etmeye çalışabilirsiniz (muhtemelen etkileşime gireceklerini unutmayın, bu yüzden basit bir toplama veya çıkarma meselesi değildir).
Bununla birlikte, sayılarınızı kullanarak bir cursory hesaplama yapalım:
- Yerel dosya aktarımı: 875Mbps (yani, sürücü hızı)
- Ağ hızı: 1Gbps = 119.21 MBps
- Windows Gezgini ile kopyalama: 109MBps
- TeraCopy ile kopyalama: 34MBps
Yarasadan hemen Explorer'ın dosya aktarımının neredeyse ağ verimliliğinizi en üst düzeye çıkardığını görüyoruz. Bir 1 Gbps bağlantı 1000000000 eşittir bit saniyede, ikili birimlerinin arasında bayt , 119MBps olup. Explorer 109MBps hıza ulaşıyor ve kalan 10MBps (önceki maksimum değeriniz eğlenceli bir şekilde :^Þ
) yük, arka plan yükü ve parçalanma ile kolayca açıklanabilir.
(Aktarım hızı neredeyse ağ hızına eşit olduğundan, Explorer'ın dosya aktarımının tek yönlü olduğunu ve her dosyanın yalnızca tek bir kopyasının gönderildiğini tahmin edebiliriz.) Explorer, dosya başına iki dosya erişimi için 110MBps alır.
Şimdi TeraCopy için. TeraCopy, Explorer'ın hızının neredeyse üçte birini alıyor gibi görünüyor.
Tercihler iletişim kutusunun kullandığı algoritmayı doğru bir şekilde gösterip göstermediğine bağlı olarak, TeraCopy aslında kopyayı kontrol edebilmesi için tüm kaynak dosyayı iki kez gönderiyor olabilir. Hemen, bu işlem hacmini yarıya indirir. Önbellek açıksa, bu da hızı düşürür, çünkü her yazının yeni bir yığın göndermeden önce bitmesini beklemek zorundadır. Doğrulama ile birleştirildiğinde, daha da düşebilir.
Doğrulama ve önbelleğe alma işleminiz varsa 34 MB / sn aktarım oranınız makul görünüyor. Doğrulamayı kapatır ve önbelleğe alırsanız, Explorer ile hemen hemen aynı olanı almalısınız (TeraCopy'nin kullandığı dosya aktarım kodunun Explorer'ın kullandığı dosya aktarım kodunun ne kadar farklı olduğuna bağlı olarak yine de biraz daha az veya biraz daha fazla alabilirsiniz).
Yaklaşık 10 GB aktarma havasındaysanız, ayarları değiştirmeyi ve dört permütasyonun her biri için aktarımı yeniden yapmayı deneyebilirsiniz ve aldığınız hızları not edin (güvenli olmak için önbellek çalışır arasında kapalı :) V+C+, V+C-, V-C+, V-C-
.