Kegagalan alokasi halaman - Apakah saya kehabisan memori?

24

Akhir-akhir ini, saya perhatikan entri seperti ini di kern.logsalah satu server saya:

Feb 16 00:24:05 aramis kernel: swapper: page allocation failure. order:0, mode:0x20

Saya ingin tahu:

  1. Apa sebenarnya arti pesan itu?
  2. Apakah server saya kehabisan memori?

Penggunaan swap cukup rendah (kurang dari 10%), dan sejauh ini saya belum melihat ada proses yang mati karena kurangnya memori.

Informasi tambahan:

  • Server adalah instance Xen (DomU) yang menjalankan Debian 6.0
  • Ini memiliki RAM 512 MB dan partisi swap 512 MB
  • Beban CPU di dalam mesin virtual menunjukkan rata-rata 0,25
mfriedman
sumber

Jawaban:

14

Bug Debian 666021 tampaknya merupakan laporan dari masalah yang sama ini. Saran yang ada adalah:

#change value for this boot
sysctl -w vm.min_free_kbytes=65536

#change value for subsequent boots
echo "vm.min_free_kbytes=65536" >> /etc/sysctl.conf

http://russ.garrett.co.uk/2009/01/01/linux-kernel-tuning/ memiliki beberapa diskusi tentang kapan mengubah pengaturan ini mungkin berguna, direproduksi di sini:

Ini memberitahu kernel untuk mencoba dan menjaga 64MB RAM gratis setiap saat. Ini berguna dalam dua kasus utama:

  • Mesin swap-kurang, di mana Anda tidak ingin lalu lintas jaringan masuk membanjiri kernel dan memaksa OOM sebelum waktu untuk menyiram buffer.

  • mesin x86, untuk alasan yang sama: arsitektur x86 hanya memungkinkan transfer DMA di bawah sekitar 900MB RAM. Jadi Anda bisa berakhir dengan situasi aneh dari kesalahan OOM dengan banyak RAM yang bebas.

Saya menerapkan pengaturan ini pada mesin x86 3.2.12-gentoo saya, tetapi saya masih mendapatkan kesalahan ini.

Matt McHenry
sumber
Hal yang sama ini dapat terjadi pada perangkat tertentu, misalnya dengan pengontrol MPT Fusion SCSI disarankan untuk menjaga vm.min_free_kbytes sekitar 100 megabyte. Atau setidaknya sudah terbiasa, ketika saya terakhir harus menggunakan hal-hal itu dengan distro Linux 32-bit. Segalanya mungkin telah berubah sejak saat itu.
Janne Pikkarainen
PERINGATAN PENTING . echo 104857600 > /proc/sys/vm/min_free_kbytes AKIBAT MY SYSTEM UNTUK KERNEL PANIC, reproducibly . Cukup banyak teks yang membuka layar dalam proses yang saya tidak punya harapan untuk membaca, tetapi pesan terakhir menyangkut dongle Wi-Fi saya, jadi kerusakan ini mungkin khusus untuk sistem saya. Yang sedang berkata, menyodok dengan hati-hati.
i336_
OH, itu dalam kilobyte . Saya tidak dapat mengingat secara konkret jika saya melakukan 104857600 atau 10485760, tetapi jika saya lakukan yang sebelumnya saya mencoba untuk memesan 100GB, yang laptop ini belum diinstal;) Saya akan mencoba mengotak-atik ini di VM kapan-kapan.
i336_
1

Saya baru saja menyelesaikan kesalahan ini pada Lenovo NAS yang menjalankan Debian 5 dan kernel 2.6.39.3 64bit.

Pesan-pesan tersebut informatif meskipun tampak menakutkan, menurut https://www.novell.com/support/kb/doc.php?id=7002803

Namun, mereka mengisi partisi root saya yang sangat terbatas (perangkat ini memiliki partisi root 50 MByte?!)

Perbaikan untuk saya adalah mengatur vm.min_free_kbytesdari 65536bawah ke 16384.

Setelah itu, OS masih memiliki memori bebas 107 MBytes dan buffer 2 GB. Ini tidak masuk akal, tetapi menghentikan semua penebangan.

Criggie
sumber