From: liuj97@gmail.com (Jiang Liu)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFT PATCH v1 0/7] enable FPSIMD lazy save and restore for arm64
Date: Fri, 27 Sep 2013 23:20:15 +0800 [thread overview]
Message-ID: <5245A22F.7020305@gmail.com> (raw)
In-Reply-To: <20130927112332.GD9520@mudshark.cambridge.arm.com>
On 09/27/2013 07:23 PM, Will Deacon wrote:
> On Fri, Sep 27, 2013 at 11:50:46AM +0100, Catalin Marinas wrote:
>> On Fri, Sep 27, 2013 at 09:04:40AM +0100, Jiang Liu wrote:
>>> From: Jiang Liu <jiang.liu@huawei.com>
>>>
>>> This patchset enables FPSIMD lazy save and restore for ARM64, you could
>>> apply it against v3.12-rc2.
>>>
>>> We have done basic functional tests on ARM fast model, but still lack
>>> of detail performance benchmark on real hardware platforms. We would
>>> appreciate if you could help to test it on really hardware platforms!
>>
>> That's my issue as well, I would like to see some benchmarks before
>> merging such patches.
>
> Furthermore, with GCC's register allocator starting to use vector registers to
> optimise *integer* code instead of spilling to the stack, it's going to become
> more and more common to tasks to have live FP state at context switch. Lazy
> switching might simply introduce overhead in the form of additional trapping.
>
> Will
>
Hi Will,
The patchset actually includes three optimizations.
The first one uses PF_USED_MATH to track whether the thread has
accessed FPSIMD registers since it has been created. If the thread
hasn't accessed FPSIMD registers since it's birth, we don't need to
save and restore FPSIMD context on thread context switching.
The second one uses a percpu variable to track the owner of the
FPSIMD hardware. When switching a thread, if it's the owner of
the FPSIMD hardware, we don't need to load FPSIMD registers again.
This is useful when context switching between user thread and
kernel(idle) threads.
The third one disable access to FPSIMD registers when switching a
thread. When the thread tries to access FPSIMD registers the first
time since it has been switched in, an exception is raised and then
we will load FPSIMD context onto hardware.
The overhead (penalty) of the first and second optimizations is
relatively small, so we could always enable them. The overhead
of the third one is relatively high and the optimization effect
depends on many factors, such as workload, glibc etc. So we
provide a kernel boot option "eagerfpu" to enable/disable the
third optimization.
So what's your thought about the first and second optimizations?
Should we always enable them? I do need to do some benchmark for
this, but still lack of hardware.
Thanks!
Gerry
next prev parent reply other threads:[~2013-09-27 15:20 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-27 8:04 [RFT PATCH v1 0/7] enable FPSIMD lazy save and restore for arm64 Jiang Liu
2013-09-27 8:04 ` [RFT PATCH v1 1/7] arm64: fix possible invalid FPSIMD initialization state Jiang Liu
2013-09-27 10:59 ` Catalin Marinas
2013-09-27 8:04 ` [RFT PATCH v1 2/7] arm64: restore FPSIMD to default state for kernel and signal contexts Jiang Liu
2013-09-27 11:35 ` Catalin Marinas
2013-09-27 13:20 ` Jiang Liu
2013-09-27 8:04 ` [RFT PATCH v1 3/7] arm64: implement basic lazy save and restore for FPSIMD registers Jiang Liu
2013-09-27 8:04 ` [RFT PATCH v1 4/7] arm64: provide boot option "eagerfpu" to control FPSIMD restore policy Jiang Liu
2013-09-27 8:04 ` [RFT PATCH v1 5/7] arm64: reuse FPSIMD hardware context if possible Jiang Liu
2013-09-27 8:04 ` [RFT PATCH v1 6/7] amd64: avoid saving and restoring FPSIMD registers until threads access them Jiang Liu
2013-09-27 10:59 ` Will Deacon
2013-09-27 14:20 ` Jiang Liu
2013-09-30 9:34 ` Will Deacon
2013-09-27 8:04 ` [RFT PATCH v1 7/7] arm64: disable lazy load if FPSIMD registers are frequently used Jiang Liu
2013-09-27 10:50 ` [RFT PATCH v1 0/7] enable FPSIMD lazy save and restore for arm64 Catalin Marinas
2013-09-27 11:23 ` Will Deacon
2013-09-27 15:20 ` Jiang Liu [this message]
2013-09-27 16:16 ` Catalin Marinas
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=5245A22F.7020305@gmail.com \
--to=liuj97@gmail.com \
--cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).