河北住房和城乡建设厅官方网站,新河seo怎么做整站排名,普洱网站搭建,营销型网站的例子续前节#xff0c; 测试小程序 1. 想编译测试程序首先需要设置两个环境变量#xff0c;为什么呢#xff0c;因为测试程序的Makefile里用了。。。 rpm装了打包好的devel包#xff0c;这个rpm也会自带这两个环境变量。就是说写第三方程序的时候#xff0c;习惯上#xff0c…续前节 测试小程序 1. 想编译测试程序首先需要设置两个环境变量为什么呢因为测试程序的Makefile里用了。。。 rpm装了打包好的devel包这个rpm也会自带这两个环境变量。就是说写第三方程序的时候习惯上约定了这两个环境变量。 [rootdpdk tools]# cat ~/env.sh
export RTE_SDK/root/dpdk-16.07
export RTE_TARGETx86_64-native-linuxapp-gcc
[rootdpdk tools]# 2. 文档里说The UIO drivers and hugepages must be setup prior to running an application. UIO包括uio_pci_generic, uio, igb_uio, vfio_pci vfio_pci 在host里我已经学会怎么玩了。uio不知道是啥好想要和igb_uio放在一起用 sudo modprobe uio
sudo insmod kmod/igb_uio.ko [rootdpdk tools]# locate igb_uio.ko
/root/dpdk-16.07/build/build/lib/librte_eal/linuxapp/igb_uio/.igb_uio.ko.cmd
/root/dpdk-16.07/build/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.ko
/root/dpdk-16.07/build/kmod/igb_uio.ko
/root/dpdk-16.07/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/.igb_uio.ko.cmd
/root/dpdk-16.07/x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.ko
/root/dpdk-16.07/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
[rootdpdk tools]# 我觉得弄一下 uio_pci_generic 首先有一个非常好用的工具 tools/dpdk-devbind.sh . (我就是客气一下我并没有觉得特别好用当然也觉得难用因为我根本就没怎么用) (1) 现运行这个命令看一看 [rootdpdk tools]# ./dpdk-devbind.py --statusNetwork devices using DPDK-compatible drivernoneNetwork devices using kernel driver0000:00:03.0 Virtio network device if drvvirtio-pci unused
0000:00:04.0 Ethernet Connection (3) I218-V ifens4 drve1000e unused *Active*Other network devicesnone 2加载驱动 uio_pci_generic [rootdpdk tools]# modprobe uio_pci_generic (3) 再运行看一下然后发现unused发生了变化可是也没什么大不了的。 [rootdpdk tools]# ./dpdk-devbind.py --statusNetwork devices using DPDK-compatible drivernoneNetwork devices using kernel driver0000:00:03.0 Virtio network device if drvvirtio-pci unuseduio_pci_generic
0000:00:04.0 Ethernet Connection (3) I218-V ifens4 drve1000e unuseduio_pci_generic *Active*Other network devicesnone 4把网卡从原驱动e1000e上面解绑和vfio_pci的操作没有区别。 [rootdpdk tools]# lspci -nn -s 00:04.0
00:04.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection (3) I218-V [8086:15a3] (rev 03)
[rootdpdk tools]# echo 0000:00:04.0 /sys/bus/pci/devices/0000\:00\:04.0/driver/unbind [rootdpdk tools]# ./dpdk-devbind.py --statusNetwork devices using DPDK-compatible drivernoneNetwork devices using kernel driver0000:00:03.0 Virtio network device if drvvirtio-pci unuseduio_pci_generic Other network devices0000:00:04.0 Ethernet Connection (3) I218-V unuseduio_pci_generic 5 绑到 uio_pci_generic 上面去。 [rootdpdk tools]# echo 0000:00:04.0 /sys/bus/pci/drivers/uio_pci_generic/bind [rootdpdk tools]# ./dpdk-devbind.py --status Network devices using DPDK-compatible driver0000:00:04.0 Ethernet Connection (3) I218-V drvuio_pci_generic unusedNetwork devices using kernel driver0000:00:03.0 Virtio network device if drvvirtio-pci unuseduio_pci_generic Other network devicesnone 6 至此绑完了就。就文档说4和5可以用一条命令搞定。并没有测试。 ./tools/dpdk-devbind.py --binduio_pci_generic 04:00.1 大页我早已经在虚拟机里设置好了。 3. EAL库。 (1) 就是dpdk的程序都可以接受命令行参数。其他是可选的只有一个-c mask是比较主要的用掩码觉得运行程序的逻辑核。 [rootdpdk build]# ./helloworld -c 1 |grep hello
hello from core 0
[rootdpdk build]# ./helloworld -c 2 |grep hello
hello from core 1
[rootdpdk build]# ./helloworld -c 4 |grep hello
hello from core 2
[rootdpdk build]# ./helloworld -c 3 |grep hello
hello from core 0
hello from core 1
[rootdpdk build]# ./helloworld -c 6 |grep hello
hello from core 2
hello from core 1
[rootdpdk build]# 给mask参数之前你必须知道你的cpu结构。 这么多年都是这样的。 [rootdpdk build]# cat /proc/cpuinfo 后来觉得可视性不好于是写了个脚本整理了一下输出结果。可是那又怎么样呢 依然很土。 然后对刚刚dpdk的文档里介绍了这个lstopo (pkg: hwloc). 输出结果是酱紫的 牛逼的我还能说什么。。。 还有nographic版本 [tongT7 ~]$ lstopo-no-graphics
Machine (7927MB)Package L#0 L3 L#0 (4096KB)L2 L#0 (256KB) L1d L#0 (32KB) L1i L#0 (32KB) Core L#0PU L#0 (P#0)PU L#1 (P#1)L2 L#1 (256KB) L1d L#1 (32KB) L1i L#1 (32KB) Core L#1PU L#2 (P#2)PU L#3 (P#3)HostBridge L#0PCI 8086:1616GPU L#0 card1GPU L#1 renderD129GPU L#2 controlD65PCI 8086:15a3PCIBridgePCI 8086:095bNet L#3 wlan0PCIBridgePCI 10de:1347GPU L#4 card0GPU L#5 renderD128GPU L#6 controlD64PCI 8086:9c83Block(Disk) L#7 sdaBlock(Disk) L#8 sdb
[tongT7 ~]$ (2) 内存参数。可以申请在hugepage中预申请内存并决定node。 使用参数 -m 或 --socket-mem (3) 测试程序。test, testpmd 4. HPET (High Precision Event Timer) 高精度定时器。 1查看硬件支持与BOIS状态如下有输出代表启用没有任何输入代表没有启用或不支持 [rootdpdk ~]# grep hpet /proc/timer_list
Clock Event Device: hpetset_next_event: hpet_legacy_next_eventset_mode: hpet_legacy_set_mode
[rootdpdk ~]# 2内核支持。内核参数 HPET_MMAP 可以将计数器映射近用户态进程地址空间。 3dpdk支持。CONFIG_RTE_LIBEAL_USE_HPET 编译时设置编译选项默认为n。 5. 使用非超级用户运行。 6. 电源管理。 7. Isolation Core。指定的CPU将不参加系统内核任务调度从而可以单独被专用。 支持内核参数如下 isolcpus2,4,6 8. KNI kernel Mode Dpdk Kernel NIC Interface 并不知道是干嘛的。 9. IOMMU。与之前的类似。 10. 40G网卡。 i40e驱动 确保 firmware 支持。我也不知道怎么确保。。。 快速设置脚本 dpdk-setup.sh 自动化工具用于完成前边提到的大部分内容。 获取最佳网卡性能 内存 查看通道数频率之类的不太懂。先这么地把。下图例子为host主机 T450 板载4G外插4G。均为DDR3 1600 我还看了我的台式机输出台式机DDR2 800 X 4 双通道。然而并不能通过输出很显然的反馈出上述信息所以这部分知识还是需要仔细学习的。 [tongT7 ~]$ sudo dmidecode -t memory |grep LocatorLocator: ChannelA-DIMM0Bank Locator: BANK 0Locator: ChannelB-DIMM0Bank Locator: BANK 2
[tongT7 ~]$ sudo dmidecode -t memory |grep SpeedSpeed: 1600 MHzConfigured Clock Speed: 1600 MHzSpeed: 1600 MHzConfigured Clock Speed: 1600 MHz
[tongT7 ~]$ 网卡 设备相关的内容。最近无业手上都是家庭环境没有专有设备。略。 BOIS 硬件 passthrough 启用 vt-d。前文介绍过了。 Kernel设置 大页 / isolation core / iommu dpdk设置 基于硬件编译库 / 挂载大页 / 查看cpu node 相关信息 [rootdpdk tools]# lstopo-no-graphics 查看网卡在哪个Node上 [rootdpdk tools]# cat /sys/bus/pci/devices/0000\:00\:04.0/numa_node
-1
[rootdpdk tools]# 很显然这个输出结果证明没有node绑定。那么这玩意应该怎么绑上去啊愿意分享的请留言 : ) 网卡绑定到用户态驱动 vfio uio 等 略跟前边一样。 l3fwd 就是个check list。看源文档。 至此入门指南读完下一节读开发指南 : )转载于:https://www.cnblogs.com/hugetong/p/5914938.html