Willow: A User-Programmable SSD

We explore the potential of making programmability a central feature of the SSD interface. Our prototype system, called Willow, allows programmers to augment and extend the semantics of an SSD with application-specific features without compromising file system protections. The SSD Apps running on Willow give applications low-latency, high-bandwidth access to the SSD's contents while reducing the load that IO processing places on the host processor. The programming model for SSD Apps provides great flexibility, supports the concurrent execution of multiple SSD Apps in Willow, and supports the execution of trusted code in Willow. We demonstrate the effectiveness and flexibility of Willow by implementing six SSD Apps and measuring their performance. We find that defining SSD semantics in software is easy and beneficial, and that Willow makes it feasible for a wide range of IO-intensive applications to benefit from a customized SSD interface.

[1]  Sang-Won Lee,et al.  Fast, Energy Efficient Scan inside Flash Memory , 2011, ADMS@VLDB.

[2]  Prashant Malik,et al.  Cassandra: a decentralized structured storage system , 2010, OPSR.

[3]  Christos Faloutsos,et al.  Active Disks for Large-Scale Data Processing , 2001, Computer.

[4]  Hamid Pirahesh,et al.  ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging , 1998 .

[5]  Hans Christoph Zeidler,et al.  A Search Processor for Data Base Management Systems , 1978, VLDB.

[6]  Sanjay Ghemawat,et al.  MapReduce: Simplified Data Processing on Large Clusters , 2004, OSDI.

[7]  Michael M. Swift,et al.  FlashTier: a lightweight, consistent and durable storage cache , 2012, EuroSys '12.

[8]  Rajesh K. Gupta,et al.  Moneta: A High-Performance Storage Array Architecture for Next-Generation, Non-volatile Memories , 2010, 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture.

[9]  Lada A. Adamic,et al.  Zipf's law and the Internet , 2002, Glottometrics.

[10]  G. Jack Lipovski,et al.  CASSM: a cellular system for very large data bases , 1975, VLDB '75.

[11]  David J. DeWitt,et al.  Query processing on smart SSDs: opportunities and challenges , 2013, SIGMOD '13.

[12]  Jens Teubner,et al.  Data Processing on FPGAs , 2013, Proc. VLDB Endow..

[13]  Christina Freytag,et al.  The Definitive Guide To Mongodb The Nosql Database For Cloud And Desktop Computing , 2016 .

[14]  Lidong Zhou,et al.  Transactional Flash , 2008, OSDI.

[15]  Joel H. Saltz,et al.  Active disks: programming model, algorithms and evaluation , 1998, ASPLOS VIII.

[16]  David A. Patterson,et al.  A case for intelligent disks (IDISKs) , 1998, SGMD.

[17]  Peter Desnoyers,et al.  Active Flash: Out-of-core data analytics on flash storage , 2012, 012 IEEE 28th Symposium on Mass Storage Systems and Technologies (MSST).

[18]  Henry M. Levy,et al.  Capability-Based Computer Systems , 1984 .

[19]  Chyuan Shiun Lin,et al.  The design of a rotating associative memory for relational database applications , 1976, TODS.

[20]  David Flynn,et al.  DFS: A file system for virtualized flash storage , 2010, TOS.

[21]  Peter Desnoyers,et al.  Reducing Data Movement Costs Using Energy-Efficient, Active Computation on SSD , 2012, HotPower.

[22]  Chanik Park,et al.  Enabling cost-effective data processing with smart SSD , 2013, 2013 IEEE 29th Symposium on Mass Storage Systems and Technologies (MSST).

[23]  Margo I. Seltzer,et al.  Berkeley DB , 1999, USENIX Annual Technical Conference, FREENIX Track.

[24]  Kenneth C. Smith,et al.  RAP.2—An Associative Processor for Databases and Its Applications , 1979, IEEE Transactions on Computers.

[25]  Steven Swanson,et al.  Providing safe, user space access to fast, solid state disks , 2012, ASPLOS XVII.

[26]  Jian Xu,et al.  Bankshot: caching slow storage in fast non-volatile memory , 2013, INFLOW '13.

[27]  Vijayalakshmi Srinivasan,et al.  Enhancing lifetime and security of PCM-based Main Memory with Start-Gap Wear Leveling , 2009, 2009 42nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO).

[28]  Andrea C. Arpaci-Dusseau,et al.  De-indirection for flash-based SSDs with nameless writes , 2012, FAST.

[29]  Jens Teubner,et al.  FPGA: what's in it for a database? , 2009, SIGMOD Conference.

[30]  Dhabaleswar K. Panda,et al.  Beyond block I/O: Rethinking traditional storage primitives , 2011, 2011 IEEE 17th International Symposium on High Performance Computer Architecture.

[31]  J. Su,et al.  Proceedings of the twenty-eigth ACM SIGMOD-SIGACT-SIGART symposium on principles of database systems, PODS'09, Providence, Rhode Island, USA, June 29 - July 1, 2009 , 2009, SIGMOD 2009.

[32]  Scott Rixner,et al.  An efficient programmable 10 gigabit Ethernet network interface card , 2005, 11th International Symposium on High-Performance Computer Architecture.

[33]  Rajesh Gupta,et al.  From ARIES to MARS: transaction support for next-generation, solid-state drives , 2013, SOSP.

[34]  G. Jack Lipovski,et al.  The architecture of CASSM: A cellular system for non-numeric processing , 1973, ISCA '73.

[35]  Rolf Riesen,et al.  Experience in offloading protocol processing to a programmable NIC , 2002, Proceedings. IEEE International Conference on Cluster Computing.

[36]  Brian N. Bershad,et al.  SPINE: a safe programmable and integrated network environment , 1998, ACM SIGOPS European Workshop.

[37]  Krishnamurthi Kannan,et al.  The design of a mass memory for a database computer , 1978, ISCA '78.