«Ввод страниц / сек» - это счетчик, который нужно наблюдать, но вам не стоит беспокоиться о его «подкачке», поскольку окна не используют файл подкачки, как * nixes.
Во-первых, вы должны понимать, что окна страниц не выходят. Я собираюсь процитировать соответствующую часть поста в блоге Эрика Липперта (слегка отредактированного), так как сам не могу сказать это лучше:
«ОЗУ можно рассматривать как просто оптимизацию производительности. Доступ к данным в ОЗУ, где информация хранится в электрических полях, распространяющихся со скоростью, близкой к скорости света, намного быстрее, чем доступ к данным на диске, где информация хранится в огромном, тяжелом молекулы черного металла
Операционная система отслеживает, с каких страниц хранилища и с каких процессов осуществляется наиболее частый доступ, и копирует их в ОЗУ, чтобы увеличить скорость. Когда процесс обращается к указателю, соответствующему странице, которая в настоящее время не кэшируется в ОЗУ, операционная система делает «сбой страницы», выходит на диск и делает копию страницы с диска в ОЗУ, делая разумное предположение что к нему скоро снова будет доступ.
Операционная система также очень умна для совместного использования ресурсов только для чтения. Если два процесса загружают одну и ту же страницу кода из одной и той же библиотеки DLL, операционная система может совместно использовать кэш-память ОЗУ между двумя процессами. Поскольку код, по-видимому, не будет изменен ни одним из процессов, вполне разумно сохранить дублирующую страницу ОЗУ, разделяя ее.
Но даже при умном совместном использовании в конечном итоге этой системе кэширования не хватит оперативной памяти. Когда это происходит, операционная система делает предположение о том, какие страницы с меньшей вероятностью будут снова доступны в ближайшее время, записывает их на диск, если они изменились, и освобождает эту ОЗУ для чтения в том месте, к которому с большей вероятностью будет выполнен доступ снова. скоро.
Когда операционная система угадывает неправильно или, что более вероятно, когда ОЗУ просто не хватает для хранения всех часто используемых страниц во всех запущенных процессах, тогда машина начинает «молотить». Операционная система тратит все свое время на запись и чтение дорогого дискового хранилища, диск работает постоянно, и вы не выполняете никакой работы.
Это также означает, что «нехватка ОЗУ» редко приводит к ошибке «недостаточно памяти». Вместо ошибки это приводит к плохой производительности, потому что полная стоимость того факта, что хранилище фактически находится на диске, внезапно становится актуальной.
Другой способ взглянуть на это состоит в том, что общий объем виртуальной памяти, которую использует ваша программа, на самом деле не имеет большого значения для ее производительности. Важно не общее количество потребляемой виртуальной памяти, а, скорее, (1), сколько этой памяти не используется другими процессами, (2) насколько велик «рабочий набор» часто используемых страниц, и ( 3) больше ли рабочие наборы всех активных процессов, чем доступная RAM.
К настоящему времени должно быть понятно, почему ошибки «нехватки памяти» обычно не имеют никакого отношения к тому, сколько у вас физической памяти, или как много свободного места доступно. Это почти всегда адресное пространство, которое в 32-битной Windows относительно мало и легко фрагментируется. "
Несколько дополнительных моментов:
- DLL-файлы и программные файлы всегда только выгружаются, но никогда не выводятся, поскольку они уже находятся на диске (и обычно первые страницы освобождаются, когда физический ОЗУ становится низким)
- Вы гораздо больше нуждаетесь в том, чтобы исчерпать свободные записи таблицы страниц или иметь сильно утомленную память, чем любые другие проблемы с памятью (кроме общей плохой производительности, как уже упоминалось)
- даже если вы запускаете без файла подкачки, вы все равно можете получить ошибки страницы
- Вообще говоря, просмотр выделенной памяти больше говорит о том, как процесс использует память
для полной картины того, как управление памятью работает в окнах, см.
Диспетчер виртуальной памяти в Windows NT
если вы думаете, что у вас есть проблемы с памятью, я бы сначала предложил посмотреть эту презентацию по устранению неполадок памяти Windows
Вот отличное объяснение того, почему иногда вы получаете «нехватку памяти», когда вы не из-за фрагментации памяти:
Смотрите также Расширение границ Windows: физическая память
Подробнее о виртуальной памяти, фрагментации памяти и утечках, а также WOW64
ОЗУ, виртуальная память, файл подкачки и все такое (поддержка Microsoft)
Обновить:
Windows 10 делает что-то немного другое с памятью, и со временем вы увидите процесс под названием «Система и сжатая память». Windows 10 добавляет «хранилище сжатия» в список подкачки. Этот оперативный памяти является памятью USER, которая принадлежит системе (как правило, система имела только память ядра). Эта память сжимается на месте для среднего сокращения примерно до 30%. Это позволяет хранить больше страниц в памяти (для тех, кто выполняет математику, это занимает на 70% больше места). Обратите внимание, что если в памяти все еще есть давление, то страницы из хранилища сжатия (пользовательский режим, пространство процесса системы) могут быть помещены в измененный список (сжатый), который затем может быть записан в физический файл подкачки. Система увидит, что они из пространства режима пользователя системы и сжаты, и не будет пытаться вернуть их обратно в хранилище. Так что в системах Windows 10 может показаться, что система вдыхает оперативную память, но на самом деле она просто пытается более эффективно использовать оперативную память. Пользователи Mac используют подобную функцию с 2013 года, а в более новых версиях ядра Linux используется версия сжатия памяти. Этот метод сохранения памяти не только лучше, но уже распространен среди других операционных систем.