私はLinuxでを使用してメモリのオーバーコミットを検討してきましたが/proc/sys/vm/overcommit_memory
、同じことを言っていない記事をいくつか読みました。
このドキュメントは、「間違った方向に進む」という見出しの下で、「値1:オーバーコミットを行い、0(デフォルト):しない」と言い続けていますが、次の数行では、これは実際には真実ではなく、0は「どれだけのオーバーコミットメントが合理的であるかを推測する」という意味です。つまり、値0を使用してもメモリのオーバーコミットは無効になりませんか?
また、1は「malloc()を拒否しない」ことを示し、2は「オーバーコミットについて正確であること-物理メモリのオーバーコミット率とスワップ空間を超える仮想アドレス空間をコミットしないこと」を意味します。
一方、Red Hatマガジンでは、「値が0の場合、カーネルは、アプリケーションからのmalloc呼び出しにメモリリクエストを許可するのに十分なメモリがあるかどうかを確認します。メモリが十分であれば、リクエストは許可されます。それ以外の場合は拒否され、エラーコードがアプリケーションに返されます。」これは、オーバーコミットを無効にするように聞こえます。
「値が1に設定されている場合、カーネルはovercommit_ratio値で定義されたシステムの物理RAMとスワップの量を超える割り当てを許可します。このファイルの設定が2の場合、カーネルはすべてのメモリ割り当てを許可します。 、現在のメモリ割り当て状態に関係なく。」値1と2に関して、それは前のドキュメントが言ったことの反対ですよね?
誰が実際に正しいかを知っていますか?また、オーバーコミットを「無効にする」ことができる場合は?