2011-12-09 6 views
1

私たちは、約3世代の共有ライブラリから構成され、多くの異なるフロントエンドが共有ライブラリのさまざまな部分をロードするLinuxアプリケーションスイートを持っています。私たちは24G搭載のマシンで動作し、その3Gの大部分を頻繁にロードします。我々はすべての3Gが常にRAMに常駐するように強制しようと考えているので、すべてのアプリはできるだけ早く開始されます。Linuxライブラリを強制的に物理RAMに常駐させますか?

これはできますか?私たちの最初の考えは、バイナリを/ dev/shmのようなラムディスクに入れていたのですが、カーネルは内容を自由に交換することができます。 swappinessパラメータを0に減らすこともできますが、ファイルキャッシュはメモリを有効に使用しているので、どちらも必要とは思わないと思います。私たちは、この特定のチャンクがいつも熱く保たれるように指示したいだけです。

mlockシステムコールがありますが、私たちが望むものとまったく同じように聞こえますが、これをRAMディスクとどのように統合するかはわかりません。

私たちはRAMディスクを必要としないかもしれませんが、MAP_SHARED、MAP_LOCKED、およびMAP_POPULATEを渡して、すべてのバイナリの全範囲を単純にmmapするデーモンプロセスですか?これは、他のプロセスによる将来の負荷が即座に同じ物理メモリにアクセスする原因になりますか? ldがMAP_SHAREDでmmapを使って共有ライブラリをロードするのは正しいですか?

なぜこれが良いかどうかについての観察もあります。

+0

は、なぜあなたは「RAMディスクで[MLOCK]統合」するのでしょうか?どうすれば 'mlock()'を使って問題を解決できないでしょうか?私が知る限り、あなたが望むものを可能な限りシンプルな方法で正確に実行します。 – mkj

答えて

0

prelinkは、ゼロに調整されたスワップと組み合わせて見ることができます。あなたが24Gを持っていて、ボックスがスワップし始めると、とにかくトーストになります。 Prelinkを使用すると、ライブラリが読み込まれるたびに、各ライブラリの同じ特定のメモリ領域にライブラリが再配置されます。これにより、ライブラリは重複するメモリ範囲(少なくとも64ビットシステム上)を避けることができ、すべてのライブラリが一度だけロードされます。さらに、少量のメモリが節約されます(私のシステムでは最大約100Mです)。もちろん高速です。

個人的には、RAMが少ないマシンであっても、swappinessを0にチューニングすることをお勧めします。主にAndrew Mortonがそれを気に入っており、低メモリデスクトップをさらに目指しているからです。私はつもりは私の耳に私の指を固執し、人々は「私はゼロにswappinessを設定し、それは私がそれをやりたいしませんでした」

を教えてまで、「ラララ」を歌うよ

もちろん、うんざりの歌を止めることはできません。

これはファイルキャッシュを無効にしません。ファイルキャッシュのためのスペースを確保するためにスワップアウトされたページを避けるだけです。通常、スワッピングはディスクからファイルを読み込むよりも遅いためです。

+0

ありがとう!私はprelinkを見て、私はそれを聞いていない。私は、すべてのユーザのマシン上でスワップネスパラメータを変更するように認めることは間違いないと思いますが、その影響について何らかの議論をするには十分に理解していません。しかし、私はあなたの議論の要点を理解しています - 誰もが暫定的にファイルキャッシュから少しのブーストを得たとしても、長い間アイドル状態のプロセスが戻ってくるのを待っています... –