8

Мой рабочий компьютер (64-битная Windows 7) тратит много времени на подкачку памяти, когда я переключаюсь между программами. Это меня удивляет, так как у меня 4 ГБ ОЗУ, и программы, которыми я пользуюсь, не особенно требовательны к ОЗУ (Outlook, Emacs, p4win, Firefox, различные инструменты сборки). Я скачал RAMMap, и он показывает более гигабайта памяти, используемой "Метафайлом".

Из блога Sysinternals:

Метафайл является частью системного кэша и состоит из метаданных NTFS. Метаданные NTFS включают в себя MFT, а также другие различные файлы метаданных NTFS. ... В MFT каждая запись атрибута файла занимает 1 КБ, и каждый файл имеет как минимум одну запись атрибута. Добавьте к этому другие файлы метаданных NTFS, и вы поймете, почему категория Metafile может стать довольно большой на серверах с большим количеством файлов.

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

2 ответа2

4

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

Ваша 64-битная система распределяет видеопамять на первые 4 ГБ памяти. Так что, если ваша видеокарта имеет много памяти, эта память теряется, как описано в:
Полезная память может быть меньше установленной памяти на компьютерах под управлением Windows 7

Вы можете проверить использование памяти на компьютере, открыв Диспетчер устройств и в меню "Вид" выбрать "Ресурсы по соединению". Разверните узел "Память" и посмотрите, сможете ли вы выяснить, что, если вообще, занимает память. В некоторых случаях объем памяти можно увеличить, отключив неиспользуемые устройства, например FireWire.

Вы также можете попробовать сделать прямо противоположное тому, что описано в этой статье:
Увеличьте размер кэша памяти файловой системы в Windows 7

Вы также можете попробовать отключить Windows 7 SuperFetch.

Если ничего не помогает, было бы полезно опубликовать снимок экрана с вкладкой «Диспетчер задач» под названием «Производительность».

0

Windows Server 2008 R2 испытывает точно такую же проблему "кэша" метафайлов, что слишком много информации метафайлов хранится в активной памяти, поэтому функции кэша не имеют разрешения, позволяющего освободить эту память при нехватке памяти.

Я написал сценарий powershell на странице serverfault.com Использование ОЗУ метафайла Windows Server 2008 R2 , в котором максимальная активная память метафайла устанавливается на разумное значение. Остальное перемещается в резервную память, и тогда обычные функции кэширования могут соответствующим образом расставлять приоритеты. В Windows 7 x64 и Server 2008 R2 x64 установлены максимальные ограничения активной памяти по умолчанию для данных метафайлов в 1 ТБ. Да, ТБ, а не ГБ.

Теперь Work запускает этот скрипт на всех наших сайтах на наших серверах, которые организуют резервные копии сайта, которые ежедневно обрабатывают миллионы файлов во время цикла резервного копирования. На этих серверах резервного копирования также работает Java-программа с большим объемом памяти (VMware vSphere), 2 SQL-сервера и WSUS с собственным SQL-сервером. Когда программа резервного копирования сначала считывает метаданные (имя, размер, дату изменения, разрешения, атрибуты и т.д.), Чтобы определить список файлов, которые будут зарезервированы при передаче, ОЧЕНЬ быстро заполняет кэш метафайлов. Даже делая все это, они путешествуют хорошо только с 4 ГБ оперативной памяти.

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