[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [PATCH 6/6] Under conditions of high load, it was possible for xenvif to queue up very large numbers of packets before pushing them all upstream in one go. This was partially ameliorated by use of the NDIS_RECEIVE_FLAGS_RESOURCES flag.


  • To: "paul@xxxxxxx" <paul@xxxxxxx>, "win-pv-devel@xxxxxxxxxxxxxxxxxxxx" <win-pv-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Martin Harvey <martin.harvey@xxxxxxxxxx>
  • Date: Wed, 28 Jul 2021 12:48:08 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XhSSzWhvv6P5f4R2KfuROCDOwtVUnzhb/Txy4HtXqjU=; b=Jfeg7W/yZJlWh2qJlcgAESpaLId3EYs8Do4UkbRfr8XKQDhcPD2M9GJ9/8/5L4TcHSXn2BNr3Sk3ZanKP4wYCTY3uI2GHZbOrWZPRJPPGHBhjrDkro7PJTo8iw1XC5fta4BJ76JGlv80d5LBQxSou2473buMZC203kfhzkdiGLHidFWVQtBadxM5vKs9roUDnPddV1L+9MHWXN/8DFApLbnEYf0E19EZBtp2LuhZ4zuQcibHY9rOLCpEFPT0TWl47rLqgHw5rh0DJVjHzgB3HeDkOW3uryAr0PYWlrLQnGhKL9/CVQJ4dMW3+A3nET0+ef6OsQjhwvWmCeNws1cADw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cj+NAygMvM0HjdkWjik8NWOExSnOFmS0Sb0Breu2UOhEthjgU9GaG3pDOCJg/qCaDNhdc4LWBdrEEBAS7kAL3t4KOsOkFnjV25nq86ONlZJExoavSviGQZ8zSVknhY0Nf9ZoWNVuR9y3xSk9fOkQ6FeODPn19Nn+DlJGj/mazl0pXXSmLwcDt3ugRAchv2hTOnHwyMWYlV/PmLgjfB7tQWOX7CvScclsmVoN/yl8/IqoNsY4GQsI1fHIGN8bH9dXKOA1+J8bgNXIVTNZRnrr3sO1RAyGawaRzjWbNQRCAkZ60qJFlMsFvJXKCbRQOQFD3V0GUrD6k15VybkH/+VK1A==
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Delivery-date: Wed, 28 Jul 2021 12:48:22 +0000
  • Ironport-hdrordr: A9a23:uRrHvqol7MNjVcqrdD/v9xEaV5o4eYIsimQD101hICG9E/bo9P xG885w6faZslsssRIb+exoWpPvfZq0z/ccirX5W43PYOCMggqVxe9ZgrcLB1bbakjDHik379 YDT5RD
  • Ironport-sdr: TFzah+GWOgfoFrDtjTRqYbf1Trdn7o0MMwa4R5Ze/3QoiJjRUh99xpU/P8NanyYbZfcIdZlNPE iX8FN/7PYvNkAfNY3bFDNnhshLkjGTqsF3PqGJFEnrl0jGLXWkNn4yPjrRYWmM438NT07Zub4N s4s1yfCQhfKvnjOMRmIEmZJAL7+SFhz7i3AagfkOjy6AYANBT8WzY24KWwWWRXnGpSx1fD2C/M f4ixfKwOtXtY6LBz5doRcmAlc1PWBZWCbSx5yUjC1oecNmwwv7fyQk6zvEsqudsWntS4HY6luU 2vhiO2KCjEFtCzZ7KweprQUo
  • List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>
  • Thread-index: AQHXfWtk+tASUJTSVEWzWgTW/lHzzqtO86eAgAF5OeCAAECkgIAAFxbwgAdJ2QCAAFJ2MA==
  • Thread-topic: [PATCH 6/6] Under conditions of high load, it was possible for xenvif to queue up very large numbers of packets before pushing them all upstream in one go. This was partially ameliorated by use of the NDIS_RECEIVE_FLAGS_RESOURCES flag.


-----Original Message-----
From: Paul Durrant <xadimgnik@xxxxxxxxx> 
Sent: 28 July 2021 08:46
To: Martin Harvey <martin.harvey@xxxxxxxxxx>; win-pv-devel@xxxxxxxxxxxxxxxxxxxx
Subject: Re: [PATCH 6/6] Under conditions of high load, it was possible for 
xenvif to queue up very large numbers of packets before pushing them all 
upstream in one go. This was partially ameliorated by use of the 
NDIS_RECEIVE_FLAGS_RESOURCES flag.

> Well, we could do away with low resources and have NDIS take everything we 
> can throw at it, but some upper bound seems reasonable and it's an upper 
> bound in one place.

Yes, I agree that's the right thing to do.

> No, with a single DPC we don't have separate packet queue and packet 
> complete; that's the point.

OK, I see what you mean - you'd just go from ring to complete in one through 
step.

> - And if ring overflows, tough cookies.

> How does a ring overflow? If there's no space in the ring then netback has 
> nowhere to put stuff so it puts back-pressure on its queuing discipline; 
> which is pfifo by default but could be something that doesn't tail drop.

I should clarify I was assuming the thing upstream was dumb. Better to say, if 
things back up upstream, then tough cookies. That might involve tail drops or 
h/w throwaways somewhere.

> I would very much prefer that we don't band-aid the two-DPC approach if it is 
> not doing the right thing.

OK. Well I will have to go back and head-scratch for a bit. Perhaps the best 
way to proceed is:

- I resubmit these patches with your suggested changes except the last one, so 
I can get most of my upstreaming done.
- Consider how to rework the last one. General approach being to not use 
NDIS_FLAGS_RESOURCES but allow some fixed number of packets indicated up to 
NDIS (maybe configurable), as checked and enforced by XenNet. Then consider 
further re-work in XenVif eliminating the extra queue and DPC if possible, 
along with some interface changes to allow XenNet to indicate to XenVif when it 
is no longer possible to push packets up the stack. I will need to do a fair 
bit of internal testing.

MH.

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.