All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Venkatesan, Venky" <venky.venkatesan-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: dev-VfR2kkLFssw@public.gmane.org
Subject: Re: [PATCH 0/2] dpdk: Allow for dynamic enablement of some isolated features
Date: Fri, 01 Aug 2014 07:26:09 -0700	[thread overview]
Message-ID: <53DBA381.7080400@intel.com> (raw)
In-Reply-To: <2601191342CEEE43887BDE71AB9772582134F31F-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>


On 8/1/2014 6:56 AM, Ananyev, Konstantin wrote:
>> From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Neil Horman
>> Sent: Friday, August 01, 2014 2:37 PM
>> To: Richardson, Bruce
>> Cc: dev-VfR2kkLFssw@public.gmane.org
>> Subject: Re: [dpdk-dev] [PATCH 0/2] dpdk: Allow for dynamic enablement of some isolated features
>>
>> On Thu, Jul 31, 2014 at 01:19:50PM -0700, Bruce Richardson wrote:
>>> On Thu, Jul 31, 2014 at 03:01:17PM -0400, Neil Horman wrote:
>>>> On Thu, Jul 31, 2014 at 11:36:32AM -0700, Bruce Richardson wrote:
>>>>> I think a good first step here that I can't see anyone objecting to is
>>>>> to enable the ixgbe driver to use the vector code path for a generic
>>>>> x86_64 build. I've run a quick test here, and changing "_mm_popcnt_u64"
>>>>> to "__builtin_popcountll" [and the include from nmmintrin to tmmintrin]
>>>>> allows a compile for machine type default, and testpmd can still forward
>>>>> packets at a good rate (roughly perf down about 10% vs native compile on
>>>>> SNB).
>>>>> The ACL is a tougher nut to crack, but anyone see any issues with that
>>>>> two-line change to ixgbe_rxtx_vec.c? [Neil, since you started the patch
>>>>> set thread, do you want to submit an official patch here, or would you prefer I
>>>>> do so?]
>>>>>
>>>> I'm happy to do so, Though 10% performance degradation vs. using the sse4.2
>>>> instructions in that path seems significant, isn't it? Given that performance
>>>> delta, it seems like it would still be preferable to have a path that used the
>>>> sse4.2 instructions when they're available.  Or am I misreading what you mean
>>>> when you say down 10%
>>>>
>>>> Neil
>>>>
>>> Ok, I did a little bit more testing here. Using the vector pmd compiled
>>> for generic x86_64 and using __builtin_popcountll is approx 35% faster
>>> for packet IO than the existing fast-path functions. It is also 7% (a
>>> bit lower than ~10% as I originally stated) slower than the existing
>>> native-compiled vpmd on a Sandy Bridge platform.
>>>
>>> I then ran an extra test, using EXTRA_CFLAGS='-msse4.2' to turn on the
>>> extra instructions. The ~7% performance drop went to ~3%, so we would
>>> gain a little more with using SSE4.2, but compared to the gain from
>>> having the vector driver at all, it's not that much. [I don't have a
>>> system handy with AVX2 support to see what boosts might come from
>>> compiling with that instruction set enabled.]
>>>
>>> Because of this, I'd take the ~35% speed boost for now, and try and find
>>> what would be the best general way to solve this problem across all
>>> libraries. Also, I think that anyone who needs that extra 4% performance
>>> probably wants the other 3% too, and so will compile up the code from
>>> source using the "native" compilation target. :-)
So if I read this right, the fast path scalar to the new "generic" 
vector implementation is 35%? That's is a bit higher than anticipated, 
but great!! One caution - we should probably get a performance read on 
Atom cores before we remove the scalar fast path completely.
>>
>> Wait a moment, I'm not entirely sure what you did here.  I understand that you
>> replaced the _mm_popcnt_u64 call in the ixgbe pmd vector receive path with
>> __builtin_popcnt, which is good, but ixgbe also uses the __mm_shuffle_epi8
>> intrinsic which is only available with sse4.2 from what I can see. did you
>> replace those calls with a __builtin_shuffle variant?  Otherwise, how did you
>> get the pmd to build?  I'm asking because this is what I tried in the first pass
>> and Konstantin gave some pretty convicing evidence that this was an unworkable
>> solution:
>> http://dpdk.org/ml/archives/dev/2014-July/004443.html
>>
> I think that _mm_shuffle_epi8 (PSHUFB) is available starting from SSE3.
> So I presume, there is no need for replacement.
> Konstantin

