Hello Everyone, I am Roy, and this is my progress report on what I have been doing over the past week.
First, I replaced the read operation previously used by the guest_ivshmem character device with an mmap operation. This allows the IVSHMEM pages to be directly mapped into guest userspace, avoiding a read/pread system call every time the phantom average is accessed. I then adapted the libgomp implementation and tests to use this new mmap-based interface. I also replaced the earlier uprobe-based approach for tracking internal libgomp functions with USDT (Userspace Statically Defined Tracing) probes. This provides a more stable interface for the Phantom Tracker eBPF programs and avoids requiring libgomp to export internal function symbols solely for tracing purposes. I then updated the Phantom Tracker eBPF programs, as well as the related eBPF test programs, to attach to these USDT probes. I also carried out tests of the complete setup to verify that the modified libgomp, Phantom Tracker, and the new IVSHMEM interface work correctly together. Finally, I carried out the required benchmark tests using the OpenMP version of the NAS Parallel Benchmarks (NPB) 3.4.4, I am currently thinking about how to incorporate a shared metadata section for all VMs, together with a registration mechanism that can dynamically allocate the appropriate IVSHMEM region for a given VM. Best Regards, Nchang Roy
