このスレッドによると(信頼性は低いと思います) memcached はディスクを使用せず、仮想メモリも使用しません。
私の質問は次のとおりです。
これは本当ですか?
もしそうなら、memcached は、割り当てられたメモリが決してディスクにオーバーフローしないことをどのように保証するのでしょうか?
このスレッドによると(信頼性は低いと思います) memcached はディスクを使用せず、仮想メモリも使用しません。
私の質問は次のとおりです。
これは本当ですか?
もしそうなら、memcached は、割り当てられたメモリが決してディスクにオーバーフローしないことをどのように保証するのでしょうか?
memcached
2つのメカニズムを介してスワップすることを回避します。
マシンがスワップに移行してはならないことをシステム管理者に通知します。これにより、管理者はマシンのスワップスペースを構成したり(私には悪い考えのように思えます)、実行中のアプリケーションのメモリ制限を構成して、スワップに何も入らないようにすることができます。(だけmemcached
でなく、すべてのアプリケーション。)
mlockall(2)
システムコールを使用して(-k
)、すべてのプロセスのメモリが常にメモリにロックされるようにすることができます。これはコントロールを介して仲介されるsetrlimit(2)
RLIMIT_MEMLOCK
ため、管理者は、たとえばユーザーアカウントが通常よりもはるかに多くのメモリをロック/etc/security/limits.conf
できるように変更する必要があります。memcached
(ロックされたメモリは、信頼できないユーザーアカウントがシステムの残りの空きメモリを枯渇させるのを防ぐために仲介されます。)
これらのステップは両方とも、マシンのポイントが実行することであり、おそらくそれ以外はほとんどないと仮定すると、公平です。memcached
大規模な展開では複数(または多数)のマシンが専用になるため、これは多くの場合、公正な仮定memcached
です。
一定量のメモリを使用するように memcached を構成します。そのメモリがいっぱいになると、memcached は古いデータを削除して制限を超えないようにします。それはとても簡単です。