Проблемы с пониманием неактивной памяти в MacOSX - PullRequest
9 голосов
/ 01 апреля 2011

Мне показалось, что я понимаю, как MacOSX управляет памятью, но в последнее время я был озадачен ее производительностью. Вот ситуация:

  1. У меня совершенно новая система Core i7 с 8 ГБ физической памяти под управлением MacOSX 10.6.7.
  2. Есть несколько запущенных приложений, регулярно занимающих часть памяти - Safari, Mail, Xcode, Terminal и т. Д.
  3. Мне нужно запустить три 64-битных процесса параллельно, каждый из которых использует около 2000M реальной памяти.
  4. Хотя проводная память остается ниже 1000 МБ (т. Е. У меня доступно более 7 000 МБ для процессов), я наблюдаю высокую активность при подкачке страниц, приводящую к очень низкой производительности трех запущенных мной процессов с интенсивным использованием памяти.
  5. По-видимому, у меня не хватает свободной оперативной памяти, так как указанная неактивная память остается около 2500 МБ, а активная память не поднимается выше 5000 М *.

Может кто-нибудь подсказать мне, почему MacOSX не освобождает неактивную память для процессов, которые в ней нуждаются, вместо этого прибегая к подкачке страниц? Кроме того, существует ли какой-либо надлежащий способ повлиять на управление памятью системой?

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

Ответы [ 4 ]

8 голосов
/ 06 апреля 2011

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

На дочернем сайте есть ветка с дополнительной информацией .

Интересно, может ли сервер MacOSX быть настроен на освобождение большей части неактивной памяти для процессов без графического интерфейса ...

1 голос
/ 24 апреля 2012

Есть очевидные проблемы в управлении памятью в OS X ...

пожалуйста, взгляните на мой пост: Проблема производительности MAC OS X Lion - неработающее управление памятью также я записал видео с экрана, где система начинает зависать, когда вся свободная память исчезает, а неактивная память занимает 4-5 ГБ! Проблема производительности MAC OS X Lion - видео на экране

что я сделал ... Я запускаю команду tar + bzip, которая является базовым компонентом Unix, для большого количества файлов изображений в моей папке Pictures /. Непосредственно перед запуском я запускаю команду «purge», чтобы удалить неактивные / кэшированные данные программы.

Вы можете видеть на видео, что свободная память начинает очень быстро уменьшаться, а неактивная постоянно увеличивается. Если вы посмотрите на команду "bsdtar", она займет только фрагмент оперативной памяти, поэтому проблема не в этом процессе. Вы не можете сказать, что это утечка памяти программы, потому что тогда проблема была бы не в неактивном ОЗУ, а в активном / проводном.

Когда объем свободной памяти упал ниже 100 МБ, я запустил некоторые приложения, такие как Safari, iPhoto и MS Word, и вы можете увидеть на видео, что запуск приложения занимает даже минуты (!), Когда обычно (когда есть) свободной оперативной памяти), загрузка займет около 3-5 секунд.

0 голосов
/ 16 февраля 2015

в Mac OS X неактивная память представляет собой все процессы, которые в настоящее время не используют циклы ЦП, т. Е. Загрузка ЦП составляет 0%. Активная память, с другой стороны, состоит из всех процессов, использующих ЦП для выполнения. Когда запускается новый процесс / программа, он становится частью активной памяти вместе со всеми другими процессами, запущенными в настоящее время (имеется в виду использование ЦП). Если свободной памяти достаточно для настройки нового процесса, то все работает как надо без какой-либо подкачки или замены. Если это не так, то OS X начинает выгружать неактивные процессы на диск. Теперь освобожденная часть памяти, которая когда-то была помечена как неактивная, теперь доступна как свободная память. Поскольку свободной памяти нет (кроме недавно созданной свободной части), с этой новой свободной памятью может произойти 2 вещи. кусок. Либо некоторые из процессов, которые ранее были активными, но не более (они теперь являются неактивными процессами, потому что они отказались от ЦП), занимают этот свободный блок, чтобы он снова становился частью неактивной памяти, или этот свободный блок выделяется некоторым активных процессов, так что теперь он является частью активной памяти. Мораль этой истории не так уж сложна. Какая бы активная программа ни была запущена, она будет работать нормально, даже если свободной памяти почти не будет. Если вам нужно запустить новую программу, то начальная задержка будет из-за увеличенного времени загрузки, поскольку OS X должна освободить место для нее в памяти, перемещая наименее недавно использованные страницы (неактивных процессов) на медленный диск. Настоящая боль возникает, когда вы хотите перезагрузить что-то в память, что OS X выгружается на диск. Вот где быстрый ввод / вывод становится необходимостью, без которой в основном невозможно обойтись.

0 голосов
/ 11 марта 2013

У меня была очень похожая проблема: неактивная память никогда не освобождалась, поэтому жесткий диск постоянно пейджировалОбновление до MacOsX Mountain Lion наконец исправило это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...