Firecracker comes with an internal way of logging a timestamp that measures time elapsed between the very start of the guest VM and the moment a specific IO port has been written to.
That allows for marking specific moment along the boot process by having code writing to this port.
Here we're going to measure the time it takes for a Firecracker guest VM to reach userspace. To do so we're going to build 3 components: