# buffers / cached begrenzen!?

## peterpeterson

Hallo 

Ich habe mir ein bisschen Speicher gegÃ¶nnt 3GB  :Wink: 

Es ergibt sich nun, dass der Wert "cached" (in top) unsagbare MaÃe annimmt. (z.Z. 2.5 GB)

Wenn ich Linux richtig verstehe beschreibt dieser Wert 

(der automatisch angepasst wird) den das System als Datei-System-Cache verwendet!? 

Kann man denn irgendwo begrenzen?

Lesender Cache wÃ¤re mir egal, aber 

da dort bestimmt auch der schreibende Cache drin ist, 

ist mir ein bisschen mulmig.

Kann man das irgendwo einsehen, was lesend bzw. schreibend ist?

Kann man linux anweisen den Cache

lesend zu leeren und 

schreibend auszufÃ¼hren?

bzw. eigendlich wÃ¤re schreibend schon ausreichend.

Ich hatte zumindest mit der Begrenzung vor diversen Jahren irgendwo mal was gelesen. 

hatte es auch schon versucht zu googlen, 

aber wenn man "cached und buffers" sucht, 

dann sind die ersten 3,4mio Hits: 

dumm-lall-erklÃ¤rungen von top!  :Sad: 

cu Tim

----------

## zworK

Mit

```
echo 3 > /proc/sys/vm/drop_caches
```

kannst du den leeren.

Mit

```
sync
```

wird alles auf die Platte geschrieben was noch im Speicher ist.

Es gibt aber meines Wissens keinen Grund das anzupassen, da der dafür benutzte Speicher nicht verbraucht/reserviert wird.

Werden 2.9GB als Cache verwendet und eine Anwendung möchte sich 1GB reservieren, wird ein Teil des Cache einfach verworfen.

Und da Speicher im Gegensatz zu Festplatten 1000x schneller ist (ganz ganz grob geschätzt/geraten), ist Caching durchaus Sinnvoll  :Wink: .

Meine Empfehlung: Alles so lassen wie es ist.

Edit: bissl Lektüre

Linux Memory Management or 'Why is there no free RAM?'

Und wer es ganz genau wissen will:

"Understanding the Linux Virtual Memory Manager" (8.5MB PDF ~700 Seiten)Last edited by zworK on Mon Apr 23, 2007 4:17 pm; edited 2 times in total

----------

## dakjo

begrenz lieber mal die anzahl deiner kaputten umlaute. Das kann ja keine sau lesen.

----------

## peterpeterson

Yo

Erstmal ein Danke an zworK.

 *Quote:*   

> begrenz lieber mal die anzahl deiner kaputten umlaute. Das kann ja keine sau lesen.

 

ich glaube das Problem ist: Mir ist UTF-8

sorry.

werde mich im naechsten Versuch des Schreibens bemuehen, das geschickt zu umgehen.

cu Tim

----------

## UTgamer

 *zworK wrote:*   

> Mit
> 
> ```
> echo 3 > /proc/sys/vm/drop_caches
> ```
> ...

 

Ui den kannte ich auch noch nicht.  :Smile: 

Ich nutzte bisher immer zum Syncen eine andere Möglichkeit, nämlich die im Kernel unter der Option "Kernel hacking" (< ganz unten im Menü) die Option Magic SysRq key. 

Mit der Tastenkombination "Alt + Druck(S-Abf) + U" wird auch noch bei Systemcraches der Plattenbuffer zurück auf die Platte geschrieben.  :Smile: 

 *zworK wrote:*   

> 
> 
> Es gibt aber meines Wissens keinen Grund das anzupassen, da der dafür benutzte Speicher nicht verbraucht/reserviert wird.
> 
> Werden 2.9GB als Cache verwendet und eine Anwendung möchte sich 1GB reservieren, wird ein Teil des Cache einfach verworfen.
> ...

 

Dem stimme ich auch zu.

Als Tuningtip für den Treadersteller auch noch die Erwähnung der Nutzung vom tmpfs für emerge:

https://forums.gentoo.org/viewtopic-p-4023237.html#4023237

Schönen Gruß

----------

## sschlueter

Ich glaube, der OP hat sich Sorgen wegen der Datensicherheit gemacht, die grundsätzlich ja auch bestehen, wenn Daten aus Sicht der Anwendungen bereits geschrieben worden sind, sich aber tatsächlich noch nicht wirklich auf der Platte befinden, sondern immer noch im RAM.

Aber diese Daten bleiben nicht ewig im RAM. Sie werden auf die Platte geschrieben, sobald sie älter sind als /proc/sys/vm/dirty_expire_centisecs hundertstel Sekunden.

Und die Gesamtmenge der nicht auf die Platte geschriebenen Daten wird durch /proc/sys/vm/dirty_ratio als Prozentsatz des totalen Speichers begrenzt.

Normalerweise muss man an den Defaultwerten nichts ändern.

Anwendungen, die ihre Daten als kritisch ansehen, syncen teilweise ohnehin zu den richtigen Zeitpunkten selbständig - PostgreSQL macht das beispielsweise standardmäßig, MySQL standardmäßig nicht  :Smile: 

----------

## UTgamer

Hallo sschlueter,

du scheint in diesem Thema etwas ausgebildeter zu sein.

Wo liegt nun der Unterschied zwischen dem Befehl sync und dem Magic SysRq key?

Werden unterschiedliche Puffer zurückgeschrieben, ergänzen sie sich zusammen oder ist es noch etwas anderes.

----------

## sschlueter

Wenn in beiden Fällen sync(2) aufgerufen wird, dann ist's dasselbe  :Smile: 

Laut Wikipedia wird ein sync aber durch Alt + SysRq + S ausgelöst.

----------

## Fauli

 *sschlueter wrote:*   

> Laut Wikipedia wird ein sync aber durch Alt + SysRq + S ausgelöst.

 

Das Alt+S-Abf+U von weiter oben schießt etwas über's Ziel hinaus, weil es nach dem Sync die Dateisysteme read-only mountet.

----------

## UTgamer

 *Fauli wrote:*   

>  *sschlueter wrote:*   Laut Wikipedia wird ein sync aber durch Alt + SysRq + S ausgelöst. 
> 
> Das Alt+S-Abf+U von weiter oben schießt etwas über's Ziel hinaus, weil es nach dem Sync die Dateisysteme read-only mountet.

 

Ui, ist mir nie aufgefallen. 

Weil meist nutze ich es sowieso nur wenn der nVidia Binarytreiber über alle Strenge schlägt und mir sämmtliche Grafikausgaben zerschießt, dann kann ich auch keinen Befehl "sync" mehr ausführen.

Muß ich nochmal gegenprobieren, die Unterschiede zwischen U+S wenn mein 64 Bit OpenOffice-emerge durchgelaufen ist, dann melde ich mich wieder.  :Wink: 

----------

## UTgamer

Ich habe es nun ausprobiert.

Alt + Druck + U - mounted die Geräte wirklich readonly

Alt + Druck + S - führt einen normalen sync aus, also bleibt weiterhin "rw".  :Wink: 

Hab ich jetzt auch wieder etwas neues hinzu gelernt.

----------

