Değişim görünüşte, aktif olmayan RAM sayfaları gerçekten aktifken meydana geldi.
( Güncelleme: Bir yorumda açıklandığı gibi, bu sizin durumunuz değil. Bu nedenle aynı sorunu olan insanlar yatay kurala ilerleyebilir .)
Yani çalışan birçok program vardı ve çekirdek bazı sayfaları değiştirdi. Sonra bazı programları bıraktın. Çekirdek RAM sayfalarını etkin değil olarak işaretler. Ancak, bu sayfalar gerekli olana kadar sayfalara RAM'e geçilmez. Bu, hem etkin olmayan hem de değiştirilmiş sayfalara sahip olmasına neden olur.
Neden sayfaların önüne geçilmiyor? Çünkü bu oranlara karşı bahis olacak: uzun vadede kaybedersiniz. Basitleştirilmiş bir örnek düşünelim: Aynı anda RAM'e uymayan iki program A ve B. A programı hala çalışıyor ve değiştirilen tüm sayfalar A'ya ait. B programı iptal edildi ve etkin olmayan tüm sayfalar B'ye ait.
Eğer çekirdek önleyici olarak A'nın sayfalarını değiştirirse ve hemen sonra:
- Bir sayfalara erişmesi gerekiyor -> Sen kazandın - sayfalar zaten RAM’de.
- B'yi tekrar başlattıysanız -> Kaybedersiniz - sayfaları RAM'e getirme ücretini "ödediniz" ve şimdi geri göndermeniz gerekiyor.
- başka bir program başlattığınızda C -> A ve C aynı anda RAM’e sığmazsa kaybedersiniz. Uygunlarsa, sen bile.
Ayrıca, değiştirmenin (diske yazma) değiştirmenin (diskten okuma) daha pahalı olduğunu dikkate alın. Bu da “bahis” i daha çekici hale getiriyor.
Kısacası: çekirdeğinize güvenin ve zekâsı atmaya çalışmayın.
Güncelleme:
Etkin olmayan belleğin, Sistem Belleğini okumak için Etkinlik İzleyiciyi Kullanma makalesinin işe yarayacağına inanmasına neden olduğu için çalışmadığını belirtir . Etkin olmayan bellek için makalede verilen tanım doğrudur:
Bu bilgi RAM'dedir ancak aktif olarak kullanılmamaktadır, son zamanlarda kullanılmıştır.
Ancak, aşağıdaki örnek tamamen yanıltıcı ve aşırı basitleştirilmiştir (açık sözlü örneğim gibi):
Örneğin, Mail kullanıyorsanız ve sonra bıraktıysanız, Mail'in kullandığı RAM, Etkin olmayan bellek olarak işaretlenir. Etkin olmayan hafıza, sadece Boş hafıza gibi, başka bir uygulama tarafından kullanılabilir. Bununla birlikte, Posta'yı Etkin olmayan hafızası farklı bir uygulama tarafından kullanılmadan önce açarsanız, Posta, Etkin olmayan hafızasını yavaş sürücüden yüklemek yerine Etkin belleğe dönüştürüldüğü için daha hızlı açılır.
Daha fazla çevrimiçi kaynak aradım ve bu konuyu oldukça bilgilendirici olan darwin çekirdek posta listesinde bıraktım . Jim Magee'den alıntı (darwin ekibinden - sanırım):
Kısacası, çekirdek baskı sistemi bellek baskısı ile uğraşırken kullanımdaki sayfaları tarar ve bunları aktif ve aktif olmayan işaretler arasında dengede tutar. Etkin olmayan sayfalar, etkin değil olarak işaretlenirken yeniden kullanılmak üzere taranır. Yeniden kullanılmışlarsa, aktif olarak işaretlenirler ve başka bir sayfa etkin kullanımda olup olmadığını tespit etmek için etkin durumdan etkin duruma geçmelidir. Yani, aktif olmayan bir yanıltıcıdır. "Muhtemelen pasif, bunu doğrulamaya çalışalım."
Sizin keşfettiğiniz gibi, (şu anda) uğraştığımız iç denge yaklaşık 2/3 aktif vs 1/3 aktif değil ...
Bu gözlemlediğiniz davranışı açıklar. Gördüğünüz etkin olmayan sayfalar, yakın zamanda kullanılmamış çalışan programlara aittir. Bu nedenle, yeni bir programı başlattığınızda etkin olmayan sayfalar değiştirilir. Aynı zamanda, diğer programlardan gelen sayfalar, aktiflere karşı aktif olmayanların 2/1 oranını korumak için pasif olarak işaretlenir.
Bu konu aynı zamanda darwin internals hakkında daha fazla bilgi edinmek için bazı önerilerde bulunuyor. Ayrıca beachball sorunları nedeniyle (genellikle bununla çok az ilgisi vardır) bellek kullanımını araştırmaya başlamanız durumunda bazı önerilerde bulunabilirsiniz.
Sonuç aynı kalıyor: Çekirdeğinize güvenin ve zekâyı denemeyin. :-)