Чи є спосіб змусити OSX використовувати більше оперативної пам’яті та менше обміну?


12

Проблема, яка у мене виникає, полягає в тому, що у нас на сервері (та інших ящиках OSX) у нас є 4 Гб оперативної пам’яті, але ми виявляємо, що OSX використовує лише 40-60% доступної оперативної пам’яті, а також обмінюється 6-7 ГБ. Сервер працює під керуванням Apache та MySQL, а інші машини - настільні.

Я порівнював це використання з аналогічними скриньками Linux (апаратне та програмне забезпечення) і виявляв, що Linux зазвичай використовує 80-90% оперативної пам’яті і має набагато менший файл обміну (2-3 ГБ). Сервери Linux також зазвичай працюють набагато швидше.

Чи є спосіб змусити OSX використовувати більше або більшу частину оперативної пам’яті, перш ніж використовувати файл підкачки диска?

У Windows ви можете фактично відключити своп. Чи є щось подібне для OSX?


Для уточнення: 1. Чи вузьким місцем є система ВМ? Як і у випадку, коли ви бачите зірки пам'яті, якщо кількість сторінок проходить, велика кількість. 2. Де ви отримуєте інформацію про розмір безкоштовного та розміру віртуального комп'ютера? Наприклад, розмір VM, зазначений у "Моніторі діяльності", не відповідає розміру файлу swap.
Chealion

У мене немає доказів, що проблема VM (VM або swap) є проблемою, але я знаю, що на робочому столі у мене є 6 Гб оперативної пам’яті, з яких зазвичай 2-3 Гб зазвичай безкоштовні. Коли я перемикаю програми, ви вважаєте, що це швидко палає, тому що це все в оперативній пам'яті, але замість цього потрібно 2-15 секунд, щоб повернутися до чогось типу Illustrator. Я думаю, що подібні речі відбуваються на сервері - щось на кшталт кешування для MySQL або тимчасових таблиць. Я використовую верхню для визначення VM, оперативної пам'яті та використання swap. Будь-які ідеї?
Дарріл Хайн

3
Визначити фактичне використання vm найпростіше запустити du -sh /var/vm- це сказало, що це може бути штучно високим, якщо наявний сон (найчастіше це спостерігається на ноутбуках). Є кілька інструментів, які допоможуть вам визначити, чи викликає сповільнення пам’ять: vm_stat- особливо вас цікавить значення сторінок, - якщо воно значно збільшується, то ви знаєте, що сильно поміняєте місцями. Для отримання додаткової інформації про те, як Apple управляє їх пам'яттю: developer.apple.com/documentation/Performance/Conceptual/…
Chealion

Відповіді:


17

Найбільш основна відповідь? Ні. ОС працює з керуванням пам'яттю для користувача - надаючи процесу стільки пам’яті, скільки потрібно, скільки цього вимагає, і не надає багато партії з точки зору можливості модифікувати роботу системи. Це не дуже допомагає розібратися, чи використання пам'яті є частиною рівняння щодо того, чому сервери Linux перевершують Mac-сервери.

Через відсутність "хакабельності" у системі віртуальної пам'яті найкращими варіантами є оцінка продуктивності віртуальної пам'яті, щоб побачити, чи це справді причина, що у вас виникають проблеми з продуктивністю - найголовніше - це використовувати vm_statабо використовувати слідувати цьому жити, використовуючи, vm_stat [number of seconds]щоб побачити, скільки виходу сторінок виникає. Переміщення невикористаних сторінок з оперативної пам’яті на жорсткий диск має значно меншу вартість, ніж для повернення сторінок з жорсткого диска в оперативну пам’ять. Сторінка в термінах OS X стосується 4 кб даних.

Крім того, 32-бітові процеси (наприклад, Illustrator) не можуть отримати доступ більше 4 ГБ, тому теоретично можливо мати 2 Гб вільного і втратити пам'ять, якщо у вас було встановлено 6 ГБ.

Як на вашому робочому столі, так і на серверах я би запустив vm_stat 2і перевірив останній стовпець, особливо коли у вас виникає затримка на кілька секунд при переключенні на "Illustrator".

Щоб дізнатись, наскільки насправді великий своп, ви можете перевірити розмір заміни в «Моніторі діяльності» або запустити du -shc /var/vm/swap* | tail -n 1.

Використання du -sh /var/vmмає одне застереження: на ноутбуках, у яких перебуває сплячий режим (будь-що за останні 4 роки чи новіші), може бути sleepimageприблизно розмір встановленої пам’яті.


Жаргон пам'яті Mac OS X:

Провідний : Це стосується коду ядра тощо. Пам'ять, яка ніколи не повинна бути переміщена з ОЗУ. Також відомий як пам'ять резидента.

Спільний : пам'ять, яка ділиться між двома або більше процесами. Обидва процеси показали б цей об'єм пам'яті, тому це може бути трохи оманливим щодо того, скільки пам’яті фактично використовується.

Справжнє : Це "реальне" використання пам'яті для програми, як повідомляється task_info () - приблизна кількість фізичних сторінок, що мають поточний процес. (RSIZE)

Приватне : це пам'ять, яку процес використовує виключно на власній власності, яка використовується в пам'яті резидента. (RPRVT)

Віртуальна : Загальна кількість адресного простору в процесі, який відображається на будь-що - будь то довільно великий простір для змінних чи щось інше - це не прирівнюється до фактичного використання VM. (VSIZE)

Активний : пам'ять, яка в даний час позначена як активна, і використовується ОЗУ.

Неактивний : "Неактивна пам'ять більше не використовується і її кешували на диску. Вона залишатиметься в оперативній пам'яті, поки іншому додатку не знадобиться місця. Залишити цю інформацію в оперативній пам’яті вам на користь, якщо ви (або клієнт вашого комп’ютера) повернетесь до цього пізніше ». - Довідка Mac OS X

Безкоштовно : обсяг оперативної пам’яті фактично доступний без будь-яких даних.


Найкраща документація, про яку я знаю (і яку вдалося знайти під час подальших досліджень) - це власна стаття Apple про керування пам’яттю на веб-сайті розробника.

Інші варті джерела: список розсилки Дарвіна- розробок : [ 1 ], [ 2 ] та стара стаття про MacOSXHints . Крім того, Майк Еш опублікував у своєму блозі хороший вступ мирян


Можливо (я цього не пробував) відключити віртуальну систему пам’яті, запустивши sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistта перезавантаживши так, щоб динамичний_пагер (програма, яка фактично робить розподіл віртуальної пам'яті) не запускався. Однак, оскільки ОС передбачає, що в ньому є віртуальна пам'ять, ви можете дуже швидко і швидко натрапити на проблеми. Щоб завантажити його назад, запустіть його sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(якщо необхідно в режимі одиночного користувача)

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