Virtio Serial性能如何

在虚拟机中加入了一个unix socket的virtio serial,Host端数据发送频繁后,Guest端Windows程序读取不能同步,不可能性能这个差吧,有必要了解一下virtio serial在Qemu中是个什么架构。

virtio serial最原始的状况就是下面这个样子:

-chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/idv.agent,server,nowait 

-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=gk.idv.0

可以看到virtio serial由两个元素构成:chardev,virtserialport。

首先看chardev部分的初始化:

在vl.c中,发现传入的参数中有QEMU_OPTION_chardev,将相关的字符参数转成结构体:QemuOptsList,后面利用这个结构体,调用函数chardev_init_func,初始化一个Chardev。

virtserialport的初始化也是一个类似的流程:

发现有QEMU_OPTION_device, 转成对应的QemuOptsList,通过调用qemu_find_opts("device"),获取这个结构体,通过这个关键词,可以看到初始化device依次调用了这几个函数:default_driver_check,device_help_func,device_init_func。最终会初始化name为virtserialport的TypeInfo定义的相关结构体。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容