Lebih dari koneksi gigabit, Teracopy melakukan 31MB / s, tetapi Windows 8 melakukannya pada ~ 109MB per detik?
Apa sebenarnya yang menyebabkan ini? Dan bisakah saya mengaktifkan kecepatan seperti itu melalui Teracopy? Saya benar-benar menggali fitur tambahan yang dimiliki Teracopy, pasti akan merindukan mereka sekarang: D
Dua kata: verifikasi dan cache
Penjelasan Teknis
Ini adalah prosedur umum untuk menyalin file dengan Windows Explorer:
- Baca sepotong data dari drive sumber ke dalam memori
- Kirim bongkahan melalui sistem
- Tuliskan potongan ke drive tujuan
- Jika belum selesai, kembali ke langkah 1
Ini tampaknya sederhana dan cukup pendek. Dengan algoritma transfer ini, setiap byte file diproses hanya dua kali: satu baca, satu tulis.
Tetapi di samping itu, Windows menggunakan memori (seperti halnya drive itu sendiri) untuk menyimpan beberapa data. Jadi alih-alih menunggu potongan sebelumnya selesai ditulis, dan kemudian membaca potongan berikutnya, sepotong baru dapat dibaca sementara yang sebelumnya masih sedang ditulis. Jelas ini tidak bisa bertahan selamanya, tetapi Windows dapat menggunakan semua memori bebas yang tersisa sebagai penyangga sementara untuk menyimpan sebagian besar, jika tidak semua file yang sedang dibaca dalam memori.
Anda dapat melihat caching beraksi dengan menyalin file besar — atau folder yang berisi banyak file — dari satu drive ke drive lain, lalu segera membandingkan keduanya. Perbandingannya akan jauh lebih cepat pada saat itu daripada jika Anda melakukannya nanti karena file tersebut masih dalam memori, jadi itu sebenarnya tidak membacanya dari drive.
Karena memori sangat cepat, dan kecepatan baca cenderung sedikit lebih cepat daripada kecepatan tulis, laju transfer akhir hanya dibatasi oleh kecepatan tulis drive tujuan.
Teracopy dapat melakukan dua hal yang dapat memperlambat transfer file yang tidak dilakukan Explorer:
Tidak seperti Explorer yang hanya memeriksa kesalahan mendasar selama transfer, Teracopy sebenarnya dapat memverifikasi bahwa data ditulis dengan benar ke drive tujuan untuk mencegah korupsi data yang dapat terjadi karena masalah pada media transfer (kabel jaringan / drive / dll. ) atau drive itu sendiri (bad sector, dll.) Melakukan ini berarti ia harus membaca file dari tujuan untuk membandingkannya dengan yang asli.
Bergantung pada algoritma yang digunakan dan ukuran file, verifikasi dapat dioptimalkan serendah (tetapi tidak kurang dari) tiga operasi drive untuk setiap file / file-chunk sebagai lawan dua Explorer: membaca file dari sumber, menulis file ke tujuan, dan membaca file dari tujuan.
Lihatlah apa yang terjadi ketika Anda menyalin file dengan Teracopy (dengan algoritma HDD-dioptimalkan):
- Baca sepotong dari drive sumber
- Hash chunk baca dari drive sumber
- Kirim bongkahan melalui sistem
- Tulis ke drive tujuan
- Bersihkan cache
- Baca potongan dari drive tujuan
- Hash potongan dari drive tujuan
- Bandingkan hash
- Tentukan langkah selanjutnya
- Jika hash tidak cocok, berikan kesalahan dan minta pengguna untuk bertindak
- Jika hash cocok dan belum selesai, kembali ke langkah 1
Masalahnya adalah bahwa jika Anda men-cache file saat transfer, perbandingan menjadi tidak berguna karena Anda tidak membaca data aktual pada drive tujuan, Anda membaca salinan yang di-cache dalam memori dari sumber. Oleh karena itu, untuk memverifikasi dengan benar, Anda harus menghapus cache. Ini dapat dilakukan setelah masing-masing membaca dan menulis (yang merupakan operasi tambahan yang akhirnya akan selesai dilakukan berkali-kali untuk file dengan ukuran signifikan), atau hanya sekali setelah seluruh file telah ditransfer.
Menurut tangkapan layar di bawah ini, TeraCopy melakukan verifikasi setelah file ditransfer, bukan selama. Ini artinya menggunakan algoritma transfer yang dioptimalkan CPU / RAM ini sebagai gantinya:
- Baca sepotong dari drive sumber
- Kirim bongkahan melalui sistem
- Tulis ke drive tujuan
- Jika belum selesai, kembali ke langkah 1
- Salin selesai, begitu jelas cache dan menjadi verifikasi
- Baca sepotong dari drive sumber
- Hash potongan dari drive tujuan
- Baca sepotong dari drive tujuan
- Hash potongan dari drive tujuan
- Bandingkan hash
- Tentukan langkah selanjutnya
- Jika hash tidak cocok, berikan kesalahan dan minta pengguna untuk bertindak
- Jika hash cocok dan belum selesai, kembali ke langkah 6
Walaupun algoritma ini mengurangi ketegangan pada CPU dan RAM, algoritma ini juga memberikan lebih banyak tekanan pada drive karena sekarang setiap file harus diproses empat kali: baca seluruh file dari sumber, tulis ke tujuan. , lalu baca lagi dari sumber, dan lagi dari tujuan.
(Jika TeraCopy dioptimalkan untuk transfer jaringan, maka itu dapat menghindari pengiriman seluruh file untuk verifikasi kedua kalinya dan hanya mengirim hash yang jauh lebih kecil, tetapi saat ini tampaknya tidak demikian, dan driver jaringan diperlakukan sama. sebagai drive lokal, sehingga benar-benar membaca ulang sumbernya.)
Secara default, TeraCopy tidak memverifikasi atau menggunakan cache. Tidak memverifikasi akan mempercepat transfer (atau lebih tepatnya, tidak memperlambatnya ), sementara tidak menggunakan cache akan memperlambatnya.
Aplikasi
Untuk menentukan hasil kecepatan spesifik Anda, Anda harus memeriksa pengaturan Anda untuk melihat apakah Anda telah mengubahnya. Kemudian Anda dapat mencoba memperkirakan kecepatan seperti apa yang akan Anda dapatkan dengan pengaturan yang berbeda (perlu diketahui bahwa mereka kemungkinan akan berinteraksi, jadi ini bukan masalah yang mudah untuk menambah atau mengurangi).
Yang mengatakan, mari kita lakukan perhitungan sepintas menggunakan nomor Anda:
- Transfer file lokal: 875Mbps (kecepatan drive)
- Kecepatan jaringan: 1Gbps = 119,21 MBps
- Salin melalui Windows Explorer: 109MBps
- Salin melalui TeraCopy: 34MBps
Langsung saja, kami melihat bahwa transfer file Explorer hampir memaksimalkan throughput jaringan Anda. Sebuah 1Gbps link sama dengan 1000000000 bit per detik, yang di unit biner dari byte , adalah 119MBps. Explorer adalah clocking 109MBps, dan 10MBps tersisa (yang cukup mengejutkan adalah maks Anda sebelumnya :^Þ
) dapat dengan mudah diperhitungkan dengan overhead, beban latar, dan fragmentasi.
(Karena kecepatan transfer hampir sama dengan kecepatan jaringan, kami dapat menduga bahwa transfer file Explorer adalah satu arah dan hanya satu salinan dari setiap file yang dikirim.) Explorer mendapat 110MBps untuk dua akses file per file.
Sekarang untuk TeraCopy. Tampaknya TeraCopy mendapatkan hampir sepertiga kecepatan Explorer.
Tergantung pada apakah atau tidak dialog preferensi secara akurat menunjukkan algoritma yang digunakannya, maka TeraCopy sebenarnya bisa mengirim seluruh file sumber dua kali sehingga dapat memeriksa salinan. Segera, ini memotong throughput menjadi dua. Jika cache aktif, maka itu juga mengurangi kecepatan karena harus menunggu setiap penulisan selesai sebelum dapat mengirim potongan baru. Ketika dikombinasikan dengan verifikasi, itu dapat merobohkannya lebih banyak lagi.
Tingkat transfer 34MBps Anda tampaknya masuk akal jika Anda memiliki verifikasi dan caching off. Jika Anda mematikan verifikasi dan melakukan caching, Anda harus mendapatkan hampir sama dengan Explorer (Anda mungkin masih mendapatkan sedikit kurang atau bahkan sedikit lebih tergantung pada seberapa berbeda kode transfer file yang digunakan TeraCopy dari yang digunakan Explorer).
Jika Anda berminat untuk mentransfer hampir 10GB, maka Anda bisa juga mencoba mengubah pengaturan dan mengulangi transfer untuk masing-masing dari empat permutasi dan mencatat kecepatan yang Anda dapatkan (agar aman, pesanlah sehingga cache berada mati antara berjalan:) V+C+, V+C-, V-C+, V-C-
.