LinuxカーネルはインストールされたRAMの何パーセントを使用しますか?

LinuxカーネルはインストールされたRAMの何パーセントを使用しますか?

私はコンピューティングクラスタを開発しており、単一のプロセスに提供できる最大RAM容量を決定したいと思います。 16GB RAMを搭載したシステムでは、メモリ不足キラーを呼び出す前に15680MB(overcommit_memory = 2、overcommit_ratio = 0)を割り当て(およびタッチ)できることが答えです。

一般的なLinuxディストリビューションではこれはある程度妥当に見えますが、私自身の最小カーネル(v 3.16)をコンパイルし、私のテストアプリケーションはsbin / init(メモリに何もないIE)で実行されます。

比較のためにRAMが512MBしかないシステムをシミュレートすると、44MBのオーバーヘッドで468MBを割り当てることができます。これは非常に合理的です。

それでは、16GBシステムにカーネルメモリがたくさんあるのはなぜですか?

カーネル文書を読むと、一定の割合のメモリが「安全性」のためにカーネル用に予約されているようです。これは/proc/sys/vm/で調整できます。しかし、admin_reserve_kbytesとuser_reserve_kbytesを変更しても、OOM Killerが呼び出される時点には何の影響もありません。

インストールされているRAMの量に比例して増加する他のものはありますか?

ベストアンサー1

かなり古い(2006)論文では、いくつかのカーネルオーバーヘッドをメモリサイズの関数として説明しています。http://halobates.de/memorywaste.pdf

から:

ページ構造(ページ割り当て追跡):1.37%
ページテーブル:0.5%

一方、私の16GBテストマシンは合計4.3%のオーバーヘッドを示しました。

したがって、約2%はまだ説明されていません。したがって、質問はまだ完全に答えられておらず、答えは非常に古いカーネルに基づいています。しかし、これがこれまでこの質問に最も近い答えでした。

おすすめ記事