[OpenAFS-devel] Solaris 10 predicament update

Dale Ghent daleg@umbc.edu
Tue, 11 Sep 2007 08:23:13 -0400


On Sep 8, 2007, at 7:46 PM, Dale Ghent wrote:

> 2) Option 2 would be to use the above mentioned ioctl-based method,  
> but to remove it entirely from the critical code path. We could, at  
> AFSinit() time, create a worker thread which would periodically  
> update a global struct of interface telemetry. The worker thread  
> would wake up every, say, 30 seconds (tunable), lock the struct via  
> mutex, update it, unlock, and return to sleep. The RX and  
> ServerPredfs code can read their desired values from this struct  
> when they need it, spinning if need be.

FWIW, I've committed my own time and  work towards this method since  
we could also see at least a slight performance increase over current  
code because we're not walking interface lists for every packet.

So, the ioctl method I described, and the worker thread is actually a  
Solaris task queue. See the ddi_taskq_create man page for details on  
that.

So far, my implementation uses Public interfaces. I'm desperately  
trying to keep away from Solaris's, err, Privates.

/dale

--
Dale Ghent
Specialist, Storage and UNIX Systems
UMBC - Office of Information Technology
ECS 201 - x51705