virtio

kvm和qemu交互处理io流程

瘦欲@ 提交于 2021-02-15 10:57:50
1、IO虚拟化的分类 (1)全虚拟化:宿主机截获客户机对I/O设备的访问请求,然后通过软件模拟真实的硬件。这种方式对客户机而言非常透明,无需考虑底层硬件的情况,不需要修改操作系统。 QEMU模拟I/O的情况下,当客户机中的设备驱动程序(device driver)发起I/O操作请求之时,KVM模块中的I/O操作捕获代码会拦截这次I/O请求,然后经过处理后将本次I/O请求的信息存放到I/O共享页,并通知用户控件的QEMU程序。QEMU模拟程序获得I/O操作的具体信息之后,交由硬件模拟代码来模拟出本次的I/O操作,完成之后,将结果放回到I/O共享页,并通知KVM模块中的I/O操作捕获代码。最后,由KVM模块中的捕获代码读取I/O共享页中的操作结果,并把结果返回到客户机中。当然,这个操作过程中客户机作为一个QEMU进程在等待I/O时也可能被阻塞。 另外,当客户机通过 DMA ( Direct Memory Access ) 【DMA外接设备可以不用CPU干预,直接把数据传输到内存的技术,尽量减少CPU干预的输入/输出操作方式。(使用连续物理内存,kmalloc分配)。否则外设一有数据就要中断通知CPU,CPU去读,如果频繁就时间浪费在处理中断,IO速度慢】访问大块I/O之时,QEMU模拟程序将不会把操作结果放到I/O共享页中,而是通过内存映射的方式将结果直接写到客户机的内存中去

DPDK的基本原理、学习路线总结

て烟熏妆下的殇ゞ 提交于 2021-01-30 09:32:04
一、DPDK原理 网络设备(路由器、交换机、媒体网关、SBC、PS网关等)需要在瞬间进行大量的报文收发,因此在传统的网络设备上,往往能够看到专门的NP(Network Process)处理器,有的用FPGA,有的用ASIC。这些专用器件通过内置的硬件电路(或通过编程形成的硬件电路)高效转发报文,只有需要对报文进行深度处理的时候才需要CPU干涉。 但在公有云、NFV等应用场景下,基础设施以CPU为运算核心,往往不具备专用的NP处理器,操作系统也以通用Linux为主,网络数据包的收发处理路径如下图所示: 在虚拟化环境中,路径则会更长: 由于包处理任务存在内核态与用户态的切换,以及多次的内存拷贝,系统消耗变大,以CPU为核心的系统存在很大的处理瓶颈。为了提升在通用服务器(COTS)的数据包处理效能,Intel推出了服务于IA(Intel Architecture)系统的DPDK技术。 DPDK是Data Plane Development Kit的缩写。简单说,DPDK应用程序运行在操作系统的User Space,利用自身提供的数据面库进行收发包处理,绕过了Linux内核态协议栈,以提升报文处理效率。 DPDK是一组lib库和工具包的集合。最简单的架构描述如下图所示: 上图蓝色部分是DPDK的主要组件(更全面更权威的DPDK架构可以参考Intel官网),简单解释一下: PMD:Pool

Windows ARM64 的安装

﹥>﹥吖頭↗ 提交于 2020-12-20 00:28:02
环境 操作系统:Ubuntu Kylin 优麒麟 20.10 适用架构:ARM64(鲲鹏 920 x8、飞腾 FT-2000/4)、AMD64(海光、兆芯) 下载 ISO 主页, https://uupdump.ml/ 下载预览通道的版本 https://uupdump.ml/fetchupd.php?arch=arm64&ring=wif&build=latest 加压缩文件后,进入目录。 给 sh 文件添加执行权限。 chmod +x uup_download_linux.sh 安装 2 个依赖软件包。 sudo apt install aria2 wimtools 执行下载和打包。 ./ uup_download_linux.sh 大约需要下载 4.5G 左右。 获得 ISO 我不知道有任何微软页面允许您下载 ARM64 ISO,所以这部分依赖于社区制作的解决方案。 在 MDL 论坛上,我找到了正确的 ESD 下载链接,并使用 ESD>ISO 转换脚本(也在那里找到)获得了一个可引导的 ISO。 或者, adguard 的下载页面提供了类似的脚本,可以为您下载和打包一个 ISO。 还有一点很重要: 我没有成功启动 2004 或 20H2 版本(具体来说:19041.388 / 19041.423),所以我转而使用 1909 版本(18363.592)。 (更新2020-12

