建站服务器
安装dpdk
官方https://github.com/iqiyi/dpvs网址
dpdk 17。05 .2可以兼容dpv
wget https://fast.dpdk.org/rel/dpdk-17.05.2.tar.xz
tar vxf dpdk-17.05.2.tar.xz
下载dpv
饭桶克隆https://github.com/iqiyi/dpvs.git
给dpdk打补丁,加入kni驱动
dpv的激光唱片路径
丙酸纤维素补丁/dpdk-stable-17.05.2/* .补丁dpdk-稳定-17.05.2/
CD dpdk-稳定-17.05.2/
PATCH-p 1 0001-PATCH-kni-use-netlink-event-for-multicast-driver-par。修补
另一个补丁,uoa模块
补丁-P1 0002-net-support-variable-IP-header-len-for-校验和-API。修补
编译dpdk并安装
CD dpdk-稳定-17.05.2/
make config T=x86 _ 64-native-Linux app-gcc
制造
出口RTE_SDK=$PWD
启动hugepage
服务器是numa系统(centos)
echo 8192/sys/devices/system/node/node 0/巨大页面/巨大页面-2048 kb/NR _巨大页面
echo 8192/sys/devices/system/node/node 1/巨大页面/巨大页面-2048 kb/NR _巨大页面
市场/市场/巨大
mount -t hugetlbfs nodev /mnt/huge
注:这个操作是临时的,如果服务器有别的应用再跑,可能已经占用hugepage了,后面给出另外的方法
安装uio驱动,并绑定网卡
modprobe uio
CD dpdk-稳定-17.05.2
insmod build/kmod/igb_uio.ko
insmod build/kmod/rte_kni.ko
查看网卡状态/用户工具/dpdk-dev绑定。py状态
使用内核驱动程序的网络设备
===================================
0000:01:00.0 \\\'I350千兆网络连接1521\\\' if=eth0 drv=igb未使用=
0000:01:00.1 \\\'I350千兆网络连接1521\\\' if=eth2 drv=igb未使用=
0000:01:00.2 \\\'I350千兆网络连接1521\\\' if=eth3 drv=igb未使用=
0000:01:00.3 \\\'I350千兆网络连接1521\\\' if=eth4 drv=igb未使用=
绑定eth3。/用户工具/dpdk-dev绑定。py-b igb _ uio 0000:01:00.2
注:这里绑定的网卡,最好是没有使用的,因为网卡需要向下掉才能绑
编译dpv
CD dpdk-稳定-17.05.2/
出口RTE_SDK=$PWD
dpv的激光唱片路径
制造
进行安装
注:安装的时候可能有依赖包报错,提示哪个,好吃安装就可以了
编译后的文件
ls bin/
dpip dpvs ipvsadm保持激活
启动dpv
CP conf/dpvs。糖膏剂单网卡。样本/etc/dpv。conf
光盘路径-dpv/bin。/dpvs
查看是否启动正常。/dpip链接显示
1: dpdk0:插座0 mtu 1500接收队列8发送队列8
高达10000 Mbps的全双工固定nego承诺-关闭
地址A0:36:9F:9D:61:F4 OF _ RX _ IP _ CSUM OF _ TX _ IP _ CSUM OF _ TX _ TCP _ CSUM OF _ TX _ UDP _ CSUM
以速度三角形定位法(航位推算)模式举例
官方网址https://github.com/iqiyi/dpvs/blob/master/doc/tutorial.md,各种lvs模式配置
给dpv添加局域网ip 37,这个步骤必须在添加贵宾之前。/dpip addr add 192。168 .1 .37/24开发dpdk 0
给dpv添加vip 57。/dpip addr add 192。168 .1 .57/32开发dpdk 0
设置算法为rr,vip为57。/ipvsadm-A-t 192。168 .1 .57:80-s RR
添加后端机器11。/ipvsadm-a-t 192。168 .1 .57:80-r 192。168 .1 .11-g
在11机器执行
互联网协议(Internet Protocol的缩写)地址添加192.168.1.11/32开发低
sysctl-w net。IP v4。糖膏剂瞧。ARP _ ignore=1
dpv在启动的时候,有时候会报错,罪魁祸首是内存碎片,应用程序无法申请到足够多的连续大块内存,只能申请到很多小块内存。以至于内存块数目超过了系统设置的256个。
解决方式就是申请大页内存应该在系统启动时,或系统启动后尽快申请,避免内存被割裂
https://www.cnblogs.com/cobbliu/p/6603391.html
为了省事可以加入到核心参数/etc/boot/grub2.cfg
default _ huge pagesz=1G huge pagesz=1G huge pagesz=8G
引用别人的结论:
结论:DPDK再快也是收包到送给应用层的时间短,而不是"转发"快。收到包后,各类检查跟查表(一般都是并发环境,加锁啊什么的,无锁?……哈哈)处理的时间,基本上都是要远远超过DPDK的自身开销的。
想比Linux快,就要明白Linux网络协议栈为什么“慢”,比DPDK处理慢。对于大多数应用来说,没有必要为了上层服务延迟而在网络上大费周章。总之,延迟能不能降低,要看应用环境(你买得起这么多物理机吗?有没有相应的稳定可靠的人才支撑?),然后做剖析,看看瓶颈在哪里。不要想当然,DPDK。
例如,如果您使用UDP dns,您可以使用DPDK绕过Linux协议栈并升级QPS。如果做路由的话,我觉得硬件是配不上的。这个我不同意。为了减少延迟,在没有包的时候,DPDK要保持CPU满负荷运行。这时候如果想提高吞吐量,延迟也就随之而来了。如果系统里多个工作程序一起运行,老板穷或者不愿意买好机器,开发和操作技能没跟上,DPDK也会用光。
硬件差不多,网络IO内存程序和Linux运行在10兆也没问题。
如果做包转发,肯定会比x86 linux在性能上有很大提升。其实大部分瓶颈并不在dpdk处理的网络中。
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。