dpdk学习笔记2
一 了解dpdk准备知识
1 NAT
NAT技术是为了缓解IPV4地址枯竭得问题,通过使用NAT技术,一个机构如学校可以只用单一得公网IP来范文互联网,在外界看来只有一台接入公网得设备。NAT分为两种技术,一种是NAT,一种是NAPT。NAT在网络地址转换得时候只是对IP地址进行映射,而NAPT技术对IP和端口进行了映射。NAT 在具体的应用场景中又分 NAT、DNAT 以及 FULLNAT。SNAT 是源地址转换,DNAT 是目的地址转换,FULLNA则对源地址和目的地址都进行了转换。NAT 是用来实现负载均衡的常见技术之一。
2 NUMA
NUMA即非统一内存访问架构。传统的SMP系统中,多处理器共享总线和存储。当处理器的数目越来越大的时候,多处理器对于存储的竞争容易使得总线成为系统的性能瓶颈,这样以来,NUMA出现了。
NUMA将SMP分为多个节点,节点之间通过高速网络互连。每一个NUMA节点包含自己的CPU和本地内存,CPY既可以访问同一个节点的内存,也可以访问其他的内存。DPDK提供了对NUMA的支持。
3 HugePage
在linux环境中,内存分配按照页为单位进行,通常的大小为4K。对于比较大的内存空间的分配,这种分配方式需要频繁的分配和管理。HP是对传统4K页的替代,通过它可以减少页表的大小,提高检索效率,从而提高系统性能。
4 绑核
将线程或者进程与CPU核进行绑定,减少进程或者线程调度产生的开销。
二 负载均衡调度算法
随着集群中服务器数目不断增多,机器性能差异对于系统的负载能力的影响越来越大。为了增强系统的稳定性,达到负载的目的,那就需要合适的调度算法来对请求进行分发。常见的有如下几种
(1) 轮询
一般轮询:
这种调度算法将请求均匀的分配到真实服务器中。要求各个服务器的配置得相同而且各个请求所消耗资源较为平均。
进一步轮询:
为集群中得服务器根据处理能力赋予权值,权值高得服务器相对处理更多的请求。
(2)源地址Hash
根据源IP进行Hash计算,从hash表中选择一台真实服务器来处理请求。有个好处就是相同得IP会被映射到同一台服务器。缺点就是对于多人局域网共享同一个外网IP上网得方式,可能就存在大量得请求到同一台。
x=hash(src_ip)mod N
(3)一致性Hash
解决两个问题
服务器处理能力得差异化
真实服务器得增减会导致src_ip与处理请求得真实服务器之间得映射发生改变。
这里推荐两篇文章,对一致性hash非常用心得讲解。
http://www.zsythink.net/archives/1182
https://www.cnblogs.com/lpfuture/p/5796398.html
三 DPDK基础
(1)EAL
提供一种通用得接口,这种接口为应用和库在访问底层资源如硬件和内存得时候屏蔽了具体得环境细节。多线程为例,linux应用程序得EAL初始化如下图所使
(2)dpdk核心组件
提供了一组涵盖开发高性能包处理工具所需要的全部要素的库,其中包括环形缓冲区管里,内存池管里,网络保温缓冲区管理,定时器管里,以太网轮询驱动架构,报文转发算法支持,网络协议库等,后面慢慢的再去学习各个模块的详细内容。核心组件如下图所示
就到这了,内容都是在学习dpdk的时候感觉需要所了解的内容。。。。
dpdk学习笔记2的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- 1194: [HNOI2006]潘多拉的盒子
1194: [HNOI2006]潘多拉的盒子 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 464 Solved: 221[Submit][Stat ...
- Dijkstra的堆优化
先附上一个例题:P3371 [模板]单源最短路径 一眼扫去,最短路... spfa可行,但是今天的主题是Dijkstra: #include<iostream> #include<a ...
- Quartz Job scheduling 基础实现代码
Quartz 集成在 SpringBoot 中分为 config.task.utils.controller 和 MVC 的三层即 controller.service.dao 和 entity. c ...
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL【转】
本文转载自:http://blog.csdn.net/mr_raptor/article/details/8069588 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] ...
- cmd 环境变量设置方法详细解释
cmd设置环境变量可以方便我们bat脚本的运行,但是要注意的是变量只在当前的cmd窗口有作用(局部生效),如果想要设置持久的环境变量需要我们通过两种手段进行设置:一种是直接修改注册表,另一种是通过我的 ...
- python列表切片
Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组. 格式:[start:end:step] start:起始索引,从0开始,-1表示结束 end:结束索引 step:步 ...
- [原创]Java给word中的table赋值
一.准备工作: 下载PageOffice for Java:http://www.zhuozhengsoft.com/dowm/ 二. 实现方法: 要调用PageOffice操作Word中的tabl ...
- 前端多媒体(2)—— xhr异步接收处理二进制数据
有时我们需要把远程的视频.图片数据异步下载下来,然后在js里进行特殊处理.比如把VR的图片特殊处理,把不同封装格式的视频做一次 转封装 处理等等,这类操作都要先获取二进制数据,然后特殊处理. 这个时候 ...
- codeforces 569C C. Primes or Palindromes?(素数筛+dp)
题目链接: C. Primes or Palindromes? time limit per test 3 seconds memory limit per test 256 megabytes in ...
- TF-IFD算法及python实现关键字提取
TF-IDF算法: TF:词频(Term Frequency),即在分词后,某一个词在文档中出现的频率. IDF:逆文档频率(Inverse Document Frequency).在词频的基础上给每 ...