一つのプログラム/プロセスのためのページングを防ぐためにどのように?
質問
私はすべての物理RAMの2/3のように、多くのメモリを必要とするプログラムを持っています。いくつかのランタイムの後、私のオペレーティングシステムは、HDDにプログラムをスワップを開始します。しかし、私はそのプロセスのページングを防ぐために必要があるので、非常に高速に応答するためにすべての時間をプログラムが必要です。
どのようにスワップつのプロセスにOSを防ぐことができますか?
任意の助けてくれてありがとう!
解決
プログラムの開始時に、呼び出します:
mlockall(MCL_CURRENT | MCL_FUTURE);
(あなたがプログラムにソースを持っていない場合は、あなたがこれを行うにはptrace
とプロセスを酒池肉林する必要があります)。
これは失敗したプロセスによって行われたメモリ割り当ての可能性を増加させることに注意してください。
他のヒント
まあ、 MLOCK のカーネルを伝える(メモリをロックすることはないかもしれませんがありますスワップアウトされた)、それは、メモリの比較的少量のためのものだし、プログラムの修正が必要になります。
他のオプションは、ページをスワップアウトすること、すなわちその傾向はLinuxの「swappinessを」を調整するかもしれません。興味深い議論のためにここにの参照してください。それはしかし、プロセスごとに可能ではありません。
私はあなたの問題のための任意のプロセスごとのソリューションを認識していないよ。
使用MMAP()の代わりにmallocの、及び "MAP_LOCKED" フラグを使用します。 (Linux上で作品> 2.5.37)
所属していません StackOverflow