centos6 通过 kvm 安装 centos7

只愿长相守 提交于 2020-12-19 04:57:08
参考: http://blog.51cto.com/wzlinux/1731324 http://blog.csdn.net/ztynet/article/details/54952425 一、检查CPU是否支持虚拟化。(在主板BIOS中开启CPU的VirtualizationTechnology) # grep -E -o 'vmx|svm' /proc/cpuinfo 二、基础环境配置 1.安装KVM软件包 yum -y groupinstall 'Virtualization' 'Virtualization Client' 'Virtualization Platform' 'Virtualization Tools' Linux命令:lsmod——显示已载入系统的模块 lsmod 其实就是list modules的缩写,即 列出所有模块. 功能说明:显示已载入系统的模块。 语法:lsmod 模块名称 说明:执行lsmod指令,会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,因此在编译核心时,无需把全部的功能都放入核心。你可以将这些功能编译成一个个单独的模块,待需要时再分别载入。 查看模块 # lsmod | grep kvm kvm_intel 53484 6 kvm 316506 1 kvm_intel 2.1

物理机centos6上使用docker创建centos7容器并在容器中使用KVM搭建win10系统

主宰稳场 提交于 2020-12-19 04:45:30
环境都通过前面几篇随笔摸索中搭建好了,以下就是简单的将docker创建centos7容器并配置好win10系统的过程记录一下。 1.创建win10容器 docker run -d --name win10 -p 5900:5900 -p 5901:5901 -p 5902:5902 -p 5903:5903 -p 5904:5904 -p 5905:5905 -v /data/zkdocker/vm:/data/zkdocker/vm --privileged=true centos:7 /usr/sbin/init 2.进入容器内部 docker exec -it win10 /bin/bash 3.进入目录/data/zkdocker/vm/shm启动脚本安装vncserver cd /data/zkdocker/vm/shm bash start-vnc.sh 4.vnc登陆系统,关闭锁屏 Applications --> System Tools --> Settings --> Privacy --> Screen Lock Off 5.在容器centos7上搭建网桥    vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 NAME="eth0" BRIDGE=br0 BOOTPROTO=dhcp NM

T级内存,创建效率提升10倍以上,阿里云 KVM异构虚拟机启动时间优化实践

て烟熏妆下的殇ゞ 提交于 2020-11-11 12:18:17
简介: 阿里云工程师李伟男和郭成在 KVM Forum 2020 上详细介绍了阿里云 KVM 虚拟机创建及启动时间优化的具体技术实现,本文根据其演讲整理而成。 对于云计算用户来说,过长的 KVM 虚拟机创建及启动时间非常影响体验,特别是超大规格的 KVM 异构虚拟机。以 350G 内存为例,创建时间需要 2 分钟,当用户此时创建虚拟机是用于快速恢复业务时,2 分钟的创建等待时间完全超出用户的可忍受值。另外,对于云计算的后台管控系统而言,过长的阻塞时间极大地影响了系统调度效率。 一直以来,阿里云异构计算团队在 KVM 性能优化方面都有大量的投入,积淀了大量实战经验。阿里云异构计算团队创新性地提出了一种显著优化带有透传(pass-through)设备的 KVM 虚拟机创建及启动时间的方法,虚拟机的启动时间不再随着分配内存的大小而显著增加,即使虚拟机被分配了几百 G 甚至更多的内存,用户感知的启动时间依然没有明显增加。 在这套技术优化方案下,对于 350G 内存的虚拟机,创建及启动时间可从原来的 120 秒以上降低到 20 秒以内,效率整整提升了 6 倍以上;对于 T 级内存的虚拟机,预计创建效率可以提升 10 倍以上。 作为 KVM 社区最为重要和权威的大会,KVM Forum 2020 有 3 个议题是与 KVM 虚拟机创建及启动速度的优化有关,分别来自阿里巴巴、英特尔和滴滴,可见

Qemu-4.1 桥接网络设置

