Как отключить Mac OS X от использования подкачки, когда все еще есть "неактивная" память?
Распространенное явление в моем повседневном использовании (и нескольких других, согласно различным сообщениям в Интернете) OS X, система, похоже, замедляется всякий раз, когда больше нет "свободной" доступной памяти. Предположительно, это связано с заменой, так как заметна большая активность на диске и что vm_stat сообщает о многих страницах. (Исправьте меня неправильно)
Однако объем "неактивной" оперативной памяти обычно составляет около 12,5%-25% от всей доступной памяти (^1.) при замене начинается/происходит/заканчивается.
В соответствии с http://support.apple.com/kb/ht1342 :
Неактивная память
Эта информация в памяти активно не используется, но была использована недавно.
Например, если вы использовали почту, а затем бросили ее, ОЗУ, которое Используемая почта помечена как неактивная память. Эта неактивная память доступна для использования другим приложением, как и свободная память. Однако, если вы откроете почту до того, как она станет неактивной память используется другим приложением, почта откроется быстрее, потому что она неактивна память преобразуется в активную память вместо загрузки почты с более медленного жесткого диска.
И в соответствии с http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html :
Неактивный список содержит страницы, которые в настоящее время находятся в физической памяти, но к которым в последнее время не обращались. Эти страницы содержат допустимые данные, но могут быть удалены из памяти в любое время.
Итак, в основном: когда программа завершает работу, ее память помечается как неактивная и должна быть востребована в любое время. Тем не менее, OS X предпочтет начать замену памяти в файл подкачки вместо того, чтобы просто требовать эту память, всякий раз, когда "свободная" память становится низкой.
Почему? В чем преимущество такого поведения по сравнению, скажем, с мгновенным освобождением неактивной памяти и даже не касанием файла подкачки? Некоторые источники (^2.) указывают, что OS X будет выводить "неактивную" память для подкачки перед ее освобождением, но теперь это не имеет смысла, не так ли, если память может быть освобождена из памяти в любое время ? Обмен - это дорого, освобождение - дешево, верно?
Можно ли изменить это поведение с помощью каких-либо предпочтений или известного взлома? (Предпочтительно тот, который не включает в себя полное отключение swap/dynamic_pager и перезапуск...)
Я действительно ценю команду очистить , поскольку а также концепция восстановления прав доступа к диску для принудительного высвобождения некоторой свободной памяти, но это способы болезненно высвободить больше свободной памяти, чем на самом деле исправить логику принятия решений о замене/освобождении...
Кстати, здесь был задан аналогичный вопрос: 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,5 гб-1,0 Гб и сейчас обычно составляет около 1,0-2,0 ГБ, когда начинается/происходит/заканчивается замена, т.Е. Кажется, что около 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 на самом деле делает это в первую очередь), но с недостатком, что дисковый кэш освобождается, что означает, что если бы дисковый кэш не собирался заменяться, он просто закончился бы вверх с холодным дисковым буферным кэшем, что, вероятно, негативно сказывается на производительности.
Приложение Бесплатная память и/или Восстановление прав доступа к диску для принудительного освобождения некоторой памяти
Не помогает освобождать любую память, только перемещая несколько гигабайт содержимого памяти из оперативной памяти в hd. В конце концов, это вызывает множество подкачек, когда я пытаюсь использовать приложения, которые были открыты при освобождении памяти, так как большая часть его виртуальной машины теперь находится на подкачке.
Ускорение распределения подкачки с помощью dynamicpagerwrapper
Кажется, что это хорошая вещь, чтобы ускорить использование подкачки, но не решает проблему замены osx в первую очередь, пока еще есть неактивная память.
Отключение подкачки путем отключения dynamicpager и перезапуска
Это заставит osx не использовать подкачку по цене зависания системы при использовании всей памяти. Не жизнеспособный альтернатива...
Отключение подкачки с помощью взломанного динамического пейджера
Как и в случае с отключением dynamicpager выше, некоторые выдержки из комментариев к сообщению в блоге указывают на то, что это нецелесообразное решение: "Объем неактивной памяти, как обычно, высок". "когда в вашей системе заканчивается память, вся ОС зависает...", "если вы потребляете весь объем памяти mac, машина, скорее всего, зависнет"
Подводя итог, я все еще не знаю, как отключить Mac OS X от использования подкачки, когда все еще есть "неактивная" память. Если это невозможно, возможно, по крайней мере, где-то есть объяснение того, почему osx предпочитает заменять память, которая может быть освобождена из памяти в любое время?