Понимание сжатой памяти на Mac

С выпуском OS X Mavericks Apple изменила способ управления памятью на Mac. С добавлением сжатия памяти ваш Mac теперь может делать больше с меньшим объемом памяти, сохраняя или повышая производительность. В более старых версиях OS X использование памяти строилось вокруг довольно стандартной системы управления памятью. Приложения запросили выделение ОЗУ, система выполнила запрос, и приложения вернули ОЗУ, когда они больше не нужны.

ОС взяла на себя большую часть грязной работы по отслеживанию того, сколько оперативной памяти было доступно и кто ее использовал. ОС также выяснила, что делать, если требуемый объем оперативной памяти отсутствовал. Эта последняя часть была самой важной, потому что это могло отрицательно повлиять на производительность Mac, поскольку система пыталась использовать виртуальную память (место подкачки на SSD или жестком диске).

Apple даже предоставила довольно изящный инструмент, Activity Monitor, который, помимо прочего, мог отслеживать использование оперативной памяти Mac. Хотя монитор активности по-прежнему доступен, его возможности мониторинга памяти претерпели существенные изменения, которые имитируют то, как Mac теперь может лучше использовать оперативную память за счет использования сжатой памяти.

Сжатая память

Сжатая память не является чем-то новым или эксклюзивным для Apple. Вычислительные системы уже давно используют различные формы сжатия памяти. Если вы использовали Mac еще в середине 80-х и начале 90-х, вы, возможно, помните такие продукты, как RAM Doubler от Connectix, которые сжимали данные, хранящиеся в RAM, эффективно увеличивая объем свободной оперативной памяти, доступной для Mac.

Утилиты сжатой памяти потеряли популярность, поскольку производители компьютеров и ОС создали более совершенные системы управления памятью. В то же время цены на память снижались. Другим фактором, который заставил системы сжатия памяти терять свою популярность, была проблема производительности. Алгоритмы сжатия памяти заняли огромную часть вычислительной мощности. Это означало, что, хотя они позволяли вам делать больше с меньшим объемом физической оперативной памяти, они, как правило, перегружали компьютер, когда им нужно было сжимать или распаковывать память.

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

Как работает сжатая память на Mac

Сжатие памяти на Mac предназначено для повышения производительности ОС и приложений за счет лучшего управления ресурсами ОЗУ и предотвращения или значительного сокращения использования виртуальной памяти, которая представляет собой передачу данных на диск Mac и с него.

В OS X Mavericks (или более поздней версии) ОС ищет неактивную память, которая является памятью, которая в данный момент не используется активно, но все еще содержит данные, которые будут использоваться приложением. Эта неактивная память сжимает данные, которые она содержит, поэтому данные занимают меньше памяти. Неактивной памятью могут быть приложения, которые находятся в фоновом режиме и не используются. Примером может служить текстовый процессор, который открыт, но не активен, потому что вы делаете перерыв и читаете о сжатой памяти (кстати, спасибо, что заглянули и прочитали эту статью). Пока вы просматриваете веб-страницы, ОС сжимает память текстового процессора, освобождая оперативную память для использования другими приложениями, такими как Flash-плеер, который вы используете для просмотра фильмов в Интернете.

Процесс сжатия не активен все время. Вместо этого ОС проверяет, сколько свободного места доступно в оперативной памяти. При наличии значительного объема свободной памяти сжатие не выполняется, даже если много неактивной памяти.

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

Конечно, есть пределы того, чего может достичь сжатие. В какой-то момент, если вы продолжите запускать приложения или использовать приложения с интенсивным использованием памяти, которые поглощают оперативную память, на вашем Mac не будет достаточно свободного места. Как и в прошлом, операционная система начнет переставлять неактивные данные ОЗУ на диск вашего Mac. Но при сжатии памяти это может быть очень редким явлением для большинства пользователей.

Даже если ОС в конечном итоге придется выгрузить память на накопитель, система управления памятью OS X использует сжатую неактивную память, записывая сжатые данные в сегменты накопителя полной длины, чтобы повысить производительность и уменьшить износ твердотельных накопителей.

Монитор активности и сжатие памяти

Вы можете контролировать объем сжатой памяти, используя вкладку «Память» в Activity Monitor. Количество сжатой памяти отображается на графике Memory Pressure, который показывает, насколько активно ОС участвует в сжатии данных RAM. График изменится с зеленого (небольшое давление) на желтый (значительное давление) и, наконец, на красный, когда не хватит места в ОЗУ, и память должна быть выгружена на диск.

Так что, если вы заметили, что ваш Mac, кажется, имеет немного больше отказов в производительности, так как вы установили Mavericks, это может быть связано с достижениями в управлении памятью и возвращением сжатия памяти.

Ссылка на основную публикацию