Is anyone else using systemd-bootchart on a system that boots using an initial 
ramdisk?  (e.g. like Fedora 41)

I am fighting with two issues and am looking for some advice.


**1. systemd-bootchart stops too early**

According to “man systemd-bootchart”, the recommended way to invoke bootchart 
is via a kernel parameter:

  init=/usr/lib/systemd/systemd-bootchart

That parameter causes systemd-bootchart to be executed as the new init process 
when we switch into the real root filesystem.

bootchart does run, but it stops too early.

In /etc/systemd/bootchart.conf, I have bootchart configured to collect 1800 
samples at a frequency of 10 samples per sec.  It should run for about 3 
minutes.

When I login, the svg file is already present under /run/log (but the system 
has only been up for about 10 secs).

Doing “grep bootchart /proc/*/cmdline” when I login shows that bootchart is not 
running.


**2. systemd-bootchart errors out during switch root**

In this case, I have systemd-bootchart added to the initial ramdisk and execute 
it via the “rdinit” kernel parameter:

  rdinit=/usr/lib/systemd/systemd-bootchart

In the systemd-bootchart source, you can see that the first character of its 
argv[0] is changed to “@”, so bootchart should survive the switch-root killing 
spree.

Unfortunately, bootchart errors out during switch root because it wants to read 
/proc/schedstat and it is not available (I have an strace log confirming that).

There seems to be a time-of-check / time-of-use issue in the code -- it checks 
that the proc filesystem is available, but then when it goes to read 
/proc/schedstat the file is not there (ENOENT).


Has anyone else come across these?

Should I open github issues?

I can try creating a PR to fix issue 2.

Thanks,

-James M

Reply via email to