Here is my progress update since the last report.

Over the past ~2 weeks, I have been completing and hardening the host-side
eBPF infrastructure, and establishing the host-to-guest shared memory
communication channel.

eBPF host infrastructure (continued from deliverable 1):

Extended register_vm.c to dynamically allocate memory for QMP results and
accept the number of vCPUs as an argument, enabling correct registration of
VMs with varying vCPU counts.
Added a VM cleanup utility (cleanup) that  removes per-VM entries from the
host bpf maps.
Raised the CAS upper limit in create_maps.bpf.c from 8 to 24, as the
original value was too small under high contention and caused dropped
samples.
Renamed BPF program entry points to be more intuitive across .bpf.c files
and their corresponding loaders, fixing mismatches that caused loader
failures.
Fixed bpf-gcc compatibility in the timer BPF program by replacing
unsupported  #pragma directives with bpf-gcc compatible equivalents.
Added an OpenMP thread registration BPF program and loader on the guest
side (ebpf/guest), enabling tracking of OMP thread .

Host-to-guest shared memory:
Integrated pvsched-shmem (host ivshmem kernel module) into the VM creation
flow, setting up the ivshmem backend device before QEMU launches.
Consolidated all host eBPF programs under pvsched-ebpf/host/ and updated
all scripts to reflect the new directory layout.

My next target is to validate the full end-to-end pipeline: the guest
reading host phantom-averages from ivshmem and using it to adjust the DoP.

Best Regards,
 Nchang Roy

Reply via email to