大きなメモリ フットプリント (ある種のデータベース エンジン) を持つプロセスを実行している LINUX サーバーがあります。このプロセスによって割り当てられたメモリは非常に大きいため、その一部をスワップ (ページアウト) する必要があります。
私がやりたいことは、他のすべてのプロセス (または実行中のプロセスのサブセット) のメモリ ページをメモリ内でロックして、データベース プロセスのページだけがスワップ アウトされるようにすることです。たとえば、スワッピングによってプロセスが影響を受けることなく、引き続きリモートで接続してマシンを監視できるようにしたいと考えています。つまり、sshd、X、top、vmstat などにすべてのページのメモリを常駐させたいと考えています。
Linux には mlock()、mlockall() システム コールがあり、ピン留めを行うための適切なノブを提供しているようです。残念ながら、すべてのプロセス内で明示的な呼び出しを行う必要があり、別のプロセスまたは親から mlock() を呼び出すことができないようです (mlock() は fork() または evecve() の後に継承されません)。
どんな助けでも大歓迎です。仮想ピザとビールが提供されます:-)。