· kaynak dev.to (home feed)
Linux 7.4, altı satırlık bir döngüyü kaldırarak FAT32 fallocate'i 265 kata kadar hızlandırıyor
Linux 7.4'teki küçük bir çekirdek yaması, FAT32 sürücüsünün kümeleri tek tek yerine toplu olarak tahsis etmesini sağlıyor ve synchronous bağlantılarda fallocate süresini 92 saniyeden 0.3 saniyeye indiriyor.

Altı satır silindi, dört satır eklendi
Linux 7.4, FAT dosya sistemi sürücüsündeki küçük bir değişiklikle FAT32 birimlerindeki alan öntahsisini 265 kata kadar hızlandırıyor. Joho no Todai'de yayımlanan ve dev.to üzerinden aktarılan bir yazıya göre bu kazanım, fs/fat/file.c içindeki bir while döngüsünü kaldıran bir yama serisinden geliyor: altı satır silindi, dört satır eklendi.
Eski fallocate kodu disk kümelerini tek tek tahsis ediyor, kümeler bitene kadar döngüde dönüyor ve her turda fat_add_clusters(inode, 1) çağrısı yapıyordu. Yeni kod ise tek bir çağrı yapıyor: fat_add_clusters(inode, nr_cluster), böylece sürücüye tam küme sayısı tek seferde veriliyor. Brezilya'daki Rio Grande do Sul Federal Üniversitesi'nden Matheus Alves de Almeida, üç parçalı yama serisini 12 Ekim'de gönderdi; ilk iki yama fat_add_clusters() işlevini birden fazla kümeyi işleyecek şekilde genişletiyor, üçüncüsü ise bu işlevi çağıran kodu buna göre yeniden yazıyor.
Küme başına dönen döngü önemliydi, çünkü FAT32 alanı, boyutu biçimlendirme sırasında sabitlenen ve 512 bayttan onlarca kilobayta kadar değişen kümeler halinde yönetiyor. 512 baytlık kümelere sahip bir birimde 256MiB öntahsis etmek, kabaca 524.000 kümeyle uğraşmak demek.
Synchronous bağlantılar neden en çok kazanıyor
Kıyaslama rakamları, yamanın commit mesajından geliyor ve QEMU/KVM altında virtio-blk ile cache=none kullanılarak ölçülmüş. Manşet örneği, synchronous bağlantıda 4.096 baytlık kümelerle on altı 16MiB dosya üzerinde yapılan fallocate, 92.489 saniyeden 0.348 saniyeye düştü; bu 265.4 katlık bir hızlanma.
Mekanizma gayet basit. Synchronous bağlantılarda her küme tahsisi, güncellenen FAT tablosunun diske senkron olarak yazılmasını zorunlu kılıyordu. On binlerce küme tahsis etmek bu yüzden on binlerce engelleyici metadata yazısı demekti. Yeni kod FAT güncellemelerini toplu hale getiriyor, böylece metadata depolama aygıtına çok daha seyrek ulaşıyor.
Asynchronous bağlantılar da iyileşiyor, sadece daha az çarpıcı biçimde. dev.to yazısı, 512 baytlık kümelerle 256MiB tahsis ederken 2.328 saniyeden 0.175 saniyeye inen 13.2 katlık bir kazanım aktarıyor; ölçülen en zayıf durum olan sync'siz 16KiB'lik 128 dosya bile 5.3 kat daha hızlı tamamlandı. Zorunlu sync söz konusu olmasa bile daha az metadata işlemi karşılığını veriyor.
Değişikliğin kapsamadığı şeyler
Hızlanma yalnızca fallocate ile sınırlı ve özellikle blokları dosyanın görünür boyutunu değiştirmeden rezerve eden FALLOC_FL_KEEP_SIZE yolunu etkiliyor. cp veya dd ile yapılan kopyalar dahil normal okuma ve yazma işlemleri başka kod yollarını izliyor ve doğrudan bir şey kazanmıyor. USB belleğe yapılan FAT32 aktarımları bir anda yüzlerce kat hızlanmayacak.
Asıl yararlananlar, veritabanları, sanal disk imajı oluşturma ve bazı yedekleme araçları gibi alan öntahsis eden programlar ve hepsinden öte, yavaş flash ortamlarına synchronous bağlı birimlere yazan gömülü sistemler.
FAT32 2026'da hâlâ her yerde: USB bellekler, SD kartlar, dijital fotoğraf makinesi ortamları ve UEFI makinelerinin EFI sistem bölümü; başta Windows, macOS ve Linux'un hepsinin okuyup yazabilmesi nedeniyle ayakta.
Neden önemli
Çıplak rakamların ötesinde, bu yama göz alıcı olmayan kodlarda ne kadar performansın saklanabileceğinin bir hatırlatması. FAT bakımcısı OGAWA Hirofumi üç yamanın da tamamına Acked-by verdi ve yamalar, toplam 134 yama taşıyan Andrew Morton'un non-MM pull request'i üzerinden 25 Ekim'de Linux 7.4-rc1'e girdi. Kaynağa göre aynı parti, 32 bit sistemlerdeki veri bölgesi hesaplaması taşması ve dosya oluşturma başarısız olduğunda dizin girdilerinin geri alınmasıyla ilgili FAT düzeltmelerini de içeriyordu.
Depolamayı synchronous bağlayan donanımda Linux çalıştıran herkes için — yavaş flash'lı gömülü cihaylarda yaygın bir kurulum — bir buçuk dakikalık bekleme, birisi sonunda yıllardır sessizce zaman yakan bir döngüyü sorguladığı için saniyenin kesrine iniyor.
- #linux-kernel
- #fat32
- #filesystems
- #performance
- #open-source
İlgili yazılar
- Vercel, Geist Serif'i yayınladı: açık kaynak yazı ailesine editoryal bir display karakter ekliyor
- Microsoft destekli Call Graph Analyzer, monomorphize edilmiş MIR üzerinden Rust'taki panic yollarını haritalıyor
- Astroterm, gerçek zamanlı ASCII yıldız haritalarıyla açık kaynaklı bir terminal planetaryumu