Hallo,
gibt es bei Debian eine Möglichkeit den page cache beim Lesen und Schreiben zu umgehen oder individuell zu konfigurieren?
Besten Dank!
page cache deaktivieren
- Six
- Beiträge: 8071
- Registriert: 21.12.2001 13:39:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Siegburg
Re: page cache deaktivieren
Ich vermute, du meinst mit Page Cache den Zwischenspeicher für alte Daten im System, nicht den internen Cache von Festplatten und CPUs. Du kannst den Swapspace ausschalten und die Buffer (disk cache im RAM) teilweise einschränken, aber eine Methode, individuelle Zugriffe zu verhindern, z. B. cache niemals diese Datei X, ist mir nicht bekannt.
Da ich nicht weiß, welches Ziel du zu erreichen versuchst, kann ich dir leider keine Alternative vorschlagen.
Da ich nicht weiß, welches Ziel du zu erreichen versuchst, kann ich dir leider keine Alternative vorschlagen.
Be seeing you!
Re: page cache deaktivieren
Hallo Six,
Danke für Deine Antwort.
Du vermutest richtig. Nach dem ich im Internet gesucht habe, dachte ich "page cache" wäre neben "buffer cache" der "offizielle" Ausdruck für den Teil des Arbeitsspeichers (RAM) der zum Zwischenspeichern von Schreib- und Lesedaten genutzt wird. Den würde ich gerne auf 0 setzen oder deaktivieren.
Natürlich wäre es auch sinnvoll, einmal zu wissen wie die anderen Caches alle zu umgehen sind:
Plattencache (möglicherweise hdparm -W0 /dev/<Platte>)
RAID-Controller-Cache (??? - möglicherweise herstellerspezifisch?)
CPU-Cache (???)
swapspace/Auslagerungsdatei (???)
Was mir hingegen neu ist ist der "disk cache im RAM", aber Du meinst wahrscheinlich das gleiche wie ich mit "page cache".
Du schreibst den könnte ich teilweise einschränken. Kannst Du mir bitte sagen wie das geht?
Vielen Dank!
Danke für Deine Antwort.
Du vermutest richtig. Nach dem ich im Internet gesucht habe, dachte ich "page cache" wäre neben "buffer cache" der "offizielle" Ausdruck für den Teil des Arbeitsspeichers (RAM) der zum Zwischenspeichern von Schreib- und Lesedaten genutzt wird. Den würde ich gerne auf 0 setzen oder deaktivieren.
Natürlich wäre es auch sinnvoll, einmal zu wissen wie die anderen Caches alle zu umgehen sind:
Plattencache (möglicherweise hdparm -W0 /dev/<Platte>)
RAID-Controller-Cache (??? - möglicherweise herstellerspezifisch?)
CPU-Cache (???)
swapspace/Auslagerungsdatei (???)
Was mir hingegen neu ist ist der "disk cache im RAM", aber Du meinst wahrscheinlich das gleiche wie ich mit "page cache".
Du schreibst den könnte ich teilweise einschränken. Kannst Du mir bitte sagen wie das geht?
Vielen Dank!
- Six
- Beiträge: 8071
- Registriert: 21.12.2001 13:39:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Siegburg
Re: page cache deaktivieren
Ja, "disk cache im RAM" heißt unter GNU/Linux halt Buffer oder Disk Buffer. Der Begriff Cache wird m. K. n. nur im Zusammenhang mit Hardwarecache der festplatten oder den Level-Caches der CPUs benutzt. Auslagerungsspeciher auf der HD heißt Swap und ist am einfachsten abzuschalten
Die L-Caches können per Setzung in die Model Specific Register (msr) im /proc abgeschaltet werden, aber Linux mag das nicht besonders.
Buffer können, so weit ich weiß, garnicht abgeschaltet werden (warum auch?). Du kannst sie aber umgehen, indem du eine Festplatte als RAW Device mountest und direkt drauf zugreifst. Die Manual-Page von raw gibt mehr Auskunft, u. a. daß man raw nicht mehr benutzen sollte
Code: Alles auswählen
swapoff
Buffer können, so weit ich weiß, garnicht abgeschaltet werden (warum auch?). Du kannst sie aber umgehen, indem du eine Festplatte als RAW Device mountest und direkt drauf zugreifst. Die Manual-Page von raw gibt mehr Auskunft, u. a. daß man raw nicht mehr benutzen sollte
Be seeing you!
Re: page cache deaktivieren
Hallo Six,
vielen Dank für die Infos!
Hintergrund meiner Frage ist, ob es eine Möglichkeit gibt, Daten so langsam zu lesen oder zu schreiben, als ob es keinen Arbeitsspeicher gebe, um damit die reine I/O-Geschwindigkeit eines RAIDs und/oder Dateisystems für Dateien zu ermitteln. Ein anderes Mounten kommt wahrscheinlich nicht in Frage, da ich damit wohl die RAID-Konfiguration zerstöre bzw. kein Dateisystem mehr habe (?). Vielleich kann man allerdings dem Dateisystem (in meinem Fall xfs) sagen, daß es den Arbeitsspeicher nicht nutzen soll?
Ansonsten bleibt mir wohl nichts anderes übrig, als Dateien zu schreiben, die größer als der Arbeitsspeicher sind?
Beste Grüße
vielen Dank für die Infos!
Hintergrund meiner Frage ist, ob es eine Möglichkeit gibt, Daten so langsam zu lesen oder zu schreiben, als ob es keinen Arbeitsspeicher gebe, um damit die reine I/O-Geschwindigkeit eines RAIDs und/oder Dateisystems für Dateien zu ermitteln. Ein anderes Mounten kommt wahrscheinlich nicht in Frage, da ich damit wohl die RAID-Konfiguration zerstöre bzw. kein Dateisystem mehr habe (?). Vielleich kann man allerdings dem Dateisystem (in meinem Fall xfs) sagen, daß es den Arbeitsspeicher nicht nutzen soll?
Ansonsten bleibt mir wohl nichts anderes übrig, als Dateien zu schreiben, die größer als der Arbeitsspeicher sind?
Beste Grüße
Re: page cache deaktivieren
bei einigen Benchmarkprogrammen kann man den "direct io" einschalten, wenn du die Daten selber verwurschteln möchtest, kannst du das O_DIRECT Flag beim open - Call verwendest. Außerdem mußt du noch in Page Size Blöcken lesen bzw. schreiben, bzw ein Vielfaches davon.Klausi hat geschrieben: Hintergrund meiner Frage ist, ob es eine Möglichkeit gibt, Daten so langsam zu lesen oder zu schreiben, als ob es keinen Arbeitsspeicher gebe, um damit die reine I/O-Geschwindigkeit eines RAIDs und/oder Dateisystems für Dateien zu ermitteln.
edit: Blödsinn, war natürlich die Block Size statt der Page Size gemeint.
das hilft dir nicht viel, für das Lesen und Schreiben wird natürlich auch hier der Cache benutztAnsonsten bleibt mir wohl nichts anderes übrig, als Dateien zu schreiben, die größer als der Arbeitsspeicher sind?
Gruß
gms
-
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Re: page cache deaktivieren
Das findest du z.B. im Intel Software Developers Manual 3A (System Programming Guide) [1] in Kapitel 10 (10.5.3 Preventing Caching, Seite 478).Klausi hat geschrieben: [...]
Natürlich wäre es auch sinnvoll, einmal zu wissen wie die anderen Caches alle zu umgehen sind:
[...]
CPU-Cache (???)
[...]
[1] http://www.intel.com/products/processor ... /index.htm
Edit:
In der mapage von raw steht auch das man statdessen open mit der O_DIRECT flag benutzen kann:Six hat geschrieben:Buffer können, so weit ich weiß, garnicht abgeschaltet werden (warum auch?). Du kannst sie aber umgehen, indem du eine Festplatte als RAW Device mountest und direkt drauf zugreifst. Die Manual-Page von raw gibt mehr Auskunft, u. a. daß man raw nicht mehr benutzen sollte
Trotzdem soll man auch das nicht benutzen: http://kerneltrap.org/node/7563man 2 open hat geschrieben:O_DIRECT
Try to minimize cache effects of the I/O to and from this file. In general this will degrade performance, but it is useful in special situations, such as when applications do their own caching. File I/O is done directly to/from user space buffers. The I/O is synchronous, i.e., at the completion of a read(2) or write(2), data is guaranteed to have been transferred. Under Linux 2.4 transfer sizes, and the alignment of user buffer and file offset must all be multiples of the logical block size of the file system. Under Linux 2.6 alignment to 512-byte boundaries suffices.
A semantically similar (but deprecated) interface for block devices is described in raw(8)