Тимчасове відключення оперативної пам’яті, щоб імітувати машину нижньої специфікації?


30

У мене є два Macbook 2009 року. Один має 4 гіга оперативної пам’яті та працює 10.10; один має 2 концерти та працює OS 10.5.

Я розглядаю можливість модернізації останньої машини до Yosemite (10.10), але я переживаю, що вона буде працювати повільно з такою невеликою кількістю ОЗУ. Щоб зрозуміти, якою буде продуктивність, мені цікаво, чи є якимось чином я міг би «вимкнути» половину оперативної пам’яті у вищій машині. Якби я це зробив, я міг би зрозуміти, як Yosemite буде працювати на 2-х концертній машині, перш ніж реально зробити оновлення.

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


Чому не потрібно видаляти чіп? Не могли б ви просто поміняти фізичну оперативну пам’ять двох MacBooks?
Saaru Lindestøkke

4
У мене немає зручної викрутки.
дБ '

3
MacBook Pro 2009 прийматиме оперативні пам’яті 1333 МГц DDR3 (він знизиться до 1066 МГц). Ви можете придбати за 30 доларів. Ці машини займуть до 8 Гб. Додайте SSD, і це все ще дуже пристойна машина.
Джаспер Блюз

@dB 'Прийміть відповідь OSdweeb. замість моєї. Хоча вам доведеться перезапустити, це елегантний і за замовчуванням метод, і він дає більш надійний результат за 10.9 / 10.10 і, можливо, пізніше. Диск оперативної пам’яті добре працює для Mac OS X до 10.8 без перезавантаження та підробки системних файлів.
кланомат

Відповіді:


25

Немає необхідності виймати оперативну пам’ять, створювати диск RAM або використовувати VM. Просто завантажте ОС, використовуючи maxmem=значення прапора завантаження, створене для цієї мети і існує вже десятиліттями.

Просто відкрийте Термінал як судора і введіть

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" знову нано.


2
Мій мозок - це стара сміттєва кошик ... Вчора я намагався знайти це легке рішення, яке прийшло в пекло чи багато води - і я знав, що воно існує - але я просто не пам’ятав цього.
кланомат

1
До речі: вам краще завершити реєстрацію, інакше якщо ви випадково втратите файли cookie, ви більше не зможете ввійти у свій обліковий запис.
nicael

Хоча ця відповідь, написана 4 квітня 15 року, можливо, працювала в OS X через OS X 10.10 Yosemite; однак він більше не працює в OS X 10.11 El Capitan і пізніших, якщо спочатку не вимкнути Захист цілісності системи. Див. Розділ Як змінити захист цілісності системи в Ель-Капітан , і, тим не менш, поки його вказівки стосуються El Capitan, однакові основні інструкції застосовуються і до новіших версій macOS.
користувач3439894

14

Просто створіть диск оперативної пам’яті розміром 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 MiB шматки випадкових даних у файл random.dat в обсязі диска ОЗУ, поки він не заповниться до ємності.

Це повинно штучно зменшити доступну оперативну пам’ять на ~ 2 Гб, поки ви не відключите диск ОЗУ або перезавантажте комп'ютер Mac.

Після деяких тестувань, схоже, це не працює так надійно, як у старій системі. Причина - нове управління пам’яттю в останніх системах (10,9 і вище).
Пам'ять, яку використовує диск RAM, не слід замінювати на диск, але залежно від якості файлу випадкових даних вона може бути трохи стиснута. Ви можете збільшити розмір диска ОЗУ на 5-10% до ~ 2,1 ГБ, щоб отримати більш реалістичну картину.


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

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

Класне рішення! Якщо я правильно розумію, я наказував 2 гіга оперативної пам’яті для оперативного диска. Ці два гіга оперативної пам’яті виділено, але, оскільки я нічим не використовую оперативний диск, до нього фактично не вдається отримати доступ жоден оброблений. Якщо у мене ввімкнена віртуальна пам'ять, чи не ос-б записувати цей невикористаний блок оперативної пам’яті в мій swapfile, фактично звільняючи 2 концерти знову?
дБ '

