Rasgele bir işlemin ne kadar RAM alabileceğini sınırlamanın yolu nedir?


12

Diyelim ki 4 GB RAM ile çalışan bir OS X makinemiz var. Tek bir işlemin 3 GB'den daha fazla yer kaplayamayacağı şekilde ayarlamak mümkün mü, bu yüzden bir işlemin bellek atması ne olursa olsun, sistemin yanıt vermesini sağlamak için her zaman biraz bellek kalıyor mu?


6
Hayır. Ve bu da verimsiz olur. Mikro yönetim RAM tahsisi, işletim sistemlerinin etrafında tasarlandığı bir şey değildir. Ücretsiz RAM boşa RAM'dir. OS X'in varsayılan RAM yönetiminden çok fazla şey yapıldı. Etkinlik Monitörünü kapatmak ve hayatınıza devam etmek en iyi çözümdür.

8
@cksum Yorumunuzda, çoğu yanlış olan bir dizi büyük varsayım var. Koltuk sürücüsünün OS X'in bellek yönetimini desteklemeye çalışmıyorum. Ne ediyorum aslında yapıyor ziyade kolayca kaçak bir süreç dönüşür bazı kodlar test ederken yeterli sistem işlevselliğini korumak için bir yol varsa öğrenmeye çalışıyorum olduğunu. Çünkü ücretsiz RAM, hataları düzeltmenize izin verirse RAM boşa gitmez.
Fomite

3
Maalesef, sorunuz uygulamaların programlanması (geliştirilmesi ve test edilmesi) ile ilgiliyse, bu forum için konu dışıdır. Ne tür soruların buraya ait olduğu hakkında daha fazla bilgi için lütfen SSS'ye göz atın: apple.stackexchange.com/faq

10
FFS, bu bir programlama sorusu değil. Bu bir işletim sistemi sorusu. Bellek düzeyini keyfi bir işlemle sınırlamak - Safari, Matlab, Call of Duty, ne olursa olsun - işletim sistemi düzeyinde kesin olarak bir işletim sistemi sorusudur.
Fomite

7
Özünde sanal bellekle ilgili olan "Apple meraklıları ve ileri düzey kullanıcılar" soruları için bir site olmak açıkça sınırlar ve konudur. Geliştirme ilgili olsa bile, bu ayarlama veya performans sorunları için geçerli olacaktır.
bmike

Yanıtlar:


9

Buna benzer bir soru burada belirtilmiştir Bir Mac OS Uygulamasının Kullanabileceği RAM Miktarını Nasıl Sınırlayabilirim?

Ulimit komutunu kullanmanızı önerirler , ancak miktarı istedikleriyle başarılı bir şekilde sınırlandıramazlar. Karşılaştıkları sorun, -u veya -v seçeneğinin bellek çağrı sistemini hesaba katmamasıydı, örneğin gerçek RAM'de işlemek için yalnızca X miktarda alan ayırabilirsiniz, ancak sayfa Gün boyu sanal belleğe çıkar.

Bunun Sanal Belleğin devre dışı bırakılması Tehlikeli olabileceğini unutmayın, RAM'in çalıştığında Mac'inizin kilitlenmesi vb.

Ulimit'i -l, -m veya -v değişkenleriyle çalıştırmayı deneyin, ancak ulimit man sayfasında belirtildiği gibi bu ayarlara dikkat edip etmeyecekse işletim sistemine kadar çalışın.

ulimit: ulimit [-SHacdefilmnpqrstuvx] [sınır]

Kabuk kaynağı sınırlarını değiştirin.

Bu denetime izin veren sistemlerde, kabuk için oluşturduğu kaynaklar ve oluşturduğu işlemler üzerinde denetim sağlar.

OS X'in ulimit'i yoksayıp atmadığını doğrulayan kesin bir kaynak bulamıyorum, ancak başvurulan ulimit başarısız olduktan sonra

Ulimit'in ihtiyaçlarınız için kendi başına çalışmasını sağlayabiliyorsanız, bir deneyin, ulimit ve / veya sanal belleği devre dışı bırakmanın bir kombinasyonu, belirli süreçlerde bu 3 GB sınırını ayarlamanıza izin verebilir. FYI , Snow Leopard System 10.6'daki Sanal Belleği Tamamen Devre Dışı Bırakma hakkında daha fazla bilgi için iyi bir bağlantı

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Bu muhtemelen doğru cevaba benziyor - bunu bir sonraki çalıştırdığımda deneyeceğim. Şimdilik cevabı kabul ediyorum.
Fomite

5

Mac'inizde Lion (veya daha yeni OSX) Sunucusu'nu çalıştırıyorsanız, OSX'i o Mac'teki bir VM'nin (VirtualBox, Parallels veya VMWare, vb.) İçinde çalıştırabilirsiniz. VM'yi 3GB fiziksel RAM ile sınırlayın; VM içindeki herhangi bir uygulama veya işlem de bu şekilde sınırlandırılacaktır. Sanal makineyi barındıran sistem, sanal makinedeki işletim sistemi yedekleme-diski-sınırlı olsa veya çökse bile duyarlı kalmalıdır.

Potansiyel olarak kaçak bir işlemde hata ayıklama yapıyorsanız, hata ayıklayıcıyı veya hata ayıklama düğümünü komut satırından çalıştırmak için VM'ye ssh olabilir ve işler kilitlenene kadar kayıt yapabilirsiniz.

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.