OSX'i daha fazla RAM ve daha az takas kullanmanın bir yolu var mı?


12

Yaşadığım sorun bir sunucuda (ve diğer OSX kutularında) 4GB RAM var, ancak OSX'in 6-7GB'lik bir swapa sahipken mevcut RAM'in sadece% 40-60'ını kullandığını görüyoruz. Sunucu Apache ve MySQL çalıştırırken, diğer makineler masaüstündedir.

Kullanımını benzer Linux kutularıyla (donanım ve yazılım) karşılaştırıyorum ve Linux'un genellikle RAM'in% 80-90'ını kullandığını ve çok daha küçük bir takas dosyasına (2-3GB) sahip olduğunu buluyorum. Linux sunucuları da genellikle çok daha hızlı çalışır.

Disk takas dosyasını kullanmadan önce OSX'i RAM'in daha fazlasını veya çoğunu kullanmaya zorlamanın bir yolu var mı?

Windows'da takas işlemini tamamen devre dışı bırakabilirsiniz. OSX için benzer bir şey var mı?


Açıklama için: 1. Darboğaz VM sistemi midir? Hafıza yıldızlarını gördüğünüzde olduğu gibi, pageoutlar meydana gelirse büyük miktarda vardır. 2. Ücretsiz ve VM boyutu bilgilerinizi nereden alıyorsunuz? Örneğin, Etkinlik İzleyicisi'nde belirtilen VM Boyutu takas dosyasının boyutuyla aynı değildir.
Chealion

VM sisteminin (VM veya takas) sorun olduğuna dair kanıtım yok, ancak masaüstümde genellikle 2-3GB genellikle ücretsiz olan 6GB RAM'e sahip olduğumu biliyorum. Programları değiştirdiğimde, hızlı bir şekilde yanıp söneceğini düşünürdünüz, çünkü hepsi RAM'de, ancak bunun yerine Illustrator gibi bir şeye geri dönmek 2-15s sürer. Benzer şeylerin sunucuda gerçekleştiğini düşünüyorum - MySQL veya geçici tablolar için önbellekleme gibi bir şey. VM, RAM ve takas kullanımını belirlemek için üst kullanıyorum. Herhangi bir fikir?
Darryl Hein

3
Gerçek vm kullanımını belirlemek için en kolayı çalıştırmaktır du -sh /var/vm- bu, mevcut bir sleepimage (genellikle dizüstü bilgisayarlarda görülür) varsa yapay olarak yüksek olabileceğini söyledi. Yavaşlamalara neden olan bellek olup olmadığını belirlemenize yardımcı olabilecek birkaç araç vardır: vm_stat- özellikle pageouts değeriyle ilgileniyorsunuz - eğer biraz artarsa, o zaman yoğun bir şekilde takas yaptığınızı bilirsiniz. Apple'ın belleklerini nasıl yönettiği hakkında daha fazla bilgi için: developer.apple.com/documentation/Performance/Conceptual/…
Chealion

Yanıtlar:


17

En temel cevap? Hayır. İşletim sistemi kullanıcı için bellek yönetimini yönetir - bu, istediği kadar bir süreç sağlar ve sistemin nasıl çalıştığını değiştirebilme açısından pek bir şey sağlamaz. Bellek kullanımının, Linux sunucularının neden Mac sunucularından daha iyi performans gösterdiğine ilişkin denklemin bir parçası olup olmadığını anlamaya çalışmak çok fazla yardımcı olmaz.

Sanal bellek sistemindeki "hacklenebilirlik" eksikliğinden dolayı en iyi seçenekleriniz, sanal bellek performansını performans sorunlarınız olup olmadığını görmek için değerlendirmektir - en temel olanı kullanmak vm_statveya kullanmaktır. kullanarak canlı vm_stat [number of seconds]birçok sayfa çıkışları oluşan durumda olduğunu öğrenmek için. Kullanılmayan sayfaları RAM'den sabit sürücüye taşımak, sayfaları sabit sürücüden RAM'inize geri almaktan çok daha düşük bir maliyete sahiptir. OS X terimlerindeki bir sayfa, 4kb veri anlamına gelir.

