Désactiver temporairement la RAM pour imiter une machine de spécifications inférieures?

30

J'ai deux Macbooks 2009. L'un a 4 Go de RAM et fonctionne sous 10.10; on a 2 concerts et exécute os 10.5.

J'envisage de mettre à niveau cette dernière machine vers Yosemite (10.10), mais je crains qu'elle ne s'exécute lentement avec si peu de RAM. Afin d'avoir une idée de ce que seraient les performances, je me demande s'il y a un moyen de "désactiver" la moitié de la RAM dans la machine de spécifications supérieures. Si je faisais cela, je pourrais avoir une idée de la façon dont Yosemite fonctionnerait sur la machine à 2 gig avant de faire la mise à niveau.

Existe-t-il un moyen de désactiver temporairement la RAM sans retirer physiquement la puce?

dB '
la source
Pourquoi le retrait de la puce n'est-il pas une exigence? Ne pourriez-vous pas simplement échanger la RAM physique des deux MacBook?
Saaru Lindestøkke
4
Je n'ai pas le bon tournevis à portée de main.
dB '
3
Le MacBook Pro 2009 acceptera la mémoire RAM DDR3 à 1333 MHz (il passera à 1066 MHz). Vous pouvez acheter pour 30 $. Ces machines prendront jusqu'à 8 Go. Ajoutez un SSD et c'est toujours une machine très décente.
Jasper Blues
@dB 'Veuillez accepter la réponse d'OSdweeb. au lieu du mien. Bien que vous deviez redémarrer, c'est une méthode élégante et par défaut et elle fournit un résultat plus fiable pour 10.9 / 10.10 et probablement plus tard. Le disque RAM fonctionne bien pour Mac OS X jusqu'à 10.8 sans redémarrage ni altération des fichiers système.
klanomath

Réponses:

25

Il n'est pas nécessaire de retirer de la RAM, de créer un disque RAM ou d'utiliser une machine virtuelle. Démarrez simplement le système d'exploitation à l'aide de la maxmem=valeur d'indicateur de démarrage qui a été créée à cet effet et existe depuis des décennies.

Ouvrez simplement Terminal en tant que sudoer et entrez

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

Après avoir entré votre changement de mot de passe

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

à

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

et écrire les modifications sur le disque avec ctrloet quitter nano avecctrlx

Redémarrez votre Mac pour appliquer les modifications.

Pour annuler les modifications, supprimez à nouveau «maxmem = 2048» avec nano.

OSdweeb
la source
2
Mon cerveau est une vieille poubelle ... Hier, j'ai essayé de trouver cette solution facile en enfer ou en crue - et je savais qu'elle existait - mais je ne m'en souvenais tout simplement pas.
klanomath
1
Soit dit en passant: vous feriez mieux de terminer l'enregistrement, sinon si vous perdez accidentellement vos cookies, vous ne pourrez plus vous connecter à votre compte.
nicael
Bien que cette réponse, telle qu'écrite le 4 avril 15, ait pu fonctionner sur OS X à travers OS X 10.10 Yosemite; cependant, il ne fonctionne plus sur OS X 10.11 El Capitan et versions ultérieures, sauf si l'on désactive d'abord la protection de l'intégrité du système. Voir Comment modifier la protection de l'intégrité du système dans El Capitan , et bien que ses instructions s'appliquent à El Capitan, les mêmes instructions de base s'appliquent aux versions plus récentes de macOS.
user3439894
14

Créez simplement un disque RAM avec la taille 2 Gio pour réduire la RAM disponible pour le système et les applications en cours d'exécution.

Pour obtenir le nombre nécessaire de blocs pour créer un tel disque, multipliez (RAMdiskSize en Mo) * 2048. Dans votre exemple, c'est 2048 * 2048 = 4194304.

Ouvrez ensuite Terminal et entrez:

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

Vous obtiendrez un message similaire à celui-ci:

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  

puis utilisez dd et le chemin d'accès au volume et remplissez le disque avec des données aléatoires:

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

La commande écrira des morceaux de données aléatoires de 1 Mio dans le fichier random.dat du volume du disque RAM jusqu'à ce qu'il soit plein.

Cela devrait réduire artificiellement votre RAM disponible de ~ 2 Gio jusqu'à ce que vous démontiez le disque RAM ou redémarriez votre Mac.

Après quelques tests, cela ne semble pas fonctionner de manière aussi fiable que dans un système plus ancien. La raison en est la nouvelle gestion de la mémoire dans les derniers systèmes (10.9 et plus).
La mémoire utilisée par le disque RAM ne doit pas être échangée sur le disque, mais en fonction de la qualité du fichier de données aléatoire, elle peut être un peu compressée. Vous pouvez augmenter la taille du disque RAM de 5 à 10% à environ 2,1 Go pour obtenir une image plus réaliste.


