Caching for NASD

Chen Zhou, Wanli Yang

{chenzhou, wanli}@cs.wisc.edu

Abstract: NASD is a totally new storage system architecture, and puts some new requirements on data caching. The goal of this paper is to evaluate caching schemes on NASD. Basically caching could be done on server side, on client side or both sides, but only server side is NASD-aware, thus it is our focus. Trace-driven simulation is used to evaluate how efficiently different schemes work and how they interact with each other (server side and client side), and synthetic workload is used in simulation. First we presented a simple access model and several caching schemes for NASD, especially the cooperative 1 Chance caching scheme and its variations. Then trace-driven simulation is used to compare their performances on server side, and the results show the cooperative schemes always perform better. After that, both server side and client side caching are taken into consideration, and their interactions are discussed. The best caching configuration in our model turns out to be 1 Chance on server side and non-cooperative on client side. Some sensitivity experiments of our model are also carried out.

Whole paper available as: PDF

Source code available here. Basically, NASD.h and NASD.cpp define the server, client.h and client.cpp define the client, Manager.h and Manager.cpp define the manager, stat.h and stat.c is a statistic object, simu1.c has the main function, synthe2.c is the program to synthesize trace, others are some useful tools.