Физическая память всего кэшировано доступно свободно

Физическая память всего кэшировано доступно свободно

Если вы видели в Диспетчере задач запись о кэшировании памяти, то наверняка задавались вопросом, что это собственно такое? И что это за число напротив данной надписи, хорошо это или плохо, когда кэш большой? Давайте коротко постараемся ответить на эти вопросы.

В данном случае, кэширование памяти — это объем оперативной памяти, который размещен в файле подкачки. Это в общем тоне плохо, но с винчестера (жесткого диска) обмен данными происходит медленнее, нежели с физической (оперативной) памяти.

Попробуйте совсем отключить файл подкачки и тем самым проверьте, будет ли быстрее работать ваш компьютер, например, запустив сложную программу, типа 3D Mark, или Photoshop. Однако если ваша оперативная память не может похвастаться большим числом, то помните, что в случае если оперативная память забита до отказа, временную ее роль выполняет именно кэширование памяти, поэтому в случае если вы играете в любимую игру, кэш будет очень полезен, дабы вас не выкинуло на рабочий стол.

Влияние наличия и отсутствия кэш-памяти и ее объема на рост производительности ЦП показано в таблице «Размер и эффективность кэш-памяти».

Ситуация: компьютер, на борту которого 4 ГБ оперативной памяти, работающий под управлением Windows 7 64-bit в течение нескольких часов занимался сложной задачей (импорт большого массива данных в SQL из кучи мелких файлов (100.000+ файлов)). Постепенно работа компьютера замедлялась все больше и больше и он стал почти совсем неотзывчивым. Монитор ресурсов на вкладке «Память» в разделе «Физическая память» показывает:

Зарезервированное оборудование: 2 МБ

Используется: 3874 МБ

Ожидание: 163 МБ

(пока я это писал, цифры незначительно изменялись то в большую, то в меньшую сторону)

НО! Если просуммировать процессы по значениям в столбце «Завершено (КБ)» или «Рабочий набор (КБ)» (кто-нибудь может пояснить в двух словах, в чем разница между этими значениями?), то по сумме получается, что все процессы потребляют не более 2 ГБ памяти.

Вопрос: кто съел еще почти 2 ГБ памяти и почему она не высвобождается? (в текущий момент никаких трудоемких или требующих памяти задач не выполняется).

Читайте также:  Как сделать оптимальное разрешение экрана

PS В диспетчере задач на вкладке «Быстродействие» такая картина по памяти:

Выделено (МБ): 5979 / 8187 (хотелось бы чтобы кто-то также прокомментировал, что означают эти цифры)

Надеюсь только на экспертов.

  • Вопрос задан более трёх лет назад
  • 27448 просмотров

>>Свободно: 46 МБ
Это количество действительно свободной памяти, т.е. вообще ни подо что не задействованной. В нормальных условиях её и должно быть свободно чуть-чуть, т.к. остальная _доступная_ память должна уходить на кеширование.

>>в чем разница между этими значениями
Ну вообще, если навести мышу на заголовки, то там подсказка выплывает 😉
Завершено — сколько виртуальной памяти выделенно процессу (т.е. например процесс попросил 2Гб аллокейтнуть — будет показывать 2Гб здесь);
Рабочий набор — сколько в реальности сейчас висит в оперативной памяти, т.е. значение может быть меньше чем «Завершено».
Вот хороший пример:

>>Вопрос: кто съел еще почти 2 ГБ памяти и почему она не высвобождается?
Ну куда именно она ушла только по итоговым показателям трудно сказать, для более-менее конкретного гадания нужно хотя скриншоты. Крайне желательно взять Process Monitor (www.sysinternals.com).

>>Всего: 4094
Это объём _оперативной памяти_ (без свопа)
>>Кэшировано: 178
Это объём оперативной памяти выделенной под кеширование файлов
>>Доступно: 211
Это объём оперативки, который система может выделить для процесса (состоит из кеш+свободная)

>>Выделено (МБ): 5979 / 8187
Выделено памяти — 5979 мегабайт из максимально доступных 8187 мегабайт, состоящих из

4096 Мб оперативной памяти и 4096 Мб файла подкачки.
Что, кстати, косвенно говорит о том, что памяти кто-то очень немало сожрал, аж в 1,5 раза больше чем оперативки.

За много лет использования Windows я привык к Диспетчеру задач. Оттуда я убил сотни приложений за плохое поведение. Там же смотрел, кто из них пожирает ресурсы. Пока я не начал работать с машинами, у которых сотни гигабайт памяти, а у приложений соответствующие запросы. В этой статье обсудим, почему Диспетчер задач плохо отслеживает память и что использовать взамен. Во-первых, о механизме выделения памяти в Windows.

Читайте также:  Почему небо красное ночью зимой

tl;dr: Диспетчер задач скрывает информацию о подкачке (paged memory) и виртуальном пространстве процесса. Лучше используйте Process Explorer из комплекта Sysinternals.

