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定义的相关结构体。

你可能感兴趣的:(Virtio Serial性能如何)