- 博客(36)
- 资源 (10)
- 收藏
- 关注
原创 编译DPDK遇到make: *** /lib/modules/3.10.0-693.el7.x86_64/build: no such file or dirortory
这个问题应该是系统没有安装内核开发包,可以看下/usr/src/kernels/,1、执行命令:UNAME=$(uname -r)yum install gcc kernel-devel-${UNAME%.*}yum install kernel-devel2、重新软连接ln -s /usr/src/kernels/3.10.0-693.el7.x86_64/ /lib...
2019-04-30 17:08:21 2296
转载 cache性能优化总结
cache优化总结一 不要期望编译器对你做任何优化 cache系统代表性的包括三种级别: (1)第一级cache(L1)位于CPU芯片上并且运算于CPU工作频率; (2)第二级cache(L2)也位于芯片上比L1速度慢而体积大; (3)第三极cache(L3)位于CPU外部,是速度最慢、体积最大的存储器。 3.当运算器需要从存储器中提取数据时,它首先在最高级...
2019-04-30 15:02:18 1826
原创 Gallery of Processor Cache Effects
CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门。正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文《漫游处理器缓存效应》,文章不仅仅用7个最简单的源码示例就将CPU cache的原理娓娓道来,还附加图表量化分析做数学上的佐证Gallery of Proces...
2019-04-30 14:05:43 236
转载 (转)DPDK收发包处理流程01 -- 网卡初始化
本文基于DPDK-1.8.0分析。网卡驱动模型一般包含三层,即,PCI总线设备、网卡设备以及网卡设备的私有数据结构,即将设备的共性一层层的抽象,PCI总线设备包含网卡设备,网卡设备又包含其私有数据结构。在DPDK中,首先会注册设备驱动,然后查找当前系统有哪些PCI设备,并通过PCI_ID为PCI设备找到对应的驱动,最后调用驱动初始化设备。一、网卡驱动注册以e1000网卡驱动为例说明。...
2019-04-30 13:20:19 463
转载 (转)DPDK内存管理05 -- rte_mbuf
本文主要介绍rte_mbuf与rte_mempool数据结构之间的组织关系、以及网卡接收到的数据是如何存储在rte_mbuf中的。一、rte_mbuf、rte_mempool及网卡收到的数据包在内存中的组织结构 调用rte_mempool_create()函数创建rte_mempool的时候,指定申请多少个rte_mbuff及每个rte_mbuf中elt_size的大小...
2019-04-30 12:40:51 238
转载 (转)DPDK内存管理 04 ---- rte_malloc内存管理
内存分配组织结构一个socket上所有的可用内存为一个堆。每个堆由大小不同的块组成,每个块是一个连续的存储器片。申请内存时可以指定堆(socket),或者任意堆,当指定为任意堆时,会优先使用本地堆(本地socket)。结合前面说的dpdk内存初始化,每个堆的原始块是相同socket_id的所有memseg。每个memseg段就是一个地址连续的块。内存申请(rte_malloc)就是把一个堆中...
2019-04-30 11:28:33 1854
转载 (转)DPDK内存管理03 -- rte_mempool内存管理
一、文件组织rte_mempool.h:mempool类的属性、方法rte_mempool.c:mempool对象的创建实现、mempool对象与ring对象(默认)的联系。rte_mempool_ops.c:mempool对象的操作方法定义rte_mempool_ring.c:mempoolring类型的操作方法rte_mempool_stack.c:mempool stack...
2019-04-30 10:58:40 1440
转载 (转)DPDK内存管理 02 -----初始化
一 前言http://www.dpdk.org/ dpdk 是 intel 开发的x86芯片上用于高性能网络处理的基础库,业内比较常用的模式是linux-app模式,即利用该基础库,在用户层空间做数据包处理,有了这个基础库,可以方便地在写应用层的网络包处理高性能程序,目前该库已经开源。Main librariesmulticore framework 多核框架,dpdk库面...
2019-04-30 10:43:56 409
转载 (转)DPDK内存管理 01 -----初始化
1 前言DPDK通过使用hugetlbfs,减少CPU TLB表的Miss次数,提高性能。DPDK将利用hugepage预留的物理内存统一的组织管理起来,然后以库的方式对外提供使用的接口。下图展示了DPDK中内存有关的模块的相互关系。rte_eal 是统一的组织管理者(当然rte_eal不只是做内存的工作)rte_malloc 对外提供分配释...
2019-04-30 10:20:53 302
转载 01--在阿里做了5年技术Leader,我总结出这些套路!
在之前分享的文章《如何成为优秀的技术主管?》中,阿里巴巴高级技术专家云狄从开发规范、开发流程、技术规划与管理三个角度,分享对技术 TL 的理解与思考。今天的文章,他将继续深入探讨这一话题,从管理的角度分享技术 TL 的核心职责,主要分为如下几个方面与大家共同探讨、交流:团队建设 团队管理 团队文化 沟通与辅导 招聘与解雇 互联网公司的技术团队管理通常分为两个方向:技术管...
2019-04-24 10:10:10 505
原创 DPDK -1 -- 好的学习网址,记录下好自己查询
https://blog.csdn.net/hejin_some/article/category/6919298https://blog.csdn.net/cloudvtech/column/info/22951https://blog.csdn.net/xy010902100449/article/category/5709001https://blog.csdn.net/pang...
2019-04-24 09:56:55 368
原创 KVM 记录下好的网址,以便自己学习
https://blog.csdn.net/hejin_some/article/details/72673192https://blog.csdn.net/bbwangj/article/details/80465320https://blog.csdn.net/cling60/article/details/78542445https://blog.csdn.ne...
2019-04-24 09:55:49 145
转载 iptables 从入门到应用
一、简介1.1、是什么?iptables是隔离主机以及网络的工具,通过自己设定的规则以及处理动作对数据报文进行检测以及处理。1.2、发展史防火墙的发展史就是从墙到链再到表的过程,也即是从简单到复杂的过程。为什么规则越来越多,因为互联网越来越不安全了,所有防火墙的的规则也越来越复杂。防火的工具变化如下:ipfirewall(墙)-->...
2019-04-24 09:11:48 129
原创 DPDK QOS4 -- PORT数据结构的初始化
DPDK的Port初始化的时候已经把整个树建立起来了,并没有靠配置来动态增加和删除,而且从初始化的整个过程来看,为了后续入队和出队流程的流水线的处理以及cache的处理来加快性能,整个树是被压扁了的。我们先来看看,官网上对于整个数据的组织图示:A schematic of the internal data structures in shown in with details in....
2019-04-24 08:49:38 689
原创 linux QOS 001 --- Hierachical token bucket theory
DefinitionsLet's define HTB's goal formaly. Some definitions first:Classhas associated assured rateAR, ceil rateCR, priorityP,leveland quantumQ. It can has parent. We also know value ofact...
2019-04-24 08:43:42 357
转载 iptables详解 1 -- iptables概念
这篇文章会尽量以通俗易懂的方式描述iptables的相关概念,请耐心的读完它。防火墙相关概念此处先描述一些相关概念。从逻辑上讲。防火墙可以大体分为主机防火墙和网络防火墙。主机防火墙:针对于单个主机进行防护。网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。网络防火墙和主机防火墙并不冲突,可以理解为,网络防火墙主外(集体), 主机...
2019-04-23 21:19:00 168
转载 DPDP ACL 1 -- DPDK ACL算法介绍
DPDK提供了三种classify算法:最长匹配LPM、精确匹配(Exact Match)和通配符匹配(ACL)。其中的ACL算法,本质是步长为8的Multi-Bit Trie,即每次可匹配一个字节。一般来说步长为n时,Trie中每个节点的出边为2^n,但DPDK在生成run-time structures时,采用DFA/QRANGE/SINGLE这几种不同的方式进行数据结构的压缩,有效去除了...
2019-04-19 08:59:54 3823 2
原创 linux 内核与分析 -- 内存管理(下)
3.5 Linux 的内存分配和管理下面我们来讨论内存管理的相关问题,通过前面的分析,我认为内存管理需要考虑以下几个问题: 内存经过频繁申请归还之后,会出现碎片,称为外部碎片,导致没有足够大的连续内存空间,如何解决该问题? 被申请占用的内存块没有有效利用,存在浪费称为内部碎片,如何解决? 每次申请完内存之后是否需要刷新进程页表,是否有性能问题? 内存申请是...
2019-04-19 08:45:17 639
原创 DPDK QOS 3 -- rte meter令牌桶的实现
为了解决各种限速的问题,我们先来解决TB的实现。令牌桶(Token-Bucket)是目前最常采用的一种流量测量方法,用来评估流量速率是否超过了规定值。关于令牌桶处理报文的方式,RFC 中定义了两种令牌桶算法:单速率三色标记(single rate three color marker,srTCM,RFC2697定义,或称为单速双桶算法)算法,主要关注报文尺寸的突发。 双速率三色标记(...
2019-04-19 08:43:34 2189
原创 linux内核分析与应用 -- 内存管理(上)
我们知道,在大部分程序运行的时候,几乎都离不开堆(heap)和栈(stack),所有数据结构的分配也都是在堆和栈上进行的,堆和栈都是建立在内存之上的。很多时候,内存几乎对程序员来讲是透明的,你只管使用,而不需要对其背后的管理机制做更加深入的了解,比如以 Java 为代表的运行在虚拟机上的语言,都有内存管理器来进行垃圾回收的机制。但是不幸的是,很多时候我们还是会遇到一些内存溢出的问题(out-o...
2019-04-19 08:40:58 1351
原创 DPDK QOS2 -- DPDK的QOS框架
VPP HQOS处理报文整体框架如下图所示:上图的QOS就是DPDK实现的HQOS,它的层次如下,官网摘录:The scheduling hierarchy As shown below. The first level of the hierarchy is the Ethernet TX port 1/10/40 GbE, with subsequent hierarchy lev...
2019-04-19 08:39:10 1701 1
原创 linux内核分析与应用 -- 并发(下)
2.4 常见开源软件中的并发问题分析前一节介绍了 Linux 中相关并发工具,实际场景中有很多应用,下面我们来对几个开源软件的并发设计进行分析。2.4.1 Nginx 原子性下面我们通过分析 Nginx 中的原子变量实现,来介绍程序如何能做到保证原子性的。Nginx 为了保证原子性设计了 atomic 函数,atomic 的代码如下:static ngx_inline ngx...
2019-04-18 20:09:23 676
原创 linux内核分析与应用 -- 并发(上)
很多程序员在面试的时候经常会被问到线程安全相关的问题,比如什么是线程安全,什么又是线程不安全,假如线程不安全,如何解决才能做到线程安全。这时候,往往会出现五花八门的答案,而且大多数都是本末倒置。很多时候,人们经常会用一些现象来回答问题,比如房价高这个问题,很多时候大家就会归结于某些现象:温州炒房团、丈母娘经济、对比国际大城市房价等。但是,我们需要的是“原理性的解释”,比如影响房价的经济学原理如供需...
2019-04-18 20:06:25 409
转载 Internet路由之路由表查找算法概述-哈希/LC-Trie树/256-way-mtrie树
说明:本文没有源码分析的内容,然而我认为能理解本质比能看懂源码更有用,因为理解了本质之后,你也许就不用再看源码了,你甚至都可以写源码了。这就是Linux内核和Cisco的网站中包含大量文档的原因。引:路由是互联网的一个核心概念,广义的讲,它使分组交换网的每个节点彼此独立,通过路由耦合在一起,甚至在电路交换网中,虚电路的建立也依赖路由,路由就是网络中数据通路的指向标。狭义的讲,路由专指IP路由,...
2019-04-18 10:15:46 907
转载 linux网络流控-htb算法简析
项目中用tc,htb做流控期间,研究了htb(分层令牌桶)算法的实现.觉得这种思想在类似与有消费优先级的生产者消费者场景中也很适用.该算法过于复杂,碍于嘴拙遂在标题中加了简析,只介绍核心思想和关键代码的实现.一个栗子:tc qdisc add dev eth0 root handle 1: htbtc class add dev eth0 parent 1: classid 1:1 h...
2019-04-18 08:32:52 3871
原创 DPDK QOS1 -- Linux HQOS的框架
QOS具体的原理这里不展开,QOS包含流量分类、流量标记、流量监管、流量整形、拥塞管理、拥塞避免等技术,上面各种QOS技术在设备上处理的顺序如下:HQOS与传统的一层QOS相比,最大的区别是可以将调度队列划分为如物理级别、逻辑级别、应用或业务级别等多个调度级别,每一级别可以使用不同的特征进行流量管理,为了理解HQOS我们先了解下递归控制的概念,所谓的递归控制就是分层次地控制,而对于每个层次...
2019-04-17 21:03:57 1618
转载 深入理解dpdk rte_ring无锁队列
一、简介同样用面向对象的思想来理解无锁队列ring。dpdk的无锁队列ring是借鉴了linux内核kfifo无锁队列。ring的实质是FIFO的环形队列。ring的特点:无锁出入队(除了cas(compare and swap)操作) 多消费/生产者同时出入队使用方法:1.创建一个ring对象。接口:structrte_ring *rte_ri...
2019-04-10 17:14:50 1076
转载 对dpdk的rte_ring实现原理和代码分析
前言dpdk的rte_ring是借鉴了linux内核的kfifo实现原理,这里统称为无锁环形缓冲队列。环形缓冲区通常有一个读指针和一个写指针。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的数据。通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。在通常情况下,环形缓冲区的读用户仅仅会影响读指针, 而写用户仅仅会影响写指针。如果仅仅有一个读用户和一个写用户,那么不...
2019-04-10 17:13:42 3633
原创 Built-in Functions Provided by GCC
Other Built-in Functions Provided by GCCGCC provides a large number of built-in functions other than the ones mentioned above. Some of these are for internal use in the processing of exceptions or...
2019-04-09 14:57:40 1039
原创 DPDK学习0 -- 学习步骤
1、学习DPDK的基础概念,包括基本原理,基本框架2、学习DPDK 如何编译(X86下),有时间可以深入Makefile学习下,如果构建的整体工程3、DPDK 跑起来 1、启动前的准备,设置大页内存,为何要设置? 2、加载KO,这些KO主要是做什么的? 3、如何绑定网卡的?如何收、发包的?如何RSS的?4、运行L2FWD以及其它的sa...
2019-04-08 11:16:18 935
转载 VPP:Bihash简介
Bihash(Bounded-index extensible hash),个人认为其特点可大致概括如下:1、bihash支持8/16/24/40/48等类型,减少对于_mm_crc32_u32/16等的使用,提高效率的同时,避免引入GCC的bug;2、bihash使用64bit Hash值,最多可以支持双层hash查找,第一层bucket查找,第二层page查找(后面具体分析其hash...
2019-04-04 15:20:01 1321
转载 VPP 助你创新更高效、更灵活的报文处理方案
FD.io (Fast data – Input/Output) 是许多项目和库的一个集合,基于DPDK并逐渐演化,支持在通用硬件平台上部署灵活和可变的业务。FD.io为软件定义基础设施的开发者提供了一个平台,可以创建多个项目,开发基于软件的报文处理创新方案,以便于设计高吞吐量、低延时和有效利用资源的应用程序,并能够应用在多个平台上(x86、ARM和PowerPC)和部署在不同的环境中(裸机、虚拟...
2019-04-04 10:31:25 1362
转载 无锁队列详细分解 — 顶层设计
无锁队列是一个非常经典的并行计算数据结构,已经有很多相关的文章以及论文对其进行了探讨。它在DPDK中是一个非常基础且关键的组件,其中包含了很多非常特定的优化技巧。本文试图从顶层设计和具体实现分别来阐述DPDK无锁队列的优点以及正确使用的边界条件。在开始之前,我们还需要先进行两个知识点的铺垫。RTE_Ring 数据结构 1 2 3 4 5 6...
2019-04-03 17:50:55 343
转载 DPDK框架原理简介(0003转)
索引导读:X86平台报文处理加速技术分类总揽 各技术维度及采用的实现技巧产生效果是多维、非线性、相互影响的 “消除IO延迟阻塞CPU”技术实现技巧浅谈 DPDK作为数据转发平台框架是优秀的,但是作为数通产品基础平台,需持续优化随着云计算的兴起,SDN/NFV等网络技术快速发展,越来越多的SDN/NFV开源项目选用DPDK作为基础的报文处理加速平台。本系列文章将深入分析DPDK和硬件体系...
2019-04-03 17:03:04 775
原创 好的网址
学习资料合集:vpp官方资料:https://fd.io/vpphttps://wiki.fd.io/view/VPP/Command-line_Argumentshttps://wiki.fd.io/view/VPP/Build,_install,_and_test_imageshttps://wiki.fd.io/view/VPP/Using_VPP_In_A_Multi-t...
2019-04-02 22:59:18 954
原创 Centos 启动盘制作与安装以及遇到的问题
dd if=ubuntu-16.0.3-desktop-amd64.iso of=/dev/sdbhttps://blog.csdn.net/long690276759/article/details/62043599https://www.centos.org/download/
2019-04-02 22:50:12 630
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人