Buna ek olarak, 32 bit işlemler (örn. Illustrator) 4 GB'tan fazla erişemez, bu nedenle teorik olarak 2 GB boş alan olması ve 6 GB yüklüyse işlemin belleği bitmesi mümkündür.

Hem masaüstünüzde hem de sunucularınızda vm_stat 2son sütunu çalıştırıp kontrol ederdim - özellikle de Illustrator'a geçtiğinizde birden çok saniye gecikmesi yaşadığınızda.

Takasın gerçekte ne kadar büyük olduğunu öğrenmek için Etkinlik Monitörü'nde takas boyutunu kontrol edebilir veya çalıştırabilirsiniz du -shc /var/vm/swap* | tail -n 1.

Kullanmanın du -sh /var/vmbir uyarısı vardır: hazırda bekletme moduna sahip dizüstü bilgisayarlarda (son 4 yıl veya daha yeni bir şey) sleepimagekabaca ne kadar bellek taktığınızın boyutu olabilir .


Mac OS X Bellek Jargonu:

Kablolu : Bu, çekirdek kodunu ve benzerlerini ifade eder. RAM'den hiç taşınmaması gereken bellek. Ayrıca yerleşik bellek olarak bilin.

Paylaşılan : İki veya daha fazla işlem arasında paylaşılan bellek. Her iki işlem de bu bellek miktarını gösterecektir, böylece gerçekte ne kadar bellek kullanıldığına dair biraz yanıltıcı olabilir.

Gerçek : Bu, task_info () tarafından bildirildiği gibi bir uygulama için "gerçek" bellek kullanımıdır - mevcut işlemin sahip olduğu fiziksel sayfa sayısının kabaca bir sayısıdır. (Rsize)

Özel : Bu, bir işlemin yalnızca Yerleşik bellekte kullanılan kendi başına kullandığı bellektir. (RPRVT)

Sanal : İşlemdeki, değişkenler veya herhangi bir şey için keyfi olarak geniş bir alan olan herhangi bir şeyle eşlenen toplam adres alanı miktarı, gerçek VM kullanımına eşit değildir. (VSIZE)

Etkin : Bellek şu anda etkin olarak etiketlenmiştir ve RAM kullanılır.

Etkin değil : "Etkin olmayan bellek artık kullanılmıyor ve diske önbelleğe alınıyor. Başka bir uygulamanın alana ihtiyacı olana kadar RAM'de kalacak. Siz (veya bilgisayarınızın bir istemcisi) geri dönerseniz bu bilgiyi RAM'de bırakmak sizin yararınıza olacaktır daha sonra. " - Mac OS X Yardımı

Ücretsiz : Herhangi bir veri olmadan kullanılabilen RAM miktarı.


Bildiğim en iyi belgeler (ve takip araştırmalarında bulabildim) Apple'ın geliştirici web sitesindeki kendi Yönetim Belleği makalesidir.

Diğer değerli kaynaklar: Darwin-dev posta listesi: [ 1 ], [ 2 ] ve MacOSXHints hakkında eski bir makale . Ek olarak Mike Ash blogunda iyi bir layman'ın tanıtımını yayınladı


sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistDynamic_pager (aslında sanal bellek tahsisi yapan program) başlatılmayacak şekilde çalıştırarak ve yeniden başlatarak sanal bellek sistemini devre dışı bırakmak mümkün olmayabilir (denemedim) . Ancak işletim sistemi sanal belleğe sahip olduğunu varsaydığından, kendinizi çok, çok hızlı bir şekilde sorunla karşılaştırabilirsiniz. Yedekleme çalışması için sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(tek kullanıcı modundan gerekirse)

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.