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]

Reply via email to