note
The technical report accompanying this work will become available in early March.
abstract
In an effort to improve scalability and client performance, the next
generation NFS protocol, NFS version 4 (NFSv4), introduces the use of both
read and write delegations on files. File delegations improve client
cache consistency and lock performance while reducing communication overhead for
common workloads. Major work has recently taken place to formulate a model
for read delegations on directories to enable more effective directory
caching. However, nothing has been done to characterize the behavior of
client workloads to assess the utility of directory delegations. We present
a flexible trace simulation framework for prototyping delegation models and
the policies that dictate granting delegations. We use the simulator to
measure directory delegation effectiveness and show that client performance
can be substantially improved even with a very simple directory delegation
model.
contributions made
Built a flexible trace-based NFS simulator.
- Simulates server and client behavior from passively captured NFSv3 traffic
- Good estimator for NFSv4 behavior because both protocols make a best-effort attempt to achieve cache consistency
- Can effortlessly plug in new delegation models
Provided detailed analysis of directory delegation behavior on common, publically available workloads.
- Found very large reductions in LOOKUPs in the presence of directory delegations
- Found that existing NFS clients cache directory metadata very poorly
- Gave highly detailed breakdowns of notification behavior based upon RFC drafted notification model
- Calculated the amount of notification volume that can be reduced by delaying delivery within a certain window of the notification being generated
current work
Drafting new RFC to incorporate directory delegations.
- Separating directory delegations and notifications
- Directory delegations should be visible to client, invisible to user
- Reuse file delegation infrastructure
- Build an OPENDIR operation into RFC to mirror v4.0 behavior on files.
- Directory notifications should be provided by client, visible to user
- Follow Saadia Khan's original proposal for GET_DIR_DELEGATION but with some modifications.
- Change GET_DIR_DELEGATION to GET_DIR_NOTIFICATION?
- Possibility of nixing file attribute change notifications?
Adding more parameters to delegation models.
- Cache size: How does reducing cache size affect the reduction of LOOKUPs?
- Grace period following a revocation: How long do we wait before we attempt to reacquire a delegation ticket? How does this affect the amount of roundtrip traffic?
Rewriting portions of the simulator.
- Porting from C++ to Python
- Making Pyrex wrappers for the core I/O routines
- Improving total turnaround time to simulate new granting policies and delegation models
contact
For more information on this work, please contact
bwickman@citi.umich.edu.