北慕城南 提交于 2020-11-09 17:30:04
参考: [qemu] qemu旧的net参数已经不再可用了,新的这样用。 QEMU's new -nic command line option 用Qemu模拟vexpress-a9 --- 配置 qemu 的网络功能 http://www.360doc.com/content/12/0611/14/7982302_217438857.shtml Qemu版本: 4.1.0 从3.0开始,不再支持vlan,需要改为如下的方式。 1、设置添加桥接br0,修改 /etc/network/interfaces # interfaces( 5 ) file used by ifup( 8 ) and ifdown( 8 ) auto lo iface lo inet loopback auto br0 iface br0 inet dhcp bridge_ports enp3s0 2、增加/etc/qemu-ifup和/etc/qemu-ifdown qemu-ifup: #!/bin/ bash # up tapx sudo ifconfig $ 1 0.0 . 0.0 promisc up # add tapx to br0 sudo brctl addif br0 $ 1 # show sudo brctl show qemu-ifdown: #在4.1版本上啥也不用做

QEMU桥接配置

女生的网名这么多〃 提交于 2020-11-09 17:17:58
1、安装 app-emulation/qemu 、 sys-apps/usermode-utilities 、 net-misc/bridge-utils、app-emulation/libvirt 2、配置/etc/conf.d/net文件 1)vi /etc/conf.d/net # Interface tap0 config_tap0=null tuntap_tap0="tap" # Interface br0 config_br0="192.168.1.1/24" bridge_br0="tap0" rc_net_br0_need="net.tap0" 2)设置br0和tap0接口 cd /etc/init.d ln -s net.lo net.tap0 ln -s net.lo net.br0 rc-update add net.br0 default /etc/init.d/net.br0 start 3、设置转发和防火墙 1)开启转发 vi /etc/sysctl.conf net.ipv4.ip_forward=1 sysctl -p 2)设置防火墙 rc-update add iptables default iptables -A FORWARD -i br0 -o wlan0 -j ACCEPT iptables -t nat -A POSTROUTING

KVM中的网络简介(qemu-kvm)

时间秒杀一切 提交于 2020-11-09 14:23:06
emu-kvm 主要向客户机提供了如下 4 种不同模式的网络: 1)基于 网桥 (bridge) 的虚拟网卡 2)基于 NAT (Network Addresss Translation)的虚拟网络 3)QEMU内置的 用户模式网络 (user mode networking)( QEMU/KVM 的默认方式 ) 4) 直接分配宿主机上的网络设备 的网络(包括VT-d和SR-IOV) 除了特别的需要iptables配置端口映射、数据包转发规则的情况,一般默认将防火墙所有规则都关闭,以避免妨碍客户机中的网络畅通 在QEMU命令行中,对客户机网络的配置(除物理网络设备直接分配外)都是用"-net"参数进行配置的, 如果没有设置任何的"-net"参数, 默认使用 "-net nic -net user" 参数 ,进而使用完全基于QEMU内部实现的 用户模式 下的网络协议栈 qemu-kvm提供了对一系列主流和兼容性良好的网卡的模拟,通过"-net nic,model=?"参数可以查询到当前的qemu-kvm工具实现了哪些网卡的模拟 "rtl8139" 网卡模式 是 qemu-kvm默认的模拟网卡类型 "e1000" 是提供Intel e1000系列的网卡模拟, 纯的 QEMU( 非 qemu-kvm) 默认就是提供 Intel e1000 系列的虚拟网卡 。 virtio 类型是qemu

kvm 搭建

可紊 提交于 2020-10-28 17:07:20
一,准备环境 物理机 虚拟机 操作系统 CentOS 6.8 x64 CentOS 6.8 x64 CPU/ 内存 10 核超线程 x2/64G 2 核 /4G 外网 IP -- 内网 IP eth1_192.168.0.85 eth0_192.168.0.91-100 硬盘 1T 100G 二,安装服务 1、 检查当前物理机是否支持虚拟化技术: # egrep 'vmx|svm' /proc/cpuinfo 如果输出的结果包含 VMX ,它是 Intel 处理器虚拟机技术标志:如果包含 SVM ,它是 AMD 处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用 KVM ,另处 linux 发行版本必须在 64bit 环境中才能使用 KVM 。 2、 准备相应程序包: # yum install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v tunctl tigervnc-server 3、 关闭 selinux : # vi /etc/selinux/config SELINUX=disabled 此处更改后需重新服务器。 4、 查看 libvirtd 虚拟化进程是否启动: # /etc/init.d