It looks like KeSetTargetProcessorDpc(&xi->rx_dpc, 0) set the rx_dpc in VCPU0 only,
and in fact interrput for xennet are distributed across all VCPUS.
By using IntFiltr from http://support.microsoft.com/kb/252867
to set interrupt affinity to VCPU0 only, without KeSetTargetProcessorDpc
commentted, we get quite stable ping time too., which is less than 1ms
So I think this is the problem.
KeSetTargetProcessorDpc should be discard.
> Subject: RE: Rather slow time of Pin in Windows with GPL PV driver > Date: Wed, 9 Mar 2011 22:28:48 +1100 > From: james.harper@xxxxxxxxxxxxxxxx > To: tinnycloud@xxxxxxxxxxx > CC: xen-devel@xxxxxxxxxxxxxxxxxxx > > > I may try pin later, my host has 4 * 4 core CPU. > > > > Well, I just compare GPL and RHEL PV driver codes, I noticed most of > the net > > driver > > initialization is the same. Only one difference, in GPL code has the > code of > > KeSetTargetProcessorDpc(&xi->rx_dpc, 0); //in xennet_rx.c line 953 > > but the RHEL doesn't > > > > So I simply comments the code, recompile and did the test again. > > The result shows good, all ping time less than < 1ms. > > > > May it be the cause? Is it harmful to comments this line? > > Many thanks. > > > > At a guess I would say it
should be harmful to performance, but all the > critical code is protected by spinlocks. > > It could be a leftover from a previous version of GPLPV. In the current > version, the spinlock protected code is probably a little long winded > but is nothing compared to the passing down of packets to Windows that > is done in the DPC but outside the spinlock. > > Can you do some general performance tests with this change? > > Is the RHEL PV driver source publicly available? > > James
|