Mengapa kinerja NTFS sangat buruk dibandingkan dengan, misalnya, Linux / ext3? Paling sering saya melihat ini ketika memeriksa pohon sumber (besar) dari Subversion. Checkout memakan waktu sekitar 10-15 menit pada NTFS, sementara checkout yang sesuai di Linux (pada perangkat keras yang hampir identik) membutuhkan urutan besarnya lebih cepat (1 - 1,5 menit).
Mungkin ini khusus untuk menangani banyak file kecil dan NTFS lebih baik dalam hal file besar, tetapi mengapa harus begitu? Bukankah meningkatkan kinerja NTFS untuk file kecil akan sangat bermanfaat untuk kinerja Windows secara umum?
EDIT: Ini tidak dimaksudkan sebagai pertanyaan inflamasi "NTFS menyebalkan dibandingkan dengan ext3"; Saya benar-benar tertarik pada mengapa NTFS berkinerja buruk dalam kasus-kasus tertentu. Apakah itu hanya desain yang buruk (yang saya ragu), atau ada masalah lain yang ikut bermain?
sumber
Jawaban:
NTFS memiliki hal ini disebut Tabel File Master . Kedengarannya sangat keren ketika Anda membacanya.
Anda dapat melihat bahwa ext3 berkinerja baik hingga sekitar 95% penggunaan disk, sementara keberadaan MFT berarti bahwa NTFS tidak benar-benar ingin Anda menggunakan lebih dari 90% dari disk Anda. Tetapi saya akan berasumsi bahwa itu bukan masalah Anda, dan bahwa masalah Anda adalah banyaknya operasi pada banyak file kecil.
Salah satu perbedaan di sini adalah apa yang terjadi ketika Anda membuat file kecil. Jika file lebih kecil dari ukuran blok, itu tidak ditulis ke blok itu sendiri tetapi disimpan dalam MFT. Ini bagus jika file tetap persis seperti saat dibuat. Dalam prakteknya, itu berarti bahwa ketika svn menyentuh file untuk membuatnya, kemudian menambahkan ke file itu, menghapusnya, atau hanya memodifikasinya dengan tidak cukup untuk memindahkannya ke bloknya sendiri, operasinya cukup lambat. Juga hanya membaca banyak file kecil memberi tekanan pada MFT di mana mereka semua berada, dengan kelipatan per blok. Mengapa harus melakukan ini? Terlebih dahulu menghindari fragmentasi dan menggunakan lebih banyak blok lebih efektif, dan secara umum itu adalah hal yang baik.
Sebaliknya, dalam ext2 dan 3, blok file untuk setiap file disimpan di sebelah tempat direktori metadata berada di direktori tersebut (bila memungkinkan, jika disk Anda tidak difragmentasi dan Anda memiliki ruang kosong sekitar 20%). Ini berarti bahwa ketika svn membuka direktori, sejumlah blok pada dasarnya di-cache dalam cache 16MB pada drive Anda, dan kemudian lagi di cache kernel. File-file itu mungkin termasuk file .svn dan file revisi untuk pembaruan terakhir Anda. Ini berguna karena kemungkinan beberapa file svn sedang melihat selanjutnya. NTFS tidak bisa melakukan ini, meskipun sebagian besar MFT harus di-cache dalam sistem, mereka mungkin bukan bagian yang Anda inginkan selanjutnya.
sumber
Nah, masalah khusus Anda adalah karena
Apa yang Anda lihat hanyalah artefak dari sesuatu yang dirancang untuk sistem operasi tertentu dengan asumsi kinerja pada sistem operasi itu. Ini biasanya rusak parah, ketika dibawa ke sistem lain. Contoh lainnya adalah forking vs. threading. Pada UNIX-suka cara tradisional melumpuhkan sesuatu hanya untuk menelurkan proses lain. Di Windows, di mana proses membutuhkan setidaknya lima kali lebih lama untuk memulai, ini adalah ide yang sangat buruk.
Secara umum, Anda tidak dapat hanya mengambil artefak dari OS tertentu untuk diberikan pada yang lain dengan arsitektur yang sangat berbeda. Juga jangan lupa bahwa NTFS memiliki banyak fitur sistem file yang tidak ada dalam sistem file UNIX yang banyak digunakan pada saat itu, seperti penjurnalan dan ACL. Hal-hal itu harus dibayar.
Suatu hari, ketika saya punya banyak waktu luang, saya berencana untuk menulis modul sistem file SVN yang memanfaatkan fitur yang Anda miliki di NTFS, seperti dukungan transaksi (harus menghilangkan "menyentuh jutaan masalah file kecil") dan data alternatif stream (harus menghilangkan kebutuhan
.svn
direktori terpisah ). Ini akan menjadi hal yang baik untuk dimiliki tetapi saya ragu para SVN devs akan melakukan hal-hal seperti itu di masa mendatang.Catatan: Satu pembaruan pada repositori SVN besar yang saya gunakan membutuhkan sekitar 250.000 operasi file. Beberapa suara kecil mengatakan kepada saya bahwa ini sangat banyak untuk 24 file yang berubah ...
sumber
Inilah info Microsoft tentang cara kerja NTFS. Ini mungkin berlebihan untuk apa yang Anda cari tetapi mempelajarinya dapat menjelaskan skenario apa yang bermasalah dengan NTFS.
sumber