The change is really to keep the __mm_shuffle_epi8 and replace the 
_mm_popcnt_u64 with the builtin variant. That should allow compilation 
all the way up from SSSE3.

  parent reply	other threads:[~2014-08-01 14:26 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-29 20:24 [PATCH 0/2] dpdk: Allow for dynamic enablement of some isolated features Neil Horman
     [not found] ` <1406665466-29654-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-07-29 20:24   ` [PATCH 1/2] ixgbe: test sse4.2 support at runtime for vectorized receive operations Neil Horman
2014-07-29 20:24   ` [PATCH 2/2] acl: Preform dynamic sse4.2 support check Neil Horman
2014-07-30 12:07   ` [PATCH 0/2] dpdk: Allow for dynamic enablement of some isolated features Ananyev, Konstantin
     [not found]     ` <2601191342CEEE43887BDE71AB97725821345777-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-07-30 13:01       ` Neil Horman
     [not found]         ` <20140730130109.GA19737-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-07-30 13:44           ` Ananyev, Konstantin
2014-07-30 14:49   ` [PATCH v2 " Neil Horman
     [not found]     ` <1406731769-18523-1-git-send-email-nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-07-30 14:49       ` [PATCH v2 1/2] ixgbe: test sse4.2 support at runtime for vectorized receive operations Neil Horman
2014-07-30 14:49       ` [PATCH v2 2/2] acl: Preform dynamic sse4.2 support check Neil Horman
2014-07-30 15:36       ` [PATCH v2 0/2] dpdk: Allow for dynamic enablement of some isolated features Ananyev, Konstantin
2014-07-30 19:03       ` Venky Venkatesan
     [not found]         ` <53D9418A.5020308-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-07-30 19:17           ` Neil Horman
2014-07-30 19:34           ` Neil Horman
2014-07-30 18:59   ` [PATCH " Bruce Richardson
     [not found]     ` <20140730185902.GA6420-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-07-30 19:28       ` Neil Horman
     [not found]         ` <20140730192844.GB3296-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-07-30 21:09           ` Bruce Richardson
     [not found]             ` <20140730210920.GB6420-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-07-31  9:30               ` Thomas Monjalon
2014-07-31 11:36               ` Ananyev, Konstantin
2014-07-31 13:13               ` Neil Horman
     [not found]                 ` <20140731131351.GA20718-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-07-31 13:26                   ` Thomas Monjalon
2014-07-31 14:32                     ` Neil Horman
     [not found]                       ` <20140731143228.GB20718-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-07-31 18:10                         ` Neil Horman
     [not found]                           ` <20140731181032.GC20718-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-07-31 18:36                             ` Bruce Richardson
     [not found]                               ` <20140731183631.GC6420-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-07-31 19:01                                 ` Neil Horman
     [not found]                                   ` <20140731190117.GD20718-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-07-31 20:19                                     ` Bruce Richardson
     [not found]                                       ` <20140731201949.GA28495-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-08-01 13:36                                         ` Neil Horman
     [not found]                                           ` <20140801133655.GA31979-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-08-01 13:56                                             ` Ananyev, Konstantin
     [not found]                                               ` <2601191342CEEE43887BDE71AB9772582134F31F-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-08-01 14:26                                                 ` Venkatesan, Venky [this message]
2014-08-01 14:27                                                 ` Neil Horman
2014-07-31 19:58                                 ` John W. Linville
     [not found]                                   ` <20140731195829.GG17560-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-07-31 20:20                                     ` Bruce Richardson
     [not found]                                       ` <20140731202042.GB28495-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-07-31 20:32                                         ` John W. Linville
     [not found]                                           ` <20140731203200.GH17560-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
2014-08-01  8:46                                             ` Vincent JARDIN
     [not found]                                               ` <53DB53E9.6040004-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-08-01 14:06                                                 ` Neil Horman
     [not found]                                                   ` <20140801140654.GB31979-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-08-01 14:57                                                     ` Vincent JARDIN
     [not found]                                                       ` <53DBAAF4.4030608-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-08-01 15:19                                                         ` Neil Horman
2014-07-31 20:10                                 ` Neil Horman
     [not found]                                   ` <20140731201018.GE20718-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-07-31 20:25                                     ` Bruce Richardson
     [not found]                                       ` <20140731202506.GC28495-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-08-01 15:06                                         ` Neil Horman
     [not found]                                           ` <20140801150629.GD31979-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-08-01 19:22                                             ` Bruce Richardson
     [not found]                                               ` <20140801192221.GE28495-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-08-01 20:43                                                 ` Neil Horman
     [not found]                                                   ` <20140801204352.GF31979-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-08-01 21:08                                                     ` Bruce Richardson
     [not found]                                                       ` <20140801210821.GF28495-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-08-02 12:56                                                         ` Neil Horman
2014-07-31 21:53                             ` Thomas Monjalon
2014-07-31 21:25                         ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53DBA381.7080400@intel.com \
    --to=venky.venkatesan-ral2jqcrhueavxtiumwx3w@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.