スペア/未使用メモリを利用したキャッシュ。
Dory は、クラスタ内のリソースの使用に着想を得たことがあります。 全体として、イニシアチブがクラスター (つまり Kubernetes) で起動されると、継続的に発生しやすいと思われるよりも多くのメモリがプロビジョニングされます。 HTTP サーバーは 128MiB のメモリ用にプロビジョニングされているように見えますが、handiest は 99% の時間で 32MiB を使用し、負荷の変化に応じて増減します。 多くの場合、プロビジョニングされたメモリ量は、サーバーが使用すると予想される量です。ディスクのページをメモリに保存します。 これにより、急いでいないディスク アクセス (SSD の場合でも) を回避することで効率が向上します。 一方、分散手順では、ローカル ディスクの代わりにリモート/分散ストレージ方式を採用するため、ページ キャッシュの効率が大幅に低下します。
したがって、未使用のメモリをキャッシュに割り出して使用することですが、必要に応じて警告なしにそのメモリを OS に返すスキルがあります
make について議論する前に、それははるかに重要です。 Dory の非ターゲットについてチャットします。 すなわち: 超過剰効率用に設計されていません 一貫性を考慮して設計されていません メモリ効率を考慮して設計されていません
これらが対象外だとしても、安いのが第一。 メモリのオーバーヘッドは、キーと価格のペアあたり約 100 バイトです。 現在、CPU 使用率の ~50% はプロトコル スタックにあり、これは実際には redis プロトコルの最小限の実装です
警告なしでメモリを OS に戻すことに成功します。 これは主に、ヒープの特定の操作によって実行されます。 Dash が魅力的なごみ収集機能、ヒープの断片化などのコンポーネント、すべての言語とランタイムに存在する苦痛を備えていると仮定しても、決定論的なダイアグラムでメモリが OS に返されるのを未然に防ぎます.
代わりに、名前のない mmap された領域が作成され、PackedTable と呼ばれる構造体の使用法が管理されます (命名は面倒です)。 PackedTable は、first/price ファイルを 1 つのファイルに保存しながら、キーと価格のテーブルを実装します。 mmap に裏打ちされたバイトバッファ。 構造はSSTableのようなもので、最初の/値が連続して保存され、インデックスがDashインテンションで保存されます。 メモリを OS に戻す必要がある場合、mmap された住居は完全にマップ解除されます
レベルが上がると、Memcache は PackedTable のチェックリストと、パックされたテーブル。 Memcache の間接化により、制限時間内に任意の数の PackedTable を消去できます。 Memcache はさらに、/proc/meminfo をポーリングし、PackedTables の数を優勢として調整することにより、空きメモリのレベルを監視します。
dory ディレクトリがサーバーを構成します。 デフォルトでは、dory はポート 6379 でリッスンします。これは、redis プロトコルのわずかなサブセットを実装しているためです。 SET GET
プロトコルはredis-benchmark、で調査済みredis-cli と proceed-redis
dory をデプロイする理想的な図は、kubernetes 上の DaemonSet としてのものです。 すべてのノードの 1 つのイベントは、ノード上のアクセス可能な未使用メモリを使用します。 一方で、これを可能にするためにショッパーライブラリで作業を行う必要があります.
Dory は Apache 2.0 ライセンスの下でリリースされています
%% item_read_more_button%%