3

メモリが割り当てられていて、それが(ほぼ確実に/おそらく)長期間使用されないことがわかっている場合、このメモリにタグを付けて、より積極的にスワップ空間に移動させると便利です。

これをカーネルに伝えるコマンドはありますか?

それができない場合は、これらを一時ファイルにダンプする方が良いかもしれませんが、send-to-swap (または同様のもの) の機能に興味がありました。


もちろん、スワップ領域がなければ、これは何もしません。その場合、一時ファイルを書き込む方が良いかもしれません。

4

2 に答える 2

6

この呼び出しを使用しmadviseて、将来メモリで何をする可能性があるかをカーネルに伝えることができます。例えば:

madvise(base, length, MADV_SOFT_OFFLINE);

問題のメモリはすぐには必要ないことをカーネルに伝えるので、バッキング ストアにフラッシュできます (または、ファイルからマップされて変更されていない場合は単に削除します)。

またMADV_DONTNEED、変更された場合でもカーネルがコンテンツを削除できるようにするものもあります (そのため、次にメモリにアクセスすると、元のマップされたファイルからゼロになるか、再読み取りされる可能性があります)。

于 2014-06-22T04:26:27.783 に答える
0

私が考えることができる最も近いものは、次のmmapとおりです。Memory-mapped I/O。これは に書き込みませんがlinux swap partition、ディスクへのページング (メモリの完全なページ) を許可してアクセスします。一時ファイルとディレクトリもtempfilemkstempおよびmkdtempで使用できますが、これもスワップ パーティションに書き込まれるのではなく、通常のファイル システムに書き込まれます。

上記と同様の機能以外に、(システム メモリを使い果たす以外に) スワップ パーティションに直接アクセスできるものはないと思います。

于 2014-06-22T04:17:39.213 に答える