[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] RE: Rather slow time of Pin in Windows with GPL PVdriver
> > 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |