diff --git a/docs/profiling.md b/docs/profiling.md index 4211dbce8..93c113eca 100644 --- a/docs/profiling.md +++ b/docs/profiling.md @@ -43,3 +43,22 @@ $ perf report -g ``` If profiling with a network device attached either the TAP device must be already created and configured or the profiling must be done as root so that the TAP device can be created. + +## Userspace only profiling with LBR + +The use of LBR (Last Branch Record; available since Haswell) offers lower +overhead if only userspace profiling is required. This lower overhead can allow +a higher frequency of sampling. This also removes the requirement to compile +with custom `RUSTFLAGS` however debug symbols should still be included: + +e.g. + +``` +$ perf record --call-graph lbr --all-user --user-callchains -g target/release/cloud-hypervisor \ + --kernel ~/src/linux/vmlinux \ + --pmem file=~/workloads/focal.raw \ + --cpus boot=1 --memory size=1G \ + --cmdline "root=/dev/pmem0p1 console=ttyS0" \ + --serial tty --console off \ + --api-socket=/tmp/api1 +```