Linuxでは、解放されたメモリページをゼロにして、VM スナップショットのサイズを小さくするにはどうすればよいですか?未使用メモリをゼロにしてVMスナップショットのサイズを小さくする方法
ゼロ以外のメモリは、そのメモリが解放されても になっても使用されなくてもスナップショットに格納されます。彼らはゼロにされていないので、例えば、
sync && echo 3 > /proc/sys/vm/drop_caches
でファイルシステムのキャッシュ から解放されたメモリページは、不スナップショットに保存されます。 OOMキラーがでキックまで
更新が動作しているように見えます本当に恐ろしいソリューションは、ループ内のmalloc + memsetのメモリにある。これは、私が400MB程度の約800メガバイトからテスト1つのVMのスナップショットのサイズが小さくなります。より良い解決策はありますか?仮想マシンのサイズ減らすために
(削除の答えを編集した後、私はあなたが本当に欲しいものを誤解と思われるので) – Damon
私はこれも可能ではないと思います。 LinuxはCOWゼロのページが1つあり、新しい割り当てで返され、最初の書き込みアクセス時にコピーされます(ゼロでいっぱいのページを作成しますが、これは技術的にはゼロページではありません)。したがって、大量のメモリを割り当て、すべてのページの先頭に ''\ 0''を書き込むことで、理論上のすべての物理メモリをゼロにすることができます。しかし、その後はデータを含むページになります。ゼロページではありません。そしてそれらをもう一度解放すれば、あなたはとにかくあなたが持っていたゼロ以外の解放されたページと同じになります - それらにはゼロだけが含まれます。 – Damon
これをやってみると(たくさんのメモリが割り当てられ、物理的にゼロにされます)、その後は全体で 'MADV_MERGEABLE'となります。おそらくカーネルの同じページのマージがそのトリックをするでしょう。これは、正確には自由な操作(CPU単位)ではないことに注意してください。 – Damon