Please enable JavaScript.
Coggle requires JavaScript to display documents.
ukvm or ucontainer - Coggle Diagram
ukvm or ucontainer
user-defined VM
uKVM
with the three devices, one VM can be emulated easily
all main devices are defined by hypervisor or containerd
block device is defined by ublk
is it doable?
READ
VM just notifies hypervisor for handling READ
then return back to guest
when READ completes, inject irq to guest
irq is usually not friendly for perf
ublk
submitted READ async request and return back to kernel
how to exit VM when io emulation is done?
when IO is completed, io_uring_enter() returns
the last command has to be RUN_KVM
so it has to depend on async io emulation
IO is always completed in the emulated CPU
network device is defined by unet
how to?
console device is defined uconsole
how to?
questions
Can io_uring be shared between guest and host?
it looks unlikely
but one dedicated uring has to be used for communication for this purpose
but virtqueue is shared between guest and host
benefit
high-performance
speedup fast path by bpf
safety
totally emulated in userspace
hypervisor is written by Rust
hypervisor is simplified a lot
no need to emulated irq controller
no need to emulated DMA
user-defined container
the three devices are defined by containerd
understand Pod in details