キャッシュメモリリーク(またはリークのように見える場合)により、プログラム速度の低下

キャッシュメモリリーク(またはリークのように見える場合)により、プログラム速度の低下

奇妙な問題があるようです。メモリキャッシュリーク(メモリリークではありません)プログラムが遅くなります。

まず舞台を設けます。再現可能に(神経節を使用して監視)、クラスタ内のキャッシュメモリが比較的ゆっくりと増加することを確認しました。メモリがメモリ全体(Intel Gold、32コア、192 Gb)の約3分の2になると、プログラムの実行速度は約1.5倍遅くなります。キャッシュをクリアしてsync ; echo 3 > /proc/sys/vm/drop_caches""を使用してディスクを同期すると(どのような場合かをテストしません)、プログラムの速度が速くなります(約1.5倍速くなります)。

問題はI / Oに関連しています。 I / Oを実行しているCPUでのみキャッシュリークが表示されます。プログラムはかなりの量のI / Oを実行しますが、それほど多くはありません(10〜40 Mb)。 ifortと-assume buffered_ioを使用してコンパイルします。 I / Oが最後にキャッシュファイルを残しているように見えます。これは実際には「キャッシュメモリリーク」です。

この質問は、この「リーク」が発生する理由、これを防ぐ方法(例:3時間ごとにキャッシュを無差別に代入するクローンをクリーンアップする)、および非連続操作に対してプログラムが遅すぎる方法/理由(ベクトル操作これは非効率的)を含むいくつかの部分で構成されています。記憶は推測だけです。信じられるかもしれません。)

治療法に関するすべての提案とそれをよりよく理解する方法が役に立ちます。

これは大きなプログラムなので、小さなコードに複製することは関係ないかもしれません。

ベストアンサー1

おすすめ記事