Si vous voulez faire cela dans 10.5-10.8, la commande suivante semble suffisante pour obtenir un résultat fiable (pour que l'identificateur de disque vérifie la sortie de la diskutil...commande):

dd if=/dev/zero of=/dev/rdisk9 bs=1m
klanomath
la source
Solution cool! Si je comprends bien, j'ai réquisitionné 2 Go de RAM pour un disque RAM. Ces 2 Go de RAM sont alloués, mais comme je n'utilise pas le disque RAM pour quoi que ce soit, il n'est en fait accessible à aucun traitement. Si j'ai de la mémoire virtuelle, le système d'exploitation n'écrirait-il pas ce bloc de RAM inutilisé dans mon fichier d'échange, libérant ainsi à nouveau les 2 concerts?
dB '
@dB 'Vous avez raison avec votre première remarque sur la RAM inutilisée. En fait, il sera probablement très compressé, laissant beaucoup de RAM libre. J'ai donc modifié ma réponse pour remplir le disque avec des données aléatoires pour contourner cela.
klanomath
Vous pouvez probablement simplement vider tous les calculs de la taille du disque et laisser dd remplir tout le disque:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Josh
@Josh, je vais réessayer et modifier ma réponse si cela fonctionne. Hier, j'ai eu des problèmes pour exécuter la commande dans une machine virtuelle. Je viens de recevoir une erreur «ressource occupée» et rien n'a été écrit sur le volume.
klanomath
Si vous écrivez dans un fichier of=/Volumes/RAM\ Disk/random.dat, alors ça devrait aller. si vous écrivez sur le disque, of=/dev/rdisk9vous devez être root et il peut être nécessaire de le démonter. (il doit être démonté, sinon le système se confondra)
Josh
8

Oui - utilisez l' memory_pressureoutil pour appliquer une pression de mémoire réelle au système.

Ce n'est pas une analogie parfaite avec la suppression de la puce de mémoire, car le réglage de la mémoire virtuelle sait toujours qu'il y a 4 Go ou RAM et l'argument -p percent_free n'allouera pas une quantité constante de RAM, mais gardera le système proche de X% libre.

Il devrait vous permettre de voir très rapidement si votre charge de travail est compatible avec un système avec 2 Go de RAM, même avec l'analogie imparfaite.

Si vous pouvez physiquement retirer la puce - vous pouvez d'abord simuler des choses et obtenir une référence, puis effectuer le changement de matériel si vous devez vérifier qu'il est précis.

bmike
la source
Le principal problème que je vois avec la suppression de la puce physique est que le mode double canal est également supprimé de l'image. La première option de cette réponse semble être la meilleure façon de le faire, car les vrais problèmes de performances proviennent simplement de l'utilisation accrue.
Thebluefish du
3

Ajout à la réponse d'OSdweeb:

Depuis El Capitan, l'édition du com.apple.Boot.plistfichier n'est possible qu'en désactivant le System Integrity Protocol (SIP) (voir ce fil ).

Vous pouvez cependant définir les indicateurs de démarrage avec la commande suivante:

sudo nvram boot-args="maxmem=2048"

Elwin
la source
2

Une autre solution serait d'utiliser une machine virtuelle pour simuler le Mac à plus faible RAM. Installez VMWare Fusion, Parallels ou VirtualBox (si vous êtes aventureux) et installez OS X là-dedans. Ensuite, vous pouvez manipuler le nombre de cœurs, la quantité d'espace disque et (comme vous le demandiez) la quantité de RAM disponible pour OS X. VirtualBox est gratuit, mais actuellement limité à 3 Gb pour OS X jusqu'à ce que les développeurs autorisent les opérations du noyau 64 bits . Les deux autres produits ont des essais de 30 et 14 jours, respectivement.

ktappe
la source
-1, désolé ... ce n'est pas une bonne comparaison. Maintenant, vous avez des pilotes vidéo virtualisés, des E / S virtualisées et une petite baisse des performances du processeur. J'adore la virtualisation, mais si tout ce que vous voulez faire est de voir comment le système fonctionnerait avec moins de RAM disponible, ce n'est pas une bonne solution.
Josh
@Josh La petite pénalité de performance pour la virtualisation devrait être négligeable: les processeurs modernes ont un support matériel pour une telle tâche, donc les performances seront très proches du bare-metal, à l'exception de certains cas marginaux ésotériques. En plus de cela, vous pouvez non seulement contrôler directement la quantité de mémoire disponible, vous pouvez également ajuster la fréquence du processeur, les cœurs disponibles, la mémoire vidéo disponible et d'autres paramètres. Pour vraiment simuler des machines plus anciennes, la disponibilité de ces options peut s'avérer utile. Les performances d'un système d'exploitation sont bien plus que de la mémoire RAM disponible.
phyrfox
Si vous parlez de virtualisation de niveau entreprise comme VMWare ESXi, alors vous avez raison @phyrfox - sur la vitesse du processeur . Il y a un impact sur les performances des graphiques et du traitement vidéo qui sera perceptible si vous utilisez Mac OS X. Je suis d'accord, la virtualisation est la bonne solution lorsque vous souhaitez ajuster la fréquence du processeur, les cœurs disponibles, le matériel, etc. Mais cette question était purement limitée RAM disponible, et pour ce cas d'utilisation, je pense que la virtualisation n'est pas la bonne solution.
Josh
-1

Pour PRENDRE DE LA RAM, vous pouvez:

Si votre macbook est en aluminium, vous enlevez tout le bas et la RAM devrait être juste au milieu.

S'il est blanc, prenez le petit compartiment dans le coin et accédez au bélier de cette façon.

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

Kachamenus
la source
1
Notez qu'il demande de le désactiver sans retirer physiquement le bélier.
Spotlight
Il pourrait toujours résoudre son problème avec ce que je voulais dire ...
Kachamenus
2
Mais la question était: "Existe-t-il un moyen de désactiver temporairement la RAM sans retirer physiquement la puce?", Donc cela ne répond pas à la question
Josh
Désolé pour ça. Je disais simplement qu'il existe un moyen de retirer le bélier.
Kachamenus