Как отключить Mac OS X от использования подкачки, когда все еще существует “Неактивная” память?

Общие явления в мое время к дневному использованию (и несколько других согласно различным сообщениям всюду по Интернету) OS X, система, кажется, становится медленной каждый раз, когда нет никакой Более "свободной" доступной памяти. Предположительно, это происходит из-за свопинга, так как тяжелая активность диска очевидна и что vm_stat сообщает о многих pageouts. (Исправьте меня от несправедливости),

Однако сумма "Неактивного" поршня обычно - приблизительно 12.5%-25% всей доступной памяти (^1). когда свопинг запускается/происходит/заканчивает.

Согласно http://support.apple.com/kb/ht1342:

Неактивная память

Эта информация в памяти активно не используется, но недавно использовалась.

Например, если Вы использовали Mail и затем выходили из него, RAM, которую использовал Mail, отмечена как Неактивная память. Эта Неактивная память доступна для использования другим приложением, точно так же, как Свободная память. Однако, если Вы откроете Mail, прежде чем его Неактивная память будет использоваться другим приложением, Mail откроется более быстрый, потому что его Неактивная память преобразовывается в Активную память, вместо того, чтобы загрузить Mail из более медленного жесткого диска.

И согласно http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html:

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

Так, в основном: То, когда программа вышла, это - память, становится отмеченным как Неактивное и должно подлежать взысканию в любое время. Однако, OS X предпочтет начинать выгружать память к Файлу подкачки вместо того, чтобы просто требовать этой памяти, каждый раз, когда "Свободная" память добирается до низко.

Почему? Каково преимущество этого поведения, законченного, скажем, немедленно освобождающая Неактивная память, и даже не коснитесь файла подкачки? Некоторые источники (^2). укажите, что OS X разбил бы на страницы "Неактивную" память для свопинга прежде, чем выпустить его, но это не имеет смысла, теперь делает это, если память может быть освобождена из памяти в любое время? Свопинг является дорогим, выпуск является дешевым, правильно?

Это поведение может быть изменено с помощью некоторого предпочтения или известного взлома? (Предпочтительно тот, который не включает отключение swap/dynamic_pager в целом и перезапуск...),

Я действительно ценю команду чистки, а также понятие Восстановления дисковых полномочий вызвать некоторую Свободную память, но это - способы мучительно вызвать больше Свободной памяти, чем к фактической фиксации логики решения подкачки/выпуска...

Btw подобный вопрос спросили здесь: http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/ и здесь: http://hintsforums.macworld.com/showthread.php?t=87688, но даже при том, что операция в секунду повторно спросила базовый вопрос, ни один из ответов, обращается к ответу на него...

^1. ОБНОВИТЕ 17 синяка 2012, Так как я сначала отправил этот вопрос, я пошел от 4 ГБ до 8 ГБ установленного поршня, и проблема остается. Сумма "Неактивного" поршня была 0.5gb-1.0gb прежде и теперь обычно вокруг 1.0-2.0GB, когда свопинг запускается/происходит/заканчивает, т.е. кажется, что приблизительно 12.5%-25% поршня сохраняются как Неактивные osx логикой ядра.

^2. Например, https://apple.stackexchange.com/questions/4288/what-does-it-mean-if-i-have-lots-of-inactive-memory-at-the-end-of-a-work-day:

После того как вся Ваша память используется (свободная память 0), ОС выпишет неактивную память к своп-файлу для создания большего количества комнаты в активной памяти.

ОБНОВЛЕНИЕ 17 синяка 2012

Вот сводка новостей методов, которым предложили помочь до сих пор:

Команда чистки

"Используемый для приближения начальной буквы загружают условия с холодным дисковым кэш-буфером для анализа производительности. Это не влияет на анонимную память, которая была выделена через malloc, vm_allocate, и т.д.".

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

Приложение FreeMemory и/или дисковые полномочия Восстановления вызвать некоторую Свободную память

Не помогает освобождению никакой памяти, только перемещая некоторые гигабайты содержания памяти от поршня к HD. В конце это вызывает много загрузок, когда я пытаюсь использовать приложения, которые были открыты при освобождении памяти, как много ее vm находится теперь на подкачке.

Ускорение выделения подкачки с помощью dynamicpagerwrapper

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

Отключение подкачки путем отключения dynamicpager и перезапуска

Это вынудит osx не использовать подкачку для цены системного зависания, когда вся память будет использоваться. Не жизнеспособная альтернатива...

Отключение подкачки с помощью взломанного dynamicpager

Подобный отключению dynamicpager выше, некоторые выборки от комментариев до сообщения в блоге указывают, что это не эффективное решение: "Неактивная Память является верхней, как обычно". "когда Ваша система исчерпывает память, целая OS зависает...", "при потреблении целого объема памяти Mac машина, вероятно, зависнет"

Таким образом, я все еще не знаю о способе отключить Mac OS X от использования подкачки, когда все еще существует "Неактивная" память. Если это не возможно, возможно, по крайней мере, существует объяснение где-нибудь того, почему osx предпочитает выгружать память, которая может быть освобождена из памяти в любое время?

61
задан 13.04.2017, 15:45

0 ответов

Теги

Похожие вопросы