2

Я прочитал: что означают столбцы памяти диспетчера задач? , Но я все еще не понимаю, что они говорят.

  • Является ли Working Set (Mem) размером оперативной памяти в ОЗУ?
  • Paged Pool (VirtMem) - это точно размер памяти процесса в файле подкачки?
  • Общая память процесса (использование адресного пространства) равна сумме Mem и VirtMem?

Некоторая информация доступна на странице диспетчера задач Windows в Википедии.

Диспетчер задач


Похоже, что диспетчер задач является подходящим инструментом для получения информации о количестве страниц оперативной памяти, которыми владеет процесс (например, сбросить страницы ядра и драйвера) и сколько страниц выгружено на диск. Но я не понимаю, какой столбец может показать эти значения.

2 ответа2

3

Непонятно, о чем ты спрашиваешь. Вы спрашиваете об "общей памяти процесса", как если бы это был четко определенный термин. Это действительно не так. Типы измерений памяти, которые кажутся естественными для людей, которые не имеют глубокого понимания управления памятью, в основном не существуют в современных системах.

Более полезный способ сделать это - рассказать нам, что вы пытаетесь выяснить. Мы можем рассказать вам, как это сделать. Люди обычно говорят что-то вроде «Мне нужно знать, сколько памяти использует процесс», но это в значительной степени бессмысленно. Это все равно, что спросить, сколько места использует человек. Ну, они разделяют ванные комнаты, это должно рассчитывать? И у них есть кое-что, хранящееся в гараже, но только потому, что никто не использует его, и они могут выбросить его, если кому-то понадобится место, должно ли это считаться?

На самом деле ничто не заменит изучение некоторых деталей того, как современные операционные системы управляют памятью, различие между физической и виртуальной памятью, чистые и грязные страницы и так далее. Таким образом, вы сможете разобраться с числами, которые система может вам предоставить.

2

Является ли Working Set (Mem) размером оперативной памяти в ОЗУ?

Нет. Это подмножество виртуального адресного пространства процесса, которое является "резидентным" или "присутствующим" в терминах формата таблицы страниц Intel, что означает, что к нему можно получить доступ, не вызывая ошибки страницы.

Это несколько вводящее в заблуждение число по ряду причин, главным образом, что a) оно включает в себя некоторую оперативную память, которая используется совместно с другими процессами - в основном те, которые используют какой-то один и тот же код, например код из общих библиотек, и эти общие страницы учитывается в "рабочем наборе" всех процессов, в которых они находятся. Таким образом, если вы сложите все размеры "рабочего набора", вы получите число, большее, чем истинное использованное количество. b) Кроме того, некоторое ОЗУ, которое было недавно потеряно из рабочего набора процесса из-за замены страницы, вероятно, все еще будет находиться в списке страниц системы в режиме ожидания, и, если это так, при обращении к нему произойдет сбой страницы, но не сбой жесткой страницы. Так что это ОЗУ, содержащее информацию из процесса, которую процесс может использовать снова, но она не учитывается в рабочем наборе.

Счетчик Memory (частный рабочий набор) является подмножеством (рабочего набора). Это часть рабочего набора, которая является частной для процесса, то есть не разделяемой.

Paged Pool (VirtMem) - это точно размер памяти процесса в файле подкачки?

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

Сумма всех счетчиков "Paged pool" для процессов не будет равна общему количеству выгружаемого пула в использовании, потому что ОС использует выгружаемый пул для многих вещей, которые не "заряжены" для определенных процессов.

Общая память процесса (использование адресного пространства) равна сумме Mem и VirtMem?

Я думаю, под "Mem" вы имеете в виду "Рабочий набор (mem)". Во всяком случае, нет, это не так. Это физическая память (ОЗУ), а VirtMem - виртуальная. Вы не можете складывать физическую и виртуальную память вместе, чтобы придумать что-нибудь разумное. Физическая память, используемая процессом, скорее является подмножеством его виртуального адресного пространства.

Windows перепутала эту проблему из-за запутанной, непоследовательной и меняющейся терминологии. Например, в приведенной выше крышке экрана первые четыре счетчика "Память" - это физические (ОЗУ), "Размер фиксации" и "выгружаемый пул" - как виртуальные, так и "невыгружаемый пул", который похож на выгружаемый пул. (куча пространства ядра, но она никогда не выгружается) - это как виртуальный, так и физический размер выделения.

И вопрос, который вы не задавали:

Почему управление памятью так сложно?

Потому что он работает намного лучше, чем простые системы в прошлом. Извини за это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .