I will sometimes run into an error inside an OpenVZ guest where the system complains about running out of memory. This is usually seen as a message containing “Cannot allocate memory”. It may even occur when trying to enter into the container
[root@host ~]# vzctl enter 908 entered into CT 908 -bash: /root/.bash_profile: Cannot allocate memory
This particular error can be difficult to troubleshoot because OpenVZ has so many different limits. The “Cannot allocate Memory” error is a pretty generic error, so Googling it doesn’t necessarily yield any useful results.
I’ve found that the best way to track down the source of the problem is to examine the /proc/user_beancounter statistics on the host server. The far right column is labeled ‘failcnt’ and is a simple counter for the number of times that particular resource has been exhausted. Any non-zero numbers in that column may indicate a problem. In this example, you can see that the dcachesize parameter is too small and should be increased
[root@host ~]# cat /proc/user_beancounters Version: 2.5 uid resource held maxheld barrier limit failcnt 908: kmemsize 5170890 5776435 43118100 44370492 0 lockedpages 0 0 256 256 0 privvmpages 53561 55089 1048576 1048576 0 shmpages 2 2 21504 21504 0 dummy 0 0 0 0 0 numproc 30 38 2000 2000 0 physpages 6136 7392 0 9223372036854775807 0 vmguarpages 0 0 65536 65536 0 oomguarpages 6136 7392 26112 9223372036854775807 0 numtcpsock 8 8 360 360 0 numflock 5 6 380 420 0 numpty 0 1 16 16 0 numsiginfo 0 2 256 256 0 tcpsndbuf 140032 0 10321920 16220160 0 tcprcvbuf 131072 0 1720320 2703360 0 othersockbuf 151320 156864 4504320 16777216 0 dgramrcvbuf 0 8472 262144 262144 0 numothersock 107 109 5000 5000 0 dcachesize 3408570 3413265 3409920 3624960 81 numfile 724 957 18624 18624 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 numiptent 10 10 128 128 0
You can do a little investigation to see what each particular limit does. I will usually not dig too deep, but just double the value and try again. You can set a new value using the vzctl command like this:
[root@host ~] vzctl set 908 --dcachesize=6819840:7249920 --save