ディスクの単一プロセスの一時停止/再開

ディスクの単一プロセスの一時停止/再開

時には、他のタスクのためにいくつかのRAMを一時的に取得するために、UbuntuとOS Xサーバーでメモリ集約的なプロセスを一時停止したい場合があります。 CPU使用量だけを心配する場合は、簡単なアプローチをCtrl-Z使用してください。ただし、RAMを入手して(ディスクに書き込む)、プロセスを再起動(ディスク - > RAM)できるようにする必要があります。つまり、個々のプロセスを「休止状態」に設定する必要があります。これを行う方法についての手がかりはありますか? (CLIを使用することをお勧めします。)ありがとう。

答え1

探している検索語は「アプリケーションチェックポイント」。

私はこれを行うことができるツールがCryoPIDです。固定PID2

これら2つのツールはLinuxでのみ利用可能です。

私はBSDやOS Xで同様のツールを知りません。

答え2

単一のプロセスを休止状態にするための汎用ツールはなく、システム全体のみを休止状態にすることができます。

ただし、再起動時にプロセスイメージが保存されないことを気にしない場合は、プロセスイメージをディスクに保存するために使用できる組み込みツールであるスワップがあります。スワップスペースが十分であることを確認してください。メモリが不足してプロセスが非アクティブの場合(たとえば、停止などの理由で)、そのメモリはスワップアウトされます。

プロセスが長い間非アクティブである可能性が高く、ある時点で迅速な応答時間が必要であることがわかっている場合は、1つのプロセスに大量のRAMを割り当てることによって大量のRAMを強制的に解放できます。短期プロセス(例:

perl -e '$tmp = "a" x 999999999' # allocate about 1GB

スワップアウトするアイテムを制御できないため、他のプロセスがスワップアウトされる可能性があります。 Linuxでは、プロセスのマップされたページに強制的にアクセスしてプロセスを置き換えることができます。スクリプトはこの回答次の手順を実行します。プロセスによってマップされたすべてのページをメモリにロードします(ここには開いているファイルが含まれています)、不要なデータの置き換えを避けるために、マッピング情報に基づいて領域を選択的に移動できます。参照)。この回答より多くの情報を知りたい場合)。

答え3

スワップスペースが十分であることを確認してください。システムが非アクティブページ交換の優先順位を指定するように設定されていることを確認してください(vmswap=100)。その後、プロセスを一時停止するだけで十分です。カーネルは最初に非アクティブページを置き換えます。

答え4

Mac OS Xでは、次のことを試すことができます。purge一部(非アクティブ)RAMを取得するコマンド(Xcodeに付属)。

vm_stat
purge
vm_stat

関連情報