Проблеми з розумінням неактивної пам'яті в MacOSX


8

Я подумав, що розумію, як MacOSX управляє пам'яттю, але останнім часом я збився з пантелику від її продуктивності. Ось така ситуація:

  1. У мене абсолютно нова система Core i7 з 8 Гб фізичної пам'яті під управлінням MacOSX 10.6.7. Є кілька додатків, які регулярно запускають частину пам'яті - Safari, Mail, Xcode, Terminal тощо.
  2. Мені потрібно запустити три 64-бітні процеси паралельно, кожен з яких використовує близько 2000М реальної пам'яті.
  3. Незважаючи на те, що дротова пам'ять залишається нижче 1000М (тобто у мене є понад 7000М доступних для процесів), я бачу велику активність пейджингу, що призводить до дуже поганої продуктивності від трьох запущених пам’яттю процесів.
  4. Мабуть, мені не вистачає доступної оперативної пам’яті, оскільки повідомляється про неактивну пам’ять залишається близько 2500М, а активна пам’ять не піднімається вище 5000М.

Хтось може дати мені зрозуміти, чому MacOSX не звільняє неактивну пам’ять для тих процесів, які це потребують, замість цього вдаючись до підкачки? Також, чи є належний спосіб впливати на управління пам’яттю системою?


Відповіді:


5

Я встановив, що на моїй машині Mac OS X трохи повільно розгортає потрібні речі.

Щоразу, коли ви робите що-небудь, особливо голодне пам'яті, я часто закриваю кілька додатків, щоб допомогти. Safari - це величезна свиня для пам’яті, якщо вона працює деякий час і знаходиться в списку програм, які потрібно вийти. У моєму випадку це було тоді, коли я намагався запустити VMWare Fusion без достатньо фактичної оперативної пам’яті.

Ви, напевно, це знаєте, але ось кілька посилань на документацію Apple, які описують використання пам'яті та віртуальної пам'яті в OS X:

http://support.apple.com/kb/ht1342

http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/ AboutMemory.html

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

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

Можна очистити (частину) неактивну пам'ять за допомогою команди очищення . Це може знадобитися встановити, встановивши інструменти CHUD, але це можливо вже встановлено. Я не намагався використовувати команду очищення, так що YMMV ...

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


Дякую! purgeКоманда саме те , що я шукав. Я знайшов статті підтримки в КБ Apple, але вони не були особливо корисними.
Венці Жечев

1

MacOS дійсно звільняє неактивну пам'ять, але лише в тому випадку, якщо це дійсно потрібно. Ця "неактивна пам'ять" може бути насправді пам'яттю, яку ядро ​​вважає кандидатом на виправлення виклику-- але воно ще не вирішило, очікуючи на те, що пройде більше часу без посилання на неактивну пам'ять (замість цього, вона зосереджена на тимчасовому вимиканні пам'яті що насправді незабаром буде знову використане). У такому випадку "чистка" неактивної пам'яті насправді призведе до погіршення вашої продуктивності (оскільки ті сторінки, які часто використовуються, доведеться читати з диска, перш ніж ваша програма може продовжити виконання).

purgeрозробникам корисно моделювати умови запуску програми-- наприклад, щоб побачити, скільки часу потрібно, щоб програма запустилася вперше після завантаження або тривалої перерви. Для типового користувача purgeце не дуже корисно (і фактично призведе до тимчасової деградації продуктивності).

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