Lebih dari satu dekade yang lalu, pada tahun 2012, Microsoft merilis Exfat 64-bit-nya (Tabel Alokasi File Diperpanjang) Sistem File sebagai penerus FAT32 32-bit. Tujuh tahun kemudian, pada 2019, raksasa Redmond membuat wahyu besar saat itu mengumumkan dukungan untuk format exfat di linux.
Maju cepat satu dekade, pada tahun 2022, insinyur Sony Yuezhang Mo menemukan bahwa mengurangi traversal berulang entri direktori meningkatkan kinerja dari exfat hingga 57%. Ini didorong di Linux Kernel Versi 6.2.
MO kembali membantu Exfat lagi, dan kali ini, permintaan tarik terbaru berisi banyak perbaikan terkait Exfat, dan peningkatan kinerja adalah salah satunya. Dia menulis:
Deskripsi untuk permintaan tarik ini:
- Perbaiki korupsi tumpukan acak dan kesalahan kesalahan yang salah di exfat_get_block ().
- Optimalkan exfat_get_block () dengan meningkatkan pengecekan kasus sudut.
- Perbaiki loop tanpa akhir dengan rantai yang terhubung sendiri di exfat_find_last_cluster.
- Hapus kode EXFAT_CLUSTERS_UNTRACKED yang mati.
- Tambahkan cek shutdown yang hilang.
- Tingkatkan Kinerja Hapus dengan Opsi Buang Mount.
Bagi mereka yang bertanya -tanya, opsi “buang pemasangan” mengacu pada pengoperasian menginformasikan perangkat penyimpanan yang mendasarinya tentang blok yang tidak lagi digunakan. Jadi, ketika sistem file dipasang dengan opsi buang, itu memungkinkan operasi pembuangan waktu nyata. Operasi ini secara otomatis memberi tahu perangkat penyimpanan setiap kali memblokir transisi dari “digunakan” ke “gratis.”
Patch menjelaskan:
Jika opsi pemasangan buang diaktifkan, cluster file dibuang ketika cluster dibebaskan. Membuang cluster satu per satu akan secara signifikan mengurangi kinerja. Kinerja yang buruk dapat menyebabkan penguncian lunak ketika banyak cluster dibebaskan.
Komit ini meningkatkan kinerja dengan membuang kelompok yang berdekatan dalam batch.
Peningkatan kinerja diukur menggunakan file 80 GB, dan butuh 4 menit dan 46 detik atau hampir 287 detik untuk menghapusnya. Dengan optimasi baru, tugas diselesaikan dalam waktu kurang dari 2 detik, yang setara dengan peningkatan 172 kali:
Ukur kinerja dengan:
# truncate -s 80g /mnt /file
# Waktu RM /MNT /File
Tanpa komit ini:
- Real 4M46.183S
- Pengguna 0m0.000s
- SYS 0M12.863S
Dengan komit ini:
- NYATA 0M1.661S
- Pengguna 0m0.000s
- SYS 0M0.017S
Anda dapat melihat permintaan tarik Di Sini Di situs web Linux Kernel Mailing List (LKML).