原标题:DPDK性能影响因素之绑核原理

背景

DPDK的本质任务就是提升服务器对网络包的处理能力。在性能的提升上,有很多要素,诸如轮询,用户态驱动,亲和性与独占,降低访存开销,软件调优,利用IA新硬件技术。本篇主要介绍一下亲和性与独占在提升性能上的工作原理。

亲和性介绍

DPDK工作在用户态,线程的调度仍然依赖内核。利用线程的CPU的亲和绑定方式,特定任务可以被指定只在某个核上工作。因此减少了线程间不同核间频繁切换,核间线程切换容易导致因cache miss和cache write back造成的大量性能损失。如果更进一步的限定某些核不参与linux系统调度,就可能使线程独占该核,保证更多cache hit的同时,也避免了同一个核内的多任务切换开销。

DPDK运用到的物理核,逻辑核及超线程的概念介绍

单核结构,CPU物理核中的基本组件可以简化为:CPU寄存器集合,中断逻辑,执行单元和Cache。一个完整的物理核需要拥有这样的整套资源,提供一个指令执行线程。

多处理器结构指的是多颗单独封装的CPU通过外部总线连接,构成的统一计算平台,如图2所示。

每个CPU都需要独立的电路支持,有自己的Cache,而它们之间的通信通过主板上的总线。在此架构上,若一个多线程的程序运行在不同的CPU的某个核上,跨CPU的线程间协作都要走总线,而共享的数据还会付出因Cache一致性产生的开销。从内存子系统的角度,多核处理器结构进一步衍生出了非一致性内存访问(NUMA),跨NUMA的内存访问是性能调优时最需要避免的。因此在实际的DPDK绑核中,DPDK的各进程都是绑定在同一个NUMA节点上。

超线程(Hyper-Threading)在一个处理器中提供两个逻辑执行线程,逻辑线程共享流水线、执行单元和缓存。该技术的本质是复用单处理器中的超标量流水线的多路执行单元,降低多路执行单元中因指令依赖造成的执行单元闲置。对于每个逻辑线程,拥有完整独立的寄存器集合和本地中断逻辑,从软件的角度,与单线程物理核并没有差异。例如8核心的处理器使用超线程技术之后,可以得到16个逻辑线程。采用超线程,在单核上可以同时进行多线程处理,使整体性能得到一定程度的提升。但由于毕竟是共享执行单元,对IPC越高的应用,单来的帮助越有限。DPDK是一种I/O集中的负载,对于之类负载,IPC相对不是特别高所以超线程技术会有一定程度的帮助。超线程结构图如图3所示

如果说超线程还是站在一个核内部以资源切分的方式构成多个执行线程,多核体系结构则是在一个CPU封装里放入多个对等的物理核,每个物理核可以独立构成一个执行线程,单干也可以进一步分割成多个执行线程(采用超线程技术)。多核之间的通信使用芯片内部总线来完成,共享更低一级缓存(LLC,三级缓存)和内存。随和CPU制造工艺的提升,每个CPU封装中放入的物理核数也在不断提高。如图4

结合我们实际的操作系统,查看 numa ,core 和HT信息

[root@host-10-43-211-14 s(keystone_admin)]# ./cpu_layout.py

============================================================

Core and Socket Information (as reported by '/proc/cpuinfo')

============================================================

cores = [0, 1, 2, 3, 4, 5] CPU核数

sockets = [0, 1] socket就是主板上插cpu的槽的数目,也即管理员说的”路“

Socket 0 Socket 1 该服务器socket1上没有core,若有的话我们可以看到和socket0一样的分布。

--------- ---------

Core 0 [0] [6] core0 上实现为两个HT

Core 1 [1] [7]

Core 2 [2] [8]

Core 3 [3] [9]

Core 4 [4] [10]

Core 5 [5] [11]

因此我们DVS在绑核的时候,要把DVS的进程都绑定在同一个numa节点上的HT上。并且进行核隔离,防止系统调用该HT。一般 core0 是给linux 操作系统调用的,因此避免把DVS绑在 core0 上的两个HT上。

DVS的绑核方法和核隔离方法

核隔离

修改 /etc/grubtool.cfg 配置文件

再执行命令 grub2-mkconfig -o /boot/grub2/grub.cfg

再重启服务器。

DVS绑核

若DVS已经安装完毕,可以直接修改 /opt/network/ovdk/etc

下的ovdk.conf配 置文件里的参数

# The option provide the physnics which ovdk uses, ovdk will

# bind it/them from kernal driver to user space driver,and then

# we will not find it/them through ifconfgi command.

# such as from ixgbe to igb_uio.

# Example: ovdk_port=eth0, eth1

ovdk_port = ens4f0

# The option provide vcpu which is used for thread to guard physnic port.

# Example: physical_port_vcpu=cpu2,cpu3

physical_port_vcpu = cpu2 DPDK物理口收发线程绑定的HT

# The option provide vcpu which is used for thread to guard virtual port,

# such as vhost port. Example: virtual_port_vcpu=cpu4,cpu5

virtual_port_vcpu = cpu3 DPDK虚拟口收发

# The option provide vcpu which is used for thread to guard vswitchd,

# This option must have two value, the first one is used for guarding

# vswitchd thread in process of datapath, and the last one is used for

# guarding vswitchd process. Example: vswitchd_vcpu=cpu1,cpu6

vswitchd_vcpu = cpu1, cpu4 控制面进程绑定的HT

DVS默认的绑核方式为PVPVCC。即一个物理口收发线程和一个虚拟口收发线程在一个core上的两个HT上。两个控制面进程在同一个core 的两个HT上。

DPDK的多线程介绍

