Зменшити використання "Metafile" пам'яті?


8

Мій робочий комп'ютер (Windows 7 64-бітний) витрачає багато часу на обмін пам'яті під час переходу між програмами. Це мене дивує, оскільки у мене є 4 Гб оперативної пам’яті, а програми, які я використовую, не особливо голодні по ОЗУ (Outlook, Emacs, p4win, Firefox, різні інструменти побудови). Я завантажив RAMMap , і він показує гігабайт пам'яті, використовуваний "Metafile".

З блогу Sysinternals :

Метафайл є частиною системного кешу і складається з метаданих NTFS. Метадані NTFS включають MFT, а також інші різні файли метаданих NTFS. ... У MFT кожен запис атрибутів файлу займає 1 к, а кожен файл має щонайменше один запис атрибутів. Додайте до цього інші файли метаданих NTFS, і ви можете зрозуміти, чому категорія Metafile може зрости досить великою на серверах з великою кількістю файлів.

Тож я розумію, що таке "Metafile" дані ... Я працюю над великими збірками, що містять сотні тисяч файлів (жоден не такий великий, але вони містять до декількох гігабайт). Моє запитання - як я можу зменшити об'єм пам'яті, використовуваний "Metafile"? Я не активно використовую всі ці файли одночасно, тож чому Windows потрібно зберігати інформацію в оперативній пам’яті? Перезапуск машини кожного разу, коли я синхронізую нову збірку, насправді дратує.


4
Збірки інтенсивні IO, і тому Windows зберігає великий кеш файлової системи для підвищення продуктивності. На жаль, інструменти для збирання також використовують багато пам’яті і зазвичай у великих шипах, що, ймовірно, спричиняє заболочення. Оскільки це конкурує із системним кешем. Найкращим рішенням може бути додавання більше пам’яті.
tgiphil

@tgiphil, зрозуміло, що багато пам'яті використовується під час перевірки чи складання. Однак він все ще використовується і все ще спричиняє молотіння набагато пізніше, коли я просто працюю на невеликій території. На жаль, ІТ не дасть мені більше пам’яті.
Джей Конрод

Я думаю, що Windows 7 вже оптимізує вашу ефективність кешуванням. Отже, щоб збільшити доступну пам'ять і зменшити своп, закрийте зайві програми. Ви можете отримати хороший фрагмент пам'яті, закривши, наприклад, Outlook та Firefox. Якщо ви використовуєте Visual Studio і вам потрібно лише компілювати, спробуйте створити командний рядок. Я сподіваюся, що це допомагає. До речі. З настільки низьким обсягом пам'яті (6 Гбіт за 100 доларів) це відмінна інвестиція в продуктивність.
tgiphil

Відповіді:


4

Я вважаю, що системний кеш вивільняє свою пам'ять, коли це вимагається, але можливі збої. Нижче перераховані деякі можливості.

Ваша 64-бітна система виділяє відеопам'ять у перші 4 Гб пам'яті. Отже, якщо у вашої відеокарти є багато пам’яті, ця пам’ять втрачається, як описано в:
Корисна пам'ять може бути меншою, ніж встановлена ​​пам’ять на комп'ютерах під керуванням Windows 7

Ви можете вивчити використання пам'яті на комп’ютері, відкривши диспетчер пристроїв і в меню Перегляд виберіть "Ресурси за допомогою з'єднання". Розгорніть вузол Пам'ять і подивіться, чи зможете ви зрозуміти, що, якщо що, займає пам'ять. У деяких випадках пам'ять можна збільшити, відключивши невикористані пристрої, такі як брандмауер.

Ви також можете спробувати виконати прямо протилежне тому, що описано в цій статті:
Збільшення розміру кешу пам'яті FileSystem у Windows 7

Ви також можете спробувати відключити Windows 7 SuperFetch .

Якщо нічого не допомагає, вам було б корисно опублікувати скріншот вкладки Диспетчер завдань під назвою Продуктивність.


+1 призначений для "Вимкнути Superfetch".

Немає нижчого класу, але Superfetch, швидше за все, збільшує свою ефективність - не знижуючи її - оскільки складові виконавчі файли, як правило, виконуються часто і виграють від кешування. Що стосується відеокарти, що впливає на доступну пам'ять, вона не застосовується для Windows 7 64bit з лише 4Gb. У цьому випадку відеокарта буде відображена вище 4Gb.
tgiphil

@tgiphil: З цитованої вище статті Microsoft: "відеокарта, що містить 256 МБ вбудованої пам'яті, повинна пам'ятати карту в перші 4 ГБ адресного простору".
harrymc

У моїй організації у нас також є тонна невеликих файлів і величезна метафайл NTFS в оперативній пам'яті. З того, що я можу сказати, Windows не кешує Metafile, як все інше, і ніколи не звільняє його від оперативної пам'яті. Комп'ютер буде до 100% використовувати пам'ять, і тоді всі ваші програми почнуть виходити з ладу через брак пам'яті. Звичайно, це не Windows 7, це Windows Server 2008 R2.
Філ

Також посилання "Збільшити кеш пам'яті FileSystem" вказує на речі, які насправді не працюють. Дивіться tweakhound.com/blog/?p=1164
Філ

0

Windows Server 2008 R2 відчуває таку ж проблему «кешу» метафайлів, що занадто багато інформації метафайлів зберігається в активній пам'яті, тому функції кешу не мають дозволу, щоб дозволити звільнення цієї пам’яті при тиску в пам'яті.

Я написав скрипт powerhell на сторінці serverfault.com, метафайл операційної пам'яті Windows Server 2008 R2, який встановлює максимально активну пам'ять метафілів на щось розумне. Решта переміщується в режим очікування, і звичайні функції кешу зможуть відповідно визначити пріоритети. У обох Windows 7 x64 та Server 2008 R2 x64 встановлені максимальні обмеження активного обсягу пам’яті для даних метафайлів у 1 ТБ. Так, туберкульоз, а не ГБ.

Тепер робота працює за цим сценарієм на всіх наших сайтах на наших серверах, які організовують резервні копії сайту, які щодня обробляють мільйони файлів під час циклу резервного копіювання. Ці резервні сервери також запускають важку програму Java (VMware vSphere), 2 SQL-сервери та WSUS із власним SQL-сервером. За допомогою програмного забезпечення для резервного копіювання вперше читайте метадані (ім'я, розмір, змінена дата, дозволи, атрибути тощо), щоб визначити список файлів, які він буде створювати в резервному режимі, які передають його ДУЖЕ, швидко заповнює кеш метафайлів. Навіть роблячи все те, що вони круїзують разом із лише 4 Гб оперативної пам’яті.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.