[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