Як очистити кеш-пам'ять зчитування з диска Windows?


13

Для тестування продуктивності мені потрібно очистити кеш-пам'ять зчитування диска Windows. Я спробував googling, але не зміг знайти нічого іншого, крім перезавантаження або інших ручних речей. Перш ніж я поступлюсь і роблю це, я хотів би дізнатися, чи хтось знає про спосіб очищення кеш-пам'яті зчитування диска Windows. Я тестую на Windows 7, але мене також цікавлять рішення для Windows XP.

Відповіді:


3

Крім того, заповніть кеш даними, які, на вашу думку, не використовуються в тесті, а потім запустіть тест.


1
Крім того, ви можете взяти всю доступну оперативну пам’ять. Windows випустить кеш файлів, щоб використовувати цю оперативну пам'ять. Детальніше див. Відповідь, яку надав Стівен Денн.
Ультраліск

Я сподівався на щось менш "обхідне", але я думаю, що вашу пропозицію найлегше реалізувати в автоматичному тестовому сценарії в моїй ситуації. Дякую за пропозицію.
Себастіян М

7

Я задавав те саме питання щодо Stack Overflow

/programming/478340/clear-file-cache-to-repeat-performance-testing

Я використовував Win XP, але найкращим рішенням, який я придумав, було:

  1. Виконайте кілька копій MemAlloc
  2. Кожному з них виділіть по кілька разів великі шматки пам’яті
  3. Використовуйте Провідник процесів, щоб спостерігати зменшення розміру кешу системи до дуже низьких рівнів
  4. Закрийте програми MemAlloc

3

Для набагато кращого перегляду кешу файлової системи Windows XP - спробуйте ATM від Tim Murgent - він дозволяє переглядати як кеш файлової системи робочого набору, так і розмір списку очікування у більш детальному та точному поданні. Для Windows XP - вам потрібна стара версія 1 банкомату, яка доступна для завантаження тут, оскільки для V2 та V3 потрібні Server 2003, Vista або новіші версії.

Ви помітите, що хоча Cacheset зменшить "Cache WS Min" - фактичні дані все ще продовжують існувати у вигляді списків очікування, звідки їх можна використовувати, поки не буде замінено чимось іншим. Щоб потім замінити його чимось іншим, використовуйте такий інструмент, як MemAlloc, flushmem Чада Остіна або Consume.exe з Інструментів набору ресурсів Windows Server 2003.


3

Я використав RAMMap . Він має можливість звільнити пам'ять декількох типів виділень.

Вміст кеш-файлів можна переглянути на вкладці "Зведення файлів", а вибір пункту "Порожній список очікування" у меню "Порожній" повинен очистити цей кеш.


Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
slm

1

Перезавантажте машину.


Це рішення "великого молотка". Дивіться відповідь, яку надав Стівен Денн.
Ultralisk

1

Найкраща практика полягає в тому, щоб будь-які тестові файли, якими ви орієнтуєтесь, на 2 рази перевищували кеш масиву контролера (або пам'ять Windows OS, якщо тестування в гості vm), з тестовим файлом мінімум 1 Гб. Це гарантує, що будь-яке кешування буде відмінено. Ми використовуємо SQLIO для порівняння дисків; в супровідній документації є велика кількість інформації.


Однією з речей, які я намагаюся зробити, є тест на те, як швидко наш проект будується на кількох конфігураціях. Я дійсно не можу збільшити розмір файлів, які я думаю. :)
Себастіян М

1

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

Це означає, що якщо ви дійсно просто шукаєте очистити кеш-пам'ять, прочитану корисними даними, перед тим, як запустити контрольні показники, які ХОЧУТИ використовувати кеш-читання, спосіб зробити це - читати в одному файлі розміром лише під кеш-пам’яттю читання. і зробити деякі файлові операції з ним. Це очистить кеш і заповнить його цим єдиним великим файлом. Щойно ви закриєте його, ваш кеш ефективно очищається від даних, які вас цікавлять . Хитра частина полягає в тому, щоб визначити, наскільки великим повинен бути цей файл, який в ці дні міг би бути розміром 3 Гб; в цей момент вам може знадобитися кілька небажаних файлів розміром 1 Гб, щоб він працював.


0

Я думаю, що більшість варіантів буде "ручним матеріалом" У UNIX досить стандартно демонтувати / перезавантажувати пристрій перед кожним запуском еталону, часто за допомогою хороших міркувань. Я не знаю, чи можна використовувати інструменти командного рядка під Windows для демонтажу / монтажу пристроїв, але якщо автоматизація - ваша мета, то варто було б шукати такі утиліти.


1
У Linux, якщо unmount / remuont з певних причин не є варіантом, ви також можете це зробити sync; echo 3 > /proc/sys/vm/drop_caches- хоча це впливає на всі кеші / буфери, а не лише на ті, що відносяться до певного обсягу. Раніше я шукав подібний трюк для Windows, але не знайшов його.
Девід Спіллетт

0

Подивіться на цю відповідь, яку я щойно опублікував на власне запитання на StackOverflow.

В основному: Якщо ви намагаєтеся CreateFileобробити без доступу для спільного запису, то він змине і потім визнає недійсним кеш, навіть якщо він поверне помилку.

Сподіваюся, це допомагає!

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