2017-08-21 3 views
0

Ich habe 16G RAM in meinem Server. Ich habe die nächsten Speicherparameter zugewiesen:postgresql 9.6 mit allen meinen RAM

effective_cache_size = 10GB 
work_mem = 128MB 
maintenance_work_mem = 4GB 
shared_buffers = 4000MB 

Mein Server ist nur für postgresql gewidmet. Wenn ich eine Prozedur ausführen, die eine große Auswahl Preforms sehe ich die postgresql die Speicher alle auf dem Server verwendet, und das ist mein Status:

[/PostgreSQL/] : free -m 
         total  used  free  shared buff/cache available 
      Mem:   15883   291   158  4109  15433  11112 
      Swap:   3815   106  3709 

Ist es normal? Dies kann sich auf komplizierte Selects auswirken, die ich mit Joins ausführe?

+0

Ich denke, es ist so viele Daten wie möglich im RAM für das Caching zu halten. –

+1

Wo wird "all" Speicher verwendet? 'available = 11112' bedeutet, dass noch 11GB von 16GB verfügbar sind. –

+2

Sie verwechseln Kernel fs Cache-Nutzung mit "Verwendung". Der Kernel schnappt sich den gesamten freien Speicher und speichert alles, was er kann, aus dem Dateisystem, aber in der Sekunde, wo etwas mehr Speicher benötigt, wirft der Kernel einen Teil des Cache ab und übergibt diesen Speicher dem anfordernden Prozess. Das ist völlig normal. –

Antwort

2

Sie lesen es falsch.

Der Wert für Buff/Cache gibt an, dass RAM zum Zwischenspeichern verwendet wird, ist jedoch für Anwendungen bei Bedarf kostenlos.

Werfen Sie einen Blick hier für eine detaillierte Erklärung: http://www.linuxatemyram.com/

+0

Rechts. Ein freier RAM ist verschwendeter RAM. Sie möchten, dass das System zu jeder Zeit so viel RAM wie möglich verwendet. –

Verwandte Themen