[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20191115064750.47888-1-shile.zhang@linux.alibaba.com>
Date: Fri, 15 Nov 2019 14:47:43 +0800
From: Shile Zhang <shile.zhang@...ux.alibaba.com>
To: Peter Zijlstra <peterz@...radead.org>,
Josh Poimboeuf <jpoimboe@...hat.com>,
Masahiro Yamada <yamada.masahiro@...ionext.com>,
Michal Marek <michal.lkml@...kovi.net>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
x86@...nel.org
Cc: "H . Peter Anvin" <hpa@...or.com>, linux-kernel@...r.kernel.org,
linux-kbuild@...r.kernel.org,
Shile Zhang <shile.zhang@...ux.alibaba.com>
Subject: [RFC PATCH v3 0/7] Speed booting by sorting ORC unwind tables at build time
Hi,
I refactored the sortextable code and add ORC unwind tables sort
support, for kernel boot speedup by sorting kernel tables at build time
as much as possible.
Followed Peter's suggestion, I put ORC tables sort into a separated
thread makes these tables sort concurrently. That helps to avoid
kernel's link time as possible.
What I did:
[1-4] : refacorting code sortextable.{ch}, for more readable and
extendable, prepare for further rework;
[5] : rename the sortextable to sorttable, and related Kconfig, for
commonly extend.
[6-7] : Add ORC unwind tables sorting, and remove the runtime sort.
Further works:
Put more kernel tables be sorted at build time:
- __jump_table:
I found jump table sort in jump_label_init() does not cost more boot
time, seems not more benefit to sort it at build time. Maybe can
consider it in future for more boot-time sensitive case.
- .static_call_sites:
This tables not merged yet, needs to check the runtime sort cost in
future.
https://lore.kernel.org/lkml/20191007081716.07616230.8@infradead.org/
Thanks!
Changes from RFC v3:
- Discard new added sortorctable tool and related Kconfig changes.
- Refactored sortextable, makes it more readable and extendable.
- Rename 'sortextable' to 'sorttable', for more kernel tables extend.
- Add ORC unwind tables sort into sorttable.
- Remove the runtime ORC tables sort.
Changes from RFC v2:
- Removed new added Kconfig and runtime sort code, advised by Josh Poimboeuf.
- Some minor refactoring.
https://www.lkml.org/lkml/2019/11/8/56
v1:
- Added a new sortorctable tool to sort ORC unwind tables at build time,
same as sortextable.
- Add a new Kconfigure to control if ORC unwind tables sort at build
time.
https://www.lkml.org/lkml/2019/11/7/611
Shile Zhang (7):
scripts/sortextable: Rewrite error/success handling
scripts/sortextable: kernel coding style formating
scripts/sortextable: Remove dead code
scripts/sortextable: refactor do_func() function
scripts/sorttable: rename sortextable to sorttable
scripts/sorttable: Add ORC unwind tables sort concurrently
x86/unwind/orc: remove run-time ORC unwind tables sort
arch/arc/Kconfig | 2 +-
arch/arm/Kconfig | 2 +-
arch/arm64/Kconfig | 2 +-
arch/microblaze/Kconfig | 2 +-
arch/mips/Kconfig | 2 +-
arch/parisc/Kconfig | 2 +-
arch/parisc/kernel/vmlinux.lds.S | 2 +-
arch/powerpc/Kconfig | 2 +-
arch/s390/Kconfig | 2 +-
arch/x86/Kconfig | 2 +-
arch/x86/kernel/unwind_orc.c | 8 +-
arch/xtensa/Kconfig | 2 +-
init/Kconfig | 2 +-
scripts/.gitignore | 2 +-
scripts/Makefile | 9 +-
scripts/link-vmlinux.sh | 10 +-
scripts/sortextable.h | 209 -------------
scripts/{sortextable.c => sorttable.c} | 299 ++++++++----------
scripts/sorttable.h | 412 +++++++++++++++++++++++++
19 files changed, 578 insertions(+), 395 deletions(-)
delete mode 100644 scripts/sortextable.h
rename scripts/{sortextable.c => sorttable.c} (67%)
create mode 100644 scripts/sorttable.h
--
2.24.0.rc2
Powered by blists - more mailing lists