研究者らはキャッシュへのデータの保存とアクセスについての大規模研究を実施し、これを最適化する技術「Segcache」を開発しました。研究論文はUSENIXシンポジウムで発表され、最高論文賞を受賞しています。
Segcacheの導入で、Twitter実行時のキャッシュ効率が最大60%向上する可能性があるとのことです。
2つの手法でDRAMキャッシュを最適化
個人用パソコンと同様にサーバーも、データは主にハードドライブ(HDDやSSD)かメモリ(DRAM)に保存されます。一時的保存スペースとして機能するDRAMは、データが素早く取り出せることから、モダンなWebアプリはDRAMキャッシュの利用をうまく設計に組み込んでいます。Twitterでは、タイムラインに表示されるツイートの取得時にDRAMキャッシュを利用しているようです。ただ、DRAMは容量が限られているとの課題も。Segcacheは、DRAMキャッシュを有効活用するための技術で、主に2つの手法が適用されているようです。
期限切れのオブジェクトを効率的に識別して削除
既存のシステムでは、ツイートとセットで大量のメタデータが保存される仕様となっていましたが、Segcacheでは類似のオブジェクトをグループ化。メタデータを共有することでオーバーヘッドを削減しています。また、キャッシュには有効期限が設けられていますが、期限切れのオブジェクトが残っていたり、頻繁にスキャンしてこれを見つけようとすればオーバーヘッドが生じることに。Segcacheではシステムを再設計して、期限切れのオブジェクトをより効率的に識別し、削除しているようです。
Twitterはすでに、Segcacheを本番システムに組み込もうと取り組んでいて、近々Twitterがよりサクサク利用できるようになるかもしれません。
参照元:Research by CMU, Twitter Could Improve Cache Efficiency by 60%/ Carnegie Mellon University
Segcache: a memory-efficient and scalable in-memory key-value cache for small objects/ USENIX
(文・山田洋路)