From: Julien Grall <julien@xen.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Jan Beulich" <JBeulich@suse.com>,
"Roger Pau Monné" <roger.pau@citrix.com>, "Wei Liu" <wl@xen.org>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Volodymyr Babchuk" <Volodymyr_Babchuk@epam.com>,
"Bertrand Marquis" <bertrand.marquis@arm.com>
Subject: Re: [PATCH 3/5] xen/sort: Switch to an extern inline implementation
Date: Fri, 12 Nov 2021 09:39:51 +0000 [thread overview]
Message-ID: <b3dd2e88-6b32-f066-1f6e-d638ade23826@xen.org> (raw)
In-Reply-To: <20211111175740.23480-4-andrew.cooper3@citrix.com>
Hi Andrew,
On 11/11/2021 17:57, Andrew Cooper wrote:
> There are exactly 3 callers of sort() in the hypervisor.
>
> Both arm callers pass in NULL for the swap function. While this might seem
> like an attractive option at first, it causes generic_swap() to be used which
> forced a byte-wise copy. Provide real swap functions which the compiler can
> optimise sensibly.
>
> Furthermore, use of function pointers in tight loops like that can be very bad
> for performance. Implement sort() as extern inline, so the optimiser can
> judge whether to inline things or not.
>
> On x86, the diffstat shows how much of a better job the compiler can do when
> it is able to see the cmp/swap implementations.
For completness, here the Arm bloat-o-meter:
add/remove: 0/5 grow/shrink: 2/0 up/down: 928/-660 (268)
Function old new delta
boot_fdt_info 640 1132 +492
register_mmio_handler 292 728 +436
u32_swap 20 - -20
generic_swap 40 - -40
cmp_mmio_handler 44 - -44
cmp_memory_node 44 - -44
sort 512 - -512
Total: Before=966915, After=967183, chg +0.03%
Cheers,
--
Julien Grall
next prev parent reply other threads:[~2021-11-12 9:40 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-11 17:57 [PATCH 0/5] xen: various function pointer cleanups Andrew Cooper
2021-11-11 17:57 ` [PATCH 1/5] xen/domain: Remove function pointers from domain pause helpers Andrew Cooper
2021-11-12 9:36 ` Julien Grall
2021-11-18 1:47 ` Andrew Cooper
2021-11-18 9:28 ` Julien Grall
2021-11-12 9:57 ` Jan Beulich
2021-11-17 23:31 ` Andrew Cooper
2021-11-15 10:13 ` Bertrand Marquis
2021-11-15 10:20 ` Jan Beulich
2021-11-15 10:23 ` Bertrand Marquis
2021-11-15 10:55 ` Jan Beulich
2021-11-15 11:23 ` Bertrand Marquis
2021-11-15 14:11 ` Julien Grall
2021-11-15 14:45 ` Bertrand Marquis
2021-11-16 0:41 ` Stefano Stabellini
2021-11-16 7:15 ` Jan Beulich
2021-11-11 17:57 ` [PATCH 2/5] xen/domain: Improve pirq handling Andrew Cooper
2021-11-12 10:16 ` Jan Beulich
2021-11-11 17:57 ` [PATCH 3/5] xen/sort: Switch to an extern inline implementation Andrew Cooper
2021-11-11 18:15 ` Julien Grall
2021-11-16 0:36 ` Stefano Stabellini
2021-11-16 0:41 ` Andrew Cooper
2021-12-17 15:56 ` Andrew Cooper
2021-12-17 16:15 ` Julien Grall
2021-11-12 9:39 ` Julien Grall [this message]
2021-11-12 10:25 ` Jan Beulich
2021-11-11 17:57 ` [PATCH 4/5] xen/wait: Remove indirect jump Andrew Cooper
2021-11-12 10:35 ` Jan Beulich
2021-11-11 17:57 ` [PATCH 5/5] x86/ioapic: Drop function pointers from __ioapic_{read,write}_entry() Andrew Cooper
2021-11-12 10:43 ` Jan Beulich
2021-11-18 0:32 ` Andrew Cooper
2021-11-18 9:06 ` Jan Beulich
2021-11-18 9:07 ` Jan Beulich
2021-11-18 17:33 ` Andrew Cooper
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=b3dd2e88-6b32-f066-1f6e-d638ade23826@xen.org \
--to=julien@xen.org \
--cc=JBeulich@suse.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=andrew.cooper3@citrix.com \
--cc=bertrand.marquis@arm.com \
--cc=roger.pau@citrix.com \
--cc=sstabellini@kernel.org \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.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.