关于 virtio 的重要知识点总结

本文总结了 virtio 的核心知识点,包括 vring 的工作原理,如 vring 的结构、desc chain 的组织方式以及如何回收。探讨了 virtio-blk 和 virtio-net 的区别,以及 vhost-blk 在数据处理上的特性。此外,还阐述了 virtio 在用户态驱动的 io 模式选择,以及 packed vring 为解决 split vring 的硬件性能问题而引入的优化。最后讨论了 virtio 设备在 PCI 配置空间中的标识以及前后端驱动的优化策略。
摘要由CSDN通过智能技术生成

virtio 相关介绍文章很多,这里总结一些自认为一些关键的技术点,

1,virtio ring(vring)队列由 guest 准备(申请内存),vring(split)包含三部分:desc[], avail, used,这三部分被放置在申请的同一块内存区域。初始化时,需要将desc[0 ~ vring.num-1]组织成一个list,

/* Put everything in free lists. */
vq->free_head = 0;
for (i = 0; i < vring.num-1; i++)
        vq->split.vring.desc[i].next = cpu_to_virtio16(vdev, i + 1);

vring.avail 所指向的 desc 也由 guest 准备,guest 给队列准备 desc(实际上是准备desc[i~j].addr, .len)  chain分两种:
     1),发送时准备,如 virtio-blk 所用队列以及 virtio-net 中 guest 主动发送数据用到的队列;
     2),事先准备好,如 virtio-net 中 host 主动发送数据的队列 (virtqu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值