ZP1015

当你的才华还撑不起你的野心时,就应该静下心来学习; 当你的能力还驾驭不了你的目标时,就应该沉下心来历练...

dpdk l2fwd 应用流程分析

int MAIN(int argc, char **argv) { struct lcore_queue_conf *qconf; struct rte_eth_dev_info dev_info; int ret; uint8_t nb_ports; ui...

2015-08-23 16:11:37

阅读数 7042

评论数 0

DPDK 的 uio 以及 PMD 机制的实现

本文主要分析uio和PMD的实现 main函数中首先调用了rte_eal_init初始化eal环境,其中主要是hugepage的初始化; ret = rte_eal_init(argc, argv); if (ret 0) rte_exit(EXIT_FAILURE, &quo...

2015-08-04 21:52:22

阅读数 12242

评论数 0

DPDK 中断机制 eal_intr_handle_interrupts

DPDK通过在线程中使用epoll模型,监听UIO设备的事件,来模拟操作系统的中断处理。   一、中断初始化 在rte_eal_intr_init()函数中初始化中断。具体如下: 1、首先初始化intr_sources链表。所有UIO设备的中断都挂在这个链表上,中断处理线程...

2015-08-04 21:38:45

阅读数 1785

评论数 0

DPDK 内存管理(三)(rte_malloc 内存管理)

rte_malloc()为程序运行过程中分配内存,模拟从堆中动态分配内存空间。 1 void * 2 rte_malloc(const char *type, size_t size, unsigned align) 3 { 4 return rte_malloc_socket(type...

2015-08-04 21:33:00

阅读数 3694

评论数 1

DPDK 内存管理(二)(rte_mempool 内存管理)

DPDK以两种方式对外提供内存管理方法,一个是rte_mempool,主要用于网卡数据包的收发;一个是rte_malloc,主要为应用程序提供内存使用接口。本文讨论rte_mempool。rte_mempool由函数rte_mempool_create()负责创建,从rte_config.mem_...

2015-08-04 21:31:38

阅读数 5305

评论数 0

DPDK 内存管理(一)(内存初始化)

1 前言  DPDK通过使用hugetlbfs,减少CPU TLB表的Miss次数,提高性能。 2 初始化 DPDK的内存初始化工作,主要是将hugetlbfs的配置的大内存页,根据其映射的物理地址是否连续、属于哪个Socket等,有效的组织起来,为后续管理提供便利。 2.1 eal_hu...

2015-08-04 21:30:15

阅读数 4735

评论数 0

DPDK 收发包处理流程(二)(网卡初始化)

三、PCI驱动注册 调用rte_eal_init()--->rte_eal_dev_init()函数,遍历dev_driver_list链表,执行网卡驱动对应的init的回调函数,注册PCI驱动。 /* Once the vdevs are initalized, start cal...

2015-08-04 21:25:11

阅读数 10080

评论数 1

DPDK 收发包处理流程(一)(网卡驱动注册)

本文基于DPDK-1.8.0分析。 网卡驱动模型一般包含三层,即,PCI总线设备、网卡设备以及网卡设备的私有数据结构,即将设备的共性一层层的抽象,PCI总线设备包含网卡设备,网卡设备又包含其私有数据结构。在DPDK中,首先会注册设备驱动,然后查找当前系统有哪些PCI设备,并通过PCI_ID为PC...

2015-08-04 21:23:15

阅读数 4629

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