Message ID | 20190404184411.1392-1-mbenes@suse.cz (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] kbuild: use -flive-patching when CONFIG_LIVEPATCH is enabled | expand |
On Thu, Apr 04, 2019 at 08:44:11PM +0200, Miroslav Benes wrote: > GCC 9 introduces a new option, -flive-patching. It disables certain > optimizations which could make a compilation unsafe for later live > patching of the running kernel. > > The option is used only if CONFIG_LIVEPATCH is enabled and $(CC) > supports it. > > Performance impact of the option was measured on three different > Intel machines - two bigger NUMA boxes and one smaller UMA box. Kernel > intensive (IO, scheduling, networking) benchmarks were selected, plus a > set of HPC workloads from NAS Parallel Benchmark. The tests were done on > upstream kernel 5.0-rc8 with openSUSE Leap 15.0 userspace. > > The majority of the tests is unaffected. The only significant exception > is the scheduler section which suffers 1-3% degradation. > > Evaluated-by: Giovanni Gherdovich <ggherdovich@suse.cz> > Signed-off-by: Miroslav Benes <mbenes@suse.cz> > --- > The patch is based on master branch of the livepatching tree on > git.kernel.org. > > Many thanks to Giovanni who ran the whole testing campaign and analyzed > the results. I archived the dashboard and detailed data. If anyone is > interested, we could probably set up a public website somewhere. Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> While we're on the subject, I'm glad to see ongoing activity on klp-convert (though I haven't had a chance to follow the discussions). What's the status of the rest of the needed bits? - kgraft-analysis-tool - will this also be submitted for inclusion in the kernel tree? - Documentation about how to create a patch - The other bits I think Nicolai has been working on to eliminate all the manual steps
> While we're on the subject, I'm glad to see ongoing activity on > klp-convert (though I haven't had a chance to follow the discussions). > What's the status of the rest of the needed bits? > > - kgraft-analysis-tool - will this also be submitted for inclusion in > the kernel tree? Yes, it is the next step. > - Documentation about how to create a patch I know we talked about it, but I don't remember what we came up with. We should probably tie to Nicolai's work. It will change the process a lot. > - The other bits I think Nicolai has been working on to eliminate all > the manual steps Miroslav
On Thu 2019-04-04 15:18:55, Josh Poimboeuf wrote: > On Thu, Apr 04, 2019 at 08:44:11PM +0200, Miroslav Benes wrote: > > GCC 9 introduces a new option, -flive-patching. It disables certain > > optimizations which could make a compilation unsafe for later live > > patching of the running kernel. > > > > The option is used only if CONFIG_LIVEPATCH is enabled and $(CC) > > supports it. > > > > Performance impact of the option was measured on three different > > Intel machines - two bigger NUMA boxes and one smaller UMA box. Kernel > > intensive (IO, scheduling, networking) benchmarks were selected, plus a > > set of HPC workloads from NAS Parallel Benchmark. The tests were done on > > upstream kernel 5.0-rc8 with openSUSE Leap 15.0 userspace. > > > > The majority of the tests is unaffected. The only significant exception > > is the scheduler section which suffers 1-3% degradation. > > > > Evaluated-by: Giovanni Gherdovich <ggherdovich@suse.cz> > > Signed-off-by: Miroslav Benes <mbenes@suse.cz> > > --- > > The patch is based on master branch of the livepatching tree on > > git.kernel.org. > > > > Many thanks to Giovanni who ran the whole testing campaign and analyzed > > the results. I archived the dashboard and detailed data. If anyone is > > interested, we could probably set up a public website somewhere. > > Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> I have committed the patch into the branch for-5.2/core. Best Regards, Petr
diff --git a/Makefile b/Makefile index f070e0d65186..464a693a22e9 100644 --- a/Makefile +++ b/Makefile @@ -789,6 +789,10 @@ KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections LDFLAGS_vmlinux += --gc-sections endif +ifdef CONFIG_LIVEPATCH +KBUILD_CFLAGS += $(call cc-option, -flive-patching=inline-clone) +endif + # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
GCC 9 introduces a new option, -flive-patching. It disables certain optimizations which could make a compilation unsafe for later live patching of the running kernel. The option is used only if CONFIG_LIVEPATCH is enabled and $(CC) supports it. Performance impact of the option was measured on three different Intel machines - two bigger NUMA boxes and one smaller UMA box. Kernel intensive (IO, scheduling, networking) benchmarks were selected, plus a set of HPC workloads from NAS Parallel Benchmark. The tests were done on upstream kernel 5.0-rc8 with openSUSE Leap 15.0 userspace. The majority of the tests is unaffected. The only significant exception is the scheduler section which suffers 1-3% degradation. Evaluated-by: Giovanni Gherdovich <ggherdovich@suse.cz> Signed-off-by: Miroslav Benes <mbenes@suse.cz> --- The patch is based on master branch of the livepatching tree on git.kernel.org. Many thanks to Giovanni who ran the whole testing campaign and analyzed the results. I archived the dashboard and detailed data. If anyone is interested, we could probably set up a public website somewhere. Makefile | 4 ++++ 1 file changed, 4 insertions(+)