Ne olarak /proc/sys/vm/overcommit_memory
ayarladınız? Çekirdek belgelerinden:
0 - Heuristic overcommit handling. Obvious overcommits of
address space are refused. Used for a typical system. It
ensures a seriously wild allocation fails while allowing
overcommit to reduce swap usage. root is allowed to
allocate slightly more memory in this mode. This is the
default.
1 - Always overcommit. Appropriate for some scientific
applications.
2 - Don't overcommit. The total address space commit
for the system is not permitted to exceed swap + a
configurable percentage (default is 50) of physical RAM.
Depending on the percentage you use, in most situations
this means a process will not be killed while accessing
pages but will receive errors on memory allocation as
appropriate.
Yani 1 kullanıyorsanız fark yoktur. 2 kullanıyorsanız ve linux takas dosyası kullanmıyorsanız, hiçbir işlem 512M (sanal) bellek ayıramaz. Sonuç 0 için net değil.
Düzenleme: http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit Gönderen 0 şu şekilde çalışır:
Sezgisel aşırı taahhüt, sistemin alabileceği tüm belleği geri kazandığında ne kadar bellek verebileceğini bulmaya çalışır ve başka hiçbir işlem şu anda olduğundan daha fazla RAM kullanmaz; bundan daha fazlasını istiyorsanız, tahsisiniz reddedilir. Spesifik olarak, teorik 'boş bellek' numarası, boş takas alanı, boş RAM (eğer kök değilseniz 1 / 32'den az) ve birleştirilmiş arabellek önbelleği ve geri kazanılabilir olarak etiketlenmiş çekirdek verileri tarafından kullanılan tüm alan eklenerek hesaplanır. (bazı ayrılmış sayfalardan daha az).
Bu yüzden hesaplamada takas kullanır. Genel olarak RHEL tavsiyesine uyuyorum:
M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
S = M *2
Else
S = M + 2