From: changbin.du@intel.com
To: yamada.masahiro@socionext.com, michal.lkml@markovi.net,
tglx@linutronix.de, mingo@redhat.com, akpm@linux-foundation.org
Cc: x86@kernel.org, lgirdwood@gmail.com, broonie@kernel.org,
arnd@arndb.de, linux-kbuild@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
Changbin Du <changbin.du@intel.com>
Subject: [PATCH 0/5] kernel hacking: GCC optimization for debug experience (-Og)
Date: Tue, 1 May 2018 21:00:09 +0800 [thread overview]
Message-ID: <1525179614-14571-1-git-send-email-changbin.du@intel.com> (raw)
From: Changbin Du <changbin.du@intel.com>
Hi all,
I know some kernel developers was searching for a method to dissable GCC
optimizations, probably they want to apply GCC '-O0' option. But since Linux
kernel replys on GCC optimization to remove some dead code, so '-O0' just
breaks the build. They do need this because they want to debug kernel with
qemu, simics, kgtp or kgdb.
Thanks for the GCC '-Og' optimization level introduced in GCC 4.8, which
offers a reasonable level of optimization while maintaining fast compilation
and a good debugging experience. It is similar to '-O1' while perfer keeping
debug ability over runtime speed. With '-Og', we can build a kernel with
better debug ability and little performance drop after some simple change.
In this serias, firstly introduce a new config CONFIG_NO_AUTO_INLINE after two
fixes. Selecting this option will make compiler not auto-inline kernel
functions.This is useful when you are using ftrace to understand the control
flow of kernel code or tracing some static functions.
Then introduce new config CONFIG_DEBUG_EXPERIENCE which apply '-Og'
optimization level for whole kernel, with a simple fix in fix_to_virt().
Currently this option is only tested on a QEMU gust and it works fine.
Comparison of vmlinux size: a bit smaller.
w/o CONFIG_DEBUG_EXPERIENCE
$ size vmlinux
text data bss dec hex filename
22665554 9709674 2920908 35296136 21a9388 vmlinux
w/ CONFIG_DEBUG_EXPERIENCE
$ size vmlinux
text data bss dec hex filename
21499032 10102758 2920908 34522698 20ec64a vmlinux
Comparison of system performance: a bit drop.
w/o CONFIG_DEBUG_EXPERIENCE
$ time make -j4
real 6m43.619s
user 19m5.160s
sys 2m20.287s
w/ CONFIG_DEBUG_EXPERIENCE
$ time make -j4
real 6m55.054s
user 19m11.129s
sys 2m36.345s
Changbin Du (5):
x86/mm: surround level4_kernel_pgt with #ifdef
CONFIG_X86_5LEVEL...#endif
regulator: add dummy of_find_regulator_by_node
kernel hacking: new config NO_AUTO_INLINE to disable compiler
atuo-inline optimizations
kernel hacking: new config DEBUG_EXPERIENCE to apply GCC -Og
optimization
asm-generic: fix build error in fix_to_virt with
CONFIG_DEBUG_EXPERIENCE
Makefile | 10 ++++++++++
arch/x86/include/asm/pgtable_64.h | 2 ++
arch/x86/kernel/head64.c | 13 ++++++-------
drivers/regulator/internal.h | 9 +++++++--
include/asm-generic/fixmap.h | 3 ++-
include/linux/compiler-gcc.h | 2 +-
include/linux/compiler.h | 2 +-
lib/Kconfig.debug | 34 ++++++++++++++++++++++++++++++++++
8 files changed, 63 insertions(+), 12 deletions(-)
--
2.7.4
next reply other threads:[~2018-05-01 13:10 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-01 13:00 changbin.du [this message]
2018-05-01 13:00 ` [PATCH 1/5] x86/mm: surround level4_kernel_pgt with #ifdef CONFIG_X86_5LEVEL...#endif changbin.du
2018-05-01 13:00 ` [PATCH 2/5] regulator: add dummy of_find_regulator_by_node changbin.du
2018-05-01 20:40 ` Mark Brown
2018-05-02 9:24 ` Du, Changbin
2018-05-05 1:44 ` Applied "regulator: add dummy function of_find_regulator_by_node" to the regulator tree Mark Brown
2018-05-05 1:44 ` Mark Brown
2018-05-05 1:44 ` Mark Brown
2018-05-01 13:00 ` [PATCH 3/5] kernel hacking: new config NO_AUTO_INLINE to disable compiler atuo-inline optimizations changbin.du
2018-05-01 14:54 ` Steven Rostedt
2018-05-02 9:27 ` Du, Changbin
2018-05-01 13:00 ` [PATCH 4/5] kernel hacking: new config DEBUG_EXPERIENCE to apply GCC -Og optimization changbin.du
2018-05-01 15:25 ` Randy Dunlap
2018-05-02 9:24 ` Du, Changbin
2018-05-02 20:30 ` Arnd Bergmann
2018-05-01 13:00 ` [PATCH 5/5] asm-generic: fix build error in fix_to_virt with CONFIG_DEBUG_EXPERIENCE changbin.du
2018-05-02 7:33 ` [PATCH 0/5] kernel hacking: GCC optimization for debug experience (-Og) Ingo Molnar
2018-05-02 9:07 ` Du, Changbin
2018-05-02 11:09 ` Ingo Molnar
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=1525179614-14571-1-git-send-email-changbin.du@intel.com \
--to=changbin.du@intel.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=broonie@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michal.lkml@markovi.net \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=yamada.masahiro@socionext.com \
/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.