OpenVZ gestisce la memoria in modo leggermente diverso rispetto ad un sistema operativo standard. Invece di avere una quantità dedicata di memoria RAM per ciascun contenitore, OpenVZ ha un pool condiviso di memoria che può essere utilizzato da tutti i contenitori.
In una normale configurazione di OpenVZ, il comando “free” o “vmstat” mostra solo la quantità di memoria fisica totale e la memoria attualmente in uso. Non mostra la quantità di memoria allocata per ogni contenitore OpenVZ. Quindi, anche se vedi che la quantità di memoria libera è bassa, potrebbe non esserci realmente un problema.
Il motivo per cui la memoria può sembrare sempre esaurita è che OpenVZ utilizza una tecnica chiamata “overcommitment” della memoria. L’overcommitment significa che OpenVZ promette più memoria ai contenitori di quanta ne sia effettivamente disponibile. Questo è possibile perché non tutti i contenitori utilizzeranno tutta la loro memoria tutto il tempo.
L’overcommitment può portare a problemi se i contenitori iniziano a utilizzare più memoria di quanto ne sia effettivamente disponibile. In questo caso, il kernel OpenVZ inizierà a uccidere i processi nei contenitori per liberare memoria.
Se stai riscontrando problemi con la memoria che si esaurisce regolarmente, potrebbe essere necessario aggiungere più memoria fisica al tuo server o limitare l’overcommitment della memoria.