linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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


  reply	other threads:[~2020-11-18 19:38 UTC|newest]

Thread overview: 69+ 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 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 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).