Re: [RFC PATCH v4 0/7] Speed booting by sorting ORC unwind tables at build time

From: Shile Zhang
Date: Sun Nov 17 2019 - 21:28:01 EST




On 2019/11/18 10:18, hpa@xxxxxxxxx wrote:
On November 15, 2019 8:45:32 AM PST, Shile Zhang <shile.zhang@xxxxxxxxxxxxxxxxx> wrote:
Hi,

I refactored the code, followed by Peter's suggestions in v3, thank
you!
Any suggestions and comments are welcome!

Thanks!

Changelog:
==========
v3->v4:
- Code refactored for Peter's review findings and suggestions.

v2->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.
https://lore.kernel.org/lkml/20191115064750.47888-1-shile.zhang@xxxxxxxxxxxxxxxxx/

v1->v2:
- Removed new added Kconfig and runtime sort code, advised by Josh
Poimboeuf.
- Some minor refactoring.
https://lore.kernel.org/lkml/20191108071108.72132-1-shile.zhang@xxxxxxxxxxxxxxxxx/

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://lore.kernel.org/lkml/20191107143205.206606-1-shile.zhang@xxxxxxxxxxxxxxxxx/

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 | 10 +-
scripts/link-vmlinux.sh | 10 +-
scripts/sortextable.h | 209 -------------
scripts/{sortextable.c => sorttable.c} | 299 +++++++++---------
scripts/sorttable.h | 401 +++++++++++++++++++++++++
19 files changed, 568 insertions(+), 395 deletions(-)
delete mode 100644 scripts/sortextable.h
rename scripts/{sortextable.c => sorttable.c} (67%)
create mode 100644 scripts/sorttable.h
Any actual time measurements?

Sorry for missed in cover letter!

The ORC unwind tables sorting cost about 100ms in boot time on my 2vcpu16GB VM (with 2.5GHz Xeon CPU).
After sort at build time, the sorttable needs about 70ms in host.

Thanks!