Tymczasowo wyłączasz pamięć RAM, aby naśladować maszynę o niższej specyfikacji?


30

Mam dwa MacBooki 2009. Jeden ma 4 gigabajty pamięci RAM i działa w systemie operacyjnym 10.10; jeden ma 2 koncerty i prowadzi OS 10.5.

Zastanawiam się nad uaktualnieniem tej drugiej maszyny do Yosemite (10.10), ale martwię się, że będzie działała powoli z tak małą pamięcią RAM. Aby zorientować się, jaka byłaby wydajność, zastanawiam się, czy jest jakiś sposób, aby „wyłączyć” połowę pamięci RAM w maszynie o wyższej specyfikacji. Gdybym to zrobił, mógłbym zorientować się, jak Yosemite działałby na maszynie z 2 gigami przed dokonaniem aktualizacji.

Czy jest jakiś sposób na tymczasowe wyłączenie pamięci RAM bez fizycznego usuwania układu?


Dlaczego usunięcie chipa nie jest wymagane? Czy nie możesz po prostu zamienić fizycznej pamięci RAM dwóch MacBooków?
Saaru Lindestøkke,

4
Nie mam pod ręką odpowiedniego śrubokręta.
dB „

3
2009 MacBook Pro zaakceptuje RAM DDR3 1333 MHz (zmniejszy się do 1066 MHz). Możesz kupić za 30 USD. Te maszyny zajmą do 8 GB. Dodaj dysk SSD, a to wciąż bardzo przyzwoita maszyna.
Jasper Blues,

@dB „Proszę zaakceptować odpowiedź OSdweeb. zamiast mojego. Chociaż musisz zrestartować, jest to elegancka i domyślna metoda, która zapewnia bardziej wiarygodny wynik dla 10.9 / 10.10 i prawdopodobnie później. Dysk RAM działa dobrze w systemie Mac OS X do 10.8 bez ponownego uruchamiania i ingerowania w pliki systemowe.
klanomath

Odpowiedzi:


25

Nie trzeba wyjmować pamięci RAM, tworzyć dysku RAM ani używać maszyny wirtualnej. Po prostu uruchom system operacyjny, używając maxmem=wartości flagi rozruchu, która została stworzona w tym celu i istnieje od dziesięcioleci.

Wystarczy otworzyć Terminal jako sudoer i wejść

sudo nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

Po wprowadzeniu hasła zmień

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Kernel Flags</key>
        <string></string>
</dict>
</plist>

do

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Kernel Flags</key>
        <string>maxmem=2048</string>
</dict>
</plist>

i zapisz zmiany na dysku za pomocą ctrloi zakończ za pomocąctrlx

Uruchom ponownie komputer Mac, aby zastosować zmiany.

Aby przywrócić zmiany, usuń „maxmem = 2048” za pomocą nano.


2
Mój mózg to stara śmietnik ... Wczoraj próbowałem znaleźć to łatwe rozwiązanie, takie jak piekło lub wysoka woda - i wiedziałem, że istnieje - ale po prostu nie pamiętałem.
klanomath

1
Przy okazji: lepiej dokończ rejestrację, w przeciwnym razie, jeśli przypadkowo zgubisz pliki cookie, nie będziesz już mógł zalogować się na swoje konto.
Nicola

Chociaż ta odpowiedź, napisana 4 kwietnia 2015 r., Mogła działać na OS X do OS X 10.10 Yosemite; jednak nie działa już w systemie OS X 10.11 El Capitan i nowszych, chyba że pierwszy raz wyłączy Ochronę integralności systemu. Zobacz Jak zmodyfikować ochronę integralności systemu w El Capitan , i chociaż jego instrukcje dotyczą El Capitan, te same podstawowe instrukcje dotyczą nowszych wersji macOS.
user3439894

14

Wystarczy utworzyć dysk RAM o rozmiarze 2 GiB, aby zmniejszyć ilość dostępnej pamięci RAM dla systemu i działających aplikacji.

Aby uzyskać niezbędną liczbę bloków do utworzenia takiego dysku, należy pomnożyć (RAMdiskSize w MB) * 2048. W twoim przykładzie jest to 2048 * 2048 = 4194304.

