C'è molta memoria libera, ma queste zone sono totalmente frammentate:
Node 0 Normal: 1648026*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 6592104kB
Node 1 Normal: 8390977*4kB 1181188*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB
Sono rimaste pochissime pagine con ordine diverso da zero, nessuna in una zona.
Non posso garantire nulla, ma potresti provare a disattivare ksmd e ricompattare la memoria. La compattazione viene chiamata automaticamente solo su allocazioni di pagine di ordine superiore e non chiama mai oom-killer, quindi presumo che il sistema abbia provato ad allocare memoria dagli ordini 2 o 3 e si sia bloccato.
Per compattare la memoria eseguire echo 1 >/proc/sys/vm/compact_memory
C'è solo così tanto da dire in questa domanda, ma sospetto ksmd
sta causando la frammentazione cercando le pagine duplicate in entrambe le VM e scambiandole ovunque.
La risposta di @Matthew dovrebbe essere contrassegnata come soluzione per questo problema. Il /proc/buddyinfo
mostra chiaramente la frammentazione (dovuta a ksmd o altro comportamento). La compattazione della memoria è una valida soluzione.
Abbiamo appena riscontrato lo stesso problema sul nostro server :
# cat /proc/buddyinfo
Node 0, zone DMA 1 0 1 0 0 1 0 0 0 1 3
Node 0, zone DMA32 4941 14025 10661 1462 1715 154 1 0 0 0 0
Node 0, zone Normal 420283 217678 3852 3 1 0 1 1 1 0 0
Node 1, zone Normal 1178429 294431 21420 340 7 2 1 2 0 0 0
Ciò mostra chiaramente la frammentazione, poiché la maggior parte della memoria è frammentata in tanti piccoli blocchi di memoria (numero grande a sinistra, zero a destra).
Ora la compattazione risolve questo :
# echo 1 >/proc/sys/vm/compact_memory
# cat /proc/buddyinfo
Node 0, zone DMA 1 0 1 0 0 1 0 0 0 1 3
Node 0, zone DMA32 485 1746 8588 3311 2076 505 98 19 3 0 0
Node 0, zone Normal 83764 22474 8597 3130 1971 1421 1090 808 556 358 95
Node 1, zone Normal 51928 36053 36093 29024 21498 13148 5719 1405 151 8 0