Как распределяется оперативная память в mac os
Заголовок может вам показаться странным, если вы не используете macOS, но если вы пользуетесь продуктами экосистемы Apple (особенно ноутбуками или iMac Retina 4K), то в процессе работы можете столкнуться с неприятной проблемой: все необходимые для работы инструменты никак не хотят помещаться в 16 Гб оперативной памяти, и система начинает периодически «тормозить» и использовать большое количество сжатой памяти и свопа.
В интернете есть много тривиальных статей, как можно уменьшить потребление памяти на macOS из серии «выключите ненужные программы, установите The Great Suspender для Google Chrome» и т.д. Если вы перепробовали эти советы и всё равно страдаете от недостатка памяти, то я бы хотел поделиться опытом, как лично я решаю эти проблемы.
Общие советы
Я обязан для начала рассказать про простые способы контролировать потребление памяти на macOS (этот совет годится и в Windows и Linux):
- Откройте «Мониторинг системы», отсортируйте приложения по памяти и перестаньте пользоваться приложениями, которые не нужны вам в данный момент
- Отсортируйте приложения по объему сжатой памяти — если вы найдете часто используемые приложения, то значит в вашей системе совсем не хватает объема ОЗУ
- Вынесите «тяжелые» процессы на отдельные сервера, если это возможно (например, компилируйте Android-приложения на отдельной машине)
Почему тормозит macOS
Причин, по которым не хватает оперативной памяти на маке может быть достаточно много. Исходя из того, как пользователи работают с компьютером, можно выделить следующие:
- Недостаточно свободного места на диске.
- Одновременно открыто очень много приложений
- Открыто много вкладок в браузере.
- Запущены какие-то тяжелые программы (Final Cut, Logic Pro и др.)
Конечно, решение выглядит очевидным: необходимо просто закрыть некоторые программы, которые жрут очень много памяти, однако не все так просто. Когда я столкнулся с нехваткой оперативной памяти на Mac, у меня было запущено лишь одно приложение — Почта.
Подписывайтесь на нас в Яндекс.Дзен, там вы найдете много полезной и интересной информации из мира мобильных технологий.
Проблемы macOS Monterey
Оказалось, что подобные проблемы возникают в основном у пользователей новой macOS Monterey, об этом мы писали в отдельном посте. Однако в отличие от Майкла Саймона мой Mac не зависал. Он просто продолжал работать в своем духе с принудительным уведомлением поверх экрана о том, что мне необходимо закрыть ресурсоемкие программы.
В macOS пользователи обнаружили баг, из-за которого расходуется много оперативной памяти.
Я пробовал разные способы решения проблемы, но единственно верным оказалось дождаться следующего обновления macOS Monterey. Теперь все работает пуще прежнего даже с десятью открытыми приложениями и кучей разных вкладок в Google Chrome. Решение здесь простое: обновить macOS до последней версии.
А вы сталкивались с подобными проблемами на своем компьютере? Как вышли из ситуации? Обязательно поделитесь своим опытом в нашем Телеграм-чате, будет интересно прочесть.
В OS X используется следующее распределение оперативной памяти:
– Часть памяти резервируется под системные нужды (ядро, системные сервисы). Это так называемая Зарезервированная память (она же Wired);
– Часть памяти используется активными программами для своей работы. Это Активная память (Active);
– Часть памяти остается занятой данными тех приложений, работа которых недавно была завершена. Используется для быстрого повторного запуска этих приложений. Эту часть называют Неактивной памятью (Inactive)
Увидеть состояние этих частей памяти можно с помощью программы Мониторинг системы (Программы — Утилиты):
При активной работе в системе, иногда случается так, что свободной памяти остается мало и система начинает освобождать Неактивную ее часть, т.е. OS X сама заботится об оптимальном использовании оперативной памяти.
Но если вы решили самостоятельно навести порядок в памяти, то и такой инструмент в системе найдется. Для удобства его использования, предлагаю написать небольшой скрипт, который вы сможете в любое время запускать и самостоятельно очищать оперативную память.
Как посмотреть свободную память на макбуке
Начнем с банального — чистки свободного пространства на Mac. Очистить свободную память на МакБуке достаточно просто. Для этого в Apple даже придумали отдельный инструмент, с помощью которого вы сможете быстро почистить свой Mac:
- Кликаем на значок яблока в верхнем левом углу.
- Переходим в раздел Об этом Mac.
- Далее заходим в подраздел Хранилище, Управлять.
- Ознакамливаемся с рекомендациями и количеством расходуемой памяти.
Здесь вы сможете ознакомиться с советами по управлению хранилищем на Mac.
Приступим
Запустите приложение Редактор AppleScript (Программы — Утилиты). Затем, в открывшееся окно скопируйте этот текст:
display dialog "Освободить память?" buttons with icon 2 with title "Освобождение памяти" default button 2
set buttonAnswer to the button returned of the result
if buttonAnswer is "ОК" then
say "Освобождение памяти. Подождите."
tell application "Terminal"
do shell script "purge"
quit
end tell
say "Выполнено!"
end if
Для удобства вытащите из папки Программы вашу новую утилиту FreeMem в Dock.
Это еще не все. Для работы скрипта нам нужно, чтобы в системе была установлена поддержка Преобразования текста в речь для русского языка. Проверить это можно тут:
Должен быть выбран русский Голос системы – Milena, как у меня на картинке. Если это не так, то там же выберите пункт Настроить и установите нужную нам поддержку:
Все. Теперь можете запускать вашу новую утилиту. Проконтролировать эффективность ее работы можно все той же программой Мониторинг системы (Программы — Утилиты). Вот что получилось у меня:
Пользователи начали сталкиваться с проблемами объединенной памяти чипа M1.
С проблемами на новых компьютерах нам сталкиваться не в первый раз. Мои коллеги уже писали о нюансах с челкой на обновленных MacBook Pro, представленных совсем недавно, но когда дело касается девайсов, которые выпускались еще в 2020 году, возникает много вопросов. Неужели Apple за столько времени не смогла обеспечить должную работу Mac?
Чем объединенная память отличается от оперативной
Когда в Купертино представили нам собственную систему на кристалле, представление об оперативной памяти компьютера должно было сильно измениться. Она ведь даже называется иначе — объединенная. Важно понимать, что это далеко не одно и то же.
Объединенная и оперативная память — не одно и то же.
В новых Mac Apple использует универсальную архитектуру памяти. То есть вся имеющаяся оперативная память чипа M1 доступна всем, кто входит в состав этой системы на чипе. Это процессоры (центральный, графический и нейронный), контроллеры (ввода-вывода), анклав безопасности и так далее. Поэтому ее и называют «объединенной». Новый тип памяти доступен на любом компьютере Mac с чипами собственного производства.
Не хватает программной памяти на Mac
Не хватает оперативной памяти на Mac.
Оперативная память (ОЗУ, RAM, оперативка) — это часть системы компьютерной памяти, которая необходима для корректной работы различных приложений. С ее помощью процессор и видеокарта могут получить быстрый доступ ко всем необходимым данным.
Для начала давайте разберемся в чем же собственно проблема. Суть в том, что macOS хранит данные, используемые для активных процессов на компьютере в оперативной памяти. Здесь ничего удивительного, любая техника так делает. Однако если оперативка заканчивается, Mac начинает использовать для этих задач постоянную память. Именно поэтому важно оставлять как минимум 10% свободного пространства на диске. Если этого нет, система выбрасывает вам соответствующее уведомление.
Проблемы M1
Очевидно, что по долгу профессии автор поста в курсе всех событий, происходящих в мире мобильных технологий. Саймон отмечает, что с подобными проблемами сталкивались пользователи, которые обновились на macOS Monterey, но вся соль в том, что на компьютере Майкла до сих пор стоит Big Sur, что вводит в еще большее возмущение.
Не игнорируйте обновления macOS. Часто без них система работает некорректно.
Понятно, что работа macOS напрямую связана с техническими характеристиками конкретного устройства. Основываясь на понимании схемы работы объединенной памяти Майкл Саймон предположил следующее:
Возможно, macOS неправильно управляет унифицированной структурой памяти и продолжает выделять оперативку сверх имеющейся, не освобождая ту, которая больше не нужна. Это обычно называют «утечкой памяти». Производительность постепенно снижается до тех пор, пока вам не придется либо ждать, пока оперативная память очистится, либо принудительно завершить работу приложения или перезагрузить компьютер.
Издание MacWorld обратились с вопросом напрямую к компании Apple, однако пока комментариев не получили. Вполне вероятно, что Apple тихонько пофиксит все баги в будущих обновлениях операционки.
Если вы столкнулись с какими-то сложностями после апдейта до Monterey, алгоритм простой. Внимательно изучаем статью с проблемами macOS Monterey и способами их решения, далее сообщаем в наш Телеграм-чат, где подробно описываем детали и вместе ищем пути обхода лагов, чтобы не сталкиваться с этим впредь. Плюс, не забывайте регулярно устанавливать все обновления системы, тем более, что сделать это достаточно просто: переходим в Системные настройки, Обновление ПО, Обновить сейчас.
А вы сталкивались с похожими проблемами? Обязательно поделитесь своим опытом в нашем чате или в комментариях ниже. Будет интересно прочесть.
Общие советы
Я обязан для начала рассказать про простые способы контролировать потребление памяти на macOS (этот совет годится и в Windows и Linux):
- Откройте «Мониторинг системы», отсортируйте приложения по памяти и перестаньте пользоваться приложениями, которые не нужны вам в данный момент
- Отсортируйте приложения по объему сжатой памяти — если вы найдете часто используемые приложения, то значит в вашей системе совсем не хватает объема ОЗУ
- Вынесите «тяжелые» процессы на отдельные сервера, если это возможно (например, компилируйте Android-приложения на отдельной машине)
Избавление от приложений на базе Electron
Если у вас есть приложения на базе Electron, например HipChat или Slack, я очень рекомендую избавиться от них в пользу отдельной браузерной вкладки, поскольку Electron это на самом деле Chromium, а он для поддержания своей работы требует огромные объемы оперативной памяти (500-700 Мб на старте).
Заключение
Эта статья получилась очень короткая, но лишь потому, что лично для меня все эти советы помогли полностью избавиться от «лагов» в работе моего компьютера, связанных с недостатком памяти. У меня всё равно периодически возникают процессы, у которых наблюдается некоторый объем сжатой памяти или даже свопа, но при этом это, обычно, background-демона, которые не влияют на user experience. Если у вас есть возможность поставить в свой компьютер больше 16 Гб памяти, то я бы рекомендовал это сделать, даже если в данный момент вам столько не нужно. На macOS, к сожалению, такая возможность есть только в случае iMac Retina 5K и Mac Pro, и последний явно не стоит своих денег.
Системная память против памяти приложения.
В то время как 4Гб ограничение, описанное ранее, только начинает отражаться на повседневных пользователях, существует еще одна проблема, которая ограничивает полное использование установленной памяти определенным приложением. На самом деле реальная проблема нехватки оперативной памяти состоит не в том, сколько памяти можно установить, а в том, какое количество памяти приложение может адресовать для своих нужд.
32-битные версии Windows, Linux, и Mac OS X по-разному управляют памятью в 4 Гб. Это означает, что их переход на 64-битные версии даст пользователям совершенно различные улучшения. В 32-битных версиях Linux и Mac OS X ядро выделяет 4 Гб виртуальной памяти для себя и столько же для каждого приложения (или процесса). Подсистема виртуальной памяти распределяет память исходя из соображений максимальной производительности. Понятное дело, что чем больше памяти, тем лучше.
В 32-битной версии Windows каждое приложение получает только 2 Гб виртуального адресного пространства; 4 Гб разделяются ядром. По умолчанию, разделение происходит пополам, так что приложение получает в пользование 2 Гб, в то время как ядро резервирует остальные 2Гб. Используя специальную настройку, Windows может быть установлена в пропорцию 3 Гб / 1 Гб, что дает приложению еще один Гб, но не выделяет все 4 Гб. Это влияет на каждое приложение, которому необходимо много памяти.
Причина такого разделения в Windows является производительность. Системные вызовы Windows могут адресовать области памяти, выделенные для приложения, и для ядра за один подход, потому что CPU может непосредственно адресовать и память ядра, и память приложения используя кэшированную lookup-таблицу TLB.
Чем больше памяти, тем больше ответственность
В противовес Windows, 32-битные версии Linux и Mac OS X предоставляют каждому приложению все 4 Гб виртуальной памяти, их адреса перекрываются с адресами ядра. Это означает, что таблица TLB центрального процессора не может хранить кэшированные адреса, потому что не может отличить один от другого.
Каждый раз, когда подсистема памяти перемещается между двумя адресными пространствами, она должна очищать таблицу TLB. Каждый вызов 32-битной системы очищает TLB дважды, повторно устанавливая кэш в ноль и тем самым снижая производительность, ради которой и была придумана. В Windows очищение происходит только в момент переключения между приложениями, поскольку каждое приложение делит свое пространство виртуальной памяти с ядром.
В 64-bit Mac OS X Leopard 64-битные приложения имеют колоссальный объем памяти, который намного превышает 4 Гб. Это позволяет 64-битным приложениям занимать старшие адресные пространства, в то время как ядро занимает младшие. В отсутствии наложения адресов, TLB не надо обнулять и она может работать именно так, как задумывалось. Это преимущество пока что не полность использовано, поскольку ядро и большинство приложений все еще 32-битные (на рисунке ниже — слева).
Snow Leopard даст возможность использовать 64-битные ядро и приложения, полностью исключая необходимость очищать TLB, потому что новое ядро не будет иметь разделяемых адресных пространств, даже в случае 32-битных приложений (на рисунке ниже — справа). Это будет превосходством всех пользователей, использующих 64-битную ОС и процессор Core 2 или лучше, даже при использовании чипсета Santa Rosa, который тоже сможет запускать 64-битные приложения и виртуальная память не будет ограничена количеством адресуемой системной памяти.
Больше, лучше, быстрее
Нынешние 32-битные приложения (Mac) имеют доступ к большей памяти, чем 32-битные приложения Windows, но при этом обнуляют таблицу TLB каждый раз, когда приложение делает системный вызов, чем если бы просто переключалось между приложениями. С приходом 64-битных Leopard предлагает большую производительность с неограниченной виртуальной адресацией.
В 64-битной Windows приложения выйдут за предел 2 Гб адресуемого пространства, но существенного прироста производительности не будет, поскольку Windows ранее не сталкивалась с проблемой очищения TLB.
Обе платформы только выиграют от дополнительных 64-разрядных регистров. Этот фактор также объясняет, почему пользователи PowerPC G5 не увидят большого прироста производительности от стандартных приложений, портированных для 64-бит. У 32-битных приложений PowerPC уже есть дополнительное место в регистрах. В большинстве случаев, они будут работать даже медленнее из-за дополнительной работы по адресации. Это одна из ключевых причин, почему Snow Leopard будет только Intel.
Тёмная сторона 64-бит.
Существует дополнительная нагрузка на Intel в связи с 64-битной адресацией; она связана с отсутствием рынка 64-битных приложений для платформы Windows. С этой проблемой сталкивалась Adobe при выпуске Photoshop CS4.
В то же время, все Mac сейчас 64-битные и используют 64-битную ОС, поэтому не существует проблемы для адаптации ранее написанных 64-битных программ от Apple. За исключением пожалуй программ от сторонних разработчиков. Apple должна обеспечить разработчиков новыми версиями драйверов и плагинов для нового ядра и заставить сторонних разработчиков сделать то же самое.
Пользователи техники Apple привыкли к тому, что их техника работает с молниеносной скоростью. Плавное переключение между приложениями и рабочими столами, быстрый переход из спящего режима в боевую готовность и вообще: им все ни по чем. Однако некоторые проблемы здесь все же встречаются. С выходом macOS Monterey многие столкнулись с уведомлением о нехватке оперативной памяти и были повержены в шок. Сегодня предлагаю разобрать все причины подобного поведения компьютера и обсудить способы очистки оперативки.
С данной проблемой нехватки программной памяти чаще сталкиваются пользователи MacBook Air.
Конечно, какой бы у вас ни был Mac, от него всегда ждешь очень высокой скорости работы. Причем совсем неважно, просматриваете вы страницы в Safari или монтируете ролик в Final Cut. К большому сожалению, ресурс Mac тоже ограничен, и иногда он не справляется с большим количеством одновременно работающих приложений. Недавно я столкнулся с тем, что у моего MacBook ни с того, ни с сего резко включились кулеры и появилось уведомление «Системе не хватает программной памяти». Сегодня предлагаю подробно разобрать почему так происходит,
Тормозит MacBook Pro
Редактор MacWorld Майкл Саймон недавно столкнулся с многочисленными зависаниями системы на своем MacBook. Автор говорит, что долго пытался выяснить причину странного поведения. Сначала он думал, что суть кроется в специализированном софте, так как его Mac был выдан ему на работе.
Покопавшись в сети, Саймон понял, что не одинок в своей проблеме. Так, редактор наткнулся на твит известного техноблогера Грегори Макфаддена, который написал, что Пункт управления в macOS использует 24 ГБ оперативной памяти из 64 доступных.
В случае с Саймоном Пункт управления ни разу не использовал такого объема оперативки, однако проблемы возникли при использовании Safari, Photoshop Elements и родного приложения Почта. Иногда подалгивания сказываются на низкой скорости работы компьютера и в течение нескольких минут проходят самостоятельно, иногда Mac зависает настолько, что его приходится перезагружать.
Майкл Саймон пользуется MacBook Pro 13 с 16 ГБ ОЗУ, но некоторые вкладки в браузере могут потреблять до 20 ГБ, что никак не вяжется с характеристиками устройства. Автор отмечает, что теперь ему приходится постоянно «держать руку на пульсе» и регулярно проверять Пункт управления на наличие подобных казусов.
Проблема не уникальна. С ней может столкнуться пользователь любого Mac.
Владельцы Mac, скажите, как часто вы закрываете приложения в фоне через Command + Q, а не сворачиваете их? Лично у меня MacBook работает 24/7 с пятнадцатью открытыми вкладками Safari и еще парочкой приложений вроде Word, Telegram и Музыки. Теперь предлагаю представить, какого этим пользователям, которые вынуждены постоянно контролировать оперативку и регулярно закрывать все, что висит в фоне.
Подписывайтесь на нас в Яндекс.Дзен, там вы найдете много полезной и интересной информации из мира Apple.
Перевод приложений в Low Resolution Mode
Некоторые приложения (например, Telegram) могут потреблять очень много памяти для того, что они делают. Иногда это связано с разрешением экрана. На моем iMac Retina 4K один скриншот экрана будет занимать 4096×2304x3 = 28 Мегабайт оперативной памяти. Если используемый софт кеширует в памяти слишком много участков экрана, то перевод его в Low Resolution Mode (с потерей визуального качества, безусловно) может, в теории, уменьшить потребление памяти в 4 раза. Перевод Telegram в low-res режим снизил на моем компьютере его потребление памяти с 500 мб до 150 мб — разница в 3,3 раза!
Как почистить оперативку на Mac
Первое, что стоит попробовать — узнать, какие приложения расходуют оперативную память на Mac и закрыть их. Сделать это можно прямо внутри уведомления «Системе не хватает программной памяти» или через специальную утилиту Мониторинг системы следующим образом:
- Вбиваем Мониторинг системы в Spotlight или находим приложение через Launchpad.
- Запускаем программу.
- Переходим во вкладку Память в верхнем углу.
- Смотрим список приложений и количество памяти, которое требуется для их работы.
- Закрываем ресурсоемкие приложения.
Здесь будут указываться все приложения и количество затрачиваемой памяти.
В принципе, думаю, что большинство пользователей и без Мониторинга системы понимают, что такое тяжелые приложения на Mac, но в случае с родной Почтой в жизни бы не подумал, что она может кушать так много оперативки.
Можно поступить еще проще — перезагрузить Mac. С помощью этой нехитрой процедуры получится очистить кэш macOS и принудительно забрать виртуальную память, которую компьютер брал взаймы.
Смена браузера
Вы удивитесь, но Google Chrome (и Safari) — не единственные существующие под macOS браузеры. Firefox тоже прекрасно работает, и является одним из очень немногих приложений, которые поддерживают 32-битный режим.
В теории, работа в 32-битном режиме может уменьшить потребление памяти до 2 раз, заодно ограничив браузер 4 Гб памяти сверху (я бы ограничил ещё сильнее, если бы была возможность). В реальности, конечно, разница не такая большая, но она вполне заметна. Ну и сам Firefox экономнее расходует память, в том числе потому, что у него всего 2 процесса — один процесс для UI и второй процесс для содержимого вкладок. Вероятнее всего, со временем это преимущество будет уменьшаться, но на момент написания статьи Firefox в 32-битном режиме потреблял примерно в 2 раза меньше памяти, чем Google Chrome, и отдавал память обратно системе намного охотнее, когда закрывались лишние вкладки.
Читайте также: