カーネギーメロン大学の研究者は、Twitter社とのコラボによりTwitterの実行速度を上げようと取り組んでいるようです。
研究者らはキャッシュへのデータの保存とアクセスについての大規模研究を実施し、これを最適化する技術「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
(文・山田洋路)