Skip to main content

山椒の実

Willow: A User-Programmable SSD (Sudharsan Seshadri, Mark Gahagan, Sundaram Bhaskaran, Trevor Bunker, Arup De, Yanqin Jin, Yang Liu, and Steven Swanson, University of California, San Diego)

OSDI14の論文。

SSDが登場してから、いろんな処理をオフロードする試みがなされてきた。Atomic Operationやアロケーション、FSの権限チェックなど。だが実際のところこのような機能はSSDのベンダしか追加できないし、デバイス側がコードを信頼しなければならないという問題があった。まあそれは普通の話だよね。

それを解決するのがこのWillow。will allowでwillowらしい。これでサードパーティのプログラマが処理を追加できるようにした。4つ問題があって、そのうちの3つに重点している。残りの1つは既存研究がいくつかある。

RPCと呼んでいるが、NVMeとかInfiniBandみたいにリクエストキューとコンプリートキューを使って行き来するパターン。現状だとこれが最も性能が出るやり方なんだろうと思う。まあ当然だがFPGAでDMAを使っていたりする。プロセッサ(SPU=Storage Processor Units)はクロックも125MHzと単体性能はそれほど高くはないが、並列に動く。何台のSPUが載っているのかはちょっと分からないな…読み飛ばしたか…とにかく、モノはMIPSライクな命令セットで、MIPS版のgccでコードをコンパイルして使っているみたい。なるほど。

作ったアプリ6個と言っても、中身は至って普通のチョイスで、Base-IO(ブロックデバイスを提供), Direct-IO(直接アクセス), Atomic Write, KVS, Cache, FSの一部の機能のオフロードといったもの。このチョイスを見て単純に「つまらんな」と思ったよ。真面目な人達なんだろう、たぶん。まあでもKVSがギリギリ楽しめるか…

そのKVSはMemcacheDBというBerkeleyDBとMemcachedがつながったようなものをベースにして作りこんだようだ。まあでも常識の範囲内だな。もっとぶっ飛んだアプリを期待したのだが…。それぞれのアプリのコード量は700-1500行くらいとのこと。まーメモリも小さいから大したことはできないのかもしれないね。

リソースが許せばSQLiteとかgrepとかsedとかawkとかLispの処理系なんかを移植して動かしたいところだよなぁ。