AdinaKalin writes: > I'd like to better understand ipforwarding scalability mechanism on CMT > servers. > I understand that it's the role of squeue to switch a NIC from interrupt > mode to polling, to guaranty cpu affinity for a connection, to use all > the cores of a CMT server if the NIC is faster than the cpu. How the > mechanism works for ipforwarding ?
Squeues are associated with local connections. For forwarding, what normally happens is that the NIC itself is configured to interrupt a particular CPU, the driver handles the interrupt, and the driver's putnext() call or Nemo callback into IP transfers control into IP, which then does a call into the output driver. I'd expect CMT performance to depend on the ability of the hardware platform, NIC, and driver to take advantage of the CMT aspects of the machine, and less on IP's work. > If I'm pushing a STREAMS module after IP, how are ipforwarding > scalability and performance affected ? I don't think there's a simple answer to that question, other than saying that adding code tends to slow things down. If it's a Nemo interface, pushing a STREAMS module will disable any direct function call optimizations and may thus lower performance even if the module "does nothing." That effect doesn't exist for non-Nemo interfaces, but inserting a module typically does have a non-zero (and platform-dependent) penalty just for the function call overhead. If the STREAMS module uses MT perimeters, it may pin down or disable interrupt threads from making effective use of the machine. If the module is badly-written, it could be worse still. -- James Carlson, Solaris Networking <[EMAIL PROTECTED]> Sun Microsystems / 35 Network Drive 71.232W Vox +1 781 442 2084 MS UBUR02-212 / Burlington MA 01803-2757 42.496N Fax +1 781 442 1677 _______________________________________________ networking-discuss mailing list [email protected]
