Processing interrupts
Character devices are mostly active at interrupt time
so distributing the interrupt handling
is important to improve both driver and system performance
on multiprocessor systems.
Otherwise, interrupts will arrive at the default processor
and all activity will take place on that processor.
There are two methods for spreading the interrupt processing
across CPUs:
-
On multiprocessor hardware that handles distributed interrupts,
register the driver as using distributed interrupts with the
idistributed(D3oddi)
function.
-
On multiprocessor hardware that does not handle distributed interrupts,
move the interrupt processing to an
poll(D2oddi)
routine that is called by the clock interrupt routine.
All CPUs see clock interrupts,
so moving processing to the driver's poll time
provides better scalability.
Careful structuring of locks and data structures will
avoid contention for critical resources at clock interrupt time
and therefore improve performance.
© 2005 The SCO Group, Inc. All rights reserved.