Disabilitare temporaneamente la RAM per imitare un computer con specifiche inferiori?


30

Ho due Macbook del 2009. Uno ha 4 concerti di RAM e funziona con 10.10; uno ha 2 concerti e funziona con 10.5.

Sto pensando di aggiornare quest'ultima macchina a Yosemite (10.10), ma sono preoccupato che funzionerà lentamente con così poca RAM. Per avere un'idea di come sarebbero le prestazioni, mi chiedo se c'è un modo per "spegnere" metà della RAM nella macchina con specifiche più elevate. Se lo facessi, potrei avere un'idea di come Yosemite avrebbe funzionato sulla macchina da 2 concerti prima di fare effettivamente l'aggiornamento.

Esiste un modo per disabilitare temporaneamente la RAM senza rimuovere fisicamente il chip?


Perché non è necessario rimuovere il chip? Non potresti semplicemente scambiare la RAM fisica dei due MacBook?
Saaru Lindestøkke,

4
Non ho il cacciavite giusto a portata di mano.
dB "

3
2009 MacBook Pro accetterà la ram DDR3 1333 MHz (scenderà a 1066 mhz). Puoi acquistare per $ 30. Queste macchine impiegheranno fino a 8 GB. Aggiungi un SSD e questa è ancora una macchina molto decente.
Jasper Blues,

@dB 'Accetta la risposta di OSdweeb. invece del mio. Sebbene sia necessario riavviare, è un metodo elegante e predefinito e fornisce un risultato più affidabile per 10.9 / 10.10 e probabilmente in seguito. Il disco RAM funziona bene per Mac OS X fino a 10.8 senza riavvio e manomissione dei file di sistema.
klanomath,

Risposte:


25

Non è necessario estrarre RAM, creare un disco RAM o utilizzare una macchina virtuale. È sufficiente avviare il sistema operativo utilizzando il maxmem=valore del flag di avvio che è stato creato per questo scopo e esiste da decenni.

Basta aprire Terminale come sudoer ed entrare

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

Dopo aver inserito la modifica della password

<?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>

a

<?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>

e scrivere le modifiche su disco con ctrloed uscire da nano conctrlx

Riavvia il Mac per applicare le modifiche.

Per ripristinare le modifiche, rimuovere di nuovo 'maxmem = 2048' con nano.


2
Il mio cervello è un vecchio bidone della spazzatura ... Ieri ho provato a trovare questa soluzione facile venire l'inferno o l'acqua alta - e sapevo che esiste - ma non me lo ricordavo.
klanomath,

1
A proposito: faresti meglio a completare la registrazione, altrimenti in caso di perdita accidentale dei cookie, non sarà più possibile accedere al proprio account.
nicael,

Mentre questa risposta, come scritta il 4 aprile 15, potrebbe aver funzionato su OS X tramite OS X 10.10 Yosemite; tuttavia, non funziona più su OS X 10.11 El Capitan e versioni successive a meno che non si disattivi per la prima volta System Integrity Protection. Vedi Come modificare la protezione dell'integrità del sistema in El Capitan e, nonostante le sue indicazioni siano per El Capitan, le stesse istruzioni di base si applicano alle nuove versioni di macOS.
user3439894

14

Basta creare un disco RAM con dimensioni 2 GiB per ridurre la RAM disponibile per il sistema e le applicazioni in esecuzione.

Per ottenere il numero necessario di blocchi per creare un tale disco, moltiplicare (RAMdiskSize in MB) * 2048. Nel tuo esempio questo è 2048 * 2048 = 4194304.

Quindi apri Terminale e inserisci:

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

Riceverai un messaggio simile a quello:

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  

quindi utilizzare dd e il percorso del volume e riempire il disco con dati casuali:

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

Il comando scriverà 1 pezzi MiB di dati casuali nel file random.dat nel volume del disco RAM fino a quando non sarà riempito alla capacità.

Ciò dovrebbe ridurre artificialmente la RAM disponibile di ~ 2 GiB fino a quando non si smonta il disco RAM o si riavvia il Mac.

Dopo alcuni test questo non sembra funzionare in modo affidabile come nei sistemi più vecchi. Il motivo è la nuova gestione della memoria negli ultimi sistemi (dal 10.9 in poi).
La memoria utilizzata dal disco RAM non deve essere scambiata su disco, ma a seconda della qualità del file di dati casuali potrebbe essere compressa un po '. È possibile aumentare le dimensioni del disco RAM del 5-10% a ~ 2,1 GB per ottenere un'immagine più realistica.


Se vuoi farlo in 10.5-10.8 il seguente comando sembra sufficiente per ottenere un risultato affidabile (per ottenere l'identificatore del disco controlla l'output del diskutil...comando):

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

Soluzione fantastica! Se ho capito bene, ho richiesto 2 concerti di ram per un disco ram. Quel 2 concerti di RAM sono allocati, ma, dal momento che non sto usando il disco ram per nulla, in realtà non è accessibile da alcun elaborato. Se avessi la memoria virtuale attiva, il sistema operativo non scriverebbe questo blocco inutilizzato di ram sul mio file di scambio, liberando di nuovo effettivamente i 2 concerti?
dB "