DPDK的线程基于pthread接口创建,属于抢占式线程模型,受内核调度支配。DPDK通过在多核设备上创建多个线程,每个线程绑定到单独的核上,减少线程调度的开销,以提高性能。

说完了如何来那个DPDK达到最大性能的绑核方式,附带说说如果网络吞入量比较小,不能耗尽哪怕一个核的计算能力,如何释放计算资源给其他任务呢?

使用cgroup能够把CPU的配额灵活的配置在不同的线程上。Cgroup是control group的缩写,是linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如:CPU、内存、I/O等)的机制。DPDK可以借助cgroup实现计算资源配额对于线程的灵活配置,可以有效的改善I/O核的闲置利用率。

责任编辑:

绑核原理linux,DPDK性能影响因素之绑核原理相关推荐

  1. linux下进程管理的原理,Linux进程管理:supervisor和nohup原理及使用

    原理 守护进程(daemon) 守护进程是一类在后台运行的特殊进程,用于执行特定的系统任务.他独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.Linux系统的大多数服务器就是通过守护进 ...

  2. linux磁盘管理原理,Linux操作系统中磁盘存储区管理的原理与技巧

    命令篇 下表包含一列最常用的parted命令. print A table similar to the following will appear: Disk geometry for /dev/h ...

  3. 《深入浅出DPDK》读书笔记(十五):DPDK应用篇(Open vSwitch(OVS)中的DPDK性能加速)

    Table of Contents Open vSwitch(OVS)中的DPDK性能加速 174.虚拟交换机简介 175.OVS简介 176.DPDK加速的OVS 177.OVS的数据通路 178. ...

  4. DPDK性能影响因素分析

    上篇请参阅"DPDK技术原理与架构",本篇为下篇.介绍基于 DPDK 进行应用开发和环境配置时,应用程序性能的影响因素以及相应的优化调整方法.这些因素并非必然劣化性能,可能因硬件能 ...

  5. Linux转发性能评估与优化之——转发瓶颈分析与解决方案

    线速问题 很多人对这个线速概念存在误解.认为所谓线速能力就是路由器/交换机就像一根网线一样.而这,是不可能的.应该考虑到的一个概念就是延迟.数据包进入路由器或者交换机,存在一个核心延迟操作,这就是选路 ...

  6. 阿里云总监课,存储系统设计——NVMe SSD性能影响因素一探究竟

    目录 1 存储介质的变革 2 NVME SSD成为主流 2.1 NAND FLASH介质发展 2.2 软件层面看SSD--多队列技术 2.3 深入理解SSD硬件 3 影响NVME SSD的性能因素 3 ...

  7. 阿里云储道深度解析存储系统设计——NVMe SSD性能影响因素一探究竟

    NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程.本文从NVMe S ...

  8. 【阿里云总监课】存储系统设计——NVMe SSD性能影响因素一探究竟

    目录 1 存储介质的变革 2 NVME SSD成为主流 2.1 NAND FLASH介质发展 2.2 软件层面看SSD--多队列技术 2.3 深入理解SSD硬件 3 影响NVME SSD的性能因素 3 ...

  9. Linux内核性能剖析的方法学和主要工具

    计算机科学的先驱Donald Knuth(高德纳)曾经说过:"过早的优化是万恶之源",更详细的原文如下:"We should forget about small eff ...

最新文章

  1. linux连接小米随身wifi密码忘记了,小米wifi管理员密码忘记了怎么办?
  2. 第十二课.Seq2Seq与Attention
  3. linux如何添加默认路由表_Linux-如何添加路由表
  4. c++编写算法判断二叉树是否为完全二叉树_[校招-算法题] 二叉树基础算法1
  5. nfs服务器实现文件共享,NFS服务器及Samba服务配置实现文件共享(示例代码)
  6. mysql字段简索引_MySQL常用的一些语句,索引,字段等
  7. 《数学与泛型编程:高效编程的奥秘》一1.4 各章概述
  8. 一步步学习微软InfoPath2010和SP2010--第二章节--表单需求:使用决策矩阵(3)--你的SP版本...
  9. 分布式文档存储独角兽MongoDB——系统结构(1)
  10. 内核并发控制---读写信号量(来自网易)
  11. rf框架搭建_Robot framework(RF)基本使用
  12. 大学生计算机网络游戏策划书,【大学校园活动策划方案】_大学生校园活动策划方案参考模板...
  13. bootbox api
  14. java错误代码1061_求助java大神,看下这是哪里出错了
  15. 一文了解单线激光扫描系统的标定与成像原理
  16. 高效能人士的七个习惯(一)由内而外全面造就自己
  17. 板邓:wordpress自定义用户角色和权限全面解析
  18. [渝粤教育] 浙江工商大学 工程英语口语(王晓英) 参考 资料
  19. leaflet 常用方法总结
  20. VC错误——stack overflow

热门文章

  1. 计算机网络第一次革命,强国挑战答题答案:计算机工业革命是近代以来人类社会经历的第()次科技革命。...
  2. 如皋范湖洲朱氏开始续谱
  3. 在HTML中打开windows计算器
  4. 我的计算机硬盘只有两个,我发现电脑只有两个硬盘,一个C盘一个E盘,我该怎
  5. 计算机仿真与实际应用的区别,虚拟现实技术与计算机仿真技术的区别?
  6. java程序设计基础笔试题库,智慧职教Java程序设计基础题库及答案
  7. 我能贡献什么-《卓有成效的管理者》第3章
  8. 架设win2003r2下配置好iis6+php+mysql_Windows2003搭建IIS+PHP+MYSQL环境全过程(一)
  9. VMware WorkStation虚拟机文件共享详解-靠谱
  10. 戴尔r510服务器加硬盘没反应,戴尔R510_R410_R610_R710等所有服务器安装win2003解决办法...