Message ID | 20200918140711.60144-1-paolo.pisati@canonical.com |
---|---|
State | New |
Headers | show |
Series | [G/master] UBUNTU: packaging: arm64: introduce a 64KB mem pages flavour called 'generic-64k' | expand |
On 18/09/2020 15:07, Paolo Pisati wrote: > This patch introduces an arm64 64KB pages enabled flavour of the generic kernel, > called 'generic-64k'. > > Earlier benchmark with this config have shown an obvious trade-off: > > > * Performance > - comparing geometic mean of over 35 stress throughput tests we see > a bogo op throughput increase of 22.0-24.5% with 64K pages compared > to 4K pages. > > * Memory usage: > - a simple check of memory used after boot shows that 64K pages uses > around 3.2-3.6x more memory. The amount of memory being shared also > increases by 15x more. > - a 32GB machine is seeing about 480MB more memory consumption, or > ~ 1.5% less free memory. > > > In short, loss of memory because pages are larger but a large performance win > because of less page table entry references and TLB misses: for machines with > large memory, this flavour could make sense. > > Since we are introducing an independent flavour, generic is not affected by this > change. > > Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com> > --- > debian.master/config/annotations | 34 +++++++++---------- > .../config/arm64/config.common.arm64 | 5 --- > .../config/arm64/config.flavour.generic | 9 +++++ > .../config/arm64/config.flavour.generic-64k | 12 +++++++ > debian.master/config/config.common.ubuntu | 7 ++-- > debian.master/control.d/vars.generic-64k | 6 ++++ > debian.master/d-i/kernel-versions | 1 + > debian.master/etc/getabis | 2 +- > debian.master/rules.d/arm64.mk | 4 ++- > 9 files changed, 52 insertions(+), 28 deletions(-) > create mode 100644 debian.master/config/arm64/config.flavour.generic-64k > create mode 100644 debian.master/control.d/vars.generic-64k > > diff --git a/debian.master/config/annotations b/debian.master/config/annotations > index 2f8232c33129..087f83ab378a 100644 > --- a/debian.master/config/annotations > +++ b/debian.master/config/annotations > @@ -2083,7 +2083,7 @@ CONFIG_DRM_GMA600 policy<{'amd64': 'y'}> > CONFIG_DRM_GMA3600 policy<{'amd64': 'y'}> > > # Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> MSM DRM > -CONFIG_DRM_MSM policy<{'arm64-generic': 'm', 'armhf': 'm'}> > +CONFIG_DRM_MSM policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> > CONFIG_DRM_MSM_REGISTER_LOGGING policy<{'arm64': 'n', 'armhf': 'n'}> > CONFIG_DRM_MSM_GPU_SUDO policy<{'arm64': 'n', 'armhf': 'n'}> > CONFIG_DRM_MSM_HDMI_HDCP policy<{'arm64': 'y', 'armhf': 'y'}> > @@ -2695,7 +2695,7 @@ CONFIG_I2C_DEBUG_BUS policy<{'amd64': 'n', 'arm64': ' > CONFIG_I2C_CHARDEV note<LP:1417032> > > # Menu: Device Drivers >> I2C support >> I2C support >> I2C Algorithms > -CONFIG_I2C_ALGOBIT policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> > +CONFIG_I2C_ALGOBIT policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> > CONFIG_I2C_ALGOPCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > > # Menu: Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support > @@ -3329,7 +3329,7 @@ CONFIG_INFINIBAND_I40IW policy<{'amd64': 'm', 'arm64': ' > CONFIG_MLX4_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> > CONFIG_MLX5_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> > CONFIG_INFINIBAND_OCRDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> > -CONFIG_INFINIBAND_VMWARE_PVRDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> > +CONFIG_INFINIBAND_VMWARE_PVRDMA policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm'}> > CONFIG_INFINIBAND_USNIC policy<{'amd64': 'm'}> > CONFIG_INFINIBAND_HNS policy<{'arm64': 'm'}> > CONFIG_INFINIBAND_HNS_HIP06 policy<{'arm64': 'y'}> > @@ -3894,7 +3894,7 @@ CONFIG_MMC_OMAP_HS note<boot essential on arm> > # Menu: Device Drivers >> MMC/SD/SDIO card support >> Samsung S3C SD/MMC transfer code > > # Menu: Device Drivers >> MMC/SD/SDIO card support >> Secure Digital Host Controller Interface support > -CONFIG_MMC_SDHCI policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'y', 'ppc64el': 'm'}> > +CONFIG_MMC_SDHCI policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm'}> > CONFIG_MMC_SDHCI_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > CONFIG_MMC_RICOH_MMC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> > CONFIG_MMC_SDHCI_ACPI policy<{'amd64': 'm', 'arm64': 'm'}> > @@ -5215,7 +5215,7 @@ CONFIG_NVMEM_BCM_OCOTP policy<{'arm64': 'm'}> > CONFIG_NVMEM_SUNXI_SID policy<{'arm64': 'm'}> > CONFIG_UNIPHIER_EFUSE policy<{'armhf': 'm'}> > CONFIG_NVMEM_VF610_OCOTP policy<{'armhf-generic': 'n'}> > -CONFIG_MESON_EFUSE policy<{'arm64': 'm'}> > +CONFIG_MESON_EFUSE policy<{'arm64-generic': 'm'}> > CONFIG_MESON_MX_EFUSE policy<{'arm64': 'm', 'armhf': 'm'}> > CONFIG_NVMEM_SNVS_LPGPR policy<{'arm64': 'm', 'armhf-generic': 'm'}> > CONFIG_RAVE_SP_EEPROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > @@ -5234,7 +5234,7 @@ CONFIG_MICREL_KS8995MA policy<{'amd64': 'm', 'arm64': ' > CONFIG_PLIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > CONFIG_XEN_NETDEV_FRONTEND policy<{'amd64': 'y', 'arm64': 'y'}> > CONFIG_XEN_NETDEV_BACKEND policy<{'amd64': 'm', 'arm64': 'm'}> > -CONFIG_VMXNET3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 's390x': 'n'}> > +CONFIG_VMXNET3 policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm', 's390x': 'n'}> > CONFIG_FUJITSU_ES policy<{'amd64': 'm', 'arm64': 'm'}> > CONFIG_USB4_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > CONFIG_HYPERV_NET policy<{'amd64': 'm'}> > @@ -7328,7 +7328,7 @@ CONFIG_RPMSG_CHAR policy<{'amd64': 'm', 'arm64': ' > CONFIG_RPMSG_MTK_SCP policy<{'arm64': 'm', 'armhf': 'm'}> > CONFIG_RPMSG_QCOM_GLINK_RPM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > CONFIG_RPMSG_QCOM_GLINK_SMEM policy<{'arm64': 'm', 'armhf': 'm'}> > -CONFIG_RPMSG_QCOM_SMD policy<{'arm64-generic': 'm', 'armhf': 'm'}> > +CONFIG_RPMSG_QCOM_SMD policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> > CONFIG_RPMSG_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> > > # Menu: Device Drivers >> SCSI device support > @@ -7539,7 +7539,7 @@ CONFIG_MESON_CLK_MEASURE policy<{'arm64': 'y', 'armhf': ' > CONFIG_MESON_GX_SOCINFO policy<{'arm64': 'y', 'armhf': 'y'}> > CONFIG_MESON_GX_PM_DOMAINS policy<{'arm64': 'y', 'armhf': 'y'}> > CONFIG_MESON_EE_PM_DOMAINS policy<{'arm64': 'y', 'armhf': 'y'}> > -CONFIG_MESON_SECURE_PM_DOMAINS policy<{'arm64': 'y'}> > +CONFIG_MESON_SECURE_PM_DOMAINS policy<{'arm64-generic': 'y'}> > CONFIG_MESON_MX_SOCINFO policy<{'arm64': 'y', 'armhf': 'y'}> > > # Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Aspeed SoC drivers > @@ -7762,8 +7762,8 @@ CONFIG_SPI_DW_PCI policy<{'amd64': 'm', 'arm64': ' > CONFIG_SPI_DW_MMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > > # Menu: Device Drivers >> SPMI support > -CONFIG_SPMI policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> > -CONFIG_SPMI_MSM_PMIC_ARB policy<{'arm64-generic': 'm', 'armhf': 'm'}> > +CONFIG_SPMI policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> > +CONFIG_SPMI_MSM_PMIC_ARB policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> > > # Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) > CONFIG_ATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> > @@ -7887,14 +7887,14 @@ CONFIG_MEMSTICK_REALTEK_PCI policy<{'amd64': 'm', 'arm64': ' > CONFIG_MEMSTICK_REALTEK_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > > # Menu: Device Drivers >> Sound card support > -CONFIG_SOUND policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'y', 'ppc64el': 'm', 's390x': 'n'}> > +CONFIG_SOUND policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm', 's390x': 'n'}> > CONFIG_SOUND_OSS_CORE_PRECLAIM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> > # > CONFIG_SOUND note<not autoloadable on omap> > CONFIG_SOUND_OSS_CORE_PRECLAIM mark<ENFORCED> note<LP#1105230 LP#1385510> > > # Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture > -CONFIG_SND policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'y', 'ppc64el': 'm'}> > +CONFIG_SND policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm'}> > CONFIG_SND_OSSEMUL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> > CONFIG_SND_MIXER_OSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> > CONFIG_SND_PCM_OSS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> > @@ -8983,7 +8983,7 @@ CONFIG_TEGRA_SOCTHERM policy<{'armhf-generic': 'n'}> > CONFIG_TEGRA_BPMP_THERMAL policy<{'armhf-generic': 'm'}> > > # Menu: Device Drivers >> Thermal drivers >> Qualcomm thermal drivers > -CONFIG_QCOM_TSENS policy<{'arm64-generic': 'm', 'armhf': 'm'}> > +CONFIG_QCOM_TSENS policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> > CONFIG_QCOM_SPMI_TEMP_ALARM policy<{'arm64': 'm', 'armhf': 'm'}> > > # Menu: Device Drivers >> Thermal drivers >> STMicroelectronics thermal drivers > @@ -12701,7 +12701,7 @@ CONFIG_HARDEN_BRANCH_PREDICTOR policy<{'arm64': 'y', 'armhf': ' > CONFIG_HIGHPTE policy<{'armhf': 'y'}> > CONFIG_CMDLINE_BOOL policy<{'amd64': 'n', 'ppc64el': 'n'}> > CONFIG_HIGHMEM policy<{'armhf': 'y'}> > -CONFIG_FORCE_MAX_ZONEORDER policy<{'arm64': '13', 'armhf-generic': '12', 'armhf-generic-lpae': '11', 'ppc64el': '9', 's390x': '9'}> > +CONFIG_FORCE_MAX_ZONEORDER policy<{'arm64-generic': '13', 'arm64-generic-64k': '14', 'armhf-generic': '12', 'armhf-generic-lpae': '11', 'ppc64el': '9', 's390x': '9'}> > CONFIG_COMPAT_VDSO policy<{'amd64': 'n'}> > # > CONFIG_RELOCATABLE flag<REVIEW> > @@ -12961,9 +12961,9 @@ CONFIG_VMSPLIT_1G policy<{'armhf': 'n'}> > # Menu: Processor type and features >> Memory split >> Architecture: x86 > > # Menu: Processor type and features >> Page size >> Architecture: arm64 > -CONFIG_ARM64_4K_PAGES policy<{'arm64': 'y'}> > +CONFIG_ARM64_4K_PAGES policy<{'arm64-generic': 'y', 'arm64-generic-64k': 'n'}> > CONFIG_ARM64_16K_PAGES policy<{'arm64': 'n'}> > -CONFIG_ARM64_64K_PAGES policy<{'arm64': 'n'}> > +CONFIG_ARM64_64K_PAGES policy<{'arm64-generic': 'n', 'arm64-generic-64k': 'y'}> > > # Menu: Processor type and features >> Page size >> Architecture: powerpc > CONFIG_PPC_4K_PAGES policy<{'ppc64el': 'n'}> > @@ -13075,7 +13075,7 @@ CONFIG_TUNE_Z14 policy<{'s390x': 'n'}> > CONFIG_TUNE_Z15 policy<{'s390x': 'y'}> > > # Menu: Processor type and features >> Virtual address space size >> Architecture: arm64 > -CONFIG_ARM64_VA_BITS_39 policy<{'arm64': 'n'}> > +CONFIG_ARM64_VA_BITS_39 policy<{'arm64-generic': 'n'}> > CONFIG_ARM64_VA_BITS_48 policy<{'arm64': 'y'}> > # > CONFIG_ARM64_VA_BITS_48 mark<ENFORCED> note<Cavium ThunderX 2-socket needs a minimum of 41 bits of VA> > diff --git a/debian.master/config/arm64/config.common.arm64 b/debian.master/config/arm64/config.common.arm64 > index c3e0b9a7232f..ed82d7ae2ec1 100644 > --- a/debian.master/config/arm64/config.common.arm64 > +++ b/debian.master/config/arm64/config.common.arm64 > @@ -21,11 +21,8 @@ CONFIG_APPLICOM=m > # CONFIG_ARCH_ALPINE is not set > # CONFIG_ARCH_EXYNOS is not set > CONFIG_ARCH_MMAP_RND_BITS=18 > -CONFIG_ARCH_MMAP_RND_BITS_MAX=33 > -CONFIG_ARCH_MMAP_RND_BITS_MIN=18 > CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 > CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 > -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 > CONFIG_ARCH_MXC=y > CONFIG_ARCH_SUNXI=y > # CONFIG_ARCH_TEGRA is not set > @@ -167,7 +164,6 @@ CONFIG_FEALNX=m > CONFIG_FIREWIRE=m > CONFIG_FIREWIRE_NOSY=m > CONFIG_FIXED_PHY=y > -CONFIG_FORCE_MAX_ZONEORDER=13 > CONFIG_FPGA_BRIDGE=m > CONFIG_FPGA_DFL=m > CONFIG_FRAME_WARN=1024 > @@ -472,7 +468,6 @@ CONFIG_PCI_PASID=y > CONFIG_PCI_PRI=y > CONFIG_PCI_QUIRKS=y > # CONFIG_PCMCIA is not set > -CONFIG_PGTABLE_LEVELS=4 > CONFIG_PHANTOM=m > CONFIG_PHONET=m > CONFIG_PHYLIB=y > diff --git a/debian.master/config/arm64/config.flavour.generic b/debian.master/config/arm64/config.flavour.generic > index bb7773a235d2..22fbe1b310ab 100644 > --- a/debian.master/config/arm64/config.flavour.generic > +++ b/debian.master/config/arm64/config.flavour.generic > @@ -1,3 +1,12 @@ > # > # Config options for config.flavour.generic automatically generated by splitconfig.pl > # > +CONFIG_ARCH_MMAP_RND_BITS_MAX=33 > +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 > +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 > +CONFIG_ARM64_4K_PAGES=y > +# CONFIG_ARM64_64K_PAGES is not set > +CONFIG_ARM64_CONT_SHIFT=4 > +CONFIG_ARM64_PAGE_SHIFT=12 > +CONFIG_FORCE_MAX_ZONEORDER=13 > +CONFIG_PGTABLE_LEVELS=4 > diff --git a/debian.master/config/arm64/config.flavour.generic-64k b/debian.master/config/arm64/config.flavour.generic-64k > new file mode 100644 > index 000000000000..689b0359a790 > --- /dev/null > +++ b/debian.master/config/arm64/config.flavour.generic-64k > @@ -0,0 +1,12 @@ > +# > +# Config options for config.flavour.generic-64k automatically generated by splitconfig.pl > +# > +CONFIG_ARCH_MMAP_RND_BITS_MAX=29 > +CONFIG_ARCH_MMAP_RND_BITS_MIN=14 > +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=7 > +# CONFIG_ARM64_4K_PAGES is not set > +CONFIG_ARM64_64K_PAGES=y > +CONFIG_ARM64_CONT_SHIFT=5 > +CONFIG_ARM64_PAGE_SHIFT=16 > +CONFIG_FORCE_MAX_ZONEORDER=14 > +CONFIG_PGTABLE_LEVELS=3 > diff --git a/debian.master/config/config.common.ubuntu b/debian.master/config/config.common.ubuntu > index d2715906349a..a6f6e6cef775 100644 > --- a/debian.master/config/config.common.ubuntu > +++ b/debian.master/config/config.common.ubuntu > @@ -586,14 +586,11 @@ CONFIG_ARC_EMAC_CORE=m > CONFIG_ARM=y > CONFIG_ARM64=y > # CONFIG_ARM64_16K_PAGES is not set > -CONFIG_ARM64_4K_PAGES=y > -# CONFIG_ARM64_64K_PAGES is not set > CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y > CONFIG_ARM64_AMU_EXTN=y > CONFIG_ARM64_BTI=y > CONFIG_ARM64_BTI_KERNEL=y > CONFIG_ARM64_CNP=y > -CONFIG_ARM64_CONT_SHIFT=4 > CONFIG_ARM64_CRYPTO=y > # CONFIG_ARM64_DEBUG_PRIORITY_MASKING is not set > CONFIG_ARM64_E0PD=y > @@ -617,10 +614,10 @@ CONFIG_ARM64_ERRATUM_858921=y > CONFIG_ARM64_HW_AFDBM=y > CONFIG_ARM64_LSE_ATOMICS=y > CONFIG_ARM64_MODULE_PLTS=y > -CONFIG_ARM64_PAGE_SHIFT=12 > CONFIG_ARM64_PAN=y > CONFIG_ARM64_PA_BITS=48 > CONFIG_ARM64_PA_BITS_48=y > +# CONFIG_ARM64_PA_BITS_52 is not set > CONFIG_ARM64_PMEM=y > CONFIG_ARM64_PSEUDO_NMI=y > CONFIG_ARM64_PTR_AUTH=y > @@ -634,7 +631,9 @@ CONFIG_ARM64_UAO=y > CONFIG_ARM64_USE_LSE_ATOMICS=y > CONFIG_ARM64_VA_BITS=48 > # CONFIG_ARM64_VA_BITS_39 is not set > +# CONFIG_ARM64_VA_BITS_42 is not set > CONFIG_ARM64_VA_BITS_48=y > +# CONFIG_ARM64_VA_BITS_52 is not set > CONFIG_ARM64_VHE=y > CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y > CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y > diff --git a/debian.master/control.d/vars.generic-64k b/debian.master/control.d/vars.generic-64k > new file mode 100644 > index 000000000000..91eb2863d942 > --- /dev/null > +++ b/debian.master/control.d/vars.generic-64k > @@ -0,0 +1,6 @@ > +arch="arm64" > +supported="Generic 64K pages" > +target="Geared toward desktop and server systems." > +desc="=HUMAN= SMP" > +bootloader="flash-kernel [arm64]" > +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" > diff --git a/debian.master/d-i/kernel-versions b/debian.master/d-i/kernel-versions > index 6cd90edd0258..d0a73152e03a 100644 > --- a/debian.master/d-i/kernel-versions > +++ b/debian.master/d-i/kernel-versions > @@ -7,6 +7,7 @@ armhf - generic - - - > armhf - generic-lpae - - - > > arm64 - generic - - - > +arm64 - generic-64k - - - > > ppc64el - generic - - - > > diff --git a/debian.master/etc/getabis b/debian.master/etc/getabis > index 3346da2bc0b1..19e1aa8da3a4 100644 > --- a/debian.master/etc/getabis > +++ b/debian.master/etc/getabis > @@ -13,6 +13,6 @@ package_prefixes linux-buildinfo > getall armhf generic > getall armhf generic-lpae > getall amd64 generic lowlatency > -getall arm64 generic > +getall arm64 generic generic-64k > getall ppc64el generic > getall s390x generic > diff --git a/debian.master/rules.d/arm64.mk b/debian.master/rules.d/arm64.mk > index 368c2a86e2bf..263a5901ed2c 100644 > --- a/debian.master/rules.d/arm64.mk > +++ b/debian.master/rules.d/arm64.mk > @@ -2,9 +2,11 @@ human_arch = ARMv8 > build_arch = arm64 > header_arch = arm64 > defconfig = defconfig > -flavours = generic > +flavours = generic generic-64k > build_image_generic = Image.gz > kernel_file_generic = arch/$(build_arch)/boot/Image.gz > +build_image_generic-64k = Image.gz > +kernel_file_generic-64k = arch/$(build_arch)/boot/Image.gz > install_file = vmlinuz > no_dumpfile = true > uefi_signed = true > I'm OK with with. No doubt the name will be quibbled about but lets go with this. Acked-by: Colin Ian King <colin.king@canonical.com>
On Fri, Sep 18, 2020 at 04:07:11PM +0200, Paolo Pisati wrote: > This patch introduces an arm64 64KB pages enabled flavour of the generic kernel, > called 'generic-64k'. > > Earlier benchmark with this config have shown an obvious trade-off: > > > * Performance > - comparing geometic mean of over 35 stress throughput tests we see > a bogo op throughput increase of 22.0-24.5% with 64K pages compared > to 4K pages. > > * Memory usage: > - a simple check of memory used after boot shows that 64K pages uses > around 3.2-3.6x more memory. The amount of memory being shared also > increases by 15x more. > - a 32GB machine is seeing about 480MB more memory consumption, or > ~ 1.5% less free memory. > > > In short, loss of memory because pages are larger but a large performance win > because of less page table entry references and TLB misses: for machines with > large memory, this flavour could make sense. > > Since we are introducing an independent flavour, generic is not affected by this > change. > > Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com> Looks good to me. Acked-by: Andrea Righi <andrea.righi@canonical.com>
On Fri, Sep 18, 2020 at 04:07:11PM +0200, Paolo Pisati wrote: > This patch introduces an arm64 64KB pages enabled flavour of the generic kernel, > called 'generic-64k'.
diff --git a/debian.master/config/annotations b/debian.master/config/annotations index 2f8232c33129..087f83ab378a 100644 --- a/debian.master/config/annotations +++ b/debian.master/config/annotations @@ -2083,7 +2083,7 @@ CONFIG_DRM_GMA600 policy<{'amd64': 'y'}> CONFIG_DRM_GMA3600 policy<{'amd64': 'y'}> # Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> MSM DRM -CONFIG_DRM_MSM policy<{'arm64-generic': 'm', 'armhf': 'm'}> +CONFIG_DRM_MSM policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> CONFIG_DRM_MSM_REGISTER_LOGGING policy<{'arm64': 'n', 'armhf': 'n'}> CONFIG_DRM_MSM_GPU_SUDO policy<{'arm64': 'n', 'armhf': 'n'}> CONFIG_DRM_MSM_HDMI_HDCP policy<{'arm64': 'y', 'armhf': 'y'}> @@ -2695,7 +2695,7 @@ CONFIG_I2C_DEBUG_BUS policy<{'amd64': 'n', 'arm64': ' CONFIG_I2C_CHARDEV note<LP:1417032> # Menu: Device Drivers >> I2C support >> I2C support >> I2C Algorithms -CONFIG_I2C_ALGOBIT policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_I2C_ALGOBIT policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> CONFIG_I2C_ALGOPCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> # Menu: Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support @@ -3329,7 +3329,7 @@ CONFIG_INFINIBAND_I40IW policy<{'amd64': 'm', 'arm64': ' CONFIG_MLX4_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> CONFIG_MLX5_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> CONFIG_INFINIBAND_OCRDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> -CONFIG_INFINIBAND_VMWARE_PVRDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_INFINIBAND_VMWARE_PVRDMA policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm'}> CONFIG_INFINIBAND_USNIC policy<{'amd64': 'm'}> CONFIG_INFINIBAND_HNS policy<{'arm64': 'm'}> CONFIG_INFINIBAND_HNS_HIP06 policy<{'arm64': 'y'}> @@ -3894,7 +3894,7 @@ CONFIG_MMC_OMAP_HS note<boot essential on arm> # Menu: Device Drivers >> MMC/SD/SDIO card support >> Samsung S3C SD/MMC transfer code # Menu: Device Drivers >> MMC/SD/SDIO card support >> Secure Digital Host Controller Interface support -CONFIG_MMC_SDHCI policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm'}> CONFIG_MMC_SDHCI_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_MMC_RICOH_MMC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> CONFIG_MMC_SDHCI_ACPI policy<{'amd64': 'm', 'arm64': 'm'}> @@ -5215,7 +5215,7 @@ CONFIG_NVMEM_BCM_OCOTP policy<{'arm64': 'm'}> CONFIG_NVMEM_SUNXI_SID policy<{'arm64': 'm'}> CONFIG_UNIPHIER_EFUSE policy<{'armhf': 'm'}> CONFIG_NVMEM_VF610_OCOTP policy<{'armhf-generic': 'n'}> -CONFIG_MESON_EFUSE policy<{'arm64': 'm'}> +CONFIG_MESON_EFUSE policy<{'arm64-generic': 'm'}> CONFIG_MESON_MX_EFUSE policy<{'arm64': 'm', 'armhf': 'm'}> CONFIG_NVMEM_SNVS_LPGPR policy<{'arm64': 'm', 'armhf-generic': 'm'}> CONFIG_RAVE_SP_EEPROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> @@ -5234,7 +5234,7 @@ CONFIG_MICREL_KS8995MA policy<{'amd64': 'm', 'arm64': ' CONFIG_PLIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_XEN_NETDEV_FRONTEND policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_XEN_NETDEV_BACKEND policy<{'amd64': 'm', 'arm64': 'm'}> -CONFIG_VMXNET3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 's390x': 'n'}> +CONFIG_VMXNET3 policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm', 's390x': 'n'}> CONFIG_FUJITSU_ES policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_USB4_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_HYPERV_NET policy<{'amd64': 'm'}> @@ -7328,7 +7328,7 @@ CONFIG_RPMSG_CHAR policy<{'amd64': 'm', 'arm64': ' CONFIG_RPMSG_MTK_SCP policy<{'arm64': 'm', 'armhf': 'm'}> CONFIG_RPMSG_QCOM_GLINK_RPM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_RPMSG_QCOM_GLINK_SMEM policy<{'arm64': 'm', 'armhf': 'm'}> -CONFIG_RPMSG_QCOM_SMD policy<{'arm64-generic': 'm', 'armhf': 'm'}> +CONFIG_RPMSG_QCOM_SMD policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> CONFIG_RPMSG_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> # Menu: Device Drivers >> SCSI device support @@ -7539,7 +7539,7 @@ CONFIG_MESON_CLK_MEASURE policy<{'arm64': 'y', 'armhf': ' CONFIG_MESON_GX_SOCINFO policy<{'arm64': 'y', 'armhf': 'y'}> CONFIG_MESON_GX_PM_DOMAINS policy<{'arm64': 'y', 'armhf': 'y'}> CONFIG_MESON_EE_PM_DOMAINS policy<{'arm64': 'y', 'armhf': 'y'}> -CONFIG_MESON_SECURE_PM_DOMAINS policy<{'arm64': 'y'}> +CONFIG_MESON_SECURE_PM_DOMAINS policy<{'arm64-generic': 'y'}> CONFIG_MESON_MX_SOCINFO policy<{'arm64': 'y', 'armhf': 'y'}> # Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Aspeed SoC drivers @@ -7762,8 +7762,8 @@ CONFIG_SPI_DW_PCI policy<{'amd64': 'm', 'arm64': ' CONFIG_SPI_DW_MMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> # Menu: Device Drivers >> SPMI support -CONFIG_SPMI policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> -CONFIG_SPMI_MSM_PMIC_ARB policy<{'arm64-generic': 'm', 'armhf': 'm'}> +CONFIG_SPMI policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SPMI_MSM_PMIC_ARB policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> # Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) CONFIG_ATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> @@ -7887,14 +7887,14 @@ CONFIG_MEMSTICK_REALTEK_PCI policy<{'amd64': 'm', 'arm64': ' CONFIG_MEMSTICK_REALTEK_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> # Menu: Device Drivers >> Sound card support -CONFIG_SOUND policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'y', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SOUND policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm', 's390x': 'n'}> CONFIG_SOUND_OSS_CORE_PRECLAIM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> # CONFIG_SOUND note<not autoloadable on omap> CONFIG_SOUND_OSS_CORE_PRECLAIM mark<ENFORCED> note<LP#1105230 LP#1385510> # Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture -CONFIG_SND policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_SND policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm'}> CONFIG_SND_OSSEMUL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> CONFIG_SND_MIXER_OSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_SND_PCM_OSS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> @@ -8983,7 +8983,7 @@ CONFIG_TEGRA_SOCTHERM policy<{'armhf-generic': 'n'}> CONFIG_TEGRA_BPMP_THERMAL policy<{'armhf-generic': 'm'}> # Menu: Device Drivers >> Thermal drivers >> Qualcomm thermal drivers -CONFIG_QCOM_TSENS policy<{'arm64-generic': 'm', 'armhf': 'm'}> +CONFIG_QCOM_TSENS policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> CONFIG_QCOM_SPMI_TEMP_ALARM policy<{'arm64': 'm', 'armhf': 'm'}> # Menu: Device Drivers >> Thermal drivers >> STMicroelectronics thermal drivers @@ -12701,7 +12701,7 @@ CONFIG_HARDEN_BRANCH_PREDICTOR policy<{'arm64': 'y', 'armhf': ' CONFIG_HIGHPTE policy<{'armhf': 'y'}> CONFIG_CMDLINE_BOOL policy<{'amd64': 'n', 'ppc64el': 'n'}> CONFIG_HIGHMEM policy<{'armhf': 'y'}> -CONFIG_FORCE_MAX_ZONEORDER policy<{'arm64': '13', 'armhf-generic': '12', 'armhf-generic-lpae': '11', 'ppc64el': '9', 's390x': '9'}> +CONFIG_FORCE_MAX_ZONEORDER policy<{'arm64-generic': '13', 'arm64-generic-64k': '14', 'armhf-generic': '12', 'armhf-generic-lpae': '11', 'ppc64el': '9', 's390x': '9'}> CONFIG_COMPAT_VDSO policy<{'amd64': 'n'}> # CONFIG_RELOCATABLE flag<REVIEW> @@ -12961,9 +12961,9 @@ CONFIG_VMSPLIT_1G policy<{'armhf': 'n'}> # Menu: Processor type and features >> Memory split >> Architecture: x86 # Menu: Processor type and features >> Page size >> Architecture: arm64 -CONFIG_ARM64_4K_PAGES policy<{'arm64': 'y'}> +CONFIG_ARM64_4K_PAGES policy<{'arm64-generic': 'y', 'arm64-generic-64k': 'n'}> CONFIG_ARM64_16K_PAGES policy<{'arm64': 'n'}> -CONFIG_ARM64_64K_PAGES policy<{'arm64': 'n'}> +CONFIG_ARM64_64K_PAGES policy<{'arm64-generic': 'n', 'arm64-generic-64k': 'y'}> # Menu: Processor type and features >> Page size >> Architecture: powerpc CONFIG_PPC_4K_PAGES policy<{'ppc64el': 'n'}> @@ -13075,7 +13075,7 @@ CONFIG_TUNE_Z14 policy<{'s390x': 'n'}> CONFIG_TUNE_Z15 policy<{'s390x': 'y'}> # Menu: Processor type and features >> Virtual address space size >> Architecture: arm64 -CONFIG_ARM64_VA_BITS_39 policy<{'arm64': 'n'}> +CONFIG_ARM64_VA_BITS_39 policy<{'arm64-generic': 'n'}> CONFIG_ARM64_VA_BITS_48 policy<{'arm64': 'y'}> # CONFIG_ARM64_VA_BITS_48 mark<ENFORCED> note<Cavium ThunderX 2-socket needs a minimum of 41 bits of VA> diff --git a/debian.master/config/arm64/config.common.arm64 b/debian.master/config/arm64/config.common.arm64 index c3e0b9a7232f..ed82d7ae2ec1 100644 --- a/debian.master/config/arm64/config.common.arm64 +++ b/debian.master/config/arm64/config.common.arm64 @@ -21,11 +21,8 @@ CONFIG_APPLICOM=m # CONFIG_ARCH_ALPINE is not set # CONFIG_ARCH_EXYNOS is not set CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_ARCH_MMAP_RND_BITS_MAX=33 -CONFIG_ARCH_MMAP_RND_BITS_MIN=18 CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 CONFIG_ARCH_MXC=y CONFIG_ARCH_SUNXI=y # CONFIG_ARCH_TEGRA is not set @@ -167,7 +164,6 @@ CONFIG_FEALNX=m CONFIG_FIREWIRE=m CONFIG_FIREWIRE_NOSY=m CONFIG_FIXED_PHY=y -CONFIG_FORCE_MAX_ZONEORDER=13 CONFIG_FPGA_BRIDGE=m CONFIG_FPGA_DFL=m CONFIG_FRAME_WARN=1024 @@ -472,7 +468,6 @@ CONFIG_PCI_PASID=y CONFIG_PCI_PRI=y CONFIG_PCI_QUIRKS=y # CONFIG_PCMCIA is not set -CONFIG_PGTABLE_LEVELS=4 CONFIG_PHANTOM=m CONFIG_PHONET=m CONFIG_PHYLIB=y diff --git a/debian.master/config/arm64/config.flavour.generic b/debian.master/config/arm64/config.flavour.generic index bb7773a235d2..22fbe1b310ab 100644 --- a/debian.master/config/arm64/config.flavour.generic +++ b/debian.master/config/arm64/config.flavour.generic @@ -1,3 +1,12 @@ # # Config options for config.flavour.generic automatically generated by splitconfig.pl # +CONFIG_ARCH_MMAP_RND_BITS_MAX=33 +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_CONT_SHIFT=4 +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_PGTABLE_LEVELS=4 diff --git a/debian.master/config/arm64/config.flavour.generic-64k b/debian.master/config/arm64/config.flavour.generic-64k new file mode 100644 index 000000000000..689b0359a790 --- /dev/null +++ b/debian.master/config/arm64/config.flavour.generic-64k @@ -0,0 +1,12 @@ +# +# Config options for config.flavour.generic-64k automatically generated by splitconfig.pl +# +CONFIG_ARCH_MMAP_RND_BITS_MAX=29 +CONFIG_ARCH_MMAP_RND_BITS_MIN=14 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=7 +# CONFIG_ARM64_4K_PAGES is not set +CONFIG_ARM64_64K_PAGES=y +CONFIG_ARM64_CONT_SHIFT=5 +CONFIG_ARM64_PAGE_SHIFT=16 +CONFIG_FORCE_MAX_ZONEORDER=14 +CONFIG_PGTABLE_LEVELS=3 diff --git a/debian.master/config/config.common.ubuntu b/debian.master/config/config.common.ubuntu index d2715906349a..a6f6e6cef775 100644 --- a/debian.master/config/config.common.ubuntu +++ b/debian.master/config/config.common.ubuntu @@ -586,14 +586,11 @@ CONFIG_ARC_EMAC_CORE=m CONFIG_ARM=y CONFIG_ARM64=y # CONFIG_ARM64_16K_PAGES is not set -CONFIG_ARM64_4K_PAGES=y -# CONFIG_ARM64_64K_PAGES is not set CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y CONFIG_ARM64_AMU_EXTN=y CONFIG_ARM64_BTI=y CONFIG_ARM64_BTI_KERNEL=y CONFIG_ARM64_CNP=y -CONFIG_ARM64_CONT_SHIFT=4 CONFIG_ARM64_CRYPTO=y # CONFIG_ARM64_DEBUG_PRIORITY_MASKING is not set CONFIG_ARM64_E0PD=y @@ -617,10 +614,10 @@ CONFIG_ARM64_ERRATUM_858921=y CONFIG_ARM64_HW_AFDBM=y CONFIG_ARM64_LSE_ATOMICS=y CONFIG_ARM64_MODULE_PLTS=y -CONFIG_ARM64_PAGE_SHIFT=12 CONFIG_ARM64_PAN=y CONFIG_ARM64_PA_BITS=48 CONFIG_ARM64_PA_BITS_48=y +# CONFIG_ARM64_PA_BITS_52 is not set CONFIG_ARM64_PMEM=y CONFIG_ARM64_PSEUDO_NMI=y CONFIG_ARM64_PTR_AUTH=y @@ -634,7 +631,9 @@ CONFIG_ARM64_UAO=y CONFIG_ARM64_USE_LSE_ATOMICS=y CONFIG_ARM64_VA_BITS=48 # CONFIG_ARM64_VA_BITS_39 is not set +# CONFIG_ARM64_VA_BITS_42 is not set CONFIG_ARM64_VA_BITS_48=y +# CONFIG_ARM64_VA_BITS_52 is not set CONFIG_ARM64_VHE=y CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y diff --git a/debian.master/control.d/vars.generic-64k b/debian.master/control.d/vars.generic-64k new file mode 100644 index 000000000000..91eb2863d942 --- /dev/null +++ b/debian.master/control.d/vars.generic-64k @@ -0,0 +1,6 @@ +arch="arm64" +supported="Generic 64K pages" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="flash-kernel [arm64]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" diff --git a/debian.master/d-i/kernel-versions b/debian.master/d-i/kernel-versions index 6cd90edd0258..d0a73152e03a 100644 --- a/debian.master/d-i/kernel-versions +++ b/debian.master/d-i/kernel-versions @@ -7,6 +7,7 @@ armhf - generic - - - armhf - generic-lpae - - - arm64 - generic - - - +arm64 - generic-64k - - - ppc64el - generic - - - diff --git a/debian.master/etc/getabis b/debian.master/etc/getabis index 3346da2bc0b1..19e1aa8da3a4 100644 --- a/debian.master/etc/getabis +++ b/debian.master/etc/getabis @@ -13,6 +13,6 @@ package_prefixes linux-buildinfo getall armhf generic getall armhf generic-lpae getall amd64 generic lowlatency -getall arm64 generic +getall arm64 generic generic-64k getall ppc64el generic getall s390x generic diff --git a/debian.master/rules.d/arm64.mk b/debian.master/rules.d/arm64.mk index 368c2a86e2bf..263a5901ed2c 100644 --- a/debian.master/rules.d/arm64.mk +++ b/debian.master/rules.d/arm64.mk @@ -2,9 +2,11 @@ human_arch = ARMv8 build_arch = arm64 header_arch = arm64 defconfig = defconfig -flavours = generic +flavours = generic generic-64k build_image_generic = Image.gz kernel_file_generic = arch/$(build_arch)/boot/Image.gz +build_image_generic-64k = Image.gz +kernel_file_generic-64k = arch/$(build_arch)/boot/Image.gz install_file = vmlinuz no_dumpfile = true uefi_signed = true
This patch introduces an arm64 64KB pages enabled flavour of the generic kernel, called 'generic-64k'. Earlier benchmark with this config have shown an obvious trade-off: * Performance - comparing geometic mean of over 35 stress throughput tests we see a bogo op throughput increase of 22.0-24.5% with 64K pages compared to 4K pages. * Memory usage: - a simple check of memory used after boot shows that 64K pages uses around 3.2-3.6x more memory. The amount of memory being shared also increases by 15x more. - a 32GB machine is seeing about 480MB more memory consumption, or ~ 1.5% less free memory. In short, loss of memory because pages are larger but a large performance win because of less page table entry references and TLB misses: for machines with large memory, this flavour could make sense. Since we are introducing an independent flavour, generic is not affected by this change. Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com> --- debian.master/config/annotations | 34 +++++++++---------- .../config/arm64/config.common.arm64 | 5 --- .../config/arm64/config.flavour.generic | 9 +++++ .../config/arm64/config.flavour.generic-64k | 12 +++++++ debian.master/config/config.common.ubuntu | 7 ++-- debian.master/control.d/vars.generic-64k | 6 ++++ debian.master/d-i/kernel-versions | 1 + debian.master/etc/getabis | 2 +- debian.master/rules.d/arm64.mk | 4 ++- 9 files changed, 52 insertions(+), 28 deletions(-) create mode 100644 debian.master/config/arm64/config.flavour.generic-64k create mode 100644 debian.master/control.d/vars.generic-64k