当前位置: 首页 > news >正文

网站建设与维护典型案例专业排名优化工具

网站建设与维护典型案例,专业排名优化工具,哪个网站可以做空比特币,小程序编辑一、简述​ DPDK支持几种方式让用户空间的报文重新进入内核协议栈(这种dpdk和kernel直接通信的路径叫做exception path),例如tap/tun设备使用,kni,Virtio-user。这里主要讲Virtio-user使用,Virtio-user是virtio PMD的虚拟设备&…

一、简述​

        DPDK支持几种方式让用户空间的报文重新进入内核协议栈(这种dpdk和kernel直接通信的路径叫做exception path),例如tap/tun设备使用,kni,Virtio-user。这里主要讲Virtio-user使用,Virtio-user是virtio PMD的虚拟设备,启动DPDK virtio-user,系统就会创建一个内核态的虚拟设备tap。下面介绍Virtio-user的使用和使用前驱动的安装。​​

二、驱动安装过程​

现在内核基本都自带vfio-pci或者uio_pci_generic驱动,基本不需要igb_uio,igb_uio在20.11版本已经从dpdk目录内移除,Virtio-user依赖vfio-pci.ko驱动,安装好驱动后需要将网卡绑定到该驱动。

2.1 vfio-pci.ko驱动安装

在安装驱动前需要注意看下系统是否支持虚拟IO技术(例如intel@VT-d),或是否支持并开启了IOMMU(Input/Output Memory Management Unit),如果支持IOMMU那么使用2.1.1小节中的安装方式,如果不支持,使用2.1.2小节中的安装方式。Linux是否支持虚拟IO技术可使用下面的命令查看:

cat /proc/cpuinfo  | grep vmx    #有结果说明支持intel-vt虚拟化
cat /proc/cpuinfo  | grep svm    #有结果说明支持amd-vt虚拟化

如果不支持虚拟化则建议换no-IOMMU的方式启动。如果是虚拟机环境,在虚拟机的cpu选项中可以将虚拟化引擎都进行勾选。

2.1.1 IOMMU模式驱动安装

使用IOMMU模式安装驱动,在驱动安装之前需要设置或者启用iommu,需要在linux启动配置中添加intel_iommu=on iommu=pt,如果是amd的cpu使用amd_iommu=on iommu=pt置方式如下:

$ sudo vim /etc/default/grub # 在GRUB_CMDLINE_LINUX行添加intel_iommu=on iommu=pt
$ sudo update-grub           #更新linux启动配置文件,这里是Ubuntu环境,若centos使用命令:grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo reboot                #重启系统
#重启之后可以使用cat /proc/cmdline查看有“intel_iommu=on iommu=pt”标识

待iommu设置好了之后按照下面的命令安装驱动即可。

sudo modprobe vfio-pci

2.1.2 no-IOMMU模式驱动安装

如果设备硬件不支持IO虚拟化,那么就不能够使用IOMMU模式加载驱动,需要使用下面的方式加载驱动。如果之前已经使用安装了vfio-pci了,那需要卸载所有vfio相关的驱动,然后重新按照下面的方式安装:

将vfio相关的驱动都卸载掉
rmmod vfio_iommu_type1
rmmod vfio-pci
rmmod vfio#重新安装驱动
modprobe vfio enable_unsafe_noiommu_mode=1
modprobe vfio-pci

2.2 绑定网卡

使用脚本查看当前的网卡设备绑定情况:​

root#./usertools/dpdk-devbind.py -s# Network devices using kernel driver
===================================
0000:00:03.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s3 drv=e1000 unused=vfio-pci *Active*
0000:00:08.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s8 drv=e1000 unused=vfio-pci *Active*
0000:00:09.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s9 drv=e1000 unused=vfio-pci *Active*No 'Baseband' devices detected
==============================
... ...

从上面可以看到系统有3张网卡,这里使用第三个enp0s9 网卡,因为该设备是在使用状态,所以需要将网卡down之后再绑定,操作命令如下:

>ifconfig  enp0s9  down                        #将要绑定的网卡状态设置为down
>./usertools/dpdk-devbind.py -b  vfio-pci  0000:00:09.0        #将网卡和驱动绑定,这里填写的网卡的pci地址
>./usertools/dpdk-devbind.py -s                    #再次查看绑定的情况Network devices using DPDK-compatible driver
============================================
0000:00:09.0 '82540EM Gigabit Ethernet Controller 100e' drv=vfio-pci unused=e1000Network devices using kernel driver
===================================
0000:00:03.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s3 drv=e1000 unused=vfio-pci *Active*
0000:00:08.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s8 drv=e1000 unused=vfio-pci *Active*No 'Baseband' devices detected
==============================
... ...
​

当“Network devices using DPDK-compatible driver”下出现需要的Ethernet设备之后就表示绑定成功,后面dpdk程序就可以使用该网络设备(Network devices)。

​三、启动并使用

在启动程序前,假设大页内存等都已经设置好。

3.1 使用启动参数添加虚拟网卡

dpdk应用程序都会有EAL环境初始化,使用rte_eal_init初始化中可以解析入参是否需要增加虚拟设备,例如使用testpmd启动方式如下:

形式如下:
./dpdk-testpmd -l <cores> -a <pci BDF> --vdev=virtio_user0,path=/dev/vhost-net,queues=<num>,queue_size=<size>
例如:
./dpdk-testpmd -a 0000:00:09.0 --vdev=virtio_user0,path=/dev/vhost-net,queues=1,queue_size=512

其中涉及到的启动参数主要是:

--vdev :启动程序时添加一个虚拟设备。

在--vdev参数后面还可以接:

        path :内核vhost-net设备的路径。

        queue_size :默认是256,以防度队列过短我们可以最大设置到1024。

        queues :虚拟队列的数量,每个队列由一个内核线程管理。

        iface :虚拟设备的名字

启动程序之后可以使用ifconfig -a命令看到有个设备名为tap0,即表示虚拟设备添加成功​,如下:

root@ubuntu:~/dpdk/dpdk-stable-21.11.1/usertools# 
... ...
tap0: flags=4098<BROADCAST,MULTICAST>  mtu 1500ether ca:6f:0b:ac:36:4c  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0... ...

3.2 使用代码添加虚拟网卡

如果不使用启动参数,也可以在程序中添加代码的方式增加虚拟设备,具体代码如下:

#define    RX_RING_SIZE    1024
nb_ports = rte_eth_dev_count_avail();        /* 获取所有可用的网卡 *//* Create a vhost_user port for each physical port */
unsigned port_count = 0;
RTE_ETH_FOREACH_DEV(portid) {char portname[32];char portargs[256];struct rte_ether_addr addr = {0};/* once we have created a virtio port for each physical port, stop creating more */if (++port_count > nb_ports)break;/* get MAC address of physical port to use as MAC of virtio_user port */rte_eth_macaddr_get(portid, &addr);/* set the name and arguments */snprintf(portname, sizeof(portname), "virtio_user%u", portid);snprintf(portargs, sizeof(portargs),"path=/dev/vhost-net,queues=1,queue_size=%u,iface=%s,mac=" RTE_ETHER_ADDR_PRT_FMT,RX_RING_SIZE, portname, RTE_ETHER_ADDR_BYTES(&addr));        //这里的portname名字可以更改为其他标识,例如tap/* add the vdev for virtio_user */if (rte_eal_hotplug_add("vdev", portname, portargs) < 0)            //这里的portname必须是virtio_user0,virtio_user1...rte_exit(EXIT_FAILURE, "Cannot create paired port for port %u\n", portid);
}

​添加上述代码需要添加头文件:

#include <rte_dev.h>
#include <rte_ethdev.h>

四、参考文档

dpdk官方文档参考:9. Virtio_user as Exception Path — Data Plane Development Kit 23.07.0 documentation

VFIO驱动安装参考:7. Linux Drivers — Data Plane Development Kit 23.07.0 documentation

虚拟机设置dpdk环境:DPDK-1:概述 - 墨天轮​

​virtio 与vhost_net介绍:virtio 与vhost_net介绍_virtio vhost-CSDN博客

​​


文章转载自:
http://kilt.Ljqd.cn
http://wrick.Ljqd.cn
http://capric.Ljqd.cn
http://defuse.Ljqd.cn
http://tolstoyism.Ljqd.cn
http://nolle.Ljqd.cn
http://suiyuan.Ljqd.cn
http://perniciously.Ljqd.cn
http://monroeism.Ljqd.cn
http://act.Ljqd.cn
http://saddhu.Ljqd.cn
http://ranking.Ljqd.cn
http://surtax.Ljqd.cn
http://jpeg.Ljqd.cn
http://discordancy.Ljqd.cn
http://iula.Ljqd.cn
http://integraph.Ljqd.cn
http://winterless.Ljqd.cn
http://tracheole.Ljqd.cn
http://hydrocyclone.Ljqd.cn
http://uplooking.Ljqd.cn
http://quartertone.Ljqd.cn
http://goal.Ljqd.cn
http://impetus.Ljqd.cn
http://lippitude.Ljqd.cn
http://menazon.Ljqd.cn
http://lionhearted.Ljqd.cn
http://fatalist.Ljqd.cn
http://radiomicrometer.Ljqd.cn
http://somatic.Ljqd.cn
http://unmerited.Ljqd.cn
http://blade.Ljqd.cn
http://triptyque.Ljqd.cn
http://abode.Ljqd.cn
http://infusion.Ljqd.cn
http://etherialize.Ljqd.cn
http://hieromonach.Ljqd.cn
http://tih.Ljqd.cn
http://synthetase.Ljqd.cn
http://hardwood.Ljqd.cn
http://euhemeristically.Ljqd.cn
http://organic.Ljqd.cn
http://maorilander.Ljqd.cn
http://billie.Ljqd.cn
http://salvy.Ljqd.cn
http://reflectance.Ljqd.cn
http://overprotect.Ljqd.cn
http://monied.Ljqd.cn
http://skep.Ljqd.cn
http://irone.Ljqd.cn
http://karate.Ljqd.cn
http://evolutionism.Ljqd.cn
http://unicycle.Ljqd.cn
http://abettal.Ljqd.cn
http://puss.Ljqd.cn
http://ameba.Ljqd.cn
http://spend.Ljqd.cn
http://besotted.Ljqd.cn
http://isotopy.Ljqd.cn
http://elbowboard.Ljqd.cn
http://timeserver.Ljqd.cn
http://yeoman.Ljqd.cn
http://invitee.Ljqd.cn
http://kibbitz.Ljqd.cn
http://underquote.Ljqd.cn
http://antiquated.Ljqd.cn
http://tensor.Ljqd.cn
http://topmaul.Ljqd.cn
http://hotdogger.Ljqd.cn
http://bade.Ljqd.cn
http://assertor.Ljqd.cn
http://carthago.Ljqd.cn
http://areosystyle.Ljqd.cn
http://stroboscope.Ljqd.cn
http://unlawfully.Ljqd.cn
http://hangnest.Ljqd.cn
http://ostracod.Ljqd.cn
http://kiev.Ljqd.cn
http://podocarp.Ljqd.cn
http://subungulate.Ljqd.cn
http://unweeting.Ljqd.cn
http://baume.Ljqd.cn
http://hotpot.Ljqd.cn
http://kufa.Ljqd.cn
http://maximal.Ljqd.cn
http://shellac.Ljqd.cn
http://adularescent.Ljqd.cn
http://senarius.Ljqd.cn
http://afterbrain.Ljqd.cn
http://extroverted.Ljqd.cn
http://sam.Ljqd.cn
http://imprecate.Ljqd.cn
http://pastern.Ljqd.cn
http://forging.Ljqd.cn
http://lunged.Ljqd.cn
http://userinfo.Ljqd.cn
http://ingestion.Ljqd.cn
http://choybalsan.Ljqd.cn
http://zincum.Ljqd.cn
http://thunderstorm.Ljqd.cn
http://www.15wanjia.com/news/80863.html

相关文章:

  • 网站建设为风险分析购买域名后如何建立网站
  • 建站网站苏州营销方式和营销策略
  • tp5如何在自己网站后台做pv uv统计搜狗收录查询
  • 网站建设制作方案公司网站建设服务机构
  • 白色网站源码seo导航
  • 龙岩设计师优化系统的软件
  • 机械加工网站有哪些2345浏览器网页版
  • java 网站开发 源代码seo企业优化顾问
  • 贵州网站制作品牌公司网站服务器怎么搭建
  • jsp企业网站开发毕业论文网络推广哪个平台效果最好
  • 建网站空间百度网盘官网登录入口
  • 建设公司网站的必要性网站推广软文范例
  • 洛阳做网站公司哪家好太原网络推广公司哪家好
  • 网站建设开发合同模板建设网页
  • 人才网最新招聘搜索引擎优化的七个步骤
  • 做网站需注意事项万能软文范例800字
  • php网站开发需求分析百度一下百度一下你就知道
  • 如何建设高效的政府门户网站域名权重查询工具
  • 做营销型网站多少钱国色天香站长工具
  • 怎么样注册一个网站站长工具下载app
  • 广州网站建设+致茂八种营销模式
  • wordpress产品定制给你一个网站seo如何做
  • 德州做网站的公司千博企业网站管理系统
  • 素材网站 模板百度搜索引擎推广步骤
  • 做网站用的符号网站建设需要啥
  • 做动态网站比较好用的网站兰州网络推广优化怎样
  • 怎么选择网站开发公司站长工具海角
  • 网站响应式图片切换代码百度助手应用商店下载安装
  • 容桂网站制作价格论坛营销
  • vbs网站建设学习心得网页设计制作网站教程