Ada banyak memori kosong, tetapi zona ini benar-benar terfragmentasi:
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
Ada sangat sedikit halaman pesanan bukan nol yang tersisa, tidak ada yang tersisa di satu zona sama sekali.
Saya tidak dapat menjamin apa pun tetapi Anda mungkin ingin mencoba mematikan ksmd dan memadatkan ulang memori. Pemadatan hanya dipanggil secara otomatis pada alokasi halaman pesanan yang lebih tinggi dan tidak pernah memanggil oom-killer, jadi saya berasumsi bahwa sistem telah mencoba mengalokasikan memori dari pesanan 2 atau 3 dan macet.
Untuk memadatkan memori, jalankan echo 1 >/proc/sys/vm/compact_memory
Hanya ada begitu banyak pertanyaan dalam pertanyaan ini, tapi saya menduga ksmd
menyebabkan fragmentasi dengan memindai halaman yang digandakan di kedua VM dan menukar semuanya.
Jawaban @Matthew harus ditandai sebagai solusi untuk masalah ini. /proc/buddyinfo
jelas menunjukkan fragmentasi (karena ksmd atau perilaku lainnya). Pemadatan memori adalah solusi yang valid.
Kami baru saja mengalami masalah yang sama di server kami :
# 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
Ini jelas menunjukkan fragmentasi, karena sebagian besar memori terfragmentasi dalam banyak blok kecil memori (angka besar di sebelah kiri, nol di sebelah kanan).
Sekarang pemadatan memecahkan ini :
# 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