マルチCPUシステムのdentry/inodeキャッシュ/メモリアロケータの設定

マルチCPUシステムのdentry/inodeキャッシュ/メモリアロケータの設定

CPLEXのパフォーマンスベンチマーク中に奇妙な問題が発生しました。詳細はブログに掲載されています。https://community.ibm.com/community/user/ai-datascience/blogs/xavier-nodet1/2021/07/08/performance-considerations-for-cplex-on-multiproce。 2ページほどしかありませんが、ここにコピーしたくないので、主な内容は次のとおりです。

マルチCPUシステムでは、NUMAアクセス時間について心配する必要があります。コードのキャッシュヒット率が低く、プロセスを実行しているCPUのメモリバンクにメモリが割り当てられている場合、メモリが他のメモリバンクに割り当てられている場合よりもはるかに速くコードが実行されます。もちろん、アロケータは同じ銀行に割り当てることを好みますが、その銀行が完全に使用されると、アロケータは別の銀行に移動します。バンクがキャッシュされたコンテンツでのみ使用される場合も同様です。何らかの理由でdentry / inodeキャッシュはCPU0バンクにあります。したがって、私のコードがCPU0のコアに予約されている場合、キャッシュがバンク0の少量を占めるのか、それとも大量を占めるのかによってパフォーマンスが大きく異なります。ベンチマークには良くない...

キャッシュを強制的に削除することもできますが、これには欠点があります。また、大量のファイルを読み取ってデータ処理を開始する前にキャッシュがバンク0を埋める可能性があるため、不十分な場合があります。

それでは、他のメモリバンクからメモリを割り当てる前にキャッシュを削除することを好むようにアロケータに指示することが可能かどうか疑問に思います。

PS:参考ブログでvfs_cache_Pressureを使用してこの問題を軽減することができると述べましたが、最近はこれが万能歯磨き粉ではないことを発見しました。

ベストアンサー1

おすすめ記事