From: Alexandre Chartre <alexandre.chartre@oracle.com>
To: Borislav Petkov <bp@alien8.de>
Cc: tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com,
x86@kernel.org, dave.hansen@linux.intel.com, luto@kernel.org,
peterz@infradead.org, linux-kernel@vger.kernel.org,
thomas.lendacky@amd.com, jroedel@suse.de, konrad.wilk@oracle.com,
jan.setjeeilers@oracle.com, junaids@google.com,
oweisse@google.com, rppt@linux.vnet.ibm.com, graf@amazon.de,
mgross@linux.intel.com, kuzuno@gmail.com,
Mel Gorman <mgorman@techsingularity.net>
Subject: Re: [RFC][PATCH v2 00/21] x86/pti: Defer CR3 switch to C code
Date: Wed, 18 Nov 2020 20:37:57 +0100 [thread overview]
Message-ID: <408004fa-b143-7e12-150a-0dfab12d34ee@oracle.com> (raw)
In-Reply-To: <20201118112952.GB7472@zn.tnic>
On 11/18/20 12:29 PM, Borislav Petkov wrote:
> On Wed, Nov 18, 2020 at 08:41:42AM +0100, Alexandre Chartre wrote:
>> Well, it looks like I wrongfully assume that KPTI was a well known performance
>> overhead since it was introduced (because it adds extra page-table switches),
>> but you are right I should be presenting my own numbers.
>
> Here's one recipe, courtesy of Mel:
>
> https://github.com/gormanm/mmtests
>
Thanks for the detailed information, I have run the test and I see the same difference
as with the tools/perf and libMICRO I already sent: there's a 150% difference for
getpid() with and without pti.
alex.
-----
# ../../compare-kernels.sh --baseline test-nopti --compare test-pti
poundsyscall
test test
nopti pti
Min 2 1.99 ( 0.00%) 5.08 (-155.28%)
Min 4 1.02 ( 0.00%) 2.60 (-154.90%)
Min 6 0.94 ( 0.00%) 2.07 (-120.21%)
Min 8 0.81 ( 0.00%) 1.60 ( -97.53%)
Min 12 0.85 ( 0.00%) 1.65 ( -94.12%)
Min 18 0.82 ( 0.00%) 1.61 ( -96.34%)
Min 24 0.81 ( 0.00%) 1.60 ( -97.53%)
Min 30 0.81 ( 0.00%) 1.60 ( -97.53%)
Min 32 0.81 ( 0.00%) 1.60 ( -97.53%)
Amean 2 2.02 ( 0.00%) 5.10 *-151.83%*
Amean 4 1.03 ( 0.00%) 2.61 *-151.98%*
Amean 6 0.96 ( 0.00%) 2.07 *-116.74%*
Amean 8 0.82 ( 0.00%) 1.60 * -96.56%*
Amean 12 0.87 ( 0.00%) 1.67 * -91.73%*
Amean 18 0.82 ( 0.00%) 1.63 * -97.94%*
Amean 24 0.81 ( 0.00%) 1.60 * -97.41%*
Amean 30 0.82 ( 0.00%) 1.60 * -96.93%*
Amean 32 0.82 ( 0.00%) 1.60 * -96.56%*
Stddev 2 0.02 ( 0.00%) 0.02 ( 33.78%)
Stddev 4 0.01 ( 0.00%) 0.01 ( 7.18%)
Stddev 6 0.01 ( 0.00%) 0.00 ( 68.77%)
Stddev 8 0.01 ( 0.00%) 0.01 ( 10.56%)
Stddev 12 0.01 ( 0.00%) 0.02 ( -12.69%)
Stddev 18 0.01 ( 0.00%) 0.01 (-107.25%)
Stddev 24 0.00 ( 0.00%) 0.00 ( -14.56%)
Stddev 30 0.01 ( 0.00%) 0.01 ( 0.00%)
Stddev 32 0.01 ( 0.00%) 0.00 ( 20.00%)
CoeffVar 2 1.17 ( 0.00%) 0.31 ( 73.70%)
CoeffVar 4 0.82 ( 0.00%) 0.30 ( 63.16%)
CoeffVar 6 1.41 ( 0.00%) 0.20 ( 85.59%)
CoeffVar 8 0.87 ( 0.00%) 0.39 ( 54.50%)
CoeffVar 12 1.66 ( 0.00%) 0.98 ( 41.23%)
CoeffVar 18 0.85 ( 0.00%) 0.89 ( -4.71%)
CoeffVar 24 0.52 ( 0.00%) 0.30 ( 41.97%)
CoeffVar 30 0.65 ( 0.00%) 0.33 ( 49.22%)
CoeffVar 32 0.65 ( 0.00%) 0.26 ( 59.30%)
Max 2 2.04 ( 0.00%) 5.13 (-151.47%)
Max 4 1.04 ( 0.00%) 2.62 (-151.92%)
Max 6 0.98 ( 0.00%) 2.08 (-112.24%)
Max 8 0.83 ( 0.00%) 1.62 ( -95.18%)
Max 12 0.89 ( 0.00%) 1.70 ( -91.01%)
Max 18 0.84 ( 0.00%) 1.66 ( -97.62%)
Max 24 0.82 ( 0.00%) 1.61 ( -96.34%)
Max 30 0.82 ( 0.00%) 1.61 ( -96.34%)
Max 32 0.82 ( 0.00%) 1.61 ( -96.34%)
BAmean-50 2 2.01 ( 0.00%) 5.09 (-153.39%)
BAmean-50 4 1.03 ( 0.00%) 2.60 (-152.62%)
BAmean-50 6 0.95 ( 0.00%) 2.07 (-118.82%)
BAmean-50 8 0.81 ( 0.00%) 1.60 ( -97.53%)
BAmean-50 12 0.86 ( 0.00%) 1.66 ( -92.79%)
BAmean-50 18 0.82 ( 0.00%) 1.62 ( -97.56%)
BAmean-50 24 0.81 ( 0.00%) 1.60 ( -97.53%)
BAmean-50 30 0.81 ( 0.00%) 1.60 ( -97.53%)
BAmean-50 32 0.81 ( 0.00%) 1.60 ( -97.53%)
BAmean-95 2 2.02 ( 0.00%) 5.09 (-151.87%)
BAmean-95 4 1.03 ( 0.00%) 2.61 (-151.99%)
BAmean-95 6 0.95 ( 0.00%) 2.07 (-117.25%)
BAmean-95 8 0.81 ( 0.00%) 1.60 ( -96.72%)
BAmean-95 12 0.87 ( 0.00%) 1.67 ( -91.82%)
BAmean-95 18 0.82 ( 0.00%) 1.63 ( -97.97%)
BAmean-95 24 0.81 ( 0.00%) 1.60 ( -97.53%)
BAmean-95 30 0.81 ( 0.00%) 1.60 ( -97.00%)
BAmean-95 32 0.81 ( 0.00%) 1.60 ( -96.59%)
BAmean-99 2 2.02 ( 0.00%) 5.09 (-151.87%)
BAmean-99 4 1.03 ( 0.00%) 2.61 (-151.99%)
BAmean-99 6 0.95 ( 0.00%) 2.07 (-117.25%)
BAmean-99 8 0.81 ( 0.00%) 1.60 ( -96.72%)
BAmean-99 12 0.87 ( 0.00%) 1.67 ( -91.82%)
BAmean-99 18 0.82 ( 0.00%) 1.63 ( -97.97%)
BAmean-99 24 0.81 ( 0.00%) 1.60 ( -97.53%)
BAmean-99 30 0.81 ( 0.00%) 1.60 ( -97.00%)
BAmean-99 32 0.81 ( 0.00%) 1.60 ( -96.59%)
test test
nopti pti
Duration User 150.13 432.03
Duration System 372.10 657.69
Duration Elapsed 94.17 199.27
next prev parent reply other threads:[~2020-11-18 19:38 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-16 14:47 [RFC][PATCH v2 00/21] x86/pti: Defer CR3 switch to C code Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 01/21] x86/syscall: Add wrapper for invoking syscall function Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 02/21] x86/entry: Update asm_call_on_stack to support more function arguments Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 03/21] x86/entry: Consolidate IST entry from userspace Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 04/21] x86/sev-es: Define a setup stack function for the VC idtentry Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 05/21] x86/entry: Implement ret_from_fork body with C code Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 06/21] x86/pti: Provide C variants of PTI switch CR3 macros Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 07/21] x86/entry: Fill ESPFIX stack using C code Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 08/21] x86/pti: Introduce per-task PTI trampoline stack Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 09/21] x86/pti: Function to clone page-table entries from a specified mm Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 10/21] x86/pti: Function to map per-cpu page-table entry Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 11/21] x86/pti: Extend PTI user mappings Alexandre Chartre
2020-11-16 19:48 ` Andy Lutomirski
2020-11-16 20:21 ` Alexandre Chartre
2020-11-16 23:06 ` Andy Lutomirski
2020-11-17 8:42 ` Alexandre Chartre
2020-11-17 15:49 ` Andy Lutomirski
2020-11-19 19:15 ` Thomas Gleixner
2020-11-16 14:47 ` [RFC][PATCH v2 12/21] x86/pti: Use PTI stack instead of trampoline stack Alexandre Chartre
2020-11-16 16:57 ` Andy Lutomirski
2020-11-16 18:10 ` Alexandre Chartre
2020-11-16 18:34 ` Andy Lutomirski
2020-11-16 19:37 ` Alexandre Chartre
2020-11-17 15:09 ` Alexandre Chartre
2020-11-17 15:52 ` Andy Lutomirski
2020-11-17 17:01 ` Alexandre Chartre
2020-11-19 1:49 ` Andy Lutomirski
2020-11-19 8:05 ` Alexandre Chartre
2020-11-19 12:06 ` Alexandre Chartre
2020-11-19 16:06 ` Andy Lutomirski
2020-11-19 17:02 ` Alexandre Chartre
2020-11-16 21:24 ` David Laight
2020-11-17 8:27 ` Alexandre Chartre
2020-11-19 19:10 ` Thomas Gleixner
2020-11-19 19:55 ` Alexandre Chartre
2020-11-19 21:20 ` Thomas Gleixner
2020-11-24 7:20 ` [x86/pti] 5da9e742d1: PANIC:double_fault kernel test robot
2020-11-16 14:47 ` [RFC][PATCH v2 13/21] x86/pti: Execute syscall functions on the kernel stack Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 14/21] x86/pti: Execute IDT handlers " Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 15/21] x86/pti: Execute IDT handlers with error code " Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 16/21] x86/pti: Execute system vector handlers " Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 17/21] x86/pti: Execute page fault handler " Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 18/21] x86/pti: Execute NMI " Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 19/21] x86/pti: Defer CR3 switch to C code for IST entries Alexandre Chartre
2020-11-16 19:41 ` kernel test robot
2020-11-16 14:47 ` [RFC][PATCH v2 20/21] x86/pti: Defer CR3 switch to C code for non-IST and syscall entries Alexandre Chartre
2020-11-16 14:47 ` [RFC][PATCH v2 21/21] x86/pti: Use a different stack canary with the user and kernel page-table Alexandre Chartre
2020-11-16 16:56 ` Andy Lutomirski
2020-11-16 18:34 ` Alexandre Chartre
2020-11-16 20:17 ` [RFC][PATCH v2 00/21] x86/pti: Defer CR3 switch to C code Borislav Petkov
2020-11-17 7:56 ` Alexandre Chartre
2020-11-17 16:55 ` Borislav Petkov
2020-11-17 18:12 ` Alexandre Chartre
2020-11-17 18:28 ` Borislav Petkov
2020-11-17 19:02 ` Alexandre Chartre
2020-11-17 21:23 ` Borislav Petkov
2020-11-18 7:08 ` Alexandre Chartre
2020-11-17 21:26 ` Borislav Petkov
2020-11-18 7:41 ` Alexandre Chartre
2020-11-18 9:30 ` David Laight
2020-11-18 10:29 ` Alexandre Chartre
2020-11-18 13:22 ` David Laight
2020-11-18 17:15 ` Alexandre Chartre
2020-11-18 11:29 ` Borislav Petkov
2020-11-18 19:37 ` Alexandre Chartre [this message]
2020-11-16 20:24 ` Borislav Petkov
2020-11-17 8:19 ` Alexandre Chartre
2020-11-17 17:07 ` Borislav Petkov
2020-11-17 18:24 ` Alexandre Chartre
2020-11-19 19:32 ` Thomas Gleixner
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=408004fa-b143-7e12-150a-0dfab12d34ee@oracle.com \
--to=alexandre.chartre@oracle.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=graf@amazon.de \
--cc=hpa@zytor.com \
--cc=jan.setjeeilers@oracle.com \
--cc=jroedel@suse.de \
--cc=junaids@google.com \
--cc=konrad.wilk@oracle.com \
--cc=kuzuno@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mgorman@techsingularity.net \
--cc=mgross@linux.intel.com \
--cc=mingo@redhat.com \
--cc=oweisse@google.com \
--cc=peterz@infradead.org \
--cc=rppt@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=x86@kernel.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.