Apakah lebih lambat untuk menyalin dua file sekaligus daripada menyalin satu demi satu? [duplikat]

15

Bos saya mengatakan perlu waktu lebih lama untuk menyalin dua file pada saat yang sama daripada melakukan satu dan kemudian yang lain karena hard drive harus terus beralih kepala antara dua lokasi pada disk. Apakah ini benar? Sepertinya saya bahwa sistem operasi harus cukup pintar untuk memperbaikinya (yaitu, harus tahu untuk menyalinnya secara berurutan). Apakah ini benar ketika menyalin ke drive yang terhubung ke port USB?

EDIT: apakah ada faktor lain mengenai sistem file yang menjadi faktornya? Misalnya apakah itu membuat perbedaan menyalin direktori 1 yang berisi 10 file dibandingkan menyalin 10 file dari seluruh disk? Saya bertanya-tanya hanya tentang satu media sumber dan satu media tujuan (tidak ada pembacaan dari beberapa drive).

Celeritas
sumber
Terkadang, kadang tidak.
Daniel R Hicks
Saya pikir pertanyaan ini dapat mengambil manfaat dari tolok ukur yang sebenarnya, daripada dugaan berpendidikan oleh sebagian besar penjawab di sini. Adakah yang punya disk berputar dan waktu luang? Saya percaya untuk SSD, perbedaannya mungkin diabaikan; sedangkan untuk harddisk, saya yakin jawabannya dapat berkisar dari penalti kinerja utama hingga mungkin sedikit manfaat tergantung pada jumlah dan ukuran file dan kinerja relatif dari disk sumber dan target (jika mereka berbeda).
Lie Ryan
1
Selain itu, jika Anda mentransfer melalui USB2, maka kemungkinan tidak akan ada perbedaan; kecepatan baca harddisk tipikal adalah sekitar 50-100MB / s sedangkan kecepatan maksimum USB2 adalah 32MB / s, sehingga bottleneck kemungkinan akan menjadi port USB daripada karakteristik harddisk karena buffering. Dengan kata lain, sulit untuk mengatakannya.
Lie Ryan
@ LieRyan Sayang sekali Anda tidak memposting komentar sebagai jawaban karena paling cocok dengan pertanyaan yang ingin saya tanyakan mengenai menyalin dari 1 hard disk ke 1 hard disk eksternal dengan USB 2.
Celeritas

Jawaban:

12

Saya akan menunda Anda untuk pertanyaan ini . Tampaknya menjalankan dua operasi penyalinan pada disk yang sama secara bersamaan (meskipun dimulai melalui operasi penyalinan terpisah) memang akan memakan waktu lebih lama sebagai hasil dari latensi yang dihasilkan oleh kepala yang bolak-balik di antara operasi yang bersaing.

Namun, jika operasi penyalinan dimulai secara bersamaan, sebagian besar sistem operasi modern seperti yang Anda katakan cukup pintar untuk melakukan antrian transfer satu per satu, dan akan menghasilkan waktu penyalinan yang agak lebih cepat.

Rupanya ada sejumlah aplikasi yang tersedia untuk memaksa operasi copy file ke antrian dan melaksanakan secara berurutan seperti Teracopy dan FastCopy

Namun, melakukan operasi penyalinan bersamaan pada beberapa volume fisik adalah masalah lain. Seperti halnya mentransfer file melalui protokol alternatif.

Mengenai pertanyaan Anda tentang menyalin ke drive yang terhubung ke port USB, itu sangat tergantung pada jenis memori yang digunakan drive dan spesifikasi USB yang digunakan (tentu saja hambatan yang mencolok untuk USB 1.0 dan 2.0), serta yang sebelumnya faktor-faktor yang disebutkan mengenai volume sumber salinan.

bosco
sumber
1
apakah itu juga tidak tergantung pada kemampuan prosesor sistem?
Raghunandan
@Raghunandan Poin yang adil - saya percaya itu benar-benar tergantung pada keadaan. Multiple core / hyperthreading tentu akan meningkatkan kecepatan penyalinan jika membaca data dari beberapa volume fisik atau SSD / RAMDisk, tetapi dalam skenario HDD tunggal faktor pembatas kecepatan penyalinan kemungkinan masih berada pada kecepatan IO dari disk dan keberadaan head. -movement latency (saya yakin pasti ada istilah yang lebih tepat untuk itu ...).
bosco
3
@Raghunandan - Mungkin bukan OS seperti sistem file (NTFS vs EXT4).
Enigma
2
@Raghunandan PC-24000 DDR3 memiliki bandwidth 24 GB / s dan itu masih bukan batas untuk CPU modern, jadi saya tidak berpikir itu benar-benar masalah CPU - bahkan jika operasi HDD akan 100 kali lebih efektif daripada operasi RAM. , CPU masih bisa menangani setidaknya 245 MB / s dan itu masih lebih dari bandwidth SSD tercepat.
gronostaj
1
@Raghunandan partisi linux Anda juga mungkin berada di bagian disk yang lebih cepat daripada partisi Windows (misalnya di luar v. Di dalam)
ernie
16

