2012-02-22 8 views
1

ユーザ空間のLinuxアプリケーションに(ある種の)メモリキャッシュを実装したいと思います。キャッシュのためにLinuxユーザ空間メモリを使用する

私が後にしているのは、linuxのファイルシステムのバッファキャッシュと基本的に同じ動作です。キャッシュされているプロセスで使用されているメモリは何でも使用されます。

キャッシュのサイズをハードコーディングした制限値を書き留めておけば、他のプロセスがそれほど使用していない場合には、キャッシュをいくつかの定義済みの値に制限する必要がありますメモリ、またはそれが縮小する場合、メモリ使用量は風船。

私が望むのは、実際にメモリが必要なときに、キャッシュからいくつかのエントリを削除するように通知する何らかのコールバックをlinuxが呼び出すことです。

このように、プロセスによって必要とされるメモリはすべて自分のキャッシュから取り除くことができ、メモリの残りはキャッシュ専用です。

Linuxでこれを行う方法はありますか?

これを行うだけで/ proc/meminfoを監視し、キャッシュサイズを増やして、使用された物理メモリが全体の物理メモリよりもわずかに少ないような方法が最適です。

+0

あなたのやりたいことによって異なります。ファイルを使って何かをしているのであれば、linuxがそれらのファイルをキャッシュするようにするのが良いでしょう。 –

+0

この質問は、同じことを試みるワニスHTTPキャッシュ/アクセラレータを思い出させます。 –

+0

>>>全体のメモリに比べてわずかに少ない - サービング時間が指数関数的に無限に近づくにつれて、ほぼ100%[または90%]近くを利用することは実際にはあまり効果的ではありません。キューイング理論のドキュメント、またはhttp://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/ – Fakrudeen

答えて

1

仮想メモリマネージャー(VMM)をコード化しようとしているように、これは非常によく聞こえます。これはあなたの好きなように働く可能性は低く、そうしても非常に効率的です。

この問題は、Poul-Henning Kampによって書かれたVarnish architecture notesに記載されています。私はVarnishがVMMと効率的にやりとりするように設計されていることを話しながら、このドキュメントを読むことをお勧めします。

システムメモリの負荷を調整しようとしているユーザープロセス。たとえば、常駐セットサイズ(rss)/仮想サイズ(vsize)の比率を調べます。 VMMとのフィードバックループに苦しむことになり、フィードバックループがプロセスやシステム、あるいはその両方に悪影響を与える可能性があります。

/procのドキュメントを参照して、rssの入手先とプロセスのためのvsizeを参照してください。

幸運。

関連する問題