In the book of "Solaris 10 and OpenSolaris Kernel Architecture", it said:

the squeue is a common FIFO for both inbound and outbound packets, and only
one thread is allowed to process it at any given time. As such, the per-CPU
backlog is easy to figure out. If packets are queued, the squeue can switch
the NIC associated with it from interrupt to polling mode.

How can I know which mode the network card is currently using?

Suppose the network card is bound to cpu 7, when working in interrupt mode,
only cpu 7 will process the network data, so if cpu 7 is 100% used, and all
other cpus are idle, the sever still has to problem to get/send data to
client, right? And if work in polling mode, is it possible to use all cpu to
get/send data?

And is it possible to use dtrace to measure the latency because of the cpu
is busy to handle network data? e.g,  data were send from client at t1, and
the data was first queued in t2 and then it processed by cpu at t3. Can we
measure t2-t1 and t3-t1 using dtrace?

# echo ::interrupts -d | mdb -k
IRQ  Vector IPL Bus   Type  CPU Share APIC/INT# Driver Name(s)
4    0xb0   12  ISA   Fixed 4   1     0x0/0x4   asy#0
....
21   0x42   5   PCI   Fixed 6   2     0x0/0x15  nv_sata#1, ohci#0
*22   0x60   6   PCI   Fixed 7   2     0x0/0x16  nv_sata#2, nge#0*
....
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to