DPDK笔记
文章平均质量分 89
HelloNerd
这个作者很懒,什么都没留下…
展开
-
DPDK学习——cache相关知识①
1. cache系统1.1 出现原因:内存性能对于CPU来说仍然很慢,处理器从内存中读数据多达上百个时钟周期,这几个周期里,处理器只能等待。所以提出了Cache以匹配处理器与内存之间的巨大速度鸿沟。1.2 三级cache:一级cache一般分为数据cache和指令cache,3~5个指令周期就能访问到数据,一般只有几十K;二级cache中数据和指令无差别的放在一起,需要十几个处理器周期访问到数据,...原创 2018-05-25 10:50:31 · 638 阅读 · 0 评论 -
DPDK学习——cache相关知识②
2 Cache地址映射和变换2.1 背景Cache的容量很小,L3也只有几十兆,而内存容量有好几G,在这种情况下要把内存中的内容放到cache中,需要一个映射算法和分块机制。2.2 分块机制cache和内存以块为单位进行数据交换。块以在内存的一个存储周期中能访问到的数据长度为限。当今主流大小都是64字节,所以一个cache line就是64大小的数据块。2.3 映射算法映射算法要把内存中的内容按照...原创 2018-05-25 11:00:26 · 933 阅读 · 0 评论 -
DPDK学习——cache相关知识③
4. cache预取背景:cache操作对大多数程序员透明,但当对程序执行效率有很高要求的时候,程序员可以一定程度上控制cache。4.1 Cache局部性①时间局部性:程序即将用到的指令或数据,可能就是目前正在使用的指令或数据,可以在当前的指令数据使用完后暂存在cache中。典型的例子就是for循环。②空间局部性:程序即将使用的指令或数据可能与目前正在使用的指令或数据在空间上相邻或相近。所以可以...原创 2018-05-25 11:04:37 · 2200 阅读 · 0 评论 -
DPDK学习——cache相关知识④
6. TLB和大页6.1 TLB如前所说,TLB也是一种cache,用于存放页表项的cache,方便快速完成逻辑地址到物理地址的转换。6.2 大页但是一个常规页4k,假设一个程序用了512页,总共2MB,这就需要TLB里至少方下512个页表项才能保证每次都能命中,但TLB大小有限。所以为了减少TLB不命中的情况,可以使用大页,以1G为单位进行分页。7. DDIO7.1 提出DDIO的背景/原因①随...原创 2018-05-25 11:08:37 · 1002 阅读 · 0 评论 -
DPDK如何针对cache提高性能
前面介绍了一些cache的相关背景知识,这里单独写一篇博客,总结一下对于DPDK来说,为了提升性能,在cache方面有哪些需要注意的点。①适时的使用cache预取技术。在处理网卡队列的时候,多数时候都是在处理连续的内存,此时应该主动调用预取函数,可以提升效率。②为了解决cache一致性问题,数据结构尽量声明为cache line对齐。并且多核访问的数据,可以设计成每CPU变量。③系统环境中开启大页...原创 2018-05-25 11:11:57 · 938 阅读 · 0 评论