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


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

To: "MaoXiaoyun" <tinnycloud@xxxxxxxxxxx>, <paul.durrant@xxxxxxxxxx>
Subject: RE: [Xen-devel] RE: Rather slow time of Pin in Windows with GPL PVdriver
From: "James Harper" <james.harper@xxxxxxxxxxxxxxxx>
Date: Mon, 14 Mar 2011 11:45:46 +1100
Cc: xen devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Sun, 13 Mar 2011 17:46:44 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <BLU157-w6170D9B9C6DC4E4CF04C2FDAC90@xxxxxxx>, <D271C3A4-9B27-4E08-A92A-D55A811736EC@xxxxxxxxxxxxxxxx><BLU157-w82233DE21FFA3AC07FCC3DAC90@xxxxxxx>, <AEC6C66638C05B468B556EA548C1A77D01C55DCB@trantor><BLU157-w58A3CAD3FBB61D96ABE7CCDAC90@xxxxxxx>, <AEC6C66638C05B468B556EA548C1A77D01C55DCF@trantor><BLU157-w54789B64D3FF1F57924AD2DAC80@xxxxxxx>, <AEC6C66638C05B468B556EA548C1A77D01C55E87@trantor>, <291EDFCB1E9E224A99088639C47620228E936E1A88@xxxxxxxxxxxxxxxxxxxxxxxxx>, <AEC6C66638C05B468B556EA548C1A77D01C55E8E@trantor>, <291EDFCB1E9E224A99088639C47620228E936E1A9A@xxxxxxxxxxxxxxxxxxxxxxxxx>, <AEC6C66638C05B468B556EA548C1A77D01C55E91@trantor>, <291EDFCB1E9E224A99088639C47620228E936E1AA0@xxxxxxxxxxxxxxxxxxxxxxxxx> <BLU157-w40A631DA58C4F38FA6AC09DACB0@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcvfqqfblFGOyE2AQHGuXl5MVRnf/gBYJvCwADRlfKA=
Thread-topic: [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
> 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.


Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>