Ada banyak faktor di sini yang dapat mempengaruhi ini.

  • Drive sumber - apakah ini disk pemintalan atau SSD? Jika memutar disk, tata letak file dapat mempengaruhi kinerja. Karena kedua file tersebut kemungkinan berada di bagian disk yang berbeda, ini akan dikenakan hukuman kepala. Seperti yang Anda katakan, jika Anda memilih dua file sekaligus, dan memulai salinan seperti itu, OS akan menangani salinan secara berurutan.
  • Layout file - fragmentasi file (baik pada sumber dan tujuan) dapat mempengaruhi kinerja untuk drive non-SSD
  • Tujuan - jika Anda memiliki dua aliran penulisan, menulis ke satu target, maka Anda kembali ke masalah pencarian kepala (sekali lagi, dengan asumsi bukan SSD), dan Anda bisa sangat menyimpangkan file. Saya dulu bekerja di perusahaan yang membuat penyimpanan berkinerja tinggi, dan salah satu masalah besar bagi mereka adalah berapa banyak aliran video real-time yang bisa mereka baca atau tulis (video 2k membutuhkan ~ 300 mcg per detik). Bergantian menulis akan memperlambat proses penyalinan, dan juga membuat membaca kembali file lebih lambat. Tentu saja, jika disk Anda terfragmentasi untuk memulai, file Anda akan tetap ditulis interleaved.
  • satu / banyak sumber / target - tergantung pada apakah file Anda semua berasal dari satu drive atau semua ditulis ke satu drive, masalah pencarian kepala bisa lebih atau kurang
  • ukuran file - untuk file yang sangat kecil, masalah pencarian kepala tidak masalah, karena kepala harus mencari file berikutnya (artinya, bukannya bolak-balik di antara file, kepala akan membaca file secara berurutan)

Adapun jika OS cukup pintar untuk memperbaikinya, secara umum, mereka. Yaitu, jika Anda menyalin beberapa file secara bersamaan (mis. Pikirkan memilih beberapa file sekaligus dan seret-n-drop).

Tentu saja, jika Anda memulai dua cpperintah, maka itu akan menjalankan dua perintah, atau di Windows jika Anda menyalin / menempelkan file yang terpisah, dan mendapatkan dua "copy" progres windows di layar, maka optimasi tidak akan terjadi. Dalam hal ini, Anda telah secara eksplisit memberi tahu OS bahwa Anda ingin menjalankan dua salinan secara bersamaan, sehingga tidak akan memutuskan satu salinan lebih penting daripada yang lain dan mulai mengantri.

ernie
sumber
+1 Satu-satunya hal yang hilang adalah konfigurasi RAID , disinggung dengan "sumber tunggal / ganda / target".
David Harkness
1
-1 sebagian besar dari apa yang dikatakan tidak terkait dengan pertanyaan
Celeritas
1

Jika Anda memilih lebih dari satu dan menyalin - baik dari GUI, atau dengan menggunakan perintah seperti "salin C: \ folder * D: \ folder \" - maka file-file AKAN disalin secara berurutan pula, membuat pertanyaan diperdebatkan.

Jika Anda menyalin beberapa file, dan ketika sedang menyalin, mulailah menyalin lebih banyak file - baik dengan dua operasi terpisah dari GUI, atau dengan dua perintah terpisah dijalankan secara bersamaan seperti "cp -r / usr / bin / / opt / bin / & cp -r / usr / local / bin / / opt / local / bin / "- maka kinerja Anda hampir pasti akan menurun - mungkin sedikit (drive solid state high-end, file besar di kedua operasi penyalinan) atau mungkin dengan TON (disk pemintalan, file yang relatif kecil dalam satu atau kedua operasi). Sistem operasi yang lebih baik dapat mengurangi hukuman kinerja sampai tingkat tertentu - misalnya, kernel Linux modern menggunakan penjadwal I / O CFQ (Completely Fair Antrian), yang pada beberapa derajat akan "blok" operasi blok untuk meningkatkan efisiensi - tetapi Anda masih akan mengambil hit kinerja. Dalam beberapa kasus hit mungkin BESAR,

TL; DR - hanya menjalankan satu operasi penyalinan pada satu waktu, terlepas dari berapa banyak file individu yang termasuk dalam operasi itu , jika Anda khawatir tentang kinerja.

Jim Salter
sumber