Я наткнулся на ветку об установке SSD-накопителя в MacBook Pro.
Кто-то в комментариях также рекомендовал отключить файл подкачки, но не сказал, почему:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*
Интересно, зачем отключать файл подкачки в Mac OS X.
Повышает ли это производительность? Стабильность?
Есть недостатки?
Наконец, есть ли смысл отключать файл подкачки, если SSD не используется?
интересно, почему нужно отключить файл подкачки в Mac OS X. Повышает ли это производительность? Стабильность? Есть недостатки?
Я предполагаю, что люди сделали бы это для накопителя SSD, потому что у этих накопителей не такой же срок службы, как у стандартных магнитных вращающихся дисков. Существует более ограниченное количество циклов записи, поэтому, предположительно, их использование с файлом подкачки израсходует эти циклы быстрее.
Наконец, есть ли смысл отключать файл подкачки, если SSD не используется?
Если у вас много оперативной памяти, это, возможно, повысит производительность, но в целом это не очень хорошая идея . Если вы столкнетесь с потолком памяти, все пойдет не так.
Кроме того, проводная память не освобождается, когда она становится недействительной, она освобождается только тогда, когда инициируется событие выгрузки страницы, чего не произойдет, если виртуальная память отключена. Так что скоро вся ваша память будет сожрана, даже если она больше не используется.
Причина, по которой они отключили файл подкачки, вероятно, связана с паранойей по поводу того, что SSD имеют максимальное количество операций записи на блок. Файлы подкачки могут часто записываться, что может привести к фрагментации диска (а также к фрагментации файловой системы) и, в конечном итоге, к более раннему отказу диска.
Тем не менее, это определенно случай преждевременной оптимизации. Это почти всегда УЖАСНАЯ , УЖАСНАЯ идея отключить файл подкачки. Файл подкачки нужен, когда запущенные программы потребляют больше памяти, чем физически установлено. Если вы отключите его, вы, возможно, не сможете запускать столько программ одновременно (и ограничение намного ниже, чем вы ожидаете), или у вас могут возникнуть проблемы (например, зависание и необходимость полной перезагрузки компьютера) при у тебя закончилась память.
Последнее я испытал (с включенным файлом подкачки) при нехватке места на диске. У меня был диск на 120 гигов со свободными ~3 гигабайтами. Во время игры в Civilization IV (большая полноэкранная игра) в системе закончилось место на жестком диске (свободно ~ 50 МБ) и появилось окно «Убить приложения сейчас». Это скрывалось за полноэкранной игрой, поэтому система просто зависла. Если бы я не смог войти по ssh с другого Mac, чтобы удаленно закрыть несколько приложений, мне пришлось бы удерживать кнопку питания.
У вас есть два отличных ответа, которые объясняют, почему это плохая идея почти во всех случаях, когда система может записывать на устройство хранения.
Причина, по которой вы можете отключить подкачку, заключается в том, что система может работать на носителях только для чтения, таких как компакт-диск, DVD, заблокированный сетевой образ с использованием NetBoot или USB-брелок только для чтения, такой как новый установщик Lion или брелок восстановления, который поставляется с некоторыми компьютерами Mac без оптических диски.
Наличие виртуальной памяти означает, что система может работать значительно быстрее и использовать меньше оперативной памяти, когда многие программы используют один и тот же общий библиотечный код. Каждая программа думает , что у нее есть частная копия всего необходимого ей кода, но когда существует виртуальная память, у системы есть хороший способ сопоставить одну и ту же физическую память с разными программами.
Отключение подкачки не позволяет Mac использовать крошечную часть вашего диска в качестве кеша для некоторой памяти, которая была рассчитана, но программа была недостаточно умна, чтобы сама записать эти результаты в надлежащий кеш.
Если у вас есть резервная копия и время для экспериментов, почему бы не отключить ее и не посмотреть, как изменится ваш опыт.
Я бы сохранил свой обмен, даже если бы точно знал, что должен ежегодно платить за новый диск. Скорость, которую дает мне своп, ОГРОМНА. Это не всегда так, а в периоды, когда система трещит или листается - у вас может быть наоборот. Многие люди предпочитают работать без подкачки, чтобы получить ошибку выделения памяти, а не позволить своему Mac начать пейджинг, поскольку это может замедлить работу машины, когда что-то не работает гладко.
Ваш случай с SSD может быть другим, поэтому сообщите нам, если попробуете.
dynamic_pager
, двенадцать секунд без. Для более широкого и взвешенного сравнения мы можем использовать Phoronix Test Suite или Geekbench .Я буду скептиком: я отключил подкачку на своем unibody macbook pro конца 2008 года, и это заметно улучшило производительность: меньше ожидания, более быстрое переключение между приложениями.
Имейте в виду, я слежу за своей свободной памятью, и у меня установлено 6 ГБ. Несколько раз, когда я достигал предела памяти, система зависала :-D
На моем новом MacBook Air я бы и не подумал об отключении свопа, он и так быстрый, когда он включен, и для начала у него всего 4 ГБ.
Еще одна веская причина, по которой люди отключают подкачку на SSD, заключается в том, что они получают крошечные SSD и нуждаются во всем пространстве, которое они могут получить. В любом случае, не делайте этого.
Мой опыт аналогичен опыту w00t. Я отключил файл подкачки на SL и Lion, потому что у меня работает увеличение производительности. Использование проводной связи выходит из-под контроля через неделю или около того, но простая перезагрузка решает эту проблему. У меня не SSD, а медленный диск на 5400 об/мин. Срок службы SSD на самом деле не так плох, как люди пытаются его представить. Если вы делаете это просто потому, что боитесь износа SSD, см.: http://www.anandtech.com/show/4159/ocz-vertex-3-pro-preview-the-first-sf2500- ssd/2 и http://communities.intel.com/thread/21717?tstart=0 Intel оценивает свои диски более 20 ГБ в день, каждый день, на срок до 5 лет на диске емкостью 80 ГБ. Диски большего размера прослужат еще дольше. Средний пользователь не использует даже 10 ГБ в день.
Я обязательно отслеживаю использование памяти объемом 4 ГБ с помощью меню iStat и использую скрипт Automator с командой bash «purge» (требуется установка Xcode), чтобы очищать неактивную память и часто открывать больше свободной памяти. Несколько раз, когда у меня были приложения с утечками памяти, они использовали всю оперативную память, и мне приходилось выполнять полный сброс. Редкие случаи, когда это происходит, и скорость в целом делают целесообразным держать файл подкачки отключенным для меня. Я понимаю, что из-за этого у меня не может быть открыто столько приложений одновременно, как утверждают другие, но я могу с этим работать.
Просто добавлю свои 2 цента для тех, кто хочет отключить своп ИЗ-ЗА маленьких SSD: спящий образ использует гораздо больше места на диске.
И для тех, кто обеспокоен ограниченным сроком службы SSD (особенно для тех, у кого есть MBA и встроенные чипы SSD, которые НЕ МОГУТ быть заменены), если ваш компьютер спит много раз в день, перезапись образа сна может быть проблемой. Мой ноутбук легко спит полдюжины раз в день. Это ежедневно записывает 48 ГБ данных на мой SSD.
В каждом случае решение состоит в том, чтобы отключить режим гибернации, а затем удалить файл образа сна, размер которого равен установленной оперативной памяти (в моем случае — 8 ГБ).
Побочный риск: если ваша батарея разрядится, пока ваш ноутбук спит, ваше текущее состояние будет потеряно. Это будет эквивалентно принудительному жесткому перезапуску. Никакого физического вреда ноутбуку, только потеря производительности. Если вы отключите гибернацию, ваша батарея разрядится и не сможет заряжаться, просто держите под рукой код, чтобы включить гибернацию!
Чтобы отключить спящий режим, в Терминале команда выглядит следующим образом:
sudo pmset -a hibernatemode 0
Чтобы включить спящий режим, команда выглядит следующим образом:
sudo pmset -a hibernatemode 3
Чтобы удалить последний образ сна, чтобы освободить место на SSD/HDD (имеет смысл только в том случае, если вы отключите спящий режим, иначе новый образ займет это место в следующий раз, когда ваш компьютер спит):
sudo rm -rf /var/vm/sleepimage
Источник: man pmset
Отключение подкачки действительно увеличивает производительность. Например, я регулярно использую Aperture, и когда объем подкачки увеличивается, производительность ухудшается, а когда она выходит за пределы 1Gb, мне приходится перезагружать ОС, чтобы очистить ее и восстановить производительность. Примечание: машина имеет 6 ГБ оперативной памяти, и НЕ вся она занята, около 3 ГБ свободно, но 1 ГБ подкачки значительно снижает производительность.
Я отключал подкачку на машинах много лет, как в OS X, так и в других вариантах UNIX.
Я использую инструмент, который предупреждает меня, когда память заканчивается, и никогда не беспокоюсь о сбое моей системы.
Мой iMac имеет 12 ГБ, и с отключенным свопом у меня почти всегда есть 4 ГБ свободных, даже если открыто несколько инструментов разработки, приложений, браузеров и т. Д.
Основная причина отключения файла подкачки — не скорость, а место на диске.
Если кто-то является пользователем, который обычно работает в пределах 5 ГБ от полного диска, отключение подкачки остановит постоянное нытье о нехватке места; Я обычно получаю файл подкачки размером 4+ ГБ при обычном просмотре.
Улучшение скорости поразительно на старых машинах; это не так впечатляет на современных машинах, оснащенных SSD. (В OSX 10.0 на iMac использование виртуальной памяти вдвое уменьшило скорость многих операций, включая копирование файлов между дисками).
Повторяющийся шаблон здесь таков:
У тех, у кого был отключен файл подкачки, улучшилась производительность (при достаточном объеме физической памяти).
Те, кто НЕ отключил пространство подкачки, уверены, что это не сработает, и случится что-то ужасное, и горячо советуют этого не делать.
Это связано просто с двумя вещами:
Просто личный опыт.
Memory Amount |
4 GB | Don't disable it, Mountain Lion itself boots with about 1 GB.
8 GB | Do if you don't run apps that requires more than 1 GB of memory, in short, virtualization software, Photoshop, and stuff.
16 GB or more | Do it! Even Xcode or Final Cut won't use more than 4 GB of memory, at least as I've seen. Just don't run too many virtual machines though.
Небольшое примечание: если ваш Mac использует встроенную графику, его память используется совместно с вашей основной памятью с помощью kernel_task. Таким образом, вам придется вычесть эту сумму из общей полезной суммы.
Пользователи SSD, приятно иметь больше места, но важно знать, что виртуальная память процветает на SSD, вы можете получить от этого значительный прирост производительности. Не повредит ли это SSD? Да, но вы долго замените свой Mac, прежде чем заметите.
Область подкачки (называемая разделом подкачки, файлом подкачки или файлом подкачки) — это всего лишь механизм увеличения физической памяти, адресуемой ОС.
Если у вас мало доступной физической оперативной памяти и на сегодняшней машине, я бы сказал, если у вас 4 ГБ или меньше оперативной памяти. Тогда, вероятно, вы должны иметь обмен. Но это зависит от вашей рабочей нагрузки и от того, как вы используете свою машину.
Если у вас более 4 ГБ ОЗУ, есть большая вероятность, что ваша система никогда не будет использовать своп. Так что, если своп включен или нет, это мало что изменит.
Хотя это зависит от других факторов, чем дольше будет работать ваша машина, тем больше вероятность того, что ОС заменит небольшую неиспользуемую часть ОЗУ на подкачку, даже если, по-видимому, осталось много места. Однако часто система использует «свободную» оперативную память для файловых буферов и других вещей, и некоторая рабочая нагрузка может заставить ваш файловый буфер использовать всю доступную оперативную память.
В любом случае, что произойдет, если вы отключите своп и ваша память будет полностью использована? Что ж, в следующий раз, когда приложение запросит больше памяти (например, с помощью malloc или realloc), оно получит сообщение об ошибке! Если он правильно закодирован, приложение обнаружит его, но обработка такой ошибки и корректное завершение программы все еще могут быть проблемой! Однако многие разработчики не проверяют успешное выделение памяти, и часто приложение падает, как только эта невыделенная память будет использоваться. Таким образом, существует большая вероятность того, что приложение рухнет, и на самом деле многие приложения рухнут, потому что у вас обычно работает более одного приложения в одно и то же время. Надеюсь, само ядро должно быть невосприимчивым, но по моему опыту так было не всегда.
Если у вас есть своп, у вас будет такое же поведение , но у вас более высокий предел, поэтому есть вероятность, что вы не достигнете этого предела.
У меня лично 2 машины с 8 и 16 Гб ОЗУ. Мое личное использование этой машины никогда не должно приближать меня к использованию всей этой оперативной памяти (сегодня! Возможно, через несколько лет это может быть по-другому). Единственная причина, по которой я достиг бы пределов физической памяти, заключается в том, что процесс стал мошенническим и потребляет всю оперативную память. Отсутствие свопа — это облегчение, ядро сразу уничтожит мошеннический процесс, как только он достигнет предела ОЗУ. Если у вас есть подкачка, вы получите болезненный опыт (возможно, не на SSD ...), поскольку ваша система будет подкачиваться, подкачиваться и подкачиваться и иногда полностью перестанет отвечать, пока, надеюсь, ваше ядро не убьет виновника!
Вас не должны пугать люди, которые говорят вам, что если вы удалите swap, может произойти что-то ужасное. Если вы это сделаете, ваше физическое адресное пространство будет уменьшено, как если бы вы перешли с 4 ГБ ОЗУ на 2 ГБ. Вы бы сделали такое? Тогда не стоит удалять своп. Однако вы можете решить ограничить его, и это было бы разумно .
Если кто-то считает, что его рабочая нагрузка может привести к тому, что он будет использовать близкую или большую часть доступной физической памяти, или если ему требуется много операций ввода-вывода (чтение/запись на диски), следует сохранить своп.
Когда своп следует сохранить, пользователь должен попытаться установить ограничения на объем памяти, который может использовать процесс. В системе Linux можно использовать ограничения памяти cgroups, чтобы избежать выхода какого-либо процесса из-под контроля, я не знаю эквивалента в OS X, но так и должно быть.
Однако, если у кого-то более чем достаточно доступной памяти для его рабочей нагрузки, он может безопасно отключить подкачку или оставить ее. Это не сильно изменится даже с точки зрения производительности, потому что, если система не использует своп, вы не столкнетесь с падением производительности (особенно заметно на старом ротационном жестком диске, в меньшей степени на SSD).
Использование того же трюка, что и выше, чтобы попытаться установить ограничения памяти для каждого процесса или группы процессов, также полезно в случае более чем достаточного количества доступной оперативной памяти.
У меня есть старый компьютер с 1 ГБ ОЗУ, там у меня большой своп: 4 ГБ, чтобы я мог запускать на нем Firefox и другие приложения. Я стараюсь использовать как можно меньше приложений (или вкладок в Firefox), чтобы иметь правильный пользовательский интерфейс.
У меня есть небольшой сервер с 8 ГБ оперативной памяти. Там я точно знаю свою нагрузку и не хочу, чтобы мой сервер тормозил из-за того, что какой-то процесс вышел из-под контроля и потребляет всю память. Там у меня нет барьера ограничения памяти подкачки и cgroup, поэтому приложения или службы могут падать, но не ядро. Кстати, это машина с Linux.
Затем у меня есть мой Mac с 16 ГБ ОЗУ. Я не единственный его пользователь, и мы не прочь подождать при смене пользователя. Там у нас есть своп, мне сложно планировать нагрузку других пользователей этого компьютера. Даже если бы я был единственным, я бы использовал своп. Я часто запускаю несколько виртуальных машин и использую приложения, потребляющие память, но не все одновременно, поэтому я не возражаю против замены ОС неиспользуемым приложением, чтобы я мог ускорить дисковый ввод-вывод или запустить еще одну виртуальную машину. Хотя до сих пор я не видел, чтобы эта машина менялась!
Я просто отключил файл подкачки на своем Macbook air 2011 года (4 ГБ ОЗУ, 128 ГБ SSD), потому что мне надоело, что файл подкачки медленно съедает все оставшееся место на жестком диске, а затем мне приходится перезагружаться. Таким образом, идея состоит в том, что я просто буду запускать меньше программ.
Я посмотрю, действительно ли это работает, или мне все равно придется перезагружаться, чтобы очистить «проводную» память, но пока все работает хорошо. Один раз, когда память была действительно заполнена, компьютер замедлился так же, как когда у моего SSD заканчивается память, но он восстанавливался намного быстрее, как только я закрывал приложения. (И я действительно смог выйти из приложений, чего я обычно не делаю, когда SSD заполняется).
Посмотрю, как пойдет со стабильностью, но пока я доволен кемпером. Это также заставляет меня запускать меньше приложений (и вкладок Chrome) за раз, что хорошо для фокусировки на задаче.
Одни говорят: отключение подкачки повышает производительность .
Это верно. Любое использование виртуальной памяти — это большое замедление — даже быстрый SSD в тысячу раз медленнее DRAM ; диск больше вроде в миллион раз медленнее. Вам нужна только небольшая часть обращений к памяти, чтобы перейти к подкачке, чтобы иметь большое значение во времени выполнения. Если, например, 0,1% обращений приходится на ваш быстрый SSD, это теоретически вдвое снижает вашу скорость. Однако многозадачность скрывает это — в ожидании устройства подкачки процессор может быть занят чем-то другим. Таким образом, пока у вас есть разумный уровень многозадачности, чтобы что-то было готово к запуску, когда у вас возникает ошибка страницы, потеря производительности не так велика. Слишком много вещей с высокими требованиями к памяти, выполняемых одновременно, приводят к перегрузке : активность подкачки доминирует над производительностью.
Но: без свопа, если у вас кончится физическая память, это все равно, что врезаться в стену. Возможно, вы сможете бежать быстрее, если немного уменьшите свой вес, не надевая очки; логика этого не улучшается, если у вас действительно тяжелые очки…
пользователь10355
оранжевый80
Кен
пользователь28722
Грэм Перрин
Цянь Чен