Временно отключить оперативную память, чтобы имитировать машину с более низкими характеристиками?

У меня два Макбука 2009 года. Один имеет 4 гигабайта оперативной памяти и работает под управлением ОС 10.10; у одного 2 гигабайта и работает ОС 10.5.

Я рассматриваю возможность обновления последней машины до Yosemite (10.10), но я беспокоюсь, что она будет работать медленно с таким небольшим объемом оперативной памяти. Чтобы понять, на что будет похожа производительность, мне интересно, есть ли способ «отключить» половину оперативной памяти на машине с более высокими характеристиками. Если бы я сделал это, я мог бы получить представление о том, как Yosemite будет работать на машине с 2 гигабайтами, прежде чем выполнять обновление.

Есть ли способ временно отключить оперативную память без физического удаления чипа?

Почему удаление чипа не является обязательным требованием? Не могли бы вы просто поменять местами физическую память двух MacBook?
У меня нет под рукой подходящей отвертки.
MacBook Pro 2009 года будет принимать оперативную память DDR3 1333 МГц (скорость будет снижена до 1066 МГц). Купить можно за 30 долларов. Эти машины будут занимать до 8 Гб. Добавьте SSD, и это все еще очень приличная машина.
@dB' Пожалуйста, примите ответ OSdweeb. вместо моего. Хотя вам придется перезапустить, это элегантный метод по умолчанию, который обеспечивает более надежный результат для 10.9/10.10 и, возможно, более поздних версий. RAM-диск хорошо работает для Mac OS X до версии 10.8 без перезагрузки и вмешательства в системные файлы.

Ответы (6)

Нет необходимости извлекать оперативную память, создавать виртуальный диск или использовать виртуальную машину. Просто загрузите ОС, используя maxmem=значение флага загрузки, которое было создано для этой цели и использовалось десятилетиями.

Просто откройте Терминал как sudoer и введите

sudo nano /Library/Preferences/SystemConfiguration/com.apple.Boot.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></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>

и запишите изменения на диск с помощью ctrloи выйдите из nano с помощьюctrlx

Перезагрузите Mac, чтобы применить изменения.

Чтобы отменить изменения, снова удалите «maxmem=2048» с помощью nano.

Мой мозг — старая мусорная корзина... Вчера я пытался найти это простое решение, несмотря ни на что — и я знал, что оно существует, — но я просто не помнил его.
Кстати: вам лучше пройти регистрацию, иначе, если вы случайно потеряете свои куки, вы больше не сможете войти в свою учетную запись.
Хотя этот ответ, написанный 4 апреля 2015 года, возможно, работал на OS X до OS X 10.10 Yosemite; однако он больше не работает в OS X 10.11 El Capitan и более поздних версиях, если сначала не отключить защиту целостности системы. См. Как изменить защиту целостности системы в El Capitan , и, хотя его инструкции предназначены для El Capitan, тем не менее, те же основные инструкции применимы к более новым версиям macOS.
Пробовал это, и это не работает - Монитор активности по-прежнему говорит, что использует 8 ГБ в приложениях и 6 ГБ в кэшированных файлах из моих 16 ГБ, когда я установил maxmem = 8192 ... помогите!

Просто создайте RAM-диск размером 2 ГБ, чтобы уменьшить доступную оперативную память для системы и запущенных приложений.

Чтобы получить необходимое количество блоков для создания такого диска, умножьте (RAMdiskSize в МБ)*2048. В вашем примере это 2048*2048=4194304.

Затем откройте Терминал и введите:

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

Вы получите сообщение, похожее на это:

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  

затем используйте dd и путь к тому и заполните диск случайными данными:

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

Команда будет записывать фрагменты случайных данных размером 1 МБ в файл random.dat в томе RAM-диска, пока он не будет заполнен до отказа.

Это должно искусственно уменьшить доступную оперативную память примерно на 2 ГБ, пока вы не отключите RAM-диск или не перезагрузите Mac.

После некоторого тестирования это работает не так надежно, как в старой системе. Причина в новом управлении памятью в последних системах (10.9 и выше).
Память, используемая RAM-диском, не должна быть заменена на диск, но в зависимости от качества файла случайных данных она может быть немного сжата. Вы можете увеличить размер RAM-диска на 5-10% до ~ 2,1 ГБ, чтобы получить более реалистичную картинку.


Если вы хотите сделать это в 10.5-10.8, следующая команда кажется достаточной для получения надежного результата (чтобы получить идентификатор диска, проверьте вывод diskutil...команды):

