Ich möchte die Geschwindigkeit dieser beiden Befehle vergleichen:
grep pattern1 files*
grep pattern2 files*
Leider liest der erste Grep viele Dateien * in Speicherpuffer, so dass der zweite Grep sehr schnell ausgeführt wird, aber aus dem falschen Grund.
Wie sage ich Linux (Fedora 11): "Bitte hören Sie auf, Festplattenlesevorgänge zwischenzuspeichern, weil ich etwas teste."
Antworten:
Ich glaube nicht, dass Sie es leicht sagen können "vorübergehend das Caching beenden". Sie können das System jedoch anweisen, den Cache vor jedem Lauf zu löschen:
Als Wurzel:
(Dies ist in den Kerneldokumenten unter Documentation / sysctl / vm.txt dokumentiert. Dies ist praktisch, wenn Sie sich wie bei einigen von uns nicht immer sofort daran erinnern können, was die Werte 1, 2 oder 3 bewirken.)
Oder alternativ können Sie den Cache vorbereiten und die zwischengespeicherte Leistung vergleichen. (Ich denke, beide sind nützliche Zahlen.)
quelle
echo 1
löscht nur den Seiten-Cache, keine Festplatten-Caches.Wenn ich solche Dinge zeitlich festlege, führe ich sie normalerweise zuerst aus, um den Cache zu füllen. Führen Sie dann den Befehl mit der Zeit aus. Wenn Sie so etwas testen, sollten Sie sich mehr Gedanken über die CPU und die verstrichenen Zeiten machen und weniger über die E / A-Zeit.
In jedem Fall ist es schwierig, genau genaue Zeitangaben zu erhalten. Wenn die Eingabedateien die für Puffer verfügbare Speichergröße überschreiten, werden Sie wahrscheinlich alle Dateien durch den Puffercache durchlaufen. Andernfalls können Sie einfach aus dem Puffercache auf alle Daten zugreifen. Im wirklichen Leben gibt es oft eine Mischung aus gepufferten Daten und von der Festplatte gelesenen Daten.
quelle