zoukankan      html  css  js  c++  java
  • (WIP) DPDK理论学习(by quqi99)

    作者:张华  发表于:2016-04-22
    版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

    ( http://blog.csdn.net/quqi99 )

    组成模块

    • rte_timer,包装提供内核的Time-Stamp Couter(TSC)时间服务。让异步运行函数成为可能
    • rte_malloc, 从memzones中分配大页,相较于4K heap pages。页表项更少,TLB命中率更高。
    • rte_ring, 固定大小的环形缓存区。lockless multi-producer, multi-consumer, bulk/burst-enqueue/dequeue的FIFO队列管理API. 当中per-lcore变量通过Thread Local Storage(TLS)提供per-thread local storage.
    • rte_mempool, 分区pool,pool使用name标记并使用ring分配objects.
    • rte_mbuf, 用于提供对mbuf(ctrlmbuf + pktmbuf)的管理。mbuf存储在mempool中
    • rte_eal + libc, EAL(Environment Abstration Layer)提供对上述的接口。隐藏App和Lib之间的环境细节。如:Alarm操作、中断处理、CPU特性识别(rte_cpu_get_feature)、Trace和Debug功能、PCI总线訪问、原子锁操作、内存分配、Core亲和性、多进程&多线程、librte_hash(包转发算法), librte_lpm (Longest Prefix Match,包转发算法),librte_net)。EAL通过/sys向用户空间呈现PCI信息(/sys/bug/pci)与address space,EAL用igb_uio模块用户空间提供/dev/uidX设备文件,应用就能够使用mmap /dev/uidX到PCI address space。

      用户空间採用了pthread库。DPDK包含1G和10G的PMDs(Poll Mode Drivers), 及没有异步和中断信息机制的virtio控制器。

    初始化


    内存管理

    一个连续的内存块通过rte_memseg来描写叙述,再通过memzone的概念来聚集(可使用rte_eal_get_configuration()来訪问)。使用aligh參数来对齐数据(2的指数倍但不大于64 bytes)。

    memzone能够保留2MB或1G的大页。

    CONFIG_RTE_MALLOC_DEBUG參数能够帮助调试缓存区溢出错误。
    librte_malloc用于分配随意大小的内存,在NUMA中,是分配该core所在的NUMA socket还是其他socket上的内存由參数显然决定。常见两个数据结构:

    • malloc_heap, 管理per-socket上的free内存(每一个NUMA node上有一个heap结构), numa_socket, mz_count, lock, free_head.
    • malloc_elem, memzone中各种管理对象的通用头部描写叙述,heap, prev, next_free, state, padding, size.

    KNI接口

    DPDK提供了两种方法与linux kernel协议栈交互: TAP和KNI。KNI(Intel DPDK Kernel NIC Interface)同意用户应用訪问Linux控制平面。能够让TUN/TAP设备省去系统调用和数据拷贝(copy_to_user()/copy_from_user())的时间。也能够同意应用使用kernel tcp/ip栈及使用标准的的管理工具如ethtool, ifconfig,tcpdump等(/dev/kni)。




    參考


    [1] http://www.cnblogs.com/chanwai1219/p/3680239.html
    [3] Intel® Data Plane Development Kit (Intel® DPDK)
  • 相关阅读:
    ajax收藏
    excel提取文本格式时分秒中数字的方法并计算成秒的公式
    vi编辑模式中按方向键变ABCD的解决方法
    IIS配置Url重写实现http自动跳转https的重定向方法
    IIS中启用目录浏览功能后不能下载未知扩展名文件的解决方法
    Nginx禁止IP访问,只允许域名访问
    nginx在Window平台http自动跳转https设置方法
    通过清理注册表方式清理window远程连接的历史记录
    DOS批处理添加IP域名,备份与恢复
    windows修改snmp端口号方法
  • 原文地址:https://www.cnblogs.com/llguanli/p/8483855.html
Copyright © 2011-2022 走看看