2012-02-09 17 views
3

での仮想メモリ上のRedisのドキュメントを読む:彼らはこれを実行するために使用されるスレッド数の最大値である」と言う「VM-MAX-スレッド」に関しては http://redis.io/topics/virtual-memoryRedisの仮想メモリは2.6

I/Oをスワップファイルから/へスワップすることができます。システムのコア数と一致させるだけの価値があります。

redisスワップで何かの検索が行われると、これがコアの数と一致する理由はわかりませんが、これはこれらのスレッドの1つに委任されますが、おそらく直ちに中断されたIO CPUが他の仕事をすることを可能にする読み込みファイル呼び出しを発行した後に待機段階?

答えて

3

Redis VMはRedis 2.4で廃止され、Redis 2.6では削除されました。それは行き止まりです:それを使用しないでください。

vm-max-threadsのコア数を使用するのは、ほんの一例です。あなたが指摘したように、これらのスレッドは、同期I/Oの完了を待っている間に、何らかの仕事を待っています。さらに、これらのスレッドは動的に生成されます。

正しい値は、実際にはこれらのスレッドの純粋なCPU消費ではなく、I/Oを並列化できる方法によって異なります。スワップファイルがSSDディスクのアレイ上にストライプ化されている場合、より多くのスレッドを使用することは意味があります(おそらくCPUコアの数より多い)。スワップファイルが単一の回転ディスク上にある場合、スワップファイルはありません。しかし、ファイルシステムのキャッシュのために、一部のI/Oは論理的に保たれます(したがって、物理的な待機状態を生成しません)。したがって、少なくともコアの数を設定するのが一般的な選択です。

+0

ありがとうございました。私の理解を完了するために私の他の質問にコメントする可能性がありますhttp://stackoverflow.com/questions/9206042/redis-default-blocking-vm歓声 –

+0

仮想メモリが削除されているため、RAMメモリの上限に達するとディスク上のメモリを使用するようにRedisを設定するにはどうすればよいですか? – harsimranb

+0

具体的な設定はありません。Redisにメモリを消費させ、システムにそれをスワップさせるようにしてください。 Redisの内部データ構造は局所性のために設計されていないため、スワップアウトされたメモリにアクセスする必要があるときに、結果として生じるシステムが効率的でないことをすぐに認識します。その場合はRedisを使用することはお勧めしません。 RedisLabsには、この目的のために設計されたNVMデバイスをターゲットとするRedisの風味があります。種類の言及については –

関連する問題