VmallocTotal
与えられたよりも多くのメモリを割り当てることができますか/proc/meminfo
?
答え1
vmalloc()
内部カーネル関数です。ユーザープログラムでは使用できません。ユーザプログラムのメモリ割り当てには影響しません。 VmallocTotal
呼び出しカーネルコードの割り当てを制限しますvmalloc()
(VmallocTotal
自動または手動で変更しません)。
ユーザープログラムが「割り当て」できる最大メモリサイズは、オーバーコミット設定によって異なります。 「オーバーコミット」は「メモリ割り当て」という概念となんと矛盾するので、恐ろしい引用として「割り当て」と書いています。説明は次のとおりです。使用されたキーワードで別の説明を検索できます。https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work
〜のようにカーネル文書言い換えれば、mmap()
以前のシステムコールなどのシステムコールはsbrk()
デフォルトでメモリを割り当てません。 「アドレス空間」を返します。書き込まれると、物理メモリは要求に応じてマッピングされます。メモリはページ(通常4096バイト)単位でマッピングされます。