プロセスがより多くのRAMを使用するようにする方法は?

プロセスがより多くのRAMを使用するようにする方法は?

私は主に新しいリガンド/薬物のシェルベースの仮想スクリーニング(アルゴリズムと出力評価を含む)と分子動力学のためにワークステーションを使用しています。仮想スクリーニングには、毎回約100,000〜300,000のリガンドを評価することが含まれます。私は通常、総リガンドを複数のクラスターに分割します。さらに、タスクを分割して複数の端末で実行(Tmuxを使用)して容量を増やしました。

あるフォーラムのメンバーである@muruが別の投稿で指摘したように、私はRAM消費を正しい方法で最適化しなかったことを知りました。私のワークステーションには16個のコアと64GBのRAMがあります。

タスクを開始するたびに、CPU使用率は100%と表示されますが、RAMは通常10 GBまたは最大15 GBしか消費しません。残りのRAMは使用されません。

私の質問は次のとおりです

RAMを最大限に活用するために最適化する方法は?プロセスの実行にさらにRAMを使用させる方法はありますか?

答え1

アプリケーションの最適化の鍵は、ボトルネックがある場所を理解することです。あなたの場合、RAMは制限されていないため、コンピューティング速度はボトルネックのようです。その後、プログラムでより多くのRAMを使用できる場合は、役に立つかどうか尋ねる必要があります。自分に尋ねるべきいくつかの有用な質問は次のとおりです。

  • 私のプログラムは同じ(比較的長い)項目を何度も計算しますか?

その場合は、次のものを使用できます。動的プログラミング長い計算結果をキャッシュして計算を高速化します。

  • 私のプログラムは定期的にディスクを読み書きしますか?

読み取り/書き込みが常に同じファイルにある場合、Linuxは自動的にキャッシュ/バッファを高速化しますが、複数のファイルを読み取ったり予測できない方法で読み取ったりする場合は、次のことをお勧めします。すべてのデータをインポート必要です。ディスクからRAMへ、RAMに記憶されたデータに対して全ての計算を行い、最後に全てをディスクに書き込む。

関連情報