ファイル システムでテキスト操作を行うスクリプトを実行します。
スクリプトはテキスト ファイル ( .h、.cpp ) で実行されます。
スクリプトを実行すると、ページ ファイルに割り当てられた VM の量に達するまで、PF の使用量が増加することがわかります。
実行中または実行後に VM をフラッシュする方法はありますか?
私はそれに関する別の質問を開きました(それは別の問題だと思いました): 複数の置換に対する単一のsedコマンド?
ファイル システムでテキスト操作を行うスクリプトを実行します。
スクリプトはテキスト ファイル ( .h、.cpp ) で実行されます。
スクリプトを実行すると、ページ ファイルに割り当てられた VM の量に達するまで、PF の使用量が増加することがわかります。
実行中または実行後に VM をフラッシュする方法はありますか?
私はそれに関する別の質問を開きました(それは別の問題だと思いました): 複数の置換に対する単一のsedコマンド?
すべてをメモリにロードするだけでなく、メモリをより効率的に使用できるように、操作をチャンクまたはバッチにします。大きなファイルがない場合は、これらのファイルからテキストをメモリにロードするスレッドの数を制限します。大きなファイルを使用する場合は、ファイルを分割して、メモリを使用してより効率的に処理します。
ページファイルはシステム リソースであり、どのユーザー プロセスからも操作できません。この場合、ページファイルのサイズが大きくなるのは、単にアプリケーションの問題の兆候です。アプリケーションがコミット制限を超えています。症状ではなく、問題に対処する必要があります。
いいえ。ただし、スクリプトを変更してメモリの消費量を減らすことができるかもしれません。
更新します。他の質問に記載されているスクリプトに対応する Linux で問題を再現しようとしました。バッシュの場合:
while read fileName; do
echo
echo -----------------------------------------------
echo For file $fileName :
while read matchItem; do
echo Searching for $matchItem
echo
sed -i "s/$matchItem/XXXXXXXXX $matchItem XXXXXXXXXXXXXX/" $fileName
done < allFilesWithH.txt
done < all.txt
タンパク質配列データベースのフラグメント (大きなテキスト ファイル、FASTA 形式、最大 74 MB) と短いペプチド配列をテストに使用しました (ファイルごとに少なくとも 10 個の置換があるように)。それが実行されている間、プロセスは重要なメモリを使用していません(私が予想するように)。実行中の CPU 負荷は 50% 程度です。したがって、問題を再現できません。