@dB 'Ви маєте рацію з першим зауваженням про невикористану оперативну пам’ять. Насправді це, ймовірно, буде сильно стисненим, залишаючи багато вільної оперативної пам’яті. Тому я змінив свою відповідь, щоб заповнити диск випадковими даними, щоб обійти це.
кланомат

Ви, ймовірно, можете просто скинути всі обчислення розміру диска і дозволити dd заповнити весь диск:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Josh

@Josh я спробую це ще раз і модифікую свою відповідь, якщо це спрацює. Вчора у мене виникли проблеми з виконанням команди в VM. У мене просто з’явилася помилка «зайнято ресурсами», і нічого не було записано в томі.
кланомат

Якщо ви пишете у файл of=/Volumes/RAM\ Disk/random.dat, то вам слід добре. якщо ви пишете на диск, of=/dev/rdisk9то вам доведеться викорінити корінь, і його, можливо, доведеться відключити. (його слід відключити, інакше система заплутається)
Джош

8

Так - за допомогою memory_pressureінструменту застосувати реальний тиск пам'яті до системи.

Це не є ідеальною аналогією видаленню мікросхеми пам'яті, оскільки віртуальна настройка пам’яті все ще знає, що є 4 ГБ або оперативна пам’ять, і аргумент -p процента_free не виділяє постійну кількість оперативної пам’яті, але тримайте систему близько до X відсотків вільною.

Це повинно дозволяти вам дуже швидко зрозуміти, чи піддається вашій роботі навантаження на систему з 2 Гб оперативної пам’яті навіть за недосконалої аналогії.

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


Основна проблема, яку я бачу при видаленні фізичного чіпа, полягає в тому, що з каналу також знімається двоканальний режим. Перший варіант у цій відповіді здається кращим способом зробити це, оскільки реальні проблеми з ефективністю просто випливають із збільшення використання.
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-денний випробування відповідно.


-1, вибачте ... це не гарне порівняння. Тепер у вас є віртуалізовані драйвери відео, віртуалізовані введення / виведення та невеликий показник продуктивності процесора. Я люблю віртуалізацію, але якщо все, що ви хочете зробити, це побачити, як система працюватиме з меншою кількістю оперативної пам’яті, це не гарне рішення.
Джош

@Josh Малий штраф за продуктивність за віртуалізацію повинен бути незначним: сучасні процесори мають апаратну підтримку для такого завдання, тому продуктивність буде дуже близькою до голого металу, за винятком деяких випадків езотеричної бахроми. Крім того, ви не тільки можете безпосередньо контролювати кількість пам'яті, ви також можете налаштувати частоту процесора, наявні ядра, доступну відеопам'ять та інші параметри. По-справжньому імітувати старі машини, наявність цих варіантів може виявитися корисним. Продуктивність ОС більше, ніж просто доступна оперативна пам’ять.
фірфокс

Якщо ви говорите про віртуалізацію корпоративного класу, як VMWare ESXi, то ви правий @phyrfox - про швидкість процесора . Існує хіт на ефективність обробки графіки та відео, який буде помітний при роботі Mac OS X. Я погоджуюся, віртуалізація - це правильне рішення, коли ви хочете налаштувати частоту процесора, наявні ядра, апаратне забезпечення тощо. Але це питання стосувалося лише обмеження доступна оперативна пам'ять, і для цього випадку використання я вважаю, що віртуалізація не є правильним рішенням.
Джош

-1

Щоб взяти оперативну пам'ять, ви можете:

Якщо у вашій макбукні є алюміній, ви знімаєте все дно, а оперативна пам’ять повинна бути правильною присмаком посередині.

Якщо він білий, візьміть маленьке відділення в кутку і перейдіть до барана таким чином.

Джерело: https://support.apple.com/en-ca/HT1651


1
Зауважте, що він просить відключити його, не фізично знімаючи барана.
Прожектор

Він все ще міг вирішити свою проблему з цим, що я мав на увазі ...
Качамен

2
Але питання було, «Чи є якийсь - небудь спосіб , щоб тимчасово відключити RAM без фізичного видалення чіпа?», Так що це не дає відповіді на питання
Джош

Вибачте, що це. Я тільки заявив, що є спосіб вивезти барана.
Качамен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.