Mengapa kecepatan flash drive saya melambat saat menyalin?

27

Setelah beberapa menit menyalin, prosesnya menjadi semakin lambat. Mengapa?

misalnya dimulai dengan 20 MByte / detik, dan ketika selesai dengan itu, itu @ 10 MByte / s.

Beragam file, besar, kecil, dll.

UPDATE: pertanyaan mengenai berbagai sistem operasi, jadi itu adalah "pertanyaan umum"

LanceBaynes
sumber
Berapa banyak Anda menyalin versus berapa banyak memori bebas yang Anda miliki di komputer Anda?
KCotreau
PC -> drive USB-FLASH: beberapa ratus GBytes gratis -> beberapa GBytes gratis
LanceBaynes
1
Saya menduga Anda memiliki file yang di-cache dalam memori pada awalnya sehingga mereka mentransfer dengan cepat, dan kemudian setelah mereka mulai dipindahkan dari hard drive, itu melambat. Saya tidak yakin dalam kasus Anda.
KCotreau
jadi Anda menyarankan saya untuk menggunakan perintah "sinkronisasi" lebih sering?
LanceBaynes
Saya tidak mengerti apa yang Anda maksud dengan perintah sinkronisasi. Anda tidak memberikan konteks pada pertanyaan. Saya bahkan tidak yakin apa OS.
KCotreau

Jawaban:

25

Perilaku ini tidak spesifik untuk flash drive Anda, Anda dapat melihatnya dengan hard drive juga. Ini ada hubungannya dengan mekanisme caching yang digunakan kebanyakan sistem operasi dan disk untuk mempercepat penulisan kecil.

20mb / s yang Anda lihat adalah data yang ditulis ke cache disk (biasanya cepat tetapi memori kecil). Setelah cache ini penuh, cache harus dibuang ke disk - dan sekarang Anda dihambat oleh disk yang lebih lambat.

Contoh 1: Efeknya benar-benar diucapkan ketika Anda memiliki controller dengan cache yang besar (seperti kontroler RAID5 yang baik) di mana ~ 500mb data dapat di-cache dengan cepat sebelum harus di-flush ke disk.

Contoh 2: Anda dapat melihat cache sedang dimainkan jika Anda menarik flash drive pada saat yang sama ketika salinan file "selesai". Pada titik ini file Anda terbagi antara disk dan cache - sehingga salinannya "selesai" sejauh menyangkut sistem operasi, tetapi pengontrol disk masih perlu menulis apa yang tersisa di cache ke disk. Jika Anda memasukkan flash drive kembali dan memeriksa file Anda akan melihat itu tidak semua ada di sana.

Penafian: Contoh-contoh ini tidak akan berfungsi jika Anda tidak mengaktifkan cache tulis di sistem operasi Anda / pada disk.

Lebih lanjut, jika itu bukan caching disk di tempat kerja maka kemungkinan apa yang Anda lihat adalah efek fragmentasi. Karena disk semakin penuh dan semakin sedikit ruang kosong yang bersebelahan tersedia dan sistem file harus bekerja lebih keras untuk menemukan tempat untuk meletakkan file Anda.

ta.speot.is
sumber
Juga perlu diingat itu adalah flash drive. Perangkat kerasnya tidak pernah dioptimalkan untuk kecepatan, tetapi lebih terjangkau.
surfasb
Saya tidak berpikir itu akan menjelaskan mengapa kinerja akan menurun selama salinan file yang panjang. Sebaliknya kinerja akan menurun selama masa pakai drive, ya?
ta.speot.is
Masuk akal. Mereka dioptimalkan untuk kecepatan burst, bukan operasi berkelanjutan. Pikirkan ukuran rata-rata file yang dimuat ke flash drive. Apakah Anda akan mengoptimalkan transfer file selama 30 detik atau mengoptimalkan untuk transfer selama 2 detik? Tambahkan itu ke dalam dua contoh Anda, dan itu menjelaskan banyak hal.
surfasb
Ini seperti ketika Anda mencoba menjejalkan dua orang melalui pintu biasa pada suatu waktu. Pada awalnya, Anda bisa menghitung. Wow, saya beralih dari nol orang melewati pintu itu menjadi dua sekaligus. Kecepatan saya sangat bagus. Kemudian garis menjadi lebih panjang dan pengambilan sampel Anda menjadi lebih baik dan Anda akhirnya menyadari bahwa sampel kecil = matematika buruk. . .
surfasb
@ ta.speot.is Saya kira cache disk yang Anda sebutkan ini ditangani oleh OS pada hard disk dan berbeda dari cache perangkat keras yang dimiliki hard drive secara internal, bukan?
sepehr
1

