OpenAFS CVS Commit: openafs/src/WINNT/afsd by jaltman
cvs@GRAND.CENTRAL.ORG
cvs@GRAND.CENTRAL.ORG
Thu, 28 Jun 2007 00:04:22 EDT
Update of /cvs/openafs/src/WINNT/afsd
In directory GRAND.CENTRAL.ORG:/home/jaltman/openafs/cvs-1-3/src/WINNT/afsd
Modified Files:
afsd_service.c cm_callback.c cm_callback.h cm_scache.c
cm_scache.h cm_server.c cm_server.h
Log Message:
DELTA windows-give-up-callbacks-20070627
AUTHOR jaltman@secure-endpoints.com
This large patch adds support for giving up callbacks in response to three
events:
1. power management suspend
2. power management shutdown
3. stat cache object recycling
The third item is submitted as a condition compilation if GIVE_UP_CALLBACKS
is defined. Properly handing callback give ups and the associated race
conditions with revokes and fetch status requests requires a great deal of
over head. The first attempt used one GiveUpCallBacks RPC for each callback
that was being dropped as the stat cache object was recycled. This resulted
in a 27% performance drop in the MIT stress test. The code that is being
committed maintains a callback give up list on each server object. The
callback is added to the list as the callbacks are dropped and then they
are sent to the server in bulk by the background daemon thread if the
server is known to be UP after a ping. Logic is added to the
EndCallbackRequest and CallbackRevoke operations to ensure that race
conditions are addressed. With all of this, there is a 17% performance drop
in the MIT stress test.
As a result, it is my conclusion that the client side costs associated with
optimizing the load on the server are simply too high. I am committing this
code to ensure that it is not lost. I will remove this support in the next
patch while leaving the support for giving up all callbacks in response
to suspend and shutdown events.
--- DELTA config follows ---
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/afsd_service.c 1.62 1.63
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_callback.c 1.55 1.56
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_callback.h 1.7 1.8
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_scache.c 1.72 1.73
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_scache.h 1.34 1.35
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_server.c 1.34 1.35
windows-give-up-callbacks-20070627 openafs/src/WINNT/afsd/cm_server.h 1.20 1.21