Następnie otwórz Terminal i wprowadź:

diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://4194304`

Otrzymasz wiadomość podobną do tej:

Started erase on disk9  
Unmounting disk  
Erasing  
Initialized /dev/rdisk9 as a 2 GB HFS Plus volume  
Mounting disk  
Finished erase on disk9 RAM Disk  

następnie użyj dd i ścieżki do woluminu i wypełnij dysk losowymi danymi:

dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k

Polecenie zapisze 1 porcje losowych danych MiB do pliku random.dat w woluminie dysku RAM, dopóki nie zostanie zapełnione.

Powinno to sztucznie zmniejszać dostępną pamięć RAM o ~ 2 GiB, aż do odmontowania dysku RAM lub ponownego uruchomienia komputera Mac.

Po kilku testach wydaje się, że nie działa to tak niezawodnie, jak w starszym systemie. Powodem jest nowe zarządzanie pamięcią w najnowszych systemach (10.9 i nowsze).
Pamięć używana przez dysk RAM nie powinna być zamieniana na dysk, ale w zależności od jakości losowego pliku danych może być nieco skompresowana. Możesz zwiększyć rozmiar dysku RAM o 5-10% do ~ 2,1 GB, aby uzyskać bardziej realistyczny obraz.


Jeśli chcesz to zrobić w 10.5–10.8, następujące polecenie wydaje się wystarczające, aby uzyskać wiarygodny wynik (aby uzyskać identyfikator dysku, sprawdź dane wyjściowe diskutil...polecenia):

dd if=/dev/zero of=/dev/rdisk9 bs=1m

Fajne rozwiązanie! Jeśli dobrze rozumiem, poleciłem 2 koncerty pamięci RAM dla dysku pamięci RAM. Te 2 gigabajty pamięci RAM są przydzielone, ale ponieważ nie używam dysku RAM do niczego, nie jest on faktycznie dostępny dla żadnego przetworzonego. Gdybym miał pamięć wirtualną, czy OS nie zapisałby tego nieużywanego bloku pamięci RAM do mojego pliku wymiany, skutecznie uwalniając 2 koncerty?
dB „

@dB „Masz rację z pierwszą uwagą na temat nieużywanej pamięci RAM. W rzeczywistości prawdopodobnie zostanie mocno skompresowany, pozostawiając dużo wolnej pamięci RAM. Zmodyfikowałem więc moją odpowiedź, aby wypełnić dysk losowymi danymi, aby to ominąć.
klanomath

Prawdopodobnie możesz po prostu zrzucić wszystkie obliczenia rozmiaru dysku i pozwolić dd wypełnić cały dysk:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Josh

@Josh Spróbuję to jeszcze raz i zmodyfikuję odpowiedź, jeśli zadziała. Wczoraj miałem problemy z wykonaniem polecenia na maszynie wirtualnej. Właśnie dostałem błąd „zajęte zasoby” i nic nie zostało zapisane w tomie.
klanomath

Jeśli piszesz do pliku, of=/Volumes/RAM\ Disk/random.datpowinieneś być w porządku. jeśli piszesz na dysk, of=/dev/rdisk9musisz być rootem i może być konieczne odmontowanie. (należy odmontować, w przeciwnym razie system się pomyli)
Josh

8

Tak - użyj memory_pressurenarzędzia do wywierania rzeczywistego nacisku pamięci na system.

Nie jest to idealna analogia do usuwania układu pamięci, ponieważ dostrajanie pamięci wirtualnej wciąż wie, że jest 4 GB lub pamięć RAM, a argument -p percent_free nie przydzieli stałej ilości pamięci RAM, ale utrzyma system w pobliżu X procent wolnego.

Powinno to pozwolić ci bardzo szybko sprawdzić, czy twoje obciążenie jest podatne na system z 2 GB pamięci RAM, nawet z niedoskonałą analogią.

Jeśli możesz fizycznie usunąć układ - możesz najpierw przeprowadzić symulację i uzyskać test porównawczy, a następnie dokonać zmiany sprzętu, jeśli chcesz sprawdzić, czy jest dokładny.