@dB 'Hai ragione con la tua prima osservazione sulla RAM inutilizzata. In effetti probabilmente sarà molto compresso lasciando molta RAM libera. Quindi ho modificato la mia risposta per riempire il disco con dati casuali per bypassarlo.
klanomath,

Probabilmente puoi semplicemente scaricare tutti i calcoli della dimensione del disco e lasciare che riempia l'intero disco:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Josh

@Josh lo proverò di nuovo e modificherò la mia risposta se funziona. Ieri ho avuto problemi nell'esecuzione del comando in una macchina virtuale. Ho appena ricevuto un errore di "risorse occupate" e non è stato scritto nulla nel volume.
klanomath,

Se stai scrivendo su un file of=/Volumes/RAM\ Disk/random.dat, allora dovresti andare bene. se stai scrivendo sul disco, of=/dev/rdisk9allora devi essere root e potrebbe essere necessario smontarlo. (dovrebbe essere smontato, altrimenti il ​​sistema si confonderà)
Josh

8

Sì: utilizzare lo memory_pressurestrumento per applicare la pressione della memoria reale al sistema.

Non è un'analogia perfetta per rimuovere il chip di memoria poiché il tuning della memoria virtuale sa ancora che ci sono 4 GB o RAM e l'argomento -p percent_free non alloca una quantità costante di RAM, ma mantiene il sistema vicino allo X percento libero.

Dovrebbe consentire di vedere rapidamente se il carico di lavoro è adatto a un sistema con 2 GB di RAM anche con l'analogia imperfetta.

Se riesci a rimuovere fisicamente il chip, puoi prima simulare le cose e ottenere un benchmark e quindi apportare le modifiche all'hardware se devi verificarne l'esattezza.


Il problema principale che vedo quando si rimuove il chip fisico è che anche la modalità a doppio canale viene rimossa dall'immagine. La prima opzione in questa risposta sembra il modo migliore per farlo poiché i problemi di prestazioni reali derivano semplicemente dal maggiore utilizzo.
Thebluefish

3

Aggiungendo alla risposta di OSdweeb:

Dalla modifica di El Capitan il com.apple.Boot.plistfile è possibile solo disabilitando il protocollo SIP (System Integrity Protocol) (vedere questo thread ).

È possibile, tuttavia, impostare i flag di avvio con il seguente comando:

sudo nvram boot-args="maxmem=2048"


2

Un'altra soluzione sarebbe quella di utilizzare una macchina virtuale per simulare il Mac con RAM inferiore. Installa VMWare Fusion, Parallels o VirtualBox (se sei avventuroso) e installa OS X in questo. Quindi puoi manipolare il numero di core, la quantità di spazio su disco e (come stavi richiedendo) la quantità di RAM disponibile per OS X. VirtualBox è gratuito, ma attualmente limitato a 3Gb per OS X fino a quando gli sviluppatori non consentono operazioni del kernel a 64 bit . Gli altri due prodotti hanno prove rispettivamente di 30 e 14 giorni.


-1, scusa ... questo non è un buon confronto. Ora hai driver video virtualizzati, I / O virtualizzati e un piccolo successo nelle prestazioni della CPU. Adoro la virtualizzazione, ma se tutto ciò che vuoi fare è vedere come funzionerebbe il sistema con meno RAM disponibile, questa non è una buona soluzione.
Josh,

@Josh La piccola penalità prestazionale per la virtualizzazione dovrebbe essere trascurabile: le moderne CPU hanno il supporto hardware per tale compito, quindi le prestazioni saranno molto simili al bare metal, ad eccezione di alcuni casi marginali esoterici. Oltre a ciò, non solo puoi controllare direttamente quanta memoria è disponibile, ma puoi anche regolare la frequenza della CPU, i core disponibili, la memoria video disponibile e altri parametri. Per simulare veramente le macchine più vecchie, avere queste opzioni disponibili potrebbe rivelarsi utile. Le prestazioni di un sistema operativo non sono solo la RAM disponibile.
phyrfox,

Se stai parlando di virtualizzazione di livello enterprise come VMWare ESXi, allora hai ragione @phyrfox - sulla velocità della CPU . C'è un impatto sulle prestazioni nell'elaborazione grafica e video che sarà evidente se si esegue Mac OS X. Sono d'accordo, la virtualizzazione è la soluzione giusta quando si desidera regolare la frequenza della CPU, i core disponibili, l'hardware, ecc. Ma questa domanda riguardava solo la limitazione RAM disponibile, e per quel caso d'uso credo che la virtualizzazione non sia la soluzione giusta.
Josh,

-1

Per togliere la RAM, puoi:

Se il tuo macbook è in alluminio, togli tutto il fondo e la RAM dovrebbe essere perfettamente a metà.

Se è bianco, prendi il piccolo compartimento nell'angolo e accedi al montone in quel modo.

Fonte: https://support.apple.com/en-ca/HT1651


1
Si noti che chiede di disabilitarlo senza rimuovere fisicamente il pistone.
Spotlight

Poteva ancora risolvere il suo problema con questo è ciò che intendevo ...
Kachamenus

2
Ma la domanda era: "Esiste un modo per disabilitare temporaneamente la RAM senza rimuovere fisicamente il chip?", Quindi questo non risponde alla domanda
Josh

Mi dispiace per quello. Stavo solo affermando che c'è un modo per eliminare l'ariete.
Kachamenus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.