Zum Testen der Leistung muss der Windows-Lesecache geleert werden. Ich habe versucht zu googeln, aber ich konnte nichts anderes als einen Neustart oder andere manuelle Dinge finden. Bevor ich nachgebe und das tue, würde ich gerne wissen, ob jemand eine Möglichkeit kennt, den Windows-Lesecache zu leeren. Ich teste unter Windows 7, bin aber auch an Windows XP-Lösungen interessiert.
windows-xp
windows-7
Sebastiaan M
quelle
quelle
Dieselbe Frage hatte ich bei Stack Overflow gestellt
/programming/478340/clear-file-cache-to-repeat-performance-testing
Ich habe Win XP verwendet, aber die beste Lösung war:
quelle
Für eine viel bessere Ansicht des Windows XP-Dateisystemcaches - probieren Sie ATM von Tim Murgent - können Sie sowohl die Größe des Arbeitssatzes des Dateisystemcaches als auch die Größe der Standby-Liste in einer detaillierteren und genaueren Ansicht anzeigen. Für Windows XP benötigen Sie die alte Version 1 von ATM, die Sie hier herunterladen können , da für V2 und V3 Server 2003, Vista oder höher erforderlich sind.
Sie werden feststellen, dass Cacheset zwar die "Cache WS Min" reduziert, die tatsächlichen Daten jedoch weiterhin in Form von Standby-Listen vorliegen, von denen aus sie verwendet werden können, bis sie durch etwas anderes ersetzt wurden. Verwenden Sie ein Tool wie MemAlloc, Flushmem von Chad Austin oder Consume.exe aus den Windows Server 2003 Resource Kit Tools, um es dann durch etwas anderes zu ersetzen.
quelle
Ich habe RAMMap verwendet . Es besteht die Möglichkeit, Speicher für einige Arten von Zuordnungen freizugeben.
Der Inhalt des Dateicaches kann auf der Registerkarte "Dateizusammenfassung" beobachtet werden. Wenn Sie im Menü "Leer" die Option "Leere Standby-Liste" auswählen, wird dieser Cache geleert.
quelle
Starten Sie die Maschine neu.
quelle
Am besten stellen Sie sicher, dass alle Testdateien, mit denen Sie ein Benchmarking durchführen, doppelt so groß sind wie der Array-Controller-Cache (oder Windows OS-Speicher, wenn Sie ein Benchmarking auf einem VM-Gast durchführen), und dass mindestens 1 GB Testdatei vorhanden sind. Dies stellt sicher, dass jegliches Caching negiert wird. Wir verwenden SQLIO für das Festplatten-Benchmarking. Die Begleitdokumentation enthält eine Fülle von Informationen.
quelle
Echo Greg, die Möglichkeit, dieses Problem zu umgehen, besteht darin, sicherzustellen, dass der Datensatz, mit dem Sie arbeiten, die Größe des verfügbaren Arbeitsspeichers erheblich überschreitet. Wenn Sie Tests auf einer Hardware-Plattform durchführen, die auch eine erhebliche Anzahl von Controller- und Festplatten-basierten Caches enthält, sollten Sie sicherstellen, dass diese ebenfalls überschritten werden. Dadurch wird sichergestellt, dass die angezeigte Leistung stärker mit der tatsächlichen Hardwareleistung zusammenhängt als die Softwareoptimierungen, die alle diese Cache-Ebenen einführen.
Das heißt, wenn Sie wirklich nur den Lesecache von nützlichen Daten leeren möchten, bevor Sie Ihre Benchmarks ausführen, die den Lesecache verwenden möchten, müssen Sie eine einzelne Datei einlesen, die direkt unter Ihrem Lesecache-Speicher liegt und einige Dateioperationen ausführen. Dadurch wird der Cache geleert und mit dieser einzelnen großen Datei gefüllt. Sobald Sie es schließen, wird Ihr Cache effektiv von den Daten geleert, die Sie interessieren . Der knifflige Teil besteht darin, herauszufinden, wie groß diese Datei sein muss, was heutzutage durchaus in der Größenordnung von 3 GB liegen könnte. Zu diesem Zeitpunkt benötigen Sie möglicherweise mehrere 1-GB-Junk-Dateien, damit dies funktioniert.
quelle
Ich denke, die meisten Optionen werden "manuelle Sachen" sein. Unter UNIX ist es ziemlich üblich, ein Gerät vor jedem Benchmark-Lauf zu deaktivieren / erneut zu aktivieren, häufig mit einem "newfs". Ich weiß nicht, ob Sie Befehlszeilentools unter Windows zum Deaktivieren / Aktivieren von Geräten verwenden können, aber wenn Automatisierung Ihr Ziel ist, lohnt es sich, nach solchen Dienstprogrammen zu suchen.
quelle
sync; echo 3 > /proc/sys/vm/drop_caches
wenn Unmount / Remuont aus irgendeinem Grund nicht möglich ist. Dies betrifft jedoch alle Caches / Puffer, nicht nur die, die sich auf ein bestimmtes Volume beziehen. Ich habe vorher nach einem ähnlichen Trick für Windows gesucht, aber keinen gefunden.Schauen Sie sich diese Antwort an, die ich gerade auf meine Frage zu StackOverflow gepostet habe.
Grundsätzlich gilt: Wenn Sie versuchen,
CreateFile
ein Handle ohne Write-Share-Zugriff zu erstellen, wird der Cache geleert und anschließend ungültig, auch wenn ein Fehler zurückgegeben wird.Hoffe das hilft!
quelle