Самый простой ответ? Нет. Операционная система управляет памятью для пользователя, предоставляя процессу столько памяти, сколько ему требуется, сколько требуется, и не предоставляет много возможностей для изменения работы системы. Это не очень помогает при попытке выяснить, является ли использование памяти частью уравнения относительно того, почему серверы Linux превосходят серверы Mac.
Из-за отсутствия «взлома» в системе виртуальной памяти ваши лучшие варианты - это оценить производительность виртуальной памяти, чтобы увидеть, действительно ли это причина ваших проблем с производительностью - самое основное - это использовать vm_stat
или использовать, следуя ей. жить, используя, vm_stat [number of seconds]
чтобы увидеть, сколько страниц происходит. Перемещение неиспользуемых страниц из ОЗУ на жесткий диск обходится гораздо дешевле, чем возврат страниц с жесткого диска в ОЗУ. Страница в терминах OS X относится к 4 КБ данных.
Кроме того, 32-разрядные процессы (например, Illustrator) не могут получить доступ к более чем 4 ГБ, поэтому теоретически возможно освободить 2 ГБ и запустить процесс из памяти, если у вас установлено 6 ГБ.
И на вашем рабочем столе, и на серверах я запускаю vm_stat 2
и проверяю последний столбец, особенно когда вы сталкиваетесь с задержкой в несколько секунд при переключении на Illustrator.
Чтобы узнать, насколько велик размер свопа, вы можете проверить размер свопа в Activity Monitor или запустить du -shc /var/vm/swap* | tail -n 1
.
Использование du -sh /var/vm
имеет одну оговорку: на ноутбуках, которые имеют режим гибернации (что-либо в течение последних 4 лет или новее), может быть sleepimage
примерно размер того, сколько памяти вы установили.
Mac OS X Memory Jargon:
Wired : это относится к коду ядра и тому подобному. Память, которая никогда не должна перемещаться из ОЗУ. Также известен как резидентная память.
Shared : память, которая используется двумя или более процессами. Оба процесса будут показывать этот объем памяти, поэтому он может вводить в заблуждение относительно того, сколько памяти фактически используется.
Real : это «реальное» использование памяти приложением, о котором сообщает task_info () - приблизительный подсчет количества физических страниц текущего процесса. (RSIZE)
Частная : это память, которую процесс использует исключительно самостоятельно, которая используется в резидентной памяти. (RPRVT)
Виртуальный : Общий объем адресного пространства в процессе, который сопоставлен с чем угодно - независимо от того, является ли он произвольно большим пространством для переменных или чего-либо еще - он не соответствует фактическому использованию виртуальной машины. (VSIZE)
Активный : Память в настоящее время помечена как активная и используется ОЗУ.
Неактивно : «Неактивная память больше не используется и была кэширована на диск. Она останется в ОЗУ, пока не понадобится место другому приложению. Если вы (или клиент вашего компьютера) вернетесь, оставьте эту информацию в ОЗУ». к этому позже. " - Справка Mac OS X
Свободно : объем ОЗУ, фактически доступный без каких-либо данных.
Лучшая документация, которую я знаю (и которую смог найти в последующих исследованиях), - это собственная статья Apple об управлении памятью на их веб-сайте для разработчиков.
Другие полезные источники: список рассылки Darwin-dev: [ 1 ], [ 2 ] и старая статья о MacOSXHints . Кроме того, Майк Эш разместил хорошее введение в свой блог.
Может быть возможно (я не пробовал это сделать) отключить систему виртуальной памяти, запустив sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
и затем перезапустив ее так, чтобы dynamic_pager (программа, которая фактически выделяет виртуальную память) не запускалась. Однако, поскольку ОС предполагает наличие виртуальной памяти, вы можете столкнуться с проблемами очень и очень быстро. Чтобы загрузить его обратно запустить sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
(при необходимости из однопользовательского режима)