Bunun olmasının nedeni programın "bu verileri yaz" demesi ve linux çekirdeği onu diske gitmek için sıraya alınmış bir bellek arabelleğine kopyalayıp "tamam, tamam" yazmasıdır. Böylece program her şeyi kopyaladığını düşünüyor. Ardından program dosyayı kapatır, ancak aniden çekirdek, bu arabellek diske itilirken bekletir.
Bu nedenle, ne yazık ki program tamponu temizlemenin ne kadar zaman alacağını söyleyemez çünkü bilmez.
Bazı güçlü kullanıcı püf noktalarını denemek istiyorsanız, çekirdek parametresini (15 MB) vm.dirty_bytes
gibi bir değere ayarlayarak Linux'un kullandığı arabellek boyutunu düşürebilirsiniz 15000000
. Bu, uygulamanın fiili ilerlemesinden 15 MB'den daha fazla alamayacağı anlamına gelir. (Hareket halindeyken çekirdek parametrelerini değiştirebilirsiniz, sudo sysctl vm.dirty_bytes=15000000
ancak yeniden başlatma boyunca kalmasını /etc/sysctl.conf
sağlamak için dağıtımınıza özel olabilecek bir yapılandırma dosyasını değiştirmek gerekir .)
Bunun bir yan etkisi, bilgisayarınızın bu ayarla daha düşük veri yazma verimine sahip olmasıdır, ancak genel olarak, bir programın uzun süre çalıştığını görmek için yararlı olurken, çok fazla veri yazar. programın işi ile yapıldığı görülüyor ancak çekirdek asıl işi yaptığı gibi sistem kötü bir şekilde kalıyor. dirty_bytes
Makul bir küçük değere ayarlamak , sisteminizin boş belleği düşük olduğunda yanıt vermemesini ve aniden çok fazla veri yazan bir programı çalıştırmasını önleyebilir.
Ancak, çok küçük ayarlamayın! Çekirdeğin arabelleği normal bir sabit sürücüye saniyenin 1 / 4'ünde temizleyebileceğini tahmin edebileceğim kaba bir tahmin olarak 15 MB kullanıyorum. Sistemimin "çılgınca" hissetmesini engelliyor.