This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] RE: Rather slow time of Pin in Windows with GPL PV driver

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
Xen-devel mailing list
<Prev in Thread] Current Thread [Next in Thread>