Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1271898 > unrolled thread
| Started by | Sagi Grimberg <sagig@dev.mellanox.co.il> |
|---|---|
| First post | 2015-11-18 09:00 +0100 |
| Last post | 2015-11-22 18:00 +0100 |
| Articles | 8 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH 2/9] IB: add a proper completion queue abstraction Sagi Grimberg <sagig@dev.mellanox.co.il> - 2015-11-18 09:00 +0100
Re: [PATCH 2/9] IB: add a proper completion queue abstraction Christoph Hellwig <hch@lst.de> - 2015-11-20 11:20 +0100
Re: [PATCH 2/9] IB: add a proper completion queue abstraction Sagi Grimberg <sagig@dev.mellanox.co.il> - 2015-11-22 11:00 +0100
Re: [PATCH 2/9] IB: add a proper completion queue abstraction Christoph Hellwig <hch@lst.de> - 2015-11-22 11:20 +0100
Re: [PATCH 2/9] IB: add a proper completion queue abstraction Sagi Grimberg <sagig@dev.mellanox.co.il> - 2015-11-22 11:40 +0100
Re: [PATCH 2/9] IB: add a proper completion queue abstraction Christoph Hellwig <hch@lst.de> - 2015-11-22 14:30 +0100
Re: [PATCH 2/9] IB: add a proper completion queue abstraction Sagi Grimberg <sagig@dev.mellanox.co.il> - 2015-11-22 16:00 +0100
Re: [PATCH 2/9] IB: add a proper completion queue abstraction Bart Van Assche <bvanassche@acm.org> - 2015-11-22 18:00 +0100
| From | Sagi Grimberg <sagig@dev.mellanox.co.il> |
|---|---|
| Date | 2015-11-18 09:00 +0100 |
| Subject | Re: [PATCH 2/9] IB: add a proper completion queue abstraction |
| Message-ID | <qw5ON-8o2-1@gated-at.bofh.it> |
Hi Bart,
>> + */
>> +void ib_process_cq_direct(struct ib_cq *cq)
>> +{
>> + WARN_ON_ONCE(cq->poll_ctx != IB_POLL_DIRECT);
>> +
>> + __ib_process_cq(cq, INT_MAX);
>> +}
>> +EXPORT_SYMBOL(ib_process_cq_direct);
>
> My proposal is to drop this function and to export __ib_process_cq()
> instead (with or without renaming). That will allow callers of this
> function to compare the poll budget with the number of completions that
> have been processed and use that information to decide whether or not to
> call this function again.
I agree with that.
>
>> +static void ib_cq_poll_work(struct work_struct *work)
>> +{
>> + struct ib_cq *cq = container_of(work, struct ib_cq, work);
>> + int completed;
>> +
>> + completed = __ib_process_cq(cq, IB_POLL_BUDGET_WORKQUEUE);
>> + if (completed >= IB_POLL_BUDGET_WORKQUEUE ||
>> + ib_req_notify_cq(cq, IB_POLL_FLAGS) > 0)
>> + queue_work(ib_comp_wq, &cq->work);
>> +}
>> +
>> +static void ib_cq_completion_workqueue(struct ib_cq *cq, void *private)
>> +{
>> + queue_work(ib_comp_wq, &cq->work);
>> +}
>
> The above code will cause all polling to occur on the context of the CPU
> that received the completion interrupt. This approach is not powerful
> enough. For certain workloads throughput is higher if work completions
> are processed by another CPU core on the same CPU socket. Has it been
> considered to make the CPU core on which work completions are processed
> configurable ?
The workqueue is unbound. This means that the functionality you are
you are asking for exists.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2015-11-20 11:20 +0100 |
| Message-ID | <qwQXo-5SQ-11@gated-at.bofh.it> |
| In reply to | #1271898 |
On Wed, Nov 18, 2015 at 10:20:14AM -0800, Bart Van Assche wrote: > Are you perhaps referring to the sysfs CPU mask that allows to control > workqueue affinity ? I think he is referring to the defintion of WQ_UNBOUND: WQ_UNBOUND Work items queued to an unbound wq are served by the special woker-pools which host workers which are not bound to any specific CPU. This makes the wq behave as a simple execution context provider without concurrency management. The unbound worker-pools try to start execution of work items as soon as possible. Unbound wq sacrifices locality but is useful for the following cases. * Wide fluctuation in the concurrency level requirement is expected and using bound wq may end up creating large number of mostly unused workers across different CPUs as the issuer hops through different CPUs. * Long running CPU intensive workloads which can be better managed by the system scheduler. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Sagi Grimberg <sagig@dev.mellanox.co.il> |
|---|---|
| Date | 2015-11-22 11:00 +0100 |
| Message-ID | <qxzB8-1WF-11@gated-at.bofh.it> |
| In reply to | #1273934 |
> Hello Christoph, > > The comment about locality in the above quote is interesting. How about > modifying patch 2/9 as indicated below ? The modification below does not > change the behavior of this patch if ib_cq.w.cpu is not modified. And it > allows users who care about locality and who want to skip the scheduler > overhead by setting ib_cq.w.cpu to the index of the CPU they want the > work to be processed on. That sounds acceptable... -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2015-11-22 11:20 +0100 |
| Message-ID | <qxzUu-2li-13@gated-at.bofh.it> |
| In reply to | #1274836 |
On Sun, Nov 22, 2015 at 11:51:13AM +0200, Sagi Grimberg wrote: > >> Hello Christoph, >> >> The comment about locality in the above quote is interesting. How about >> modifying patch 2/9 as indicated below ? The modification below does not >> change the behavior of this patch if ib_cq.w.cpu is not modified. And it >> allows users who care about locality and who want to skip the scheduler >> overhead by setting ib_cq.w.cpu to the index of the CPU they want the >> work to be processed on. > > That sounds acceptable... Wouldn't it be a better idea to set the WQ_SYSFS interface and use the standard sysfs interface for specifying cpumasks or node affinity? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Sagi Grimberg <sagig@dev.mellanox.co.il> |
|---|---|
| Date | 2015-11-22 11:40 +0100 |
| Message-ID | <qxAdP-2sv-11@gated-at.bofh.it> |
| In reply to | #1274840 |
> Wouldn't it be a better idea to set the WQ_SYSFS interface and use > the standard sysfs interface for specifying cpumasks or node affinity? I think that bart wants to allow the caller to select cpu affinity per CQ. In this case ib_alloc_cq in workqueue mode would need to accept a affinity_hint from the caller (default to wild-card WORK_CPU_UNBOUND). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2015-11-22 14:30 +0100 |
| Message-ID | <qxCSl-4ke-1@gated-at.bofh.it> |
| In reply to | #1274844 |
On Sun, Nov 22, 2015 at 12:36:00PM +0200, Sagi Grimberg wrote: > >> Wouldn't it be a better idea to set the WQ_SYSFS interface and use >> the standard sysfs interface for specifying cpumasks or node affinity? > > I think that bart wants to allow the caller to select cpu affinity > per CQ. In this case ib_alloc_cq in workqueue mode would need to > accept a affinity_hint from the caller (default to wild-card > WORK_CPU_UNBOUND). Hmm, true. How would be set that hint from userspace? I'd really prefer to see a practical justification for it first. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Sagi Grimberg <sagig@dev.mellanox.co.il> |
|---|---|
| Date | 2015-11-22 16:00 +0100 |
| Message-ID | <qxEhr-5cd-3@gated-at.bofh.it> |
| In reply to | #1274865 |
>> >> I think that bart wants to allow the caller to select cpu affinity >> per CQ. In this case ib_alloc_cq in workqueue mode would need to >> accept a affinity_hint from the caller (default to wild-card >> WORK_CPU_UNBOUND). > > Hmm, true. How would be set that hint from userspace? I'd really prefer > to see a practical justification for it first. In order to assign CPUs from user-space we'd need an ethtool like interface for isert/srpt/<xxxt>. Given that this is something we don't want to get into right now, I assumed that Bart meant that srpt would take a "least used" approach from srpt driver (which isn't better taking the wild-card option I'd say), So I'll let Bart answer... -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Bart Van Assche <bvanassche@acm.org> |
|---|---|
| Date | 2015-11-22 18:00 +0100 |
| Message-ID | <qxG9A-6uV-7@gated-at.bofh.it> |
| In reply to | #1274888 |
On 11/22/15 06:57, Sagi Grimberg wrote: >>> I think that bart wants to allow the caller to select cpu affinity >>> per CQ. In this case ib_alloc_cq in workqueue mode would need to >>> accept a affinity_hint from the caller (default to wild-card >>> WORK_CPU_UNBOUND). >> >> Hmm, true. How would be set that hint from userspace? I'd really prefer >> to see a practical justification for it first. > > In order to assign CPUs from user-space we'd need an ethtool like > interface for isert/srpt/<xxxt>. Given that this is something we don't > want to get into right now, I assumed that Bart meant that srpt > would take a "least used" approach from srpt driver (which isn't better > taking the wild-card option I'd say), So I'll let Bart answer... Hello Christoph and Sagi, My intention is indeed to allow to control CPU affinity per CQ. One use case is to implement a least-used policy in RDMA drivers that use multiple completion queues. Another use case is to make CPU affinity configurable from user space through something similar to ethtool or via sysfs. Bart. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web