Linux: la memoria è libera ma viene utilizzato lo swap. Perché?


11

Ecco i diagrammi di Munin.

Utilizzo della memoria: http://koryagin.com/w/q/memory-day.png

Scambia dentro / fuori: http://koryagin.com/w/q/swap-day.png

Perché Linux decide di aumentare la cache e utilizzare lo scambio quando la dimensione della RAM è molto più grande della memoria utilizzata dai programmi?


2
Il sottosistema VM Linux negli ultimi anni è stato ottimizzato per favorire lo spazio buffer e lo spazio cache; le applicazioni che occupano memoria ma non fanno nulla verranno rimescolate sul disco. Ciò aumenta la reattività e le prestazioni. A meno che tu non stia riscontrando problemi di prestazioni, non dovresti davvero preoccupartene.
Bart Silverstrim,

Risposte:


17

Il tuo server probabilmente ha alcuni processi che consumano memoria e / o inattivi con molte pagine inattive. Il kernel Linux preferisce scambiare porzioni di programmi inattive da scambiare poiché molto probabilmente la memoria viene utilizzata meglio come cache.

Se desideri cambiare questo comportamento, gioca con vm.swappinesssintonizzabile su sysctl ma fai attenzione, superare in astuzia gli sviluppatori del kernel / manutentori della distro non è così facile. :-)

Stai riscontrando problemi di prestazioni sul tuo server durante quel picco di scambio o hai chiesto per curiosità?


Non ho problemi di prestazioni su questo particolare server. Ma in un altro, dove la situazione non è così chiara, sto pensando a cosa fare. Una logica di gestione della memoria Linux non può essere la ragione dei segfault di PHP-FPM, se non corrispondono a nessuno dei problemi noti di PHP? Quindi, generalmente a favore della curiosità.
Pavel Koryagin,

A proposito, questo server gestisce intensamente pochissime quantità di dati con un set fisso di script, quindi non dovrebbe avere I / O intensivo. Allora perché Linux vuole avere una cache così grande?
Pavel Koryagin,

Linux memorizza nella cache pesantemente file, metadati di file, voci di directory e così via. Prova il comando slabtop.
Janne Pikkarainen,

Molte grazie. Ci vorrà del tempo per capire cosa fare delle slabtopinformazioni.
Pavel Koryagin,

Lascia che corra a schermo intero quando il tuo capo passa davanti al tuo cubicolo e renditi un guru ai suoi occhi. :-) Un altro bel comando "ooh, che sembra difficile da capire" è systat -vmstatin FreeBSD (probabilmente anche altri BSD).
Janne Pikkarainen,

1

Dovresti provare a giocare con il parametro swappiness . Come puoi vedere il tuo sistema ha iniziato a scambiare quando ha provato ad aumentare la dimensione della cache dei file, questo è normale se swappines non è 0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.