MacOSX'te Etkin Olmayan Belleği Anlamada Sorun


8

MacOSX'in belleği nasıl yönettiğini anladığımı düşündüm, ancak son zamanlarda performansından şaşkına döndüm. Durum şu:

  1. MacOSX 10.6.7 çalıştıran 8GB fiziksel belleğe sahip yepyeni bir Core i7 sistemim var. Bellek, bellek, Safari, Mail, Xcode, Terminal vb.
  2. Her biri yaklaşık 2000M gerçek bellek kullanan üç 64 bit işlemi paralel olarak çalıştırmam gerekiyor.
  3. Kablolu bellek 1000M'nin altında kalmasına rağmen (yani işlemler için 7000M'den fazla kullanılabilirim var), başlattığım üç bellek yoğun işlemden çok kötü performansa yol açan ağır sayfalama etkinliği görüyorum.
  4. Görünüşe göre, rapor edilen etkin olmayan bellek 2500M civarında kaldığı ve aktif bellek 5000M'nin üzerine çıkmadığı için kullanılabilir RAM'iniz bitmiyor.

Birisi bana MacOSX'un neden disk işlemine başvurmak yerine ihtiyaç duyduğu işlemler için etkin olmayan belleği serbest bırakmadığına dair bir ipucu verebilir mi? Ayrıca, sistem tarafından bellek yönetimini etkilemenin uygun bir yolu var mı?


Yanıtlar:


5

Makinemde, Mac OS X'in doğru şeyleri sayfalamak için biraz yavaş olduğunu gördüm.

Hafızada özellikle aç bir şey yaptığınızda, yardımcı olmak için genellikle birkaç uygulamadan çıkacağım. Safari, bir süredir çalışıyorsa ve bırakılacak uygulamalar listesinin başındaysa büyük bir bellek domuzudur. Benim durumumda, VMWare Fusion'ı yeterince gerçek RAM olmadan çalıştırmaya çalıştığım zamandı.

Muhtemelen bunu biliyorsunuz, ancak burada OS X'te bellek kullanımını ve sanal belleği tanımlayan Apple belgelerine birkaç bağlantı var:

http://support.apple.com/kb/ht1342

http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html

Aşağıda verilen açıklama verilmiştir: Etkin olmayan liste, şu anda fiziksel bellekte yerleşik olan ancak son zamanlarda erişilmemiş sayfaları içerir. Bunun ne anlama geldiğinin kesin bir tanımını bulmak zor, ancak gerçek bir etkin olmayan belleğin yanı sıra bir dosya sistemi önbelleği içeriyor gibi görünüyor.

Etkin olmayan bellek, kullanıcının herhangi bir zamanda herhangi bir çalışan uygulamaya geçmeyi seçebileceği ve bu tür bir durumda yanıt vermeyi seçebileceği etkileşimli GUI ile çalışan bir işletim sistemi üzerinde işlem yapmak muhtemelen zor bir şeydir .... ancak bunun tersi sizinki gibi bir durumda işletim sistemi doğru şeyin ne olduğunu tam olarak bilmiyor.

Temizleme komutunu kullanarak etkin olmayan belleği temizlemek (bazılarını) mümkündür . Bunun, CHUD araçlarını yükleyerek yüklenmesi gerekebilir, ancak önceden yüklenmiş olabilir. Temizleme komutunu kullanmayı denemedim, bu yüzden YMMV ...

Biraz tökezledim ve sorunuzu cevaplamış olabilir veya olmayabilir. Tüm bunları yazdıktan sonra , bu sitede aynı bilgilerin çoğunun da yardımcı olabileceği başka bir soru buldum .


Teşekkürler! purgeKomut aradığım tam olarak ne olduğunu. Destek makalelerini Apple'ın KB'sinde buldum, ancak özellikle kullanışlı değildi.
Ventzi Zhechev

1

MacOS yapar ama gerçekten ihtiyacı yalnızca, inaktif hafızayı bırakın. Bu "aktif olmayan bellek" aslında çekirdeğin disk belleği için aday olduğuna inandığı bir bellek olabilir - ancak henüz aktif olmayan belleğe başvurulmadan daha fazla zaman geçmesine karar vermedi (bunun yerine, belleği disk belleği üzerinde yoğunlaşmaya odaklanıyor) bunun yakında tekrar kullanılması daha az olasıdır). Böyle bir durumda, etkin olmayan belleğin "boşaltılması" aslında performansınızın zarar görmesine neden olur (çünkü programınızın yürütülmesine devam edebilmesi için sık kullanılan sayfaların diskten yeniden okunması gerekir).

purgegeliştiricilerin bir uygulamanın başlatma koşullarını simüle etmeleri için yararlıdır - örneğin, bir uygulamanın bir önyükleme veya uzun aradan sonra ilk kez çalıştırılmasının ne kadar sürdüğünü görmek için. Tipik kullanıcı purgeiçin çok yararlı değildir (ve aslında geçici performans düşüşüne neden olur).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.