アプリケーションをスワップ領域に明示的に移動する

アプリケーションをスワップ領域に明示的に移動する

Linux / Unixシステムでプロセスをメモリスワップに明示的に移動できますか?swap*ツールを調べましたが、kill私が望むすべてのことを行うわけではありません。

はい:プロセスが現在実行中で、RAMに収まらないFOO他のプロセスを起動しようとしているため、置き換えられます。今すぐ実行したいので、まずBARスワップスペースに移動してから実行したいと思います。終了後、交換をキャンセルしたいと思います。BARFOOBARBARFOO

答え1

Linuxでメモリの特定の部分をスワップに移動するように要求する方法がわかりません。しかし、その逆も可能です。簡単に実行すると、キャッシュ用にBARファイルを明示的にプリロードできますcat /path/to/file >/dev/null

BARがすでに実行されていて部分的に置き換えられている場合、Linuxは読み取りを介してそのページをロードするようにスケジュールできます。バラより/proc/BAR_PID/memLinuxで/proc/$pid/memを読む方法は?

あるいは、BAR が迅速に消費できるように一部のメモリを使用する場合は、大量のメモリを割り当てるプログラムを起動できます。カーネルが他のプロセスを置き換えるか、ディスクキャッシュから役に立つファイルを削除することを決定できるので、これは理想的ではありません。最良の結果を得るには、明示的に交換したい項目を交換する前にこれを実行してFOO()を一時停止してください。約2×1234567バイトのメモリと変更を割り当てます。kill -STOP FOO_PIDperl -e '$a = "a" x 1234567'

関連情報