Głównym problemem, jaki widzę podczas usuwania fizycznego układu, jest to, że tryb dwukanałowy jest również usuwany z obrazu. Pierwsza opcja w tej odpowiedzi wydaje się lepszym sposobem na to, ponieważ rzeczywiste problemy z wydajnością wynikają po prostu ze zwiększonego wykorzystania.
Thebluefish

3

Dodanie do odpowiedzi OSdweeb:

Ponieważ edytowanie com.apple.Boot.plistpliku przez El Capitan jest możliwe tylko przy wyłączeniu protokołu integralności systemu (SIP) (zobacz ten wątek ).

Można jednak ustawić flagi rozruchowe za pomocą następującego polecenia:

sudo nvram boot-args="maxmem=2048"


2

Innym rozwiązaniem byłoby użycie maszyny wirtualnej do symulacji komputera Mac z niższą pamięcią RAM. Zainstaluj VMWare Fusion, Parallels lub VirtualBox (jeśli masz ochotę na przygodę) i zainstaluj w tym OS X. Następnie możesz manipulować liczbą rdzeni, ilością miejsca na dysku i (tak jak prosiłeś) ilością pamięci RAM dostępnej dla OS X. VirtualBox jest darmowy, ale obecnie ograniczony do 3Gb dla OS X, dopóki programiści nie pozwolą na 64-bitowe operacje jądra . Pozostałe dwa produkty mają odpowiednio 30-dniowe i 14-dniowe testy.


-1, przepraszam ... to nie jest dobre porównanie. Teraz masz zwirtualizowane sterowniki wideo, zwirtualizowane we / wy i niewielki spadek wydajności procesora. Uwielbiam wirtualizację, ale jeśli wszystko, co chcesz zrobić, to zobaczyć, jak system działałby przy mniejszej dostępnej pamięci RAM, nie jest to dobre rozwiązanie.
Josh

@Josh Mała kara za wydajność wirtualizacji powinna być nieistotna: nowoczesne procesory mają wsparcie sprzętowe dla takiego zadania, więc wydajność będzie bardzo bliska od zera, z wyjątkiem niektórych ezoterycznych przypadków z marginesami. Poza tym nie tylko możesz bezpośrednio kontrolować ilość dostępnej pamięci, ale także regulować częstotliwość procesora, dostępne rdzenie, dostępną pamięć wideo i inne parametry. Aby naprawdę symulować starsze maszyny, dostępność tych opcji może się okazać przydatna. Wydajność systemu operacyjnego to coś więcej niż dostępna pamięć RAM.
phyrfox,

Jeśli mówisz o wirtualizacji klasy korporacyjnej, takiej jak VMWare ESXi, to masz rację @phyrfox - o szybkości procesora . Wydajność grafiki i przetwarzania wideo jest zauważalna, co będzie zauważalne, jeśli uruchomisz system Mac OS X. Zgadzam się, wirtualizacja jest właściwym rozwiązaniem, gdy chcesz dostosować częstotliwość procesora, dostępne rdzenie, sprzęt itp. Ale to pytanie dotyczyło wyłącznie ograniczenia dostępną pamięć RAM, a dla tego przypadku użycia uważam, że wirtualizacja nie jest właściwym rozwiązaniem.
Josh

-1

Aby WYJMOWAĆ RAM, możesz:

Jeśli Twój MacBook jest z aluminium, zdejmij całe dno, a pamięć RAM powinna być dokładnie w środku.

Jeśli jest biały, weź małą komorę w rogu i wejdź w ten sposób do barana.

Źródło: https://support.apple.com/en-ca/HT1651


1
Zauważ, że prosi o wyłączenie go bez fizycznego usuwania barana.
Spotlight

Nadal mógł rozwiązać swój problem z tym, co miałem na myśli ...
Kachamenus

2
Ale pytanie brzmiało: „Czy jest jakiś sposób na tymczasowe wyłączenie pamięci RAM bez fizycznego usuwania układu?”, Więc to nie odpowiada na pytanie
Josh

Przepraszam za to. Właśnie stwierdziłem, że istnieje sposób na usunięcie barana.
Kachamenus,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.