最近、サーバーのkern.log
に次のようなエントリがあることに気づきました。
Feb 16 00:24:05 aramis kernel: swapper: page allocation failure. order:0, mode:0x20
知りたい:
スワップの使用率は非常に低く(10%未満)、これまでのところ、メモリ不足のためにプロセスが強制終了されていることに気づいていません。
追加情報:
Debianバグ666021 は、同じ問題の報告のようです。提案があります:
#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/ この設定を変更すると便利な場合があるという議論があり、ここに再現します:
これにより、カーネルは64MBのRAM=を常に空けておくように試みます。これは、主に次の2つの場合に役立ちます。
スワップレスマシン。バッファーをフラッシュする時間がなくなる前に、着信ネットワークトラフィックでカーネルを圧倒し、OOMを強制したくない場合。
x86マシン、同じ理由:x86アーキテクチャはDMA約900MB未満のRAMの転送のみを許可します。そのため、RAM無料。
この設定を3.2.12-gentoo x86マシンに適用しましたが、まだこれらのエラーが発生します。
チェックする価値があるかもしれませんvm.zone_reclaim_mode
:参照 http://www.kernel.org/doc/Documentation/sysctl/vm.txt
私はLenovo NAS Debian 5およびカーネル2.6.39.3 64ビットを実行しています。
https://www.novell.com/support/kb/doc.php?id=70028 によると、メッセージは怖そうに見えても情報提供です。
しかし、彼らは私の非常に限られたルートパーティションを満たしていました(このデバイスには50 MByteのルートパーティションがあります!)。
私にとっての修正は、vm.min_free_kbytes
を65536
から16384
に設定することでした。
その後、OSにはまだ107 MBytesの空きメモリと2 GBのバッファがあります。これは意味がありませんが、すべてのロギングを停止しました。