public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Jason Gunthorpe
	<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
Cc: Yishai Hadas <yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
	majd-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
	talal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org
Subject: Re: [PATCH V4 libibverbs 2/7] Add member functions to poll an extended CQ
Date: Sun, 29 May 2016 19:47:54 -0400 (EDT)	[thread overview]
Message-ID: <8F7BC9E2-75EC-413B-BEBE-11450225AF06@redhat.com> (raw)
In-Reply-To: <20160529233009.GA12420-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>



Sent from my iPhone

> On May 29, 2016, at 7:30 PM, Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> wrote:
> 
>> On Sun, May 29, 2016 at 06:38:41PM -0400, Doug Ledford wrote:
>> 
>> So I've been busy with kernel stuff, but I don't really like this patch.
>> I'm not really enamored with the entire poll_ex API.
> 
> You should really read the whole prior discussion

If there's something in particular you'd like to point out, feel free. 

>> First, I don't like the start_poll/poll/end_poll setup.  I would rather
>> we do something like using refcounting on the WCs.  Maybe something like
>> returning an array of pointers to WCs where each WC already has a
>> ref
> 
> Refs? Yuk. That doesn't fit the typical use model, and refs
> involve more expensive locking per wc.

It doesn't have to be refs. If I recall correctly, the libmlx4 driver has to clear each cqe by changing the ownership status back to the hardware or something like that. The release could just as easily be setting that ownership on the cqe.

>> When a cq is created by the driver, it is responsible for filling out
>> the offsets array (can be static if your driver only has one CQE
>> format,
> 
> *shrug* Careful benchmarking would have to prove if this is better or
> not.

Agreed.

> Based on Yishai's comments I expect it is not better, since I
> expect an offsets array to perform worse than the original bitmask
> thing.

The original bitmask version included a copy to an interim, variable struct.  The idea here is that the cqe is an opaque pointer directly to the hardware cqe. There would be no interim copies, just retrieving the desired data directly from the cqe. Maybe I should have called it a hcqe to be more clear. 

> Yishai's said this benchmarked better than the bitmask

I would totally expect that. The bitmap version had both a data copy and a variable struct requiring lots of branches.

> and equal to
> or better than today's versions..

Today's version has a data copy. What I'm suggesting here eliminates that entirely and all of the branches can be optimized away at compile time, leaving a load from a hot cache line of an offset value and then a direct load from that offset in the hcqe. I would think that because of the elimination of the data copy and the compile time elimination of branches, this has the potential to meet or exceed today's implementation. I would certainly like to see the numbers. 

> This is a whole picture optimization and the user side is only one
> part of the equation - the function pointer scheme is also optimizing
> the driver path quite heavily, which is why it is showing positively
> in benchmarks.

Passing an opaque hcqe pointer to the user and then only getting the data they want out of it should similarly help optimize the driver's path I would think.--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2016-05-29 23:47 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-29 14:51 [PATCH V4 libibverbs 0/7] Completion timestamping Yishai Hadas
     [not found] ` <1464533475-18949-1-git-send-email-yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-05-29 14:51   ` [PATCH V4 libibverbs 1/7] Add support for extended creating CQ verb Yishai Hadas
2016-05-29 14:51   ` [PATCH V4 libibverbs 2/7] Add member functions to poll an extended CQ Yishai Hadas
     [not found]     ` <1464533475-18949-3-git-send-email-yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-05-29 22:38       ` Doug Ledford
     [not found]         ` <574B6F71.9060808-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-05-29 23:30           ` Jason Gunthorpe
     [not found]             ` <20160529233009.GA12420-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-05-29 23:47               ` Doug Ledford [this message]
     [not found]                 ` <8F7BC9E2-75EC-413B-BEBE-11450225AF06-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-05-30  1:35                   ` Jason Gunthorpe
     [not found]                     ` <20160530013507.GA19230-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-05-30  3:39                       ` Doug Ledford
2016-05-31 17:46                       ` Hefty, Sean
     [not found]                         ` <1828884A29C6694DAF28B7E6B8A82373AB05CA6D-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-05-31 18:06                           ` Jason Gunthorpe
     [not found]                             ` <20160531180608.GA21834-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-05-31 19:48                               ` Hefty, Sean
2016-05-30  7:47                   ` Matan Barak
     [not found]                     ` <4958edf4-7296-26c9-4cbe-8fab45be11a3-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-05-30 10:01                       ` Yishai Hadas
     [not found]                     ` <4e8befc4-aec5-a17d-24ce-40ff97d345da@redhat.com>
     [not found]                       ` <4e8befc4-aec5-a17d-24ce-40ff97d345da-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-05-30 13:50                         ` Doug Ledford
     [not found]                           ` <8708a378-4c48-df98-86a4-d210bbe690b5-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-05-30 15:01                             ` Matan Barak (External)
     [not found]                               ` <ecdbec76-31cd-74e1-25b4-7d60c3fa2af0-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-05-30 17:05                                 ` Jason Gunthorpe
2016-05-29 14:51   ` [PATCH V4 libibverbs 3/7] Add timestamp_mask and hca_core_clock to ibv_query_device_ex Yishai Hadas
2016-05-29 14:51   ` [PATCH V4 libibverbs 4/7] Add completion timestamp to poll_cq Yishai Hadas
2016-05-29 14:51   ` [PATCH V4 libibverbs 5/7] Create a single threaded CQ Yishai Hadas
2016-05-29 14:51   ` [PATCH V4 libibverbs 6/7] Add a verb that queries real time values from the HCA Yishai Hadas
2016-05-29 14:51   ` [PATCH V4 libibverbs 7/7] Add timestamp support in rc_pingpong Yishai Hadas

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=8F7BC9E2-75EC-413B-BEBE-11450225AF06@redhat.com \
    --to=dledford-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=majd-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=talal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=yishaih-VPRAkNaXOzVWk0Htik3J/w@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox