Do you mean if we discard KeSetTargetProcessorDpc(&xi->rx_dpc, 0) , the interrupts
will be processed across on different VCPUS, but will cause serious performance issue?
Where could I find the releated docs?
So actually we need do KeSetImportanceDpc(&xi->rx_dpc, HighImportance) to solve
ping problem. Though performance is not the best, but it should not decrease, right?
many thanks.
> Subject: RE: [Xen-devel] RE: Rather slow time of Pin in Windows with GPL PVdriver > Date: Mon, 14 Mar 2011 11:45:46 +1100 > From: james.harper@xxxxxxxxxxxxxxxx > To: tinnycloud@xxxxxxxxxxx; paul.durrant@xxxxxxxxxx > CC: xen-devel@xxxxxxxxxxxxxxxxxxx > > > > > I've just pushed a bit of a rewrite of the rx path in gplpv. It's not > > particularly well tested yet but I can't get it to crash. It should > scale much > > better with SMP too. I'm using more lock free data structures so the > lock's > > are held for much less time. > > > > Unfortunately performance still isn't good. What I've found is that NDIS > really does want you to only process packets on one CPU at one time (eg > CPU0), otherwise they are indicated to NDIS out of order causing serious > performance problems (according to the docs). >
> In addition to KeSetTargetProcessorDpc(&xi->rx_dpc, 0), we also need to > do KeSetImportanceDpc(&xi->rx_dpc, HighImportance) - as Paul stated, > which makes sure the DPC runs immediately even if it is triggered from > another CPU (I assume this has IPI overhead though). I think I could > detect >1 CPU's and schedule the rx and tx onto different CPU's to each > other, but always the same CPU. >
> Windows does support RSS which ensures per-connection in-order > processing of packets. From reading the "Receive-Side Scaling > Enhancements in Windows Server 2008" document, it appears that we would > need to hash various fields in the packet header and compute a CPU > number for that connection, then schedule the DPC onto that CPU. It > shouldn't be that hard except that xennet.sys is an NDIS5.1 driver, not > an NDIS6.0 driver, and in order to support NDIS6.0 I would need to > maintain two trees which I'm reluctant to do without a very good reason. > Other docs state the RSS is supported for Windows 2003 SP2 but I can't > find any specifics - I've asked the question on the ntdev list. > > James
|