現在、プロセス間でデータを共有するために大きなmmapファイルを使用するApacheモジュールを作成しています。これは起動時に作成され、サーバーがシャットダウンすると削除されます(後の段階で保持することを選択できます)。私はこれをApache APRライブラリを使って実装しましたが、少なくとも小規模なファイルではうまくいきます。Apacheモジュールのメモリマップファイルの過度の同期
しかし、メモリマップされたファイルのサイズが大きくなると(サーバーが稼動しているときにキャッシュするために十分なRAMがまだ残っています)、システムはオペレーティングシステムのように仮想的に停止します(私の場合Linux)ファイルをディスクと同期させるために多くのリソースを消費します。この同期を制御/削減する方法はありますか?
私は現時点ではディスクに同期されたコンテンツを必要としないので、代わりに共有メモリセグメントを使用してください。私はまだメモリマップされたファイルの同期を制御する方法に興味があります。
APRライブラリは、メモリマップファイルの作成を処理するだけで、msync()呼び出しは含まれません。私は自分のコードでmsync()も呼び出さない。しかし、ファイルにはキャッシュされたデータが含まれているので、私のコードはメモリ内でかなりジャンプします。 – Chris
ワニスウェブキャッシュに関するアーキテクチャノートのいくつかをお読みください。これらの論文は、メモリマッピングを効率的に処理する方法を示しています。 – chrisaycock