Latest evidence-based health information
Ipad

Facebookのオープンソースキャッシュはフラッシュディスクの容量をさらに削減

Facebookのオープンソースキャッシュはフラッシュディスクの容量をさらに削減
Facebookのオープンソースキャッシュはフラッシュディスクの容量をさらに削減

Facebook は、数十億人のユーザーにより迅速にサービスを提供するために、ストレージとサーバー技術の限界を押し広げ続けており、その成果は他の企業にも利益をもたらすオープンソース技術として提供されています。

最近、Facebook は、頻繁に参照されるデータを保存するためにこのソーシャル ネットワーキングの巨人が導入している数千のソリッド ステート ドライブ (SSD) をより効率的に使用するために、社内で開発されたキャッシュ ソフトウェア「Flashcache」をアップデートしました。

新しくリリースされた Flashcache 3.0 は、高価なフラッシュ ディスクの消耗を軽減しながら、どのデータをキャッシュするかをより適切に判断できます。

「これらの改善により、Flashcache は Facebook スタックの構成要素となりました」と、オープンソース ソフトウェアのアップデートについて説明するブログ記事を執筆した Facebook のデータベース エンジニア、Domas Mituzas 氏は書いています。

この取り組みは、運営コストを過度に引き上げることなく、Facebook の全体的なパフォーマンスを向上させることを目指しています。

「フラッシュメモリのGBあたりのコストは下がってきているものの、まだ望ましい水準には達していません」とミツザス氏は記している。SSDの高額な価格を考えると、Facebookはこれらのディスクをあまり早く消耗させたくないと考えている。「SSDの書き込みサイクルには限りがあるため、書き込みすぎないように注意する必要があります。」

その他のオープンソースプロジェクト

Flashcacheは、Facebookが元々社内開発し、オープンソースとしても公開しているソフトウェアプロジェクトの1つです。例えば、今年初めにはPHPコードの処理速度を向上させるHipHopという仮想マシンもリリースしました。

同社は、他の組織がHipHopやFlashcacheといったプログラムを再利用し、最終的にはそれらのさらなる開発に貢献することを期待しています。memcacheやRedisといった他のオープンソースのキャッシュソフトウェアと同様に、Flashcacheはアクセス数の多いウェブサイトや人気のウェブアプリケーションの応答速度を向上させるために使用できます。

Facebookは当初、ユーザーデータを保存するMySQLデータベースの応答性を向上させるためにFlashcacheを開発しました。このソフトウェアは、Linuxカーネル自体に変更を加えることなく、モジュールとしてLinuxカーネルにロードできます。

Flashcacheの背後にある考え方は、ユーザーから最もリクエストの多いコンテンツをSSDに保存することです。SSDは従来の回転プラッター型ハードドライブよりも高速ですが、ハードドライブと比較してGBあたりの価格が高くなります。そのため、FacebookがすべてのデータをSSDに保存することは、特にFacebookユーザーデータの大部分がほとんど参照されない場合、費用対効果が低いでしょう。

Facebookフラッシュキャッシュフェイスブック
Facebook は、頻繁に参照されるデータが狭い領域に集まり、ボトルネックを引き起こす可能性がある、キャッシュ内のホットスポットを発見しました。

Flashcache は MySQL および MySQL InnoDB データベース ストレージ エンジンで動作するように設計されていますが、Linux システムの一般的なキャッシュ メカニズムとしても使用できます。

また、Flashcache は、新しく更新されたデータをまず SSD に保存し、後でハード ドライブに書き込むことで、ユーザーの観点からは、ディスクへのデータの書き込みにかかる時間を短縮することもできます。

更新された Flashcache モジュールにより、読み取り/書き込み分散、キャッシュ削除、書き込み効率のパフォーマンスが向上します。

Facebook は Flashcache のパフォーマンスを分析した結果、キャッシュのほとんどに、他のほとんどのデータよりもはるかに頻繁に読み取られる小さなデータのサブセットがあることを発見しました。

以前のバージョンのFlashcacheでは、キャッシュ内容の50%がディスク操作の80%を占めていました。頻繁に参照されるデータがこのように集中すると、パフォーマンスのボトルネックが発生する可能性がありました。

Flashcacheの読み書き分散を改善するため、エンジニアはデータを自動的に配置する複数の技術を開発し、キャッシュの読み取りがSSD全体に均等に分散されるようにしました。現在では、キャッシュの50%がディスク操作の50%を占めています。

キャッシュから移動するデータを決定するプロセス (キャッシュ エビクションと呼ばれるプロセス) を改善するために、Flashcache は、キャッシュ内の最も古いデータが最初に削除されて新しいデータのためのスペースが確保される FIFO (先入れ先出し) アルゴリズムから、最も長い期間要求されていないデータを破棄する LRU (最も長い間使われていない) アルゴリズムに切り替えました。

書き込み効率も向上しました。

以前は、ソフトウェアは書き込み可能なデータが一定量に達した場合にのみディスクに書き込みを行っていました。しかし、この方法ではキャッシュ間でパフォーマンスにばらつきが生じていました。そこでFacebookのエンジニアは、ユーザーからデータのコピーが要求されるたびにキャッシュデータをディスクに書き込む手法を開発し、書き込み操作の流れをスムーズにしました。

これらの改善により、更新されたキャッシュメカニズムの平均ヒット率(つまり、ユーザーが要求した情報のうちキャッシュに保存されている情報の割合)は、以前のバージョンの60%から80%に向上しました。つまり、より多くのデータがより迅速に提供されるということです。

ソフトウェアのアップデートにより、データの読み取りに必要なサーバーI/O(入出力)は40%削減され、データの書き込みに必要なI/Oは75%削減されました。数千台のサーバーを運用している企業にとって、このようなトラフィックの削減は、サーバーの効率的な利用とハードウェアコストの抑制に役立ちます。

Otpoo

Health writer and researcher with expertise in evidence-based medicine and healthcare information.