Mengapa Linux 30x lebih cepat dari Windows 10 dalam menyalin file?

20

Saya mendapat 20,3 Gig file dan folder dengan total 100k + item. Saya menduplikasi semua file itu dalam satu direktori dari Windows 10, dan saya butuh waktu 3 jam untuk menyalin. Selesai

Suatu hari, saya boot di Linux Fedora 24, membuka kembali folder yang sama dan bam! Butuh saya hanya 5 menit untuk menduplikatnya di tempat yang sama tetapi direktori berbeda.

Mengapa Linux begitu cepat? Dan Windows sangat lambat?

Ada pertanyaan serupa di sini

Apakah (Ubuntu) algoritma penyalinan file Linux lebih baik daripada Windows 7?

Tetapi jawaban yang diterima sangat kurang.

Jones G
sumber
Anda tidak menggunakan "Windows" atau "Linux" untuk menyalin file, Anda menggunakan beberapa program khusus yang berjalan di masing-masing sistem operasi tersebut. Program sangat bervariasi dalam metode yang mereka gunakan, dan pengorbanan yang mereka buat. Yang mana yang Anda gunakan? Dan bagaimana?
kreemoweet
5
@kreemoweet: Begitu juga sistem operasi - NTFS Windows dikenal sangat buruk menangani banyak file kecil, dibandingkan dengan kebanyakan filesystem lain.
user1686
2
Dan downvote bagus dari penggemar Windows ya. Soalnya, menyalin file, meskipun sederhana memiliki banyak aplikasi mulai dari cadangan data dalam bisnis hingga studi ilmiah. Misalnya, di CERN, ada Petabytes data yang harus ditangani, penyalinan lambat tidak dapat diterima.
Jones G
Dari tautan yang sama - periksa jawaban ke-2 dari bawah. Linux menyimpan semua file ke dalam RAM yang tersedia dan menulis ke disk ketika mereka bisa - karenanya mengapa terlihat lebih cepat (karena hanya perlu membaca untuk saat ini, dan menulis kapan mereka bisa).
Darius
Sistem file @DominicGuana melakukan bagiannya (ext3 / ext4 dapat mengalokasikan potongan 100MB sekaligus). Apakah Anda menganggap bahwa antivirus di bawah windows dapat memainkan peran (melambat) juga? BTW untuk masalah yang sama dengan aliran akuisisi data SLAC (setelah pemicu tingkat 1 ada terlalu banyak data) kami telah belajar menulis pada HDD secara paralel ...
Hastur

Jawaban:

25

Dasar-dasar itu memecah menjadi beberapa komponen utama dari total sistem: elemen UI (bagian grafis), kernel itu sendiri (apa yang berbicara dengan perangkat keras), dan format di mana data disimpan (yaitu sistem file ).

Akan mundur, NTFStelah menjadi de-facto untuk Windows untuk beberapa waktu, sedangkan de-facto untuk varian Linux utama adalah extsistem file. Sistem file NTFS sendiri tidak berubah sejak Windows XP (2001), banyak fitur yang ada (seperti penyusutan partisi / penyembuhan, NTFS transaksional, dll.) Adalah fitur OS (Windows Vista / 7/8/10) dan bukan NTFS itu sendiri. Sistem extfile memiliki rilis stabil besar terakhir ( ext4) pada tahun 2008. Karena sistem file itu sendiri yang mengatur bagaimana dan di mana file diakses, jika Anda menggunakan ext4ada kemungkinan Anda akan melihat peningkatan kecepatan dari NTFS; Namun perhatikan jika Anda menggunakan ext2Anda mungkin memperhatikan bahwa itu sebanding dalam kecepatan.

Bisa juga bahwa satu partisi diformat dalam potongan yang lebih kecil daripada yang lain. Default untuk sebagian besar sistem adalah ukuran cluster 4096 byte 1 , 2 , tetapi jika Anda memformat ext4partisi Anda menjadi sekitar 16k 3 maka setiap pembacaan pada ext4sistem akan mendapatkan 4x data vs sistem NTFS (yang bisa berarti 4x file tergantung pada apa yang disimpan dimana / bagaimana dan seberapa besar, dll). Fragmentasi file juga dapat berperan dalam kecepatan. NTFS menangani fragmentasi file sangat berbeda dari extsistem file, dan dengan 100k + file, ada peluang bagus ada beberapa fragmentasi.

