Skip to content

boot-time-analysis-tools: add boot time profiling tools - #1069

Open
ctheegal wants to merge 1 commit into
openembedded:masterfrom
ctheegal:boot-tools2
Open

boot-time-analysis-tools: add boot time profiling tools#1069
ctheegal wants to merge 1 commit into
openembedded:masterfrom
ctheegal:boot-tools2

Conversation

@ctheegal

@ctheegal ctheegal commented Sep 2, 2026

Copy link
Copy Markdown

Add two new recipes from the CentOS Automotive SIG boot-time-analysis-tools project to enable boot time profiling and measurement.

boot-time-analysis-tools:
Python-based toolset for collecting, analyzing and visualizing system
boot timing data from the systemd journal. Provides the 'boot_timings'
CLI utility which queries D-Bus and the systemd journal to produce
structured boot time reports. Depends on python3-dbus and python3-systemd
for runtime journal and D-Bus access.

cntvct-log:
Userspace C utility built with Meson that logs ARM CNTVCT_EL0 virtual
counter timestamps to correlate hardware-level timing with systemd boot
events. Installs cntvct@.service as a systemd template unit (disabled
by default) for on-demand per-instance activation. The service preset
file (98-cntvct-log.preset) is installed for system-preset-based enablement.

Both recipes fetch from the same upstream git repository:
https://gitlab.com/CentOS/automotive/src/boot-time-analysis-tools

@kraj

kraj commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

This fails to build for MACHINE = "qemux86-64"

| [1/2] /mnt/b/yoe/master/build/tmp/hosttools/ccache x86_64-yoe-linux-clang -m64 -march=x86-64-v3 --dyld-prefix=/usr -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/recipe-sysroot -Icntvct.p -I. -I../sources/cntvct-log-0.7.1/cntvct-log -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O2 -g -ffile-prefix-map=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/sources/cntvct-log-0.7.1/cntvct-log=/usr/src/debug/cntvct-log/0.7.1 -ffile-prefix-map=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/build=/usr/src/debug/cntvct-log/0.7.1 -ffile-prefix-map=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/recipe-sysroot= -ffile-prefix-map=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/recipe-sysroot-native= -pipe -MD -MQ cntvct.p/cntvct.c.o -MF cntvct.p/cntvct.c.o.d -o cntvct.p/cntvct.c.o -c ../sources/cntvct-log-0.7.1/cntvct-log/cntvct.c
| FAILED: [code=1] cntvct.p/cntvct.c.o
| /mnt/b/yoe/master/build/tmp/hosttools/ccache x86_64-yoe-linux-clang -m64 -march=x86-64-v3 --dyld-prefix=/usr -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/recipe-sysroot -Icntvct.p -I. -I../sources/cntvct-log-0.7.1/cntvct-log -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O2 -g -ffile-prefix-map=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/sources/cntvct-log-0.7.1/cntvct-log=/usr/src/debug/cntvct-log/0.7.1 -ffile-prefix-map=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/build=/usr/src/debug/cntvct-log/0.7.1 -ffile-prefix-map=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/recipe-sysroot= -ffile-prefix-map=/mnt/b/yoe/master/build/tmp/work/x86-64-v3-yoe-linux/cntvct-log/0.7.1/recipe-sysroot-native= -pipe -MD -MQ cntvct.p/cntvct.c.o -MF cntvct.p/cntvct.c.o.d -o cntvct.p/cntvct.c.o -c ../sources/cntvct-log-0.7.1/cntvct-log/cntvct.c
| ../sources/cntvct-log-0.7.1/cntvct-log/cntvct.c:20:15: error: invalid instruction mnemonic 'isb'
|    20 |         asm volatile("isb\n mrs %0, cntfrq_el0"
|       |                      ^
| <inline asm>:1:2: note: instantiated into assembly here
|     1 |         isb
|       |         ^~~
| ../sources/cntvct-log-0.7.1/cntvct-log/cntvct.c:20:21: error: invalid instruction mnemonic 'mrs'
|    20 |         asm volatile("isb\n mrs %0, cntfrq_el0"
|       |                            ^
| <inline asm>:2:2: note: instantiated into assembly here
|     2 |  mrs %rdx, cntfrq_el0
|       |  ^~~
| ../sources/cntvct-log-0.7.1/cntvct-log/cntvct.c:9:15: error: invalid instruction mnemonic 'isb'
|     9 |         asm volatile("isb\n mrs %0, cntvct_el0"
|       |                      ^
| <inline asm>:1:2: note: instantiated into assembly here
|     1 |         isb
|       |         ^~~
| ../sources/cntvct-log-0.7.1/cntvct-log/cntvct.c:9:21: error: invalid instruction mnemonic 'mrs'
|     9 |         asm volatile("isb\n mrs %0, cntvct_el0"
|       |                            ^
| <inline asm>:2:2: note: instantiated into assembly here
|     2 |  mrs %rax, cntvct_el0
|       |  ^~~
| 4 errors generated.

Perhaps you need to contain the supported hosts e.g. if its only meant for aarch64

COMPATIBLE_HOST = "aarch64.*-linux"

Add two new recipes from the CentOS Automotive SIG
boot-time-analysis-tools project to enable boot time profiling
and measurement.

boot-time-analysis-tools:
  Python-based toolset for collecting, analyzing and visualizing system
  boot timing data from the systemd journal. Provides the 'boot_timings'
  CLI utility which queries D-Bus and the systemd journal to produce
  structured boot time reports. Depends on python3-dbus and python3-systemd
  for runtime journal and D-Bus access.

cntvct-log:
  Userspace C utility built with Meson that logs ARM CNTVCT_EL0 virtual
  counter timestamps to correlate hardware-level timing with systemd boot
  events. Installs cntvct@.service as a systemd template unit (disabled
  by default) for on-demand per-instance activation. The service preset
  file (98-cntvct-log.preset) is installed for system-preset-based enablement.

Both recipes fetch from the same upstream git repository:
  https://gitlab.com/CentOS/automotive/src/boot-time-analysis-tools

Signed-off-by: Chitti Babu Theegala <ctheegal@qti.qualcomm.com>
@ctheegal

ctheegal commented Sep 7, 2026

Copy link
Copy Markdown
Author

This fails to build for MACHINE = "qemux86-64"

Perhaps you need to contain the supported hosts e.g. if its only meant for aarch64

COMPATIBLE_HOST = "aarch64.*-linux"

Yes, added the aarch64 specific check now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants