page cache deaktivieren

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Klausi
Beiträge: 17
Registriert: 14.01.2004 11:33:21

page cache deaktivieren

Beitrag von Klausi » 02.07.2008 16:41:55

Hallo,

gibt es bei Debian eine Möglichkeit den page cache beim Lesen und Schreiben zu umgehen oder individuell zu konfigurieren?

Besten Dank!

Benutzeravatar
Six
Beiträge: 8071
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: page cache deaktivieren

Beitrag von Six » 03.07.2008 08:27:42

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.
Be seeing you!

Klausi
Beiträge: 17
Registriert: 14.01.2004 11:33:21

Re: page cache deaktivieren

Beitrag von Klausi » 03.07.2008 10:24:47

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!

Benutzeravatar
Six
Beiträge: 8071
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: page cache deaktivieren

Beitrag von Six » 03.07.2008 12:05:44

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

Code: Alles auswählen

swapoff
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 ;)
Be seeing you!

Klausi
Beiträge: 17
Registriert: 14.01.2004 11:33:21

Re: page cache deaktivieren

Beitrag von Klausi » 03.07.2008 14:42:31

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

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: page cache deaktivieren

Beitrag von gms » 03.07.2008 15:45:20

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.
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.
edit: Blödsinn, war natürlich die Block Size statt der Page Size gemeint.
Ansonsten bleibt mir wohl nichts anderes übrig, als Dateien zu schreiben, die größer als der Arbeitsspeicher sind?
das hilft dir nicht viel, für das Lesen und Schreiben wird natürlich auch hier der Cache benutzt

Gruß
gms

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: page cache deaktivieren

Beitrag von Spasswolf » 03.07.2008 16:05:41

Klausi hat geschrieben: [...]
Natürlich wäre es auch sinnvoll, einmal zu wissen wie die anderen Caches alle zu umgehen sind:
[...]
CPU-Cache (???)
[...]
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).

[1] http://www.intel.com/products/processor ... /index.htm

Edit:
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 ;)
In der mapage von raw steht auch das man statdessen open mit der O_DIRECT flag benutzen kann:
man 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)
Trotzdem soll man auch das nicht benutzen: http://kerneltrap.org/node/7563

Antworten