Sposób na ograniczenie ilości pamięci RAM, którą może zająć dowolny proces?

12

Powiedzmy, że mamy maszynę OS X z 4 GB pamięci RAM. Czy można to ustawić tak, aby żaden pojedynczy proces nie mógł zająć więcej niż powiedzmy 3 GB, więc bez względu na to, jak bardzo proces zapamiętuje proces, zawsze pozostaje trochę pamięci, aby system mógł reagować?

Fomite
źródło
6
Nie. I to przyniosłoby efekt przeciwny do zamierzonego. Przydział pamięci RAM do mikromanagowania nie jest czymś, na czym zaprojektowano systemy operacyjne. Wolna pamięć RAM to zmarnowana pamięć RAM. Zbyt wiele powstaje z rzekomego złego zarządzania pamięcią RAM. Zamykanie Monitora aktywności i radzenie sobie w życiu wydaje się najlepszym lekarstwem.
8
@cksum W twoim komentarzu jest ogromna liczba założeń, z których większość jest błędna. Nie próbuję zarządzać pamięcią OS X na tylnym siedzeniu. W rzeczywistości próbuję dowiedzieć się, czy istnieje sposób na zachowanie wystarczającej funkcjonalności systemu podczas testowania kodu, który raczej łatwo zamienia się w niekontrolowany proces. Ponieważ wolna pamięć RAM nie jest zmarnowaną pamięcią RAM, jeśli pozwala na naprawianie błędów.
Fomite
3
Przykro nam, ale jeśli twoje pytanie dotyczy programowania, (rozwoju i testowania) aplikacji, to jest nie na temat tego forum. Zapoznaj się z często zadawanymi pytaniami, aby uzyskać więcej informacji na temat tego rodzaju pytań: apple.stackexchange.com/faq
10
FFS, to nie jest pytanie programistyczne. To pytanie dotyczące systemu operacyjnego. Ograniczanie pamięci, z której może korzystać dowolny proces - Safari, Matlab, Call of Duty, cokolwiek - na poziomie systemu operacyjnego jest jednoznacznie pytaniem dotyczącym systemu operacyjnego.
Fomite
7
Bycie stroną dla „entuzjastów Apple i zaawansowanych użytkowników”, które w istocie dotyczą pamięci wirtualnej, są wyraźnie ograniczone i tematyczne. Nawet jeśli rozwój jest związany, dotyczy to problemów z dostrajaniem lub wydajnością.
bmike

Odpowiedzi:

9

Podobnym pytaniem jest tutaj Jak mogę ograniczyć ilość pamięci RAM, z której może korzystać aplikacja Mac OS?

Zalecają użycie komendy ulimit , ale nie byli w stanie skutecznie ograniczyć kwoty do tego, co chcieli. Myślę, że problem, na który wpadli, polegał na tym, że ustawienie opcji -u lub -v nie uwzględniało systemu stronicowania pamięci, np. Możesz przydzielić tylko X miejsca na proces w prawdziwej pamięci RAM, ale możemy przewijać strony jesteś w wirtualnej pamięci przez cały dzień.

Pamiętaj, że może to być niebezpieczne wyłączenie pamięci wirtualnej, może to spowodować zablokowanie komputera Mac itp. Po uruchomieniu pamięci RAM.

Spróbuj uruchomić ulimit z argumentami -l, -m lub -v, jak jednak zaznaczono na stronie man ulimit, aż do systemu operacyjnego, jeśli zwróci uwagę na te ustawienia, czy nie, jak zaznaczono.

ulimit: ulimit [-SHacdefilmnpqrstuvx] [limit]

Zmodyfikuj limity zasobów powłoki.

Zapewnia kontrolę nad zasobami dostępnymi dla powłoki i tworzonymi przez nią procesami w systemach, które umożliwiają taką kontrolę.

Naprawdę nie mogę znaleźć żadnego określonego źródła, które potwierdza, czy OS X ignoruje ulimit, czy nie, ale po niepowodzeniu, do którego odwołuje się ulimit

Jeśli możesz sprawić, by ulimit działał dla twoich potrzeb sam, spróbuj, jeśli nie kombinacja ulimit i / lub wyłączenie pamięci wirtualnej może pozwolić ci ustawić limit 3 GB dla wybranych procesów. Do Twojej dyspozycji jest dobry link, aby uzyskać więcej informacji na temat Całkowicie wyłącz pamięć wirtualną w systemie Snow Leopard 10.6

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
MrDaniel
źródło
Wygląda na to, że prawdopodobnie poprawna odpowiedź - wypróbuję ją przy następnym uruchomieniu. Na razie akceptuję odpowiedź.
Fomite,
5

Jeśli korzystasz z serwera Lion (lub nowszego OSX) na komputerze Mac, możesz uruchomić system OSX na maszynie wirtualnej (VirtualBox, Parallels lub VMWare i in.) Na tym komputerze Mac. Ogranicz maszynę wirtualną do 3 GB fizycznej pamięci RAM, a każda aplikacja lub proces w maszynie wirtualnej również będzie ograniczony. System hostujący maszynę wirtualną powinien pozostać responsywny, nawet jeśli system operacyjny na maszynie wirtualnej jest ograniczony przez dysk zapasowy lub ulega awarii.

Jeśli debugujesz potencjalnie niekontrolowany proces, możesz być w stanie ssh na maszynie wirtualnej, aby uruchomić debugger lub debugowanie z linii poleceń i rejestrować rzeczy, aż sprawy się zablokują.

hotpaw2
źródło