Jak wyczyścić pamięć podręczną odczytu dysku systemu Windows?


13

Do testowania wydajności muszę wyczyścić pamięć podręczną odczytu dysku systemu Windows. Próbowałem googlować, ale nie mogłem znaleźć nic innego niż ponowne uruchomienie lub inne ręczne czynności. Zanim się poddam i zrobię to, chciałbym się dowiedzieć, czy ktoś zna sposób na wyczyszczenie pamięci podręcznej odczytu dysku systemu Windows. Testuję na Windows 7, ale interesują mnie również rozwiązania Windows XP.

Odpowiedzi:


3

Możesz też wypełnić pamięć podręczną danymi, o których wiesz, że nie zostaną użyte w teście, a następnie uruchom test.


1
Alternatywnie możesz wziąć całą dostępną pamięć RAM. System Windows zwolni pamięć podręczną plików, aby użyć tej pamięci RAM. Szczegółowe informacje można znaleźć w odpowiedzi udzielonej przez Stephena Denne'a.
Ultralisk

Miałem nadzieję na coś mniej „omijającego”, ale myślę, że twoja sugestia jest najłatwiejsza do wdrożenia w skrypcie automatycznego testu w mojej sytuacji. Dzieki za sugestie.
Sebastiaan M


3

Aby uzyskać znacznie lepszy widok pamięci podręcznej systemu plików Windows XP - wypróbuj ATM firmy Tim Murgent - pozwala zobaczyć zarówno rozmiar zestawu roboczego bufora systemu operacyjnego, jak i rozmiar listy rezerwowej w bardziej szczegółowym i dokładnym widoku. W przypadku systemu Windows XP - potrzebujesz starej wersji 1 bankomatu, którą można pobrać tutaj, ponieważ wersje V2 i V3 wymagają serwera 2003, Vista lub nowszego.

Zauważysz, że chociaż Cacheset zmniejszy „Cache WS Min” - rzeczywiste dane nadal istnieją w postaci list Standby, z których można ich używać, dopóki nie zostaną zastąpione czymś innym. Aby następnie zastąpić go innym narzędziem, użyj narzędzia takiego jak MemAlloc, flushmem autorstwa Chada Austina lub Consume.exe z narzędzi systemu Windows Server 2003 Resource Kit.


3

Użyłem RAMMap . Ma możliwość zwolnienia pamięci kilku rodzajów alokacji.

Zawartość pamięci podręcznej plików można obserwować na karcie „Podsumowanie plików”, a wybranie „Opróżnij listę rezerwową” z menu „Puste” powinno wyczyścić pamięć podręczną.


Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
slm

1

Uruchom ponownie maszynę.


To jest rozwiązanie „wielkiego młota”. Zobacz odpowiedź udzielona przez Stephena Denne.
Ultralisk

1

Najlepszą praktyką jest upewnienie się, że wszystkie pliki testowe, z którymi przeprowadzany jest test porównawczy, są 2x większe niż pamięć podręczna kontrolera macierzy (lub pamięć systemu Windows, jeśli testowanie porównawcze u gościa vm), z co najmniej 1 GB pliku testowego. To gwarantuje, że wszelkie buforowanie zostanie zanegowane. Używamy SQLIO do testowania dysku; w dołączonej dokumentacji znajduje się wiele informacji.


Jedną z rzeczy, które próbuję zrobić, jest sprawdzenie, jak szybko nasz projekt opiera się na kilku konfiguracjach. Myślę, że naprawdę nie mogę zwiększyć rozmiaru tych plików. :)
Sebastiaan M

1

Nawiązując do Grega, sposobem obejścia tego problemu jest upewnienie się, że zestaw danych, z którym pracujesz, znacznie przekracza ilość dostępnej pamięci RAM. Jeśli wykonujesz testy na platformie sprzętowej, która zawiera również znaczną ilość pamięci podręcznych kontrolerów i dysków, będziesz chciał upewnić się, że przekraczasz te kwoty. Zapewni to, że wydajność, którą widzisz, jest bardziej związana z prawdziwą wydajnością sprzętową niż optymalizacje oprogramowania wprowadzone przez wszystkie te warstwy pamięci podręcznej.

To powiedziawszy, jeśli naprawdę chcesz po prostu wyczyścić pamięć podręczną odczytu przydatnych danych przed uruchomieniem testów porównawczych, które CHCESZ użyć pamięci podręcznej odczytu, sposobem na to jest odczyt w jednym pliku o wielkości tuż pod pamięcią pamięci podręcznej odczytu i wykonaj kilka operacji na plikach. Spowoduje to wyczyszczenie pamięci podręcznej i wypełnienie go jednym dużym plikiem. Po zamknięciu pamięć podręczna jest skutecznie usuwana z danych, na których Ci zależy . Trudną częścią jest ustalenie, jak duży musi być ten plik, który w dzisiejszych czasach może być wielkości 3 GB; w tym momencie możesz potrzebować kilku niepotrzebnych plików 1 GB, aby działało.


0

Myślę, że większość opcji to „rzeczy ręczne”. W systemie UNIX dość normalnym jest odmontowywanie / ponowne podłączanie urządzenia przed każdym uruchomieniem testu porównawczego, często z dodaniem „newfs”. Nie wiem, czy możesz użyć narzędzi wiersza polecenia w systemie Windows do odmontowania / zamontowania urządzeń, ale jeśli Twoim celem jest automatyzacja, warto poszukać takich narzędzi.


1
Pod Linuksem, jeśli odmontowanie / remuont nie jest z jakiegoś powodu opcją, możesz to zrobić sync; echo 3 > /proc/sys/vm/drop_caches- chociaż wpływa to na wszystkie pamięci podręczne / bufory, nie tylko te odnoszące się do określonego woluminu. Wcześniej szukałem podobnej sztuczki dla systemu Windows, ale jej nie znalazłem.
David Spillett,

0

Spójrz na tę odpowiedź, którą właśnie zamieściłem na własne pytanie na StackOverflow.

Zasadniczo: jeśli spróbujesz CreateFileobsłużyć bez dostępu do udziału w zapisie, opróżni to, a następnie unieważni pamięć podręczną, nawet jeśli zwróci błąd.

Mam nadzieję że to pomoże!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.