Virtio ====== - intro - virtio devices are implemented over MMIO, Channel I/O and PCI bus transports - virtqueue, vring Document -------- - initial paper from Rusty Russel: `(Rusty, 2008) virtio: Towards a De-Facto Standard For Virtual I/O Devices `_ - about virtio spec: - `Virtio spec from OASIS `_ - `(2014), Standardizing virtio [LWN.net] `_ - `(2010), IBM developer works, Virtio: An I/O virtualization framework for Linux `_ - `CMU 15-412 materials, Virtio: An I/O virtualization framework for Linux `_ - `(2014, devconf.cz), Stefan Hajnoczi. VIRTIO 1.0 - Paravirtualized I/O for KVM and beyond `_ - Performance comparsion: `virtio-blk latency `_ notes ~~~~~ - paper note: :doc:`/notes/qemu_kvm/virtio_paper` - virtqueue initialization (e.g. config) - virtqueue 5 ops 簡介 virtio-blk ---------- - documents - `virtio blk 流程 (p.18 to 21) `_ - `(2012) virtio blk performance improvement `_ - `Virtio-Blk性能加速方案 `_ - bio based virtio-blk guest driver: remove IO scheduling. - vhost blk host driver: remove host fs layer, no qemu userspace. Misc ---- - virtqueue kick: a pio write to a virtio PCI hardware register - Programming IO: https://en.wikipedia.org/wiki/Programmed_input/output - http://www.linux-kvm.org/page/Virtio/Block/Latency - 好吧, 看來 virtqueue kick 就是 trap, vring interrupt 也是一般的 interrupt. - `virtio-ioeventfd (userspace emulation) `_ - `mailing list discussion `_ - `patch `_ - virtio-pci: Use ioeventfd for virtqueue notify