Komponen selanjutnya adalah kernel itu sendiri (bukan UI, tetapi kode yang benar-benar berbicara dengan perangkat keras, OS yang sebenarnya). Di sini, jujur ​​tidak ada banyak perbedaan. Kedua kernel dapat dikonfigurasikan untuk melakukan hal-hal tertentu, seperti caching / buffering disk, untuk mempercepat membaca dan menulis yang dirasakan, tetapi konfigurasi ini biasanya memiliki pertukaran yang sama terlepas dari OS; mis. caching mungkin secara masif meningkatkan kecepatan menyalin / menyimpan, tetapi jika Anda kehilangan daya saat menulis cache (atau menarik drive USB), maka Anda akan kehilangan semua data yang tidak ditulis ke disk dan bahkan mungkin data rusak sudah ditulis ke disk.

Sebagai contoh, salin banyak file ke drive USB yang diformat FAT di Windows dan Linux. Di Windows mungkin butuh 10 menit, sedangkan di Linux butuh 10 detik; segera setelah Anda menyalin file, hapus drive dengan aman dengan mengeluarkannya. Pada Windows itu akan segera dikeluarkan dari sistem dan dengan demikian Anda dapat menghapus drive dari port USB, sementara di Linux mungkin butuh 10 menit sebelum Anda benar-benar dapat menghapus drive; ini karena caching (yaitu Linux menulis file ke RAM kemudian menulisnya ke disk di latar belakang, sedangkan Windows tanpa cache langsung menulis file ke disk).

Terakhir adalah UI (bagian grafis yang berinteraksi dengan pengguna). UI mungkin jendela cantik dengan beberapa grafik keren dan bilah bagus yang memberi saya gambaran umum tentang berapa banyak file yang sedang disalin dan seberapa besar semua itu dan berapa lama waktu yang dibutuhkan; UI mungkin juga konsol yang tidak mencetak informasi apa pun kecuali jika sudah selesai. Jika UI harus terlebih dahulu melalui setiap folder dan file untuk menentukan berapa banyak file yang ada, ditambah seberapa besar mereka dan memberikan perkiraan kasar sebelum benar-benar dapat mulai menyalin, maka proses salin dapat memakan waktu lebih lama karena UI perlu untuk melakukan hal ini. Sekali lagi, ini benar terlepas dari OS.

Anda dapat mengonfigurasi beberapa hal agar sama (seperti caching disk atau ukuran kluster), tetapi secara realistis hal itu bermuara pada bagaimana semua bagian saling terkait untuk membuat sistem bekerja dan lebih khusus lagi seberapa sering potongan-potongan kode tersebut benar-benar diperbarui. OS Windows telah berjalan jauh sejak Windows XP, tetapi sub-sistem disk adalah area yang belum melihat banyak TLC di OS di semua versi selama bertahun-tahun (dibandingkan dengan ekosistem Linux yang tampaknya melihat beberapa FS baru atau perbaikan agak sering).

Harapan itu menambah kejelasan.

txtechhelp
sumber
Jawaban yang mengerikan menurut saya dan turun memilih. Anda memperkenalkan perbedaan di mana tidak ada. Tidak ada yang bertanya bagaimana kinerja drive yang dipartisi. Tentu saja pertanyaan itu berpusat pada ajaran "semua yang sederajat". Saya dapat memilih fs untuk raid0 8 nvme apa pun yang saya inginkan dengan kecepatan baca asli lebih dari 16 gigabytes per detik, namun salinan file Windows maksimum sebesar 1,4-1,5 gigabytes setiap saat, setiap saat. Tidak ada hubungannya dengan caching, fs, partisi, tetapi lebih pada batasan OS windows.
Matthias Wolf
@Matt sistem file apa yang Anda format kata array RAID di? Jika itu NTFS, itu bisa menjelaskan perlambatan .. tetapi jika Anda memiliki lebih banyak informasi untuk diberikan, Anda bebas untuk menambahkan jawaban yang relevan, terutama jika Anda memiliki kode sumber apa pun (dan bukan dump perakitan) ke inti OS Windows untuk menjelaskan secara langsung mengapa perlambatan dikatakan terjadi (I untuk satu terutama akan tertarik pada itu!).
txtechhelp
Saya menggunakan ntfs, opsi apa yang lebih baik yang ada sebagai fs pada server windows?
Matthias Wolf
Saya menghubungi MSFT dan melakukan banyak diskusi dan mencoba banyak hal selama bertahun-tahun dan tidak pernah mencapai melebihi 1,5GB / detik, walaupun memiliki 100GB nics pada setiap mesin dan memiliki semua lalu lintas lain per alat profil Mellanox menunjukkan bahwa penghubung bekerja dengan baik di 94-95 Gb / detik. Tidak ada perlambatan antara mesin linux, tapi begitu mesin OS windows terlibat saya melihat hambatan itu
Matthias Wolf
Saya berbicara tentang transfer file tunggal, semua single threaded. Tidak ada hambatan hardware apa pun, itu murni berbasis OS.
Matthias Wolf