为了更好地运行DPDK,可以多虚拟化几块网卡和CPU:
在官网下载DPDK的压缩包。
下载完之后解压并编译,
tar xf dpdk.tar.gz
cd dpdk
make config T=x86_64-native-linuxapp-gcc
sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config
make
DPDK通过使用巨页分配,内存需要较少的页面,减少对TLB访问的miss,缩短了虚拟地址到物理地址的重定位的转换时间,因此提高了性能。巨页通常来说是2MB一个页,而不使用巨页的普通页一般是4KB,差距是明显的。
巨页的分配在每次开机之后都要立即进行一次,以防止内存在物理内存上已经被碎片化。设置巨页的方法如下(root权限下):
cd dpdk/usertools
./dpdk-setup.sh
----------------------------------------------------------
Step 2: Setup linuxapp environment
----------------------------------------------------------
[17] Insert IGB UIO module
[18] Insert VFIO module
[19] Insert KNI module
[20] Setup hugepage mappings for non-NUMA systems
[21] Setup hugepage mappings for NUMA systems
[22] Display current Ethernet/Crypto device settings
[23] Bind Ethernet/Crypto device to IGB UIO module
[24] Bind Ethernet/Crypto device to VFIO module
[25] Setup VFIO permissions
选取21(对于NUMA架构,就要对每一个NUMA节点分配巨页),按提示输入即可:
Option: 21
Removing currently reserved hugepages
Unmounting /mnt/huge and removing directory
Input the number of 2048kB hugepages for each node
Example: to have 128MB of hugepages available per node in a 2MB huge page system,
enter '64' to reserve 64 * 2MB pages on each node
Number of pages for node0: 64
Reserving hugepages
Creating /mnt/huge and mounting as hugetlbfs
Press enter to continue ...
编译好DPDK后,意味着你得到了应用程序所需要的依赖库。当需要在Linux下的DPDK环境编译应用程序时,环境变量 RTE_SDK 和 RTE_TARGET 是必须的,含义如下:
以编译DPDK自带的example下的应用程序为例(root权限):
# 设置两个环境变量
export RTE_SDK=/home/chang/dpdk
export RTE_TARGET=build
# 编译example文件夹下的程序
make -C examples
完成后,在example文件夹下会新生成build文件夹,里面存放着可执行文件。下面是helloworld
的执行情况:
root@ubuntu:/home/chang/dpdk/examples/helloworld/build# ./helloworld -c f
EAL: Detected 8 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Multi-process socket /var/run/.rte_unix
EAL: Probing VFIO support...
EAL: PCI device 0000:02:01.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:02.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:03.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:04.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:100f net_e1000_em
hello from core 1
hello from core 2
hello from core 3
hello from core 0
root@ubuntu:/home/chang/dpdk/examples/helloworld/build# ./helloworld -c ff
EAL: Detected 8 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Multi-process socket /var/run/.rte_unix
EAL: Probing VFIO support...
EAL: PCI device 0000:02:01.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:02.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:03.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:04.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:100f net_e1000_em
hello from core 1
hello from core 2
hello from core 3
hello from core 4
hello from core 5
hello from core 6
hello from core 7
hello from core 0
-c 参数后面跟着16进制的掩码,表示使用那些CPU逻辑核。f代表0xf也就是四个二进制1,使用前4个逻辑核,ff则代表使用8个逻辑核。
原文链接:https://www.cnblogs.com/ZCplayground/p/9313694.html
更多DPDK学习资料有需要的可以自行添加进入学习交流君 羊 793599096 免费获取,或自行报名学习,免费订阅,永久学习,关注我持续更新哦!!!
学习地址:http://ke.qq.com/course/5066203?flowToken=1043717
[问题]从键盘任意输入m个学生n门课程的成绩,然后计算每个学生各门课的总分sum和平均分aver。下面程序存在一个极为隐蔽的错误,请分析错误的原因,并修改程序。如果这个程序你能分析明白错在哪里的话,那么用指针向用函数传递二维数组,你是真真地学明白了。#include <stdio.h>#define STUD 5 /* 最多可能的学生人数 */#define COURSE 3 /*最多可能的考试科目数 */void Total(int *score, int sum[], f..._在m列计算每位同学的均分差,其公式为:均分差=总分-总分平均分
转自原文javaScript面向对象继承方法经典实现JavaScript的出现已经将近20多年了,但是对这个预言的褒贬还是众说纷纭。很多人都说JavaScript不能算是面向对象的变成语言。但是JavaScript的类型非常松散,也没有编译器。这样一来给了程序员很大的自由,也带来了一些缺陷。虽然JavaScript不算是一门面向对象的语言。但是...
对象导论抽象过程所有的编程语言都提供抽象机制Java语言的的五个基本特性 1.外物皆为对象 2.程序是对象的集合,它们通过发送消息来告知彼此所要做的。 3.每个对象都有自己由其他对象构成的存储。 4.每个对象都拥有其类型。 5.某一特定类型的所有对象都可以接受同样的消息。对象具有状态,行为和标识每个对象都有一个借口每个对象都提供服务可以将问题分解为对象的集合将对象看做服务提供者有助于提高对象的
在 SQL 中,可以使用 ROUND 函数来保留小数点两位。语法如下:SELECT ROUND(column_name, 2)FROM table_name;其中,column_name 是你要操作的列的名称,2 表示要保留的小数位数。例如,如果你想保留价格列的小数点两位:SELECT ROUND(price, 2)FROM products;..._sql查询结果保留两位小数
appium自动化_appium自动化
进化:从孤胆极客到高效团队Every week we take a look at interesting trivia and events from the history of Geekdom. This week we’re taking a look at the first public offering of Microsoft stock, the birth of Albert ...
1264 线段相交基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交)。 如果相交,输出"Yes",否则输出"No"。Input第1行:一个数T,表示输入的测试数量(1 <= T <= 1
Message用于物体间发送信息;GameObject.BroadcastMessagepublic void BroadcastMessage(string methodName, object parameter = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);此方法主要用于给本身与子级物体..._gameobject.parameter
我们在前端开发中会遇到一些数字的计算,比如金额,距离等,所以需要用到JavaScript中的Number类型,特别是一些页面需要展示金额,那必须要很准确的数字。但在ECMAScript 中最有意思的就是Number类型,Number使用IEEE 754 格式表示整数跟浮点值,JavaScript能准确的计算整数,但存储浮点值使用的内存空间是存储整数值的两倍,所以 ECMAScript 总是想方设法把值转换为整数,所以浮点数计算远不如整数精确,比如0.1 + 0.2 = 0.300000000000_js 浮点数计算
错误原因:应该进项目里以后在编程软件终端键入pip install -r requirement.txt的,结果我是直接cmd,直接cmd是在当前c盘,当然没有这个txt文件。
启用mybatis mapUnderscoreToCamelCase 特性,可以更方便智能完成自定义对象的装配。 eg:column name = audit_state,可以自动mapping/set自定义对象的属性auditState。需要的:spring.version = 4.2.5.RELEASEmybatis.version = 3.4.0mybatis-s_spring mapunder
1.快速排序定义:它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。代码实现:public static int Partion(int[] arr,int left ,int right){ int temp=arr[left]; while(left<right) { wh