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定義的相關結構體。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容