Какую шкалу или меру придерживаются «Маморикс» и Йосемити?

Монитор активности Mavericks '(а также Yosemite's) показывает новую диаграмму, давление памяти . К сожалению, текст его помощи лишь смутно объясняет, что именно он измеряет. Как рассчитывается давление памяти?

Монитор активности Mavericks - память

Резервы изображений переходят на этот ответ из вопроса опроса о лучшей новой функции Mavericks.

56 голосов | спросил Jens Erat 27 +04002013-10-27T20:49:51+04:00312013bEurope/MoscowSun, 27 Oct 2013 20:49:51 +0400 2013, 20:49:51

3 ответа


51

Давление в памяти не является простым показателем процента свободной памяти и, по-видимому, является графиком от 0 до 100%. Значение sysctl для vm.memory_pressure рассчитывается по отношению к вычисленной цели, которая отслеживает соотношение между свободной и неактивной страницами памяти на проводные и активные страницы. Абсолютные счетчики просматриваются с помощью инструмента командной строки vm_stat для проверки подробного распределения виртуальной памяти. Джонатан Левин имеет отличную документацию на http://newosxbook.com/articles/MemoryPressure.html , охватывающей оба macOS и iOS, и как они вычисляют давление памяти, а также действия, предпринимаемые при высоком значении давления.

Соответствующая виртуальная память (vm), которая кормит вычисление vm.memory_pressure:

  • vm.page_free_count - абсолютное количество бесплатных страниц
  • vm.vm_page_free_target - расчетная цель или цель для ситуации, свободной от давления.
  • vm.page_free_wanted - то, что система vm хотела бы освободить, чтобы облегчить текущий расчетный индекс давления

Итак, если вы отслеживаете давление памяти на мониторе активности (или программно проверяете значения sysctl или в командной строке), вам следует взглянуть на эти четыре значения:

sysctl -a vm | egrep "page_free|pressure"

Появилась новая команда memory_pressure, представленная с Mavericks, и когда я запустил ее, чтобы подсистема памяти подсистема была в состоянии предупреждения, вы можете увидеть увеличение давления памяти в желтый диапазон.

результаты мониторинга активности <code> sudo memory_pressure -l warn </code>

Инструмент распределял около 4 ГБ памяти на инструмент, так как график давления постоянно увеличивался до этого состояния, где, по-видимому, отображается уровень «предупреждения»: sudo memory_pressure -l warn. Как вы можете видеть, система до давления имела 5,9 ГБ и использовалась до 7,99 ГБ, что даже не нужно добавлять из-за замены и сжатия.

После просмотра того, как vm_stat 15 показал результат предупреждения без измеримого пейджинга, я выхожу из инструмента (Control-C), а затем повторно запускал инструмент, чтобы критическое давление в памяти: sudo memory_pressure -l critical

Я не позволял этому работать более нескольких минут, когда пейджинг начинался, и как только инструмент сказал, что у меня 5 ГБ ОЗУ, выведенной на диск, я не хотел заполнять свой диск и выйти из этого инструмента.

результаты мониторинга активности <code> sudo memory_pressure -l критический </code>

Вы можете наблюдать, как быстро система освободила ОЗУ после того, как предупреждение было закончено, а также, как оно распространилось на «красную» территорию, чтобы показать, что система виртуальной памяти не может сжимать достаточное количество страниц, чтобы избежать замены на диск. Моя образованная догадка о том, что давление оказывает красное давление, указывает на обмен и резкое перераспределение и /или время, когда свободные страницы ниже того, что система предпочитает, и активно чистит неактивные страницы и /или меняя местами, которые, как ожидается, будут использоваться для обмена. Аналогично, система быстро восстанавливается после освобождения распределений и снятия давления с системы виртуальной памяти.

ответил bmike 28 +04002013-10-28T05:22:40+04:00312013bEurope/MoscowMon, 28 Oct 2013 05:22:40 +0400 2013, 05:22:40
30

Чтобы несколько уточнить и сделать это предположение более точным: давление памяти - это метрика, используемая ядром (xnu), с выделенным потоком, называемым памятью (ранее известным как Jetsam). Этот поток отвечает за обнаружение, когда доступная оперативная память низкая - что в OS X может принудительно меняться, а в iOS убивает приложение с наивысшей потребляемой памятью (так как нет свопа). В Mavericks две ОС ближе друг к другу. Memorystatus выдает примечание ядра, которое в конечном итоге выполняет среда выполнения Obj-C в appDidReceiveLowMemoryWarning. Предполагается, что приложения должны очищать неиспользуемую или постороннюю память (например, кеши). Ликвидация Дарвина также автоматически очищает память.

Существует специальный (хотя и недокументированный) системный вызов vm_pressure_monitor (# 296, если я правильно помню), который позволяет клиенту прослушивать события давления и видеть, сколько физических страниц может быть исправлено.

Вы можете просматривать события давления на Mavericks с помощью Process Explorer для OS X - можно загрузить из http://newosxbook.com/index .php? страница = загрузки . Это показывает вам давление «датчик», а также события давления.

ответил Just helping 31 +04002013-10-31T08:53:47+04:00312013bEurope/MoscowThu, 31 Oct 2013 08:53:47 +0400 2013, 08:53:47
14

Давление в памяти определяется двумя счетчиками, которые удерживаются внутри:

  • vm_page_free_count: сколько страниц ОЗУ сейчас бесплатно.
  • vm_page_free_target: Сколько страниц оперативной памяти, как минимум, должно быть оптимально бесплатным.

Вы можете легко их увидеть, используя sysctl:

 [email protected] (~/Documents) % sysctl -a vm | grep page_free
vm.vm_page_free_target: 2000
vm.page_free_wanted: 0
vm.page_free_count: 73243

, если количество бесплатных страниц падает ниже целевой суммы - у нас есть ситуация с давлением.


Из http://newosxbook.com/articles/MemoryPressure.html

ответил Nay 2 FebruaryEurope/MoscowbSun, 02 Feb 2014 00:36:34 +0400000000amSun, 02 Feb 2014 00:36:34 +040014 2014, 00:36:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132