Sementara caching memang menyebabkan beberapa hal ini, itu bukan satu-satunya faktor. Jika caching adalah satu-satunya faktor, maka kita akan berharap kecepatan tulis turun dengan cepat dari beberapa ratus MB / s ke kecepatan tulis aktual drive dengan sangat cepat, dan tetap di sana selama sisa penulisan. Namun, ini bukan yang saya amati ketika melakukan transfer besar ke dan dari disk (misalnya membakar gambar boot). Sebaliknya, apa yang saya amati adalah bahwa kecepatan secara bertahap menurun selama seluruh operasi.

Perlambatan ini disebabkan oleh remanensi data pada chip flash yang digunakan untuk menyimpan data yang mengharuskan beberapa blok ditulis lebih dari satu kali.

Di dalam chip flash, ada blok data yang dapat ditulis. Saat menulis, hanya ada dua hal yang dapat dilakukan komputer: ia dapat menghapus seluruh blok, atau mengubah beberapa (atau semua) bit dalam satu blok dari 0 menjadi 1.

Namun, beberapa blok tersebut lebih baik daripada yang lain, terutama di flash drive berkualitas rendah, dan sebagai hasilnya ketika menulis data baru, beberapa bit kadang-kadang dapat kembali ke 0 sendiri setelah ditulis, dan tidak bisa berubah. Jadi, ketika menulis ke blok, OS perlu memeriksa untuk memastikan bahwa semua data ditulis dengan benar, dan jika tidak harus mengulang blok dengan menulis data yang sama ke blok yang sama dua atau tiga kali sampai data menempel.

Jadi, ketika komputer Anda menulis banyak data ke flash drive, berikut adalah penjelasan (tidak sepenuhnya akurat, tetapi cukup baik) untuk bagaimana melakukannya:

  1. Ambil set balok pertama yang akan ditulis, dan tulis semuanya.
  2. Baca kembali semua blok yang baru saja kita tulis, dan buat daftar yang tidak cocok
  3. Tulis set blok berikutnya, bersama dengan yang tidak ditulis dengan benar terakhir kali.
  4. Ulangi 2-3 hingga semua blok telah ditulis dengan benar.

Ketika komputer menulis ke drive, itu melaporkan tingkat di mana ia menulis blok ke drive untuk pertama kalinya. Karena itu juga harus menulis ulang blok sebelumnya pada saat yang sama, total throughput yang dapat digunakan untuk blok perawan turun karena jumlah penulisan ulang yang juga perlu terjadi meningkat. Dengan demikian, kecepatan tulis jelas berkurang dari waktu ke waktu.

AJMansfield
sumber
Saya sedang menulis file 12 Gig 7zip ke USB 3.0 flash drive baru yang diformat sebagai NTFS. Itu terjadi sekitar 100 MB / s untuk menit pertama kemudian turun menjadi 25ish MB / s selama sekitar satu menit, kemudian turun menjadi 11 atau lebih selama sekitar 10 menit. Itu bukan kemiringan ke bawah secara bertahap, itu adalah 3 dataran tinggi yang berbeda.
Eric
Saya menyalin arsip dari laptop i7 lama saya dengan 16 Gigs of RAM. Menyalin arsip 7zip yang sama dari thumbdrive yang sama pada laptop Xeon baru saya dengan 32 Gigs of RAM membutuhkan waktu 2 menit dan tidak ada penurunan kecepatan.
Eric
0

Ketika file ditulis ke drive baik itu USB flash drive atau hard drive data TIDAK / TIDAK PERNAH membaca kembali untuk melihat apakah itu cocok. Itu akan berlangsung selamanya. verifikasi penulisan dilakukan oleh perangkat keras (Cyclic Redundancy check) dan jika terjadi kesalahan, itu dikirim kembali ke aplikasi dari perangkat keras mendeteksi kesalahan. Kemacetan yang terjadi dan melambat (bahkan hingga jeda) disebabkan oleh penulisan CPU yang lebih cepat daripada yang dapat ditangani perangkat. Anda tidak akan menemukan ini terjadi pada hard drive internal. Anda tidak akan pernah melihat apa yang sebenarnya terjadi pada OS Windows tetapi di Linux Anda benar-benar dapat melihat bahwa CPU berhenti sampai perangkat USB mengatakan OK untuk melanjutkan

stevedonato
sumber
Perbedaan kecepatan tulis perangkat penyimpanan yang berbeda bisa sangat ekstrem, misalnya membandingkan kecepatan tulis kartu SD lama dengan kecepatan tulis SSD SATA III.
karel
3
Tolong jangan menghina pribadi. Meskipun pos Anda mungkin benar, Anda harus mengeditnya untuk mematuhi standar komunitas kami.
Ben N