ACK/Cmnt: [PATCH][unstable] UBUNTU: [Config] Enable CONFIG_PAGE_POISONING configs

Stefan Bader stefan.bader at canonical.com
Mon Aug 27 13:03:29 UTC 2018


On 24.08.2018 18:18, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1783651
> 
> As requested by Kees, enable the following to help with finding certain
> types of memory corruption:
> 
> CONFIG_PAGE_POISONING=y
> CONFIG_PAGE_POISONING_ZERO=y
> CONFIG_PAGE_POISONING_NO_SANITY=y
> 
> "this should have no impact on regular boots, and if someone boots with
> "page_poison=1" then they get page wiping when page_alloc pages are freed
> (and then GFP_ZERO is a no-op since it was already freed), so it becomes
> a reasonable trade-off on performance vs gaining the wipe-on-free ability
> of the buddy allocator."
> 
> This has been benchmarked, with the tests comparing kernels without the
> config, with the config and with the config with page_poison=1 for the
> 4.18 and 4.15 kernels. I ran nearly 200 stress-ng stress tests and
> gathered the throughput (based on bogo ops per second on the usr+sys time
> consumed) for each stress test. Each of the stress tests were run for 60
> seconds on an idle 8 thread Xeon i7-3770.
> 
> The bogo-ops data was then normalized against the kernel that didn't have
> the config changes. The data to look at is the geometric means of all the
> normalized test results:
> 
> 4.18 kernel, geometric mean of normalized bogo/ops throughput:
> 
> No page poisoning: 1.000
> Config page poisoning: 1.003
> Config page poionsing + page_poison=1: 0.991
> 
> 4.15 kernel, geometric mean of normalized bogo/ops throughput:
> 
> No page poisoning: 1.000
> Config page poisoning: 1.025
> Config page poionsing + page_poison=1: 0.977
> 
> where > 1.000 shows more throughput and < 1.000 shows degraded throughput
> 
> So it appears that enabling page poisoning configs does not degrade performance
> and setting page_poison=1 degrades performance by a very small amount.
> 
> Raw data for this can be found at:
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1783651/+attachment/5170997/+files/kernel-poison-page-analysis.ods
> 
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
> ---

I'd leave it to Seth/Thadeu whether they would want to add
enforcement/commentary to the annotations file.

-Stefan

>  debian.master/config/annotations          | 4 +++-
>  debian.master/config/config.common.ubuntu | 4 +++-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/debian.master/config/annotations b/debian.master/config/annotations
> index 2079eb4..e3c6e3a 100644
> --- a/debian.master/config/annotations
> +++ b/debian.master/config/annotations
> @@ -9876,7 +9876,9 @@ CONFIG_WW_MUTEX_SELFTEST                        policy<{'amd64': 'n', 'arm64': '
>  # Menu: Kernel hacking >> Memory Debugging
>  CONFIG_PAGE_EXTENSION                           policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'y', 'ppc64el': 'n', 's390x': 'n'}>
>  CONFIG_DEBUG_PAGEALLOC                          policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n', 'ppc64el': 'n', 's390x': 'n'}>
> -CONFIG_PAGE_POISONING                           policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'ppc64el': 'n', 's390x': 'n'}>
> +CONFIG_PAGE_POISONING                           policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'ppc64el': 'y', 's390x': 'y'}>
> +CONFIG_PAGE_POISONING_ZERO                      policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'ppc64el': 'y', 's390x': 'y'}>
> +CONFIG_PAGE_POISONING_NO_SANITY                 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'ppc64el': 'y', 's390x': 'y'}>
>  CONFIG_DEBUG_PAGE_REF                           policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'ppc64el': 'n', 's390x': 'n'}>
>  CONFIG_DEBUG_RODATA_TEST                        policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 's390x': 'n'}>
>  CONFIG_SLUB_DEBUG_ON                            policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'ppc64el': 'n', 's390x': 'n'}>
> diff --git a/debian.master/config/config.common.ubuntu b/debian.master/config/config.common.ubuntu
> index d248512..7ce3acd 100644
> --- a/debian.master/config/config.common.ubuntu
> +++ b/debian.master/config/config.common.ubuntu
> @@ -6510,7 +6510,9 @@ CONFIG_PACK_STACK=y
>  CONFIG_PADATA=y
>  CONFIG_PAGE_COUNTER=y
>  # CONFIG_PAGE_OWNER is not set
> -# CONFIG_PAGE_POISONING is not set
> +CONFIG_PAGE_POISONING=y
> +CONFIG_PAGE_POISONING_ZERO=y
> +CONFIG_PAGE_POISONING_NO_SANITY=y
>  CONFIG_PAGE_POOL=y
>  CONFIG_PAGE_TABLE_ISOLATION=y
>  CONFIG_PALMAS_GPADC=m
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20180827/ee2045a3/attachment.sig>


More information about the kernel-team mailing list