Pertanyaan Kecepatan multi-core dan copy


Yang ingin saya lakukan adalah menyalin 500K file.

Saya ingin menyalin di dalam server dari satu tujuan ke yang lain. Ini termasuk email yang kebanyakan banyak file kecil.

Yang lebih dari 23 GB saja tetapi membutuhkan waktu begitu lama (lebih dari 30 menit dan belum selesai), perintah linux cp juga hanya menggunakan 1 CPU.

Jadi jika saya skrip untuk menggunakan beberapa cps, apakah itu akan membuatnya lebih cepat.

Sistemnya 16 core, 16 GB Ram, 15K Drivers (15000 RPM SATA).

Apa saja pilihan lain?

Saya percaya tarring dan tidak terikat akan memakan waktu lebih lama dan tidak akan menggunakan multi-core ..


4
2017-10-21 22:39


asal


lihat jawaban saya untuk pertanyaan ini seperti mengapa menyalin banyak file membutuhkan banyak disk I / O: superuser.com/questions/344534/… - sawdust


Jawaban:


Hambatan Anda adalah kecepatan hard-drive. Multi-core tidak bisa mempercepat ini.


6
2017-10-21 22:45



Perangkat keras . ketika diuji dengan hdpram ia mengembalikan 278MB / s apakah Anda yakin tentang ini? hanya perlu waktu 100 detik untuk menyalin file 23GB. Jadi menggunakan CP beberapa orang dalam multi-threading progams tidak akan meningkatkan ini juga? - Phyo Arkar Lwin
Tidak, tidak, tidak akan. Kemacetan hampir pasti kecepatan baca / tulis dari media fisik itu sendiri kecuali Anda menggunakan peralatan tingkat perusahaan. - Shinrai
@ V3ss0n Saya tahu bahwa hard drive bukanlah akses acak, yang mencegahnya diakses secara paralel. - Pubby
@ Pubby8 - Umm, HDD adalah perangkat akses acak (di tingkat blok / sektor). Ini sering dibandingkan dengan pita (misalnya pita magnetik) yang merupakan perangkat blok berurutan. Saya menduga Anda mencoba menyatakan bahwa perangkat yang khas hanya dapat melakukan satu operasi I / O pada satu waktu. Ada binatang bernama disk drive port ganda yang dapat melakukan dua operasi sekaligus, tetapi ada masalah sistem file yang membuat ini agak rumit. - sawdust
Yang saya ingin pastikan adalah, ada program yang saya buat dengan python, yang mengekstraksi teks dari berbagai format file menggunakan berbagai jenis parser (doc, pdf, eml, dll) ke dalam database untuk kemudian mengindeks dan mencari. Pada awalnya skrip hanya proses tunggal, dan setelah membuatnya multi-proses menggunakan modul multiprocessing (Fork tingkat tinggi, sama seperti forking) meningkatkan kecepatan secara signifikan. Tetapi hanya bekerja dengan baik hingga 4 proses, pada 6 proses IO Stall dan benar-benar memperlambat, dan bahkan membekukan seluruh proses kapan-kapan. - Phyo Arkar Lwin


Mengatasi satu file besar lebih cepat daripada memindahkan banyak file kecil karena ada banyak latensi dengan setup dan meruntuhkan setiap operasi - juga disk dan OS dapat melakukan banyak pengunggahan dengan satu file besar. Jadi tarring terlebih dahulu akan membuatnya lebih cepat. Meskipun begitu Anda memperhitungkan waktu yang diambil untuk tar, itu mungkin tidak mempercepat terlalu banyak hal.

Perhatikan bahwa Anda hanya membaca dari satu disk, jadi menyejajarkan panggilan Anda ke disk dapat memperlambat segalanya, di mana ia mencoba untuk melayani beberapa file pada saat yang bersamaan.


3
2017-10-21 22:55



Tidakkah Anda perlu membaca semua file, membuat tar, menghapus file asli, dan kemudian membuat salinannya? Sepertinya itu pasti akan lebih lama. - Pubby
Ya pasti - saya setuju dengan jawaban Anda, saya hanya untuk memberikan beberapa info tambahan. Mengingat bahwa salinan tampaknya sedang berlangsung pada saat OP menulis pertanyaan, tampaknya ini merupakan latihan pengumpulan informasi. Akan ada keadaan di mana tarring pertama dapat memberikan kinerja keseluruhan yang lebih baik. - Paul


Apakah semuanya ada di direktori yang sama? Ada skrip yang memulai beberapa cp: http://www.unix.com/unix-dummies-questions-answers/128363-copy-files-parallel.html

Untuk pohon, Anda perlu menyesuaikannya.


0
2017-10-21 23:06





Meskipun pertanyaannya sudah cukup lama, saya pikir cara terbaik adalah zip menggunakan multi-core seperti lbzip2 dan pbzip2. Transfer file yang dikompresi dan dekompresi menggunakan multi-core. Anda dapat menemukan tentang perintah di Internet.


0
2018-06-06 03:28



Bisakah Anda menjelaskan mengapa ini membutuhkan lebih sedikit sumber daya disk? (yang mungkin merupakan hambatan). - Hennes