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 ...
随机推荐
- 下面哪个进制能表述 13*16=244是正确的?)[中国台湾某计算机硬件公司V2010年5月面试题]
A.5B.7C.9D.11解析:13如果是一个十进制的话,它可以用13=1*101+3*100来表示.现在我们不知道13是几进制,那我们姑且称其X进制.X进制下的13转化为十进制可以用13=1*X1+ ...
- Docker基础原理
前言 Docker是一个开源的软件项目,让用户程序部署在一个相对隔离的环境运行,借此在Linux操作系统上提供一层额外的抽象,以及操作系统层虚拟化的自动管理机制.需要额外指出的是,Docker并不等于 ...
- springcloud和kubernetes对比
由于这两个都不熟,所以在考虑学哪个. 先说结论:都要学,但是重点学k8s,k8s是一个更加完善的解决方案,springcloud被淘汰只是时间的问题. 从自己的经历和网上的文章两方面分析 个人经历: ...
- haproxy + keepalived 实现web 双主模型的高可用负载均衡
参考文章 http://xz159065974.blog.51cto.com/8618592/1405812 http://blog.chinaunix.net/uid-25266990-id-398 ...
- json字符串转集合或者数组
import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util. ...
- php分10个不同等级压缩优化图片(PNG)
今天找到一个php写的压缩图片程序,可以分10个等级(0-9)来压缩,0等级时压缩比率不是很大,图片不会失真:随着压缩等级不断增大,图片会变得越来越不清晰,通常压缩后图片大小可以减少到原来的50%,压 ...
- 在pycharm中执行脚本没有报错但输出显示Redirection is not supported.
没有新式语法错误,但是输出显示Redirection is not supported.(不支持重定向) 在stockflow中找到是因为从IDE中运行脚本的原因,比如pycharm,所有IDE都提供 ...
- 2018年东北农业大学春季校赛 E wyh的阶乘 【数学】
题目链接 https://www.nowcoder.com/acm/contest/93/E 思路 其实就是找阶乘的项中5的个数 末尾为什么会出现0 因为存在5的倍数和偶数相乘 有0存在 借鉴 htt ...
- BZOJ1415 聪聪和可可 —— 期望 记忆化搜索
题目链接:https://vjudge.net/problem/HYSBZ-1415 1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 16 ...
- Linux bash shell环境变量以及语法规范
摘自: http://blog.csdn.net/abc_ii/article/details/8762739