web-dev-qa-db-ja.com

ページ割り当ての失敗-メモリが不足していますか?

最近、サーバーのkern.logに次のようなエントリがあることに気づきました。

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

知りたい:

  1. そのメッセージはどういう意味ですか?
  2. サーバーのメモリが不足していますか?

スワップの使用率は非常に低く(10%未満)、これまでのところ、メモリ不足のためにプロセスが強制終了されていることに気づいていません。

追加情報:

  • サーバーはDebian 6.0を実行するXenインスタンス(DomU)です。
  • 512 MBのRAMと512 MBのスワップパーティション
  • 仮想マシン内のCPU負荷は平均0.25を示します
25
mfriedman

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マシンに適用しましたが、まだこれらのエラーが発生します。

15
Matt McHenry

チェックする価値があるかもしれませんvm.zone_reclaim_mode:参照 http://www.kernel.org/doc/Documentation/sysctl/vm.txt

1
mblakele

私はLenovo NAS Debian 5およびカーネル2.6.39.3 64ビットを実行しています。

https://www.novell.com/support/kb/doc.php?id=70028 によると、メッセージは怖そうに見えても情報提供です。

しかし、彼らは私の非常に限られたルートパーティションを満たしていました(このデバイスには50 MByteのルートパーティションがあります!)。

私にとっての修正は、vm.min_free_kbytes65536から16384に設定することでした。

その後、OSにはまだ107 MBytesの空きメモリと2 GBのバッファがあります。これは意味がありませんが、すべてのロギングを停止しました。

1
Criggie