tech-net archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
altq and multi-core processing
We've observed a series of unusual problems when we have enabled
mutli-core with two processors. We are using altq and pdf.
Perusing the altq code, I found this comment in altq_rmclass.c before
the function rmc_restart:
/*
* void
* rmc_restart() - is just a helper routine for rmc_delay_action -- it is
* called by the system timer code & is responsible checking if the
* class is still sleeping (it might have been restarted as a side
* effect of the queue scan on a packet arrival) and, if so, restarting
* output for the class. Inspecting the class state & restarting output
* require locking the class structure. In general the driver is
* responsible for locking but this is the only routine that is not
* called directly or indirectly from the interface driver so it has
* know about system locking conventions. Under bsd, locking is done
* by raising IPL to splnet so that's what's implemented here. On a
* different system this would probably need to be changed.
*
* Returns: NONE
*/
Note the last two sentences:
* Under bsd, locking is done
* by raising IPL to splnet so that's what's implemented here. On a
* different system this would probably need to be changed.
Looking through the altq code, there appears to be *no* locking done.
The only synchronization that appears to exist is calls to splnet.
While this will work on a single-processor system, I suspect some
of our unusual problems might be caused by contention in altq. I
haven't dug deep enough to say more than this.
Anybody have any experience with this?
-Bev
---
Beverly Schwartz
BBN Technologies
bschwart%bbn.com@localhost
Home |
Main Index |
Thread Index |
Old Index