dpdk入门:基础概念

1. 数据包处理流程

  1. 数据包到达网卡
  2. 中断进行DMA
  3. 驱动写缓冲区
  4. 写到内核
  5. 内核到用户态

2. 优化处理

NAPI: 中断唤醒后,轮询处理多个包
Netmap: 共享数据包池,减少内核到用户的包复制

3. NUMA

传统的计算机架构是多个CPU共享同一内存,所以是统一内存架构(UMA: Uniform Memory Architecture)。

为了缓解不同设备对内存访问的拥塞的问题,于是有了NUMA。

在这里插入图片描述

4. cache

为了解决CPU处理速度和内存读取速度之间不匹配问题而引入的中间层。

CPU把最近经常使用的数据和指令,都放到cache中来,而不用每次都要

去内存中读。

在这里插入图片描述

cache

分为

  • L1 cache (3~5 指令周期)
  • L2 cache (10几个指令周期)
  • L3 cache (几十个指令周期)

L3 cache 又叫做LLC(Last Level Cache)。

5. 计算机读取数据流程

  1. 在cache中查找
  2. cache miss,需要在内存中找
  3. 查快表(TLB: Translation Look-aside Buffer),看需要查找的数据的地址在TLB中有没有。
  4. 找到了就在内存中读取
  5. 如果没有找到,则MMU中断请求多级页表请求内存

6. cache与内存映射

cache与内存间的交换是分块的,一般是cpu在一个指令周期能读取的数据。
大小为64KB,也就是一个cache line

cache与内存之间的映射分为三种

  • 全相联: 任意内存可以映射任意cache块
  • 直接关联: 主存中一块内存只能映射到cache中一个特定块中
  • 组关联:折中上面的两种方案, 内存分组,但在组内的位置可以任意

7. 大页

一般情况下,操作系统按照4K进行分页。而程序需要的内存可能比这大得多,程序需要的页表多了,TLB 就会miss。

为了防止这种情况,我们干脆把内存页面给改大,这样需要的页表项一定在一个页表中。

在这里插入图片描述

原文

深入浅出dpdk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值