Временное отключение оперативной памяти для имитации машины с более низкой спецификацией?

30

У меня есть два Macbook 2009 года. Один имеет 4 гигабайта оперативной памяти и работает OS 10.10; один имеет 2 концерта и работает OS 10,5.

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

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

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

Ответы:

25

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

Просто откройте Terminal как 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и выйти из нано сctrlx

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

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

OSdweeb
источник
2
Мой мозг - старый мусорный бак ... Вчера я пытался найти это простое решение, будь то ад или высокая вода - и я знал, что оно существует - но я просто не запомнил его.
klanomath
1
Кстати, вам лучше пройти регистрацию, иначе, если вы случайно потеряете свои куки, вы больше не сможете войти в свою учетную запись.
Никэль
В то время как этот ответ, написанный 4 апреля 15, возможно, работал на OS X через OS X 10.10 Yosemite; однако, это больше не работает на OS X 10.11 El Capitan и позже, если один сначала не отключает Системную Защиту Целостности. См. Как изменить защиту целостности системы в El Capitan , и, хотя ее указания относятся к El Capitan, те же основные инструкции применимы для более новых версий macOS.
user3439894
14

Просто создайте 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
klanomath
источник
Классное решение! Если я правильно понимаю, я получил 2 гигабайта оперативной памяти для оперативного диска. Эти 2 гигабайта оперативной памяти выделены, но, поскольку я ни для чего не использую RAM-диск, к нему фактически не обращаются никакие обработанные. Если у меня включена виртуальная память, не будет ли операционная система записывать этот неиспользуемый блок памяти в мой файл подкачки, эффективно освобождая 2 гигабайта снова?
дБ '
@dB 'Вы правы со своим первым замечанием о неиспользованной оперативной памяти. На самом деле он, вероятно, будет сильно сжат, оставляя много свободной оперативной памяти. Поэтому я изменил свой ответ, чтобы заполнить диск случайными данными, чтобы обойти это.
klanomath
Вероятно, вы можете просто сбросить все расчеты размера диска и позволить dd заполнить весь диск:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Джош,
@ Джош, я попробую это снова и изменю свой ответ, если это работает. Вчера у меня были проблемы с выполнением команды в виртуальной машине. Я только что получил ошибку «Ресурс занят», и на том ничего не было записано.
klanomath
Если вы пишете в файл of=/Volumes/RAM\ Disk/random.dat, то все будет в порядке. если вы пишете на диск, of=/dev/rdisk9то вы должны быть пользователем root, и, возможно, он должен быть размонтирован. (он должен быть размонтирован, иначе система запутается)
Джош
8

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

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

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

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

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

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

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

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

sudo nvram boot-args="maxmem=2048"

Элвин
источник
2

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

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

Чтобы забрать оперативную память, вы можете:

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

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

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

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