1、virtio框架包括哪些?

(1)virtio:面向guest驱动的API接口,它在概念上将前端驱动附加到后端驱动,具体实现位于driver/virtio/virtio.c

(2)Transport:利用virtio_ring 基础架构,实现对前端驱动的具体功能的配置(网络设备需要两个队列,块设备需要1个对垒),负责virtio和后端驱动进而到Hypervisor的交互(数据的接收和发送),具体实现位于driver/virtio/virtio_ring.c

(3)前端驱动移植部分:分散于各个前端驱动中,比方说:driver/net/virtio_net.c、driver/block/virtio_blk.c、driver/char/virtio_console.c等等

参考资料:Virtio:针对Linux的I/O虚拟化框架

2、为什么目前在Cubietruck上vhost不起作用?

可能原因1:

参考文章:SUSE 部署KVM网络虚拟化 中提到,要使用vhost功能,需要在guest中配置CONFIG_PCI_MSI、在Host中配置CONFIG_VHOST_NET等,然而,在ARM开发板上使用的是ARM_AMBA总线结构,所以KVM
on ARM目前还不支持vhost功能。

可能原因2:

目前我的实验是:在host的内核中编译进了vhost-net模块,因为在host启动后,可以找到设备/dev/vhost-net;然后在启动客户机的时候,也在网络参数里使用了“--network mode=tap,trans=mmio,vhost=1” ;然后使用public bridge模式,guest仍然无法上网;这里的原因可能是,由于vhost=1起作用了,lkvm用户空间找不到原来的后端驱动

结论:

(1)我通过邮件联系到Marc Zyngier(此人负责KVM到ARMv8(64-bit) 的移植),确认目前ARM上还不支持vhost-net

(2)通过通过virtio和PCI直通技术优化KVM虚拟网络这篇文章,了解到如果虚拟机是Linux,则默认使用了virtio driver

(3)从下面这个网络请求路线图看出,性能瓶颈最可能出现在LKVM工具对后端网卡驱动的模拟上:

网络请求调用路线图:

客户端用户空间——> 客户端内核网络协议栈——>客户端virtio driver——> LKVM模拟的后端驱动(Host用户空间)——>Host内核网络协议栈——>真实网卡驱动——>网卡

参考资料:

《ARM体系以及ARM总线分析》

官网上的指导(不过是X86结构)

3、笑看全世界:使用virtio-net 这篇文章中给了两个优化虚拟机网络性能的思路:(1)检查客户机虚拟网卡确实是用了virtio模型;(2)优化两个参数TSO和GSO

处理:

(1)需要使用ethtool工具:应用层可以使用ethtool -K eth0 tso off|on命令对支持TSO特性的网络设备进行TSO功能的关闭和启用。

(2)

TSO参数:TSO是通过网络设备进行TCP段的分割,从而来提高网络性能的一种技术

GSO参数:从前面有关TSO的论述可以看出,TSO只是针对TCP协议的,使TCP协议在硬件上得到了有力的支持。事实上,这种概念也可以应用于其他的传输层协议,如TCPv6,UDP,甚至DCCP等,这就是GSO(Generic Segmentation Offload)。

参考资料:《Linux内核源码剖析:TCP/IP实现》

4、Multiqueue virtio-net:an approach enables packet sending/receiving processing to scale with the number of available vcpus of guest. 在参数中使用-mq=4,表示用4个队列

提高虚拟机网络性能。参考文章:http://www.linux-kvm.org/page/Multiqueue

5、Guest的虚拟网卡工作模式

Tap mode:Specifies a bridged or routed networking,在tap-mode下,制定用bridge或者routed网络;QEMU(LKVM) creates a network bridge by connecting the host TAP network device to a specified VLAN of VM Guest. Its network interface is then visible to the rest of the network。

桥接模式分为:public bridge(主机的网卡添加添加到bridge上,每个客户机有自己的IP) 和 private bridge(bridge拥有私有IP地址,虚拟机通过NAT方式连通外网,虚拟机没有自己的IP)

User mode:效果是,guest可以访问外面的网络,但是不允许向内的网络通道,也就是说guest机器在网络上不可见。No administrator privileges are required in this networking mode. 当如下使用场景时适合用User-mode:在guest-VM上执行网络启动的任务,而网络文件系统假设在host主机上。

