From: Sagi Grimberg <sagig-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
To: Yann Droneaud <ydroneaud-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>,
Sagi Grimberg <sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH] IB/mlx5: Reduce mlx5_ib_wq cacheline bouncing
Date: Wed, 13 Jan 2016 10:44:12 +0200 [thread overview]
Message-ID: <56960E5C.5000607@dev.mellanox.co.il> (raw)
In-Reply-To: <1452609431.9500.24.camel-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>
> Hi,
Hi Yann,
>>
>> +/* Please don't let this exceed a single cacheline */
>
> Don't add a comment, add a compile time assert:
>
> BUILD_BUG_ON(sizeof(struct swr_ctx) <= L1_CACHE_BYTES);
Sure, I'll do that.
>> +struct swr_ctx {
>> + u64 wrid;
>> + u32 wr_data;
>> + struct wr_list w_list;
>> + u32 wqe_head;
>> + u8 rsvd[12];
>> +}__packed;
>> +
>
> Packing the structure might make some fields unaligned and, on some
> architecture, unaligned access are likely unwelcomed.
I manually align, so I can remove the packing...
> What about
>
> struct swr_ctx {
> u64 wrid;
> u32 wr_data;
> struct wr_list w_list;
> u32 wqe_head;
> } ____cacheline_aligned;
The reason why I didn't use cacheline_aligned is that in 64B cacheline
architectures I'll get padding to 64B while I can only padd to 32B. With
that I get the benefit of fetching 2 entries which is sorta like an
implicit prefetch (useful for the next post_send).
Do you know any annotation that can do this for me?
>> +struct rwr_ctx {
>> + u64 wrid;
>> +}__packed;
>> +
>> struct mlx5_ib_wq {
>> - u64 *wrid;
>> - u32 *wr_data;
>> - struct wr_list *w_list;
>> - unsigned *wqe_head;
>> + union {
>> + struct swr_ctx *swr_ctx;
>> + struct rwr_ctx *rwr_ctx;
>> + };
>> u16 unsig_count;
>
> Check the structure layout is the one you expect with pahole.
I did, given that I simply removed 3 pointers I get the same layout
(2B hole after unsig_count). The nice side effect of this is that
mlx5_ib_wq is now smaller than a 64B cacheline (reduced from 80B to
56B).
>> + qp->sq.swr_ctx = kcalloc(qp->sq.wqe_cnt, sizeof(*qp->sq.swr_ctx),
>> + GFP_KERNEL);
>> + qp->rq.rwr_ctx = kcalloc(qp->rq.wqe_cnt, sizeof(*qp->sq.rwr_ctx),
>> + GFP_KERNEL);
>>
>
> Anyway, I'm not sure about the alignment of the memory returned by
> kcalloc(), I should have known by the time but don't find time to
> figure how it's handled on various SL*B allocator implementation.
Can you explain why should I worry about the alignment of kcalloc
here?
--
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
next prev parent reply other threads:[~2016-01-13 8:44 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-12 10:32 [PATCH] IB/mlx5: Reduce mlx5_ib_wq cacheline bouncing Sagi Grimberg
[not found] ` <1452594732-9573-1-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-01-12 12:16 ` Or Gerlitz
[not found] ` <5694EEAA.3050600-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-01-12 14:44 ` Sagi Grimberg
[not found] ` <56951130.60802-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-01-12 14:53 ` Or Gerlitz
[not found] ` <56951375.1050704-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-01-12 14:58 ` Sagi Grimberg
[not found] ` <569514A5.1050705-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-01-12 15:05 ` Or Gerlitz
[not found] ` <56951634.5030307-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-01-12 15:09 ` Sagi Grimberg
2016-01-13 8:55 ` Or Gerlitz
2016-01-12 14:37 ` Yann Droneaud
[not found] ` <1452609431.9500.24.camel-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>
2016-01-13 8:44 ` Sagi Grimberg [this message]
[not found] ` <56960E5C.5000607-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-01-13 9:26 ` Yann Droneaud
[not found] ` <1452677194.9500.27.camel-RlY5vtjFyJ3QT0dZR+AlfA@public.gmane.org>
2016-01-13 9:37 ` Sagi Grimberg
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=56960E5C.5000607@dev.mellanox.co.il \
--to=sagig-ldsdmyg8hgv8yrgs2mwiifqbs+8scbdb@public.gmane.org \
--cc=leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=ydroneaud-RlY5vtjFyJ3QT0dZR+AlfA@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.