При запуске нового процесса ОС присваивает этому процессу непрерывное адресное пространство. В 32-разрядных системах это пространство может составить 4 ГБ, обычно 2 ГБ для ядра, а остальное для процесса. В этой статье проигнорируем использование памяти ядром. В 64-разрядных системах зарезервированная процессом память может вырасти до колоссальных 64 ТБ. Что этот процесс будет делать с несколькими терабайтами памяти, когда у нас на самом деле жалкие 8 ГБ? Сначала нужно понять, что такое зарезервированная и переданная память.

Зарезервированная и переданная память

Не все части этого огромного адресного пространства равны. Некоторые части адресного пространства процесса фактически поддерживаются либо физической оперативной памятью, либо диском (см. ниже). Зарезервированная память считается переданной (Committed), если ОС предлагает вам эту память при попытке её использовать. Остальная часть адресного пространства, а это подавляющее большинство, остаётся доступным для резервирования. То есть не всегда ОС может предложить вам этот блок памяти для использования: она может сделать копию на диске (файл подкачки), например, а может и не сделать. В C++ резервирование памяти осуществляется вызовом VirtualAlloc. Так что переданная память является аппаратно ограниченным ресурсом в ОС. Давайте посмотрим.

Файл подкачки ОС

Файл подкачки — замечательная идея. В принципе, ОС понимает, что некоторые части памяти особо не используются вашим приложением. Зачем тратить на него реальную физическую память? Вместо этого процесс в ядре записывает этот неиспользуемый фрагмент на диск. Пока к нему не обратятся снова, только тогда он вернётся в память.

Для более подробного объяснения, как работает память в Windows, рекомендую лекцию «Тайны управления памятью» Марка Руссиновича.

Здесь много за чем нужно следить и анализировать. К кому обратиться? Конечно, к Диспетчеру задач!

Память в RAM обычно называют рабочим набором (Working Set), в то время как всю выделенную память обычно именуют Private Bytes. Библиотеки DLL вносят путаницу в определения, поэтому пока их проигнорируем. Иначе говоря:

Читайте также:  Как в личной информации убрать группы

Private Bytes [выделенная память] = рабочий набор + файл подкачки

По умолчанию Диспетчер задач показывает для любого процесса именно рабочий набор:

И это число, на которое я всё время смотрел. Откуда я знал, что в Диспетчере задач информация о переданной памяти находится в колонке Commit Size . Я так и не смог там найти информацию о виртуальной памяти.


Диспетчер задач позволяет добавить информацию о переданной памяти, если щёлкнуть правой кнопкой мыши по столбцам и выбрать соответствующий пункт

К счастью, есть много других ресурсов для отслеживания ресурсов. На каждой машине под Windows установлен PerfMon (Системный монитор), который выдаёт очень подробную информацию о каждом процессе и системе в целом:

Интересно, что Системный монитор умеет фактически исследовать и сравнивать метрики на двух или более компьютерах в сети. Это очень мощный инструмент, но Диспетчер задач, очевидно, удобнее для пользователей. В качестве промежуточного решения рекомендую Process Explorer:

Бум! Visual Studio, чего это ты до сих пор в 32-битном режиме (обратите внимание на его Virtual Size)? Пиковое использование памяти на моём компьютере на уровне 89% от максимума, ещё терпимо. Это пригодится позже.

Дополнение: многие указали на другие удобные инструменты, в том числе VMMap и RAMMap.

К счастью, это не какие-то ненужные мелочи ОС. Актуальная информация о потреблении памяти многократно помогала мне в отладке разных проблем.

Самое главное, это найти нетронутые части выделенной памяти. Данные о подкачке тоже важны: эта память передана, но используется редко или вообще не используется.

Даже если память будет иногда использоваться, важно понимать, что это дорогой ресурс, так что идти по такому пути ни в коем случае нельзя. Здесь появятся и утечки памяти.

По этим причинам я ранее слышал предложение полностью удалить файл подкачки и приравнять выделенную память рабочему набору. Однако это обоюдоострая идея. Тогда ОС не в состоянии сбросить память в случае неправильной работы приложений, которые иногда впустую резервируют память.

Ссылка на основную публикацию
Файл с расширением dav чем открыть
Файл формата DAV открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ. Чем открыть файл в формате...
У вас сломался холодильник
Поломка холодильника всегда застает в врасплох. И определить причину моментально практически невозможно. Нужно как можно быстрее «спасти» продукты. Обычно надолго...
У каких марок телефонов хорошая камера
Производители будто бы соревнуются - кто сколько датчиков встроит в девайс. Есть уже с четырьмя и даже пятью камерами! Как...
Файл подкачки windows 7 на флешку
В прошлой статье рассказано, как определиться с оптимальным размером файла подкачки, что делать с SSD-дисками и как установить размер файла...
Adblock detector