Wenn ich cat /dev/null zweimal hintereinander für eine Datei aufrufe, ist der zweite Aufruf dann ein No-Op?

StackOverflow https://stackoverflow.com/questions/6088169

  •  09-09-2020
  •  | 
  •  

Frage

Ich möchte benutzen cat filepath > /dev/null als kostengünstiger Speicher-Caching-Mechanismus.Worüber ich mich frage ist:Wenn ich es ein zweites Mal nenne und die Datei bereits im Festplattencache ist, ist das Betriebssystem intelligent genug, um nichts zu tun?

Aktualisieren:Ich habe dies auf einem CIFS-Volumen getestet, indem ich FADVISE POSIX_FADV_WILLNEED verwendete, um die Datei lokal zu richten (mit Linux-Fftools in Befehlszeile).Es stellt sich heraus, dass die Lautstärke im Read-Write-Modus montiert werden muss, damit dies funktioniert.Im Lesy -Modus scheint die Ausfälle ignoriert zu werden.Dies muss etwas mit dem Samba Oplockismus zu tun haben.

War es hilfreich?

Lösung

Es ist besser, posix_fadvise(...,POSIX_FADV_WILLNEED) zu verwenden, als die Datei nach /dev/null zu kategorisieren – es erfordert weniger tatsächliche E/A und erfordert nicht, dass der Dateiinhalt in den Userspace-RAM eingelesen wird, wodurch CPU-Caches zerstört werden.

Wenn sich der relevante Teil der Datei außerdem bereits im Cache befindet, wird posix_fadvise wahrscheinlich viel weniger Arbeit leisten als cat file > /dev/null

Wenn Sie das Gefühl haben, dass Sie die Seiten wirklich brauchen im Kern gerade jetzt, dann mmap den relevanten Abschnitt der Datei und msperren Sie ihn (entsperren Sie ihn anschließend;es könnte sofort verworfen werden, wenn der Speicherdruck knapp ist).Dafür sind Root-Rechte erforderlich.

Im Allgemeinen ist so etwas eine Pessimisierung und sollte jedoch vermieden werden.Wenn Sie den Kernel dazu zwingen, sich so zu verhalten, wie Sie es möchten, kann dies seine Fähigkeit, die aktuelle Arbeitslast zu optimieren, beeinträchtigen.

Andere Tipps

Nein, und das kann es auch nicht.

Die Feststellung, ob ein Programm nichts bewirkt, ist in der Regel komplexer, als es einfach auszuführen.

Warum müssen Sie das Speicher-Caching überhaupt kontrollieren?Erwägen Sie bei unbedingter Notwendigkeit die Verwendung eines tmpfs-Dateisystems oder der Verwendung von Compcache (einem komprimierten RAM-Blockgerät).

Das geht nicht Nichts, wie die anderen Antworten gesagt haben.Aber wenn was du Wirklich Gemeint war:

Wenn ich es ein zweites Mal nenne und die Datei bereits im Festplatten -Cache ist, ist das Betriebssystem intelligent genug für Nicht ein zweites Mal von der Festplatte von der Festplatte lesen?

...dann lautet die Antwort ja1.So funktioniert schließlich der Festplatten-Cache.


1.Jedenfalls solange das betreffende Dateisystem den Seitencache nutzt.

Es wird höllisch schnell sein, aber es wird kein No-Op sein (wenn es so wäre, gäbe es legitime Gründe dafür, dass Systemaufrufe unerwartete Dinge anstelle ihrer versprochenen Funktionen tun ...).Abhängig vom verwendeten Dateisystemtreiber und den Kernel-Optionen kann es jedoch sein, dass Sie knapp an der Speicherbandbreite arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top