KVM on CubieTruck 原理以及网络性能相关思考的更多相关文章

  1. 不错网络性能相关的文章-BaiduRPC

    http://wiki.baidu.com/display/RPC/Threading+Overview#ThreadingOverview-单线程reactor Threading Overview ...

  2. KVM总结-KVM性能优化之网络性能优化

    前面已经介绍了KVM CPU优化(http://blog.csdn.net/dylloveyou/article/details/71169463).内存优化(http://blog.csdn.net ...

  3. KVM网络性能调优

    首先,我给大家看一张图,这张图是数据包从虚拟机开始然后最后到物理网卡的过程. 我们分析下这张图,虚拟机有数据包肯定是先走虚拟机自身的那张虚拟网卡,然后发到中间的虚拟化层,再然后是传到宿主机里的内核网桥 ...

  4. 常见的GAN网络的相关原理及推导

    常见的GAN网络的相关原理及推导 在上一篇中我们给大家介绍了GAN的相关原理和推导,GAN是VAE的后一半,再加上一个鉴别网络.这样而导致了完全不同的训练方式. GAN,生成对抗网络,主要有两部分构成 ...

  5. VNF网络性能提升解决方案及实践

    VNF网络性能提升解决方案及实践 2016年7月 作者:    王智民 贡献者:     创建时间:    2016-7-20 稳定程度:    初稿 修改历史 版本 日期 修订人 说明 1.0 20 ...

  6. 常用CSS优化总结——网络性能与语法性能建议

    在前端面试中最常见的问题就是页面优化和缓存(貌似也是页面优化),被问了几次后心虚的不行,平然平时多少会用到一些,但突然问我,很难把自己知道的都说出来.页面优化明显不是一两句能够说完的,这两天总结了一下 ...

  7. Android常见崩溃或闪退的问题描述及原因总结、及与性能相关的模块——持续更新

    1.nullpointer——就是使用一个对象的时候还没有对其进行初始化导致该问题 一般在何种情况下容易出现呢? (1)父窗口+子窗口同时出现的,父窗口因为某种原因消掉了,子窗口还在,操作子窗口找不到 ...

  8. Linux 下网络性能优化方法简析

    概述 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能的优化则可基于这 3 条路径来考虑.由于数据包的转发一般是具备路由功能的设备所关注,在本文中 ...

  9. (转)常用CSS优化总结——网络性能与语法性能建议

    原文地址:http://www.cnblogs.com/dolphinX/p/3508657.html 在前端面试中最常见的问题就是页面优化和缓存(貌似也是页面优化),被问了几次后心虚的不行,平然平时 ...

随机推荐

  1. g-api notes

    目录 Q: What is GOrigin? What the meaning of parameters GMat(const GNode &n, std::size_t out) Q: h ...

  2. cookie 设置报错 setcookie() expects parameter 3 to be integer, float given in...

    使用 setcookie 函数设置 cookie 报错,报错信息为: setcookie() expects parameter to be integer, float given in... 错误 ...

  3. C++ Multimap运用实例

    C++ Multimap运用实例 #include <map> #include <string> #include <iostream> #include < ...

  4. invalid argument (errno: 22)

    socket通信示例中,当accept客户端时,经常报这个错误. 并且是第一次没有问题,第二次或后面几次都会出现如下问题, 错误码为22, 错误描述为invalid argument. 问题解决如下: ...

  5. 华硕主板 Vmware虚拟机 二进制转换与此平台上的长模式不兼容

    出现情况如下: 大概遇到过两次这个问题,第一次是在笔记本VM上装虚拟机,第二次是在台式机VM上装虚拟机. 原因是因为虚拟化(Intel Virtualization Technology)技术,在主板 ...

  6. jzy3D从入门到弃坑_2使用jzy3D0.9画2D散点图

    jzy3D从入门到弃坑_2 使用jzy3D0.9画2D散点图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 在上一节中安装jzy3D 0.9版本并且运行了3D的例子 https://blog ...

  7. xpath库学习

    xpath解析是我们在爬虫中最常用也是最通用的一种数据解析方式. 环境安装 pip install lxml 解析原理 使用通用爬虫爬取网页数据 实例化etree对象,且将页面数据加载到该对象中 使用 ...

  8. JAVA中List对象去除重复值的方法

    JAVA中List对象去除重复值,大致分为两种情况,一种是List<String>.List<Integer>这类,直接根据List中的值进行去重,另一种是List<Us ...

  9. 阿里云k8s事件监控

    事件监控是Kubernetes中的另一种监控方式,可以弥补资源监控在实时性.准确性和场景上的缺欠.Kubernetes的架构设计是基于状态机的,不同的状态之间进行转换则会生成相应的事件,正常的状态之间 ...

  10. 去掉WARN spring.jpa.open-in-view is enabled by default

    使用springboot jpa,在运行项目时发现一个WARN WARN 11472 --- [ main] aWebConfiguration$JpaWebMvcConfiguration : sp ...