Wie speichere ich den Disk Read Cache unter Windows? [Duplikat]

8

Um in der Lage zu sein, einige Benchmarks zu machen, muss ich den Windows-Festplatten-Cache lesen säubern. Wie kann ich das tun?

Tatsächlich möchte ich vergleichen, ob das Laden einer großen Unicode-Datei (UTF-8 oder UTF-16) von der Festplatte schneller ist oder nicht, wenn man bedenkt, dass ich im Speicher UTF-16 halte.

Ich weiß, dass es keinen signifikanten Unterschied geben sollte, aber um es zu benchmarken, muss ich sicher sein, dass diese Datei nicht zwischengespeichert wird - ich muss sehen, ob die Größe auf der Festplatte mehr oder weniger Einfluss hat als die Decodierung der Datei. p>     

sorin 26.08.2010, 10:21
quelle

3 Antworten

2

Die einzige Lösung, die ich bis jetzt gefunden habe, war Ссылка , aber diese braucht zu viel Zeit, damit ich Ich hoffe, wir finden einen besseren.

    
sorin 26.08.2010, 10:48
quelle
3

Jemand von Microsoft hat mir vor ein paar Jahren (damals in den Tagen von Windows XP) geholfen und mir eine Lösung gegeben, die meinen Bedürfnissen damals entsprach. Ich hatte bereits zwei Laufwerke in meiner Maschine, und was ich testen musste, war bereits auf dem Laufwerk D, und zum Glück musste ich keine Dateien auf meinem D-Laufwerk offen halten, wenn ich den Cache leeren wollte. Von der Windows-Datenträgerverwaltungsschnittstelle konnte ich meinen Laufwerksbuchstaben D: in einen anderen Buchstaben und dann wieder zurück ändern, und das Laufwerk D würde so funktionieren, als hätte es im Betriebssystem einen kalten Cache.

    
Jeff Grills 10.02.2012 23:57
quelle
3

AFAIK, es ist leider nicht möglich den read Cache unter Windows zu löschen . Ich habe vor einigen Jahren einige Zeit damit verbracht habe nur herausgefunden, wie man den write -Cache spült

Wie ich es sehe, haben Sie drei Möglichkeiten, es sei denn, jemand anders hat etwas Magie gefunden:

  1. Wenn möglich, lesen Sie die Datei-E / A im ungepufferten Modus.
  2. Jedes Mal, wenn Sie einen Benchmark erstellen möchten, erstellen Sie beim Erstellen der neuen Kopie eine neue Kopie der Testdaten mit Angabe des ungepufferten Modus (diese sollte die Kopie aus dem Lese-Cache behalten, aber nicht getestet haben ).
  3. Ordnen Sie genügend Speicher zu, dass Windows den Plattencache (ugh!) verwerfen muss.

EDIT: es ist tatsächlich möglich, den Lese-Cache zu leeren, zumindest auf Vista und später: Deaktivieren oder leeren Sie den Seitencache unter Windows . Es erfordert jedoch einen Aufruf an die nicht dokumentierte NtSetSystemInformation NT-API. Außerdem kann der Lese-Cache für eine einzelne Datei einfach geleert werden, indem die Datei mit FILE_FLAG_NO_BUFFERING specified geöffnet und der Handle erneut geschlossen wird.

    
snemarch 26.08.2010 10:50
quelle

Tags und Links