mmap ファイルを使用して、64 MB ブロックの配列として編成された巨大なバッファーを保持するプログラムを作成しています。
ブロックは、ネットワークを介してさまざまなホストから受信したデータを集約するために使用されます。結果として、各ブロックに書き込まれる合計データ サイズは事前にわかりません。ほとんどの場合は 2MB ですが、場合によっては 20MB 以上になることもあります。
データはバッファ内に長く留まりません。1 秒以内に 90% が削除され、残りは別のホストに送信されます。
データが削除されたときに RAM ページがもうダーティではないことを仮想メモリ マネージャーに伝える方法があるかどうかを知りたいです。
仮想メモリを制御するためにブロックを使用および解放する場合、mmap と munmap を使用する必要がありますか? これを行うオーバーヘッドはどうなりますか? また、一部の同僚は、このような大きな mmap スペースを割り当てることによるパフォーマンスへの影響について懸念を表明しました。ダーティ ページのみが考慮されるように、スワップ ファイルのように動作することを期待しています。