No. 85 / project of 147 on the ladder

BusyBox symbol profile

introduces — userspace ELF symbolization; shell-window PC sample filtering; BusyBox hot-function profile

harden statelast run2026-05-05
signoff
  • DRCNOT RUN
  • LVSNOT RUN
  • antennaNOT RUN

P84 told us the shell workload was slow, but all low userspace PCs were raw addresses. P85 resolves the command-window samples against BusyBox’s unstripped ELF, so the profile can name the code the shell is actually running.

The filtered window is:

markercycle
shell_start159,733,543
file_ok239,533,859

That leaves boot, initramfs unpacking, and early console setup out of the BusyBox profile.

Hot Functions

hot functions label P85 BusyBox shell symbols samples 77,930 period every 1,024 cycles
  1. printf_core busybox
    4.8% 3,718
  2. memset kernel
    4.3% 3,347
  3. vruntime_eligible kernel
    3.8% 2,954
  4. memcpy busybox
    3.1% 2,404
  5. n_tty_write kernel
    2.6% 2,028
  6. memcpy kernel
    2.4% 1,837
  7. blake2s_compress_generic kernel
    2.3% 1,809
  8. __fwritex busybox
    2.3% 1,763
  9. avg_vruntime kernel
    1.8% 1,436
  10. handle_exception kernel
    1.5% 1,160
  11. unmap_page_range kernel
    1.5% 1,154
  12. update_curr kernel
    1.2% 912
  13. memset busybox
    1.1% 845
  14. __enqueue_entity.constprop.0 kernel
    1.1% 820
  15. ret_from_exception kernel
    1% 789
  16. (remaining) remaining
    56.9% 44,330

The top entries are no longer mysterious raw addresses:

bucketfunctionpct
BusyBoxprintf_core4.77%
kernelmemset4.29%
kernelvruntime_eligible3.79%
BusyBoxmemcpy3.08%
kerneln_tty_write2.60%
BusyBox__fwritex2.26%

This is a shell and terminal workload, not an integer benchmark. The shape says that output formatting, stdio writes, terminal writes, exception entry/return, and scheduler accounting are visible costs.

What This Means For CPU Work

The next CPU-side perf rounds should be judged against P84/P85, not just against userspace hello:

  • Larger or split TLB: P84 saw 2.26M fetch walks and 2.94M load/store walks.
  • Better memory path: P84 saw 39.6M memory handshakes and 91.8M memory stall cycles.
  • Console batching: printf_core, __fwritex, and n_tty_write are now plainly hot.
  • Trap/syscall cleanup: handle_exception, ret_from_exception, and do_trap_ecall_u are visible in the shell window.

Honest Status

checkstatus
P84 shell sample data reusedPASS
BusyBox unstripped ELF found and symbolizedPASS
Shell-window cycle filter usedPASS
Site hot-function JSON stagedPASS
Folded flamegraph input stagedPASS
True stack unwindingNOT RUN
Per-PID userspace symbolizationPARTIAL
LibreLane hardeningNOT RUN

The remaining caveat is process identity. The sample stream has PC and cycle, not PID or current address-space identity. Filtering to the shell window makes BusyBox the right practical interpretation, but the harness does not yet prove it per sample.