Come cancellare la cache di lettura del disco di Windows?


13

Per i test delle prestazioni ho bisogno di cancellare la cache di lettura del disco di Windows. Ho provato a cercare su Google, ma non sono riuscito a trovare altro che il riavvio o altre cose manuali. Prima di cedere e farlo, vorrei sapere se qualcuno conosce un modo per cancellare la cache di lettura del disco di Windows. Sto testando su Windows 7, ma sono anche interessato alle soluzioni di Windows XP.

Risposte:


3

In alternativa, riempi la cache con i dati che sai che non verranno utilizzati nel test, quindi esegui il test.


1
In alternativa, puoi prendere tutta la RAM disponibile. Windows rilascerà la cache dei file per utilizzare quella RAM. Per i dettagli, consultare la risposta fornita da Stephen Denne.
Ultralisk,

Speravo in qualcosa di meno "aggirante", ma penso che il tuo suggerimento sia più semplice da implementare in uno script di test automatico nella mia situazione. Grazie per il suggerimento
Sebastiaan M


3

Per una visione molto migliore della cache del filesystem di Windows XP - prova ATM di Tim Murgent - ti consente di vedere sia la dimensione del set di lavoro della cache del filesystem sia la dimensione dell'elenco di standby in una vista più dettagliata e accurata. Per Windows XP: è necessaria la vecchia versione 1 di ATM, disponibile per il download qui poiché V2 e V3 richiedono Server 2003, Vista o versione successiva.

Noterai che sebbene Cacheset ridurrà la "Cache WS Min" - i dati attuali continuano a esistere sotto forma di elenchi di standby da dove possono essere utilizzati fino a quando non sono stati sostituiti con qualcos'altro. Per sostituirlo con qualcos'altro, utilizzare uno strumento come MemAlloc, flushmem di Chad Austin o Consume.exe dagli strumenti del Resource Kit di Windows Server 2003.


3

Ho usato RAMMap . Ha la possibilità di liberare memoria da alcuni tipi di allocazioni.

Il contenuto della cache dei file può essere osservato nella scheda "Riepilogo file" e selezionando "Svuota elenco standby" dal menu "Vuoto" si dovrebbe cancellare questa cache.


Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
slm,

1

Riavvia la macchina.


Questa è la soluzione "il grande martello". Vedi la risposta fornita da Stephen Denne.
Ultralisk,

1

La migliore pratica è assicurarsi che tutti i file di test con cui si esegue il benchmarking siano 2x più grandi della cache del controller dell'array (o della memoria del sistema operativo Windows se si esegue il benchmarking in un guest VM), con un file di test minimo di 1 GB. Ciò garantisce che qualsiasi memorizzazione nella cache verrà annullata. Usiamo SQLIO per il benchmarking del disco; ci sono molte informazioni nella documentazione di accompagnamento.


Una delle cose che sto cercando di fare è confrontare la velocità con cui il nostro progetto si basa su diverse configurazioni. Non riesco davvero ad aumentare la dimensione di quei file che penso. :)
Sebastiaan M

1

Facendo eco a Greg, il modo per aggirare questo problema è assicurarsi che il set di dati con cui si sta lavorando superi notevolmente la quantità di RAM disponibile. Se stai eseguendo dei test su una piattaforma hardware che include anche una quantità significativa di cache basate su controller e su disco, ti consigliamo di assicurarti di superare anche questi importi. Ciò garantirà che le prestazioni visualizzate siano più legate alle prestazioni hardware reali rispetto alle ottimizzazioni software introdotte da tutti quei livelli di cache.

Detto questo, se stai davvero cercando di eliminare la cache di lettura dei dati utili prima di eseguire i tuoi benchmark che VOGLIONO usare la cache di lettura, il modo per farlo è leggere in un singolo file dimensionato appena sotto la memoria della cache di lettura e fare alcune operazioni sui file. Ciò eliminerà la cache e la riempirà con questo singolo file di grandi dimensioni. Una volta chiuso, la cache viene effettivamente svuotata dei dati a cui tieni . La parte difficile è capire quanto deve essere grande quel file, che in questi giorni potrebbe benissimo essere dell'ordine di 3 GB di dimensioni; a quel punto potresti aver bisogno di più file spazzatura da 1 GB per farlo funzionare.


0

Penso che quasi ogni opzione sarà "roba manuale". Sotto UNIX, è abbastanza standard smontare / rimontare un dispositivo prima di eseguire ogni benchmark, spesso con un "newfs" inserito per una buona misura. Non so se è possibile utilizzare gli strumenti da riga di comando in Windows per smontare / montare i dispositivi, ma se l'automazione è il tuo obiettivo, varrebbe la pena cercare tali utilità.


1
In Linux, se smonta / rimuovi non è un'opzione per qualche motivo, puoi farlo anche sync; echo 3 > /proc/sys/vm/drop_cachesse ciò influisce su tutti i cache / buffer, non solo quelli relativi a un determinato volume. In precedenza ho cercato un trucco simile per Windows ma non ne ho trovato uno.
David Spillett,

0

Dai un'occhiata a questa risposta che ho appena pubblicato sulla mia domanda su StackOverflow.

Fondamentalmente: se si tenta di CreateFilegestire un accesso senza accesso alla condivisione in scrittura, verrà svuotato e quindi invalidato la cache, anche se restituisce un errore.

Spero che sia di aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.