dd if=/dev/zero of=/dev/rdisk9 bs=1m
Классное решение! Если я правильно понимаю, я реквизировал 2 гига оперативной памяти для RAM-диска. Эти 2 гигабайта ОЗУ выделены, но, поскольку я ни для чего не использую оперативный диск, на самом деле к нему не обращаются никакие процессы. Если у меня включена виртуальная память, не запишет ли ОС этот неиспользуемый блок оперативной памяти в мой файл подкачки, эффективно снова освободив 2 гигабайта?
@dB' Вы правы в своем первом замечании о неиспользуемой оперативной памяти. На самом деле он, вероятно, будет сильно сжат, оставляя много свободной оперативной памяти. Поэтому я изменил свой ответ, чтобы заполнить диск случайными данными, чтобы обойти это.
Вероятно, вы можете просто сбросить все вычисления размера диска и позволить dd заполнить весь диск:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
@ Джош, я попробую еще раз и изменю свой ответ, если он сработает. Вчера у меня были проблемы с выполнением команды на виртуальной машине. Я только что получил ошибку «ресурс занят», и в том ничего не было записано.
Если вы пишете в файл, of=/Volumes/RAM\ Disk/random.datто все должно быть в порядке. если вы записываете на диск, of=/dev/rdisk9то вы должны быть root, и, возможно, его придется размонтировать. (его надо размонтировать, иначе система запутается)
@ Джош Ты прав. Спасибо за подсказку. Я не знаю, что вчера пошло не так, хотя я выполнил это как root.

Да — используйте этот memory_pressureинструмент, чтобы применить к системе реальное давление памяти.

Это не идеальная аналогия с удалением микросхемы памяти, так как настройка виртуальной памяти по-прежнему знает, что имеется 4 ГБ или ОЗУ, а аргумент -p процент_свободный не будет выделять постоянный объем ОЗУ, но будет поддерживать систему на уровне X процентов свободной.

Это должно позволить вам очень быстро увидеть, соответствует ли ваша рабочая нагрузка системе с 2 ГБ оперативной памяти, даже при несовершенной аналогии.

Если вы можете физически удалить чип - вы можете сначала смоделировать вещи и получить тест, а затем изменить оборудование, если вам нужно проверить его точность.

Основная проблема, которую я вижу при удалении физического чипа, заключается в том, что двухканальный режим также удаляется из изображения. Первый вариант в этом ответе кажется лучшим способом сделать это, поскольку реальные проблемы с производительностью возникают просто из-за более частого использования.

Добавление к ответу OSdweeb:

Начиная с El Capitan, редактирование com.apple.Boot.plistфайла возможно только при отключении протокола целостности системы (SIP) (см. эту ветку ).

Однако вы можете установить загрузочные флаги с помощью следующей команды:

sudo nvram boot-args="maxmem=2048"

Другим решением было бы использовать виртуальную машину для имитации Mac с меньшей оперативной памятью. Установите VMWare Fusion, Parallels или VirtualBox (если вы любите приключения) и установите туда OS X. Затем вы можете управлять количеством ядер, объемом дискового пространства и (как вы просили) объемом оперативной памяти, доступной для OS X. VirtualBox бесплатен, но в настоящее время ограничен 3 ГБ для OS X, пока разработчики не разрешат 64-битные операции ядра. . Два других продукта имеют 30-дневную и 14-дневную пробную версию соответственно.

-1, извините... это не очень удачное сравнение. Теперь у вас есть виртуализированные видеодрайверы, виртуализированный ввод-вывод и небольшое снижение производительности процессора. Я люблю виртуализацию, но если все, что вы хотите сделать, это посмотреть, как система будет работать с меньшим количеством доступной оперативной памяти, это не очень хорошее решение.
@Josh Небольшое снижение производительности для виртуализации должно быть незначительным: современные процессоры имеют аппаратную поддержку для такой задачи, поэтому производительность будет очень близка к голому железу, за исключением некоторых эзотерических второстепенных случаев. Кроме того, вы можете не только напрямую контролировать объем доступной памяти, но и регулировать частоту процессора, доступные ядра, доступную видеопамять и другие параметры. Чтобы по-настоящему имитировать старые машины, наличие этих опций может оказаться полезным. Производительность ОС — это больше, чем просто доступная оперативная память.
Если вы говорите о виртуализации корпоративного уровня, такой как VMWare ESXi, то вы правы @phyrfox — о скорости процессора . Производительность обработки графики и видео снижается, что будет заметно при использовании Mac OS X. Я согласен, виртуализация правильное решение, когда вы хотите настроить частоту процессора, доступные ядра, аппаратное обеспечение и т. д. Но этот вопрос касался исключительно ограничения доступной оперативной памяти, и я считаю, что для этого варианта использования виртуализация не является правильным решением.

Чтобы ВЫНЯТЬ ОЗУ, вы можете:

Если ваш MacBook алюминиевый, вы снимаете всю нижнюю часть, и оперативная память должна быть прямо посередине.

Если он белый, возьмите маленькое отделение в углу и таким образом получите доступ к барану.

Источник: https://support.apple.com/en-ca/HT1651 .

Обратите внимание, что он просит отключить его без физического удаления оперативной памяти.
Он все еще мог решить свою проблему, вот что я имел в виду...
Но вопрос был: «Есть ли способ временно отключить оперативную память без физического удаления чипа?», Так что это не отвечает на вопрос.
Прости за это. Я просто говорил, что есть способ убрать баран.