CN112306554A - 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置 - Google Patents

高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置 Download PDF

Info

Publication number
CN112306554A
CN112306554A CN202011296562.7A CN202011296562A CN112306554A CN 112306554 A CN112306554 A CN 112306554A CN 202011296562 A CN202011296562 A CN 202011296562A CN 112306554 A CN112306554 A CN 112306554A
Authority
CN
China
Prior art keywords
memory
core
platform
performance
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011296562.7A
Other languages
English (en)
Other versions
CN112306554B (zh
Inventor
林飞
晏义威
刘俊
易永波
古元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Act Technology Development Co ltd
Original Assignee
Beijing Act Technology Development Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Act Technology Development Co ltd filed Critical Beijing Act Technology Development Co ltd
Priority to CN202011296562.7A priority Critical patent/CN112306554B/zh
Publication of CN112306554A publication Critical patent/CN112306554A/zh
Application granted granted Critical
Publication of CN112306554B publication Critical patent/CN112306554B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置涉及信息技术领域。本发明实现的组成模块包括CPU绑核控制器、线程绑核控制器、多线程变量缓存行填充器、网络数据包预取执行器、TCMalloc内存分配器和内存池;实现本发明解决了高性能软件对Purley平台的适配,但又不需要全新重构,只需较小的改动及调整,较快地达到预期的性能,同时又保证了整体成本性价比最高,让产品在市场上有竞争力。

Description

高性能要求软件从Grantley平台过渡到Purley平台的优化方 法及装置
技术领域
本发明涉及信息技术领域。
背景技术
基于 Grantley 平台的前代英特尔至强处理器家族的处理器,其处理器内核、处理器最后一级高速缓存即三级缓存、处理器内存控制器、处理器IO 控制器和处理器插槽间英特尔快速通道互联技术端口通过环形架构连接在一起,近几代英特尔多核 CPU 均采用了这种架构。随着 CPU 内核数量的增多,访问延迟变长,每个内核的可用带宽减少。通过将芯片一分为二,采用另一个环来缩短距离、提高带宽,有效缓解了这一状况。但是始终存在环所带来的瓶颈,对片上互联的额外需求将限制环形架构的性能。为了解决这个问题,英特尔推出了Purley平台。
英特尔Purley平台提供了更多的每处理器内核数量和更高的内存和 IO 带宽,英特尔Purley平台推出了网格架构,以消除前代环形架构日益严重的延迟和带宽限制。英特尔Purley平台还以模块化、分布式的方式将缓存代理、归属地代理和 IO 子系统模块集成至网格互联,以消除访问这些功能时遇到的瓶颈。每个核和三级缓存片具有整合的缓存和归属地代理 CHA,为整个网格的资源提供出色的可扩展性,实现了英特尔超级通道互联高速缓存一致性功能,无需任何热点。英特尔Purley平台网格架构包含一系列垂直和水平通信路径,以最短的路径实现内核间的遍历,在垂直路径上纠正行,在水平路径上纠正列。每个三级缓存片上的 CHA 将获取的地址映射至特定的三级缓存存储区、内存控制器或 IO子系统,并借助网格互联提供到达目的地所需的路由信息。
全球信息化速度不断加快,互联网已经渗透到国民生活的各个领域,对政治、经济、社会、文化的影响越来越深刻。目前,在因特网数据中心IDC业务和因特网接入服务ISP业务中,广泛存在着安全意识淡薄、管理基础薄弱、查处手段缺失、违法信息发现及处置难、日志留存落实不到位等问题,相应的信息安全问题也越来越严峻。为了满足 IDC和ISP 业务经营者和电信管理部门的信息安全管理需求,具备基础数据、信息安全、内容日志、行为日志、黑白名单、接入资源、统计分析及系统管理等功能的信息安全管理系统就应运而生了,简称为审计系统。
随着Grantley 平台的处理器停产,审计系统适配英特尔Purley平台就迫在眉睫。由于Purley平台架构从之前Grantley 平台的环形架构调整到网格结构,再有CPU二级缓存增大、三级缓存减少的高速缓存结构的调整,还有内存结构的变化,虽说对绝大部分应用是无感知的,但对高实时性、高性能的、高消耗的的审计系统对这种调整就很敏感,在Purley平台测试中,审计系统的性能只有原来Grantley平台同等配置的一半。以往新的平台有较大的变动,一般都是全新重构审计系统及装置,然后逐步调优迭代,花费大量的时间和人力资源成本,得不偿失。有的甚至用较高的配置来弥补性能的下降,但是成本太高,在市场上毫无竞争力。有的逐步适配,用旧的平台慢慢过渡,一点点熟悉新的平台架构和特性,再针对性做优化,这样适配周期过长,库存过多资金周转困难。
本专利提出了高性能要求软件从Grantley 平台过渡到Purley平台的优化方法及装置,根据Purley平台架构的调整,针对CPU高速缓存结构有的放矢,利用绑核技巧充分发挥二级缓存增大的优势、降低三级缓存减少的影响,从而达到优化CPU的性能的目的。同时通过缓存行填充和软件预取指令技术,较快就使性能有显著性地提高。采用六道通的内存配置,再使用内存池技术和tcmalloc内存分配器替换原来系统的内存分配器,从而以较高的性价比达到原来Grantley平台同等配置的性能。本发明的实现可以使高实时性、高性能、高CPU消耗的软件平台顺利的过渡到Purley平台的硬件架构,成本低见效快。
现有技术说明
前代处理器的二级缓存为每内核 256 KB,三级缓存为每内核 2.5 MB 共享包含式高速缓存。英特尔Purley平台对高速缓存结构进行了调整,提供更大的每内核1MB二级缓存和更小的每内核 1.375 MB 共享非包含三级缓存。各代处理器的高速缓存对比,二级缓存越大,命中率越高,可降低有效内存延迟以及对网格互联与三级缓存的要求。相比包含式高速缓存,非包含三级缓存提高了片上高速缓存的总体有效利用率。鉴于三级缓存的非包含属性,三级缓存中高速缓存行的缺失并不代表它不存在于某个内核的专有高速缓存内。因此,当高速缓存行未被分配至三级缓存时,借助探听过滤器在内核的一级缓存或二级缓存中进行追踪。而在前代 CPU 中,此任务由共享三级缓存处理。
尽管英特尔Purley平台对高速缓存结构进行了调整,但每个内核有效高速缓存和前代产品大致相同,对于绝大部分应用是无感知的。但是对于审计系统来说,需要实时采集网卡上的海量网络数据,还要对网络数据报文进行深度分析,并把相关的流信息提取出来写入日志。整个过程涉及到建流、协议识别、协议还原、IP报文分片重组、TCP流重组、匹配引擎等各种复杂耗时耗内存的操作,这类应用就要利用Purley平台的现有高速缓存结构调整代码,优化应用。
非一致性内存架构NUMA同的节点,每个节点都有自己的集成内存控制器。处于该节点中的内存被称为本地内存,处于其他节点中的内存被称为远程内存。访问本地内存的开销时间比远程内存要短。为了避免跨NUMA节点访问远程内存,网卡需要均匀地插在多个NUMA节点上。
tcmalloc是谷歌开发的一个内存分配器,管理堆内存,用于降低频繁分配、释放内存造成的性能损耗,并且有效地控制内存碎片。glibc中的内存分配器是ptmalloc2,而glibc使用的ptmalloc2在性能上远远弱后于谷歌的tcmalloc。同时tcmalloc也优化了小对象的存储,需要更少的空间。tcmalloc特别对多线程做了优化,对于小对象的分配基本上是不存在锁竞争,而大对象使用了细粒度、高效的自旋锁。分配给线程的本地缓存,在长时间空闲的情况下会被回收,供其他线程使用,这样提高了在多线程情况下的内存利用率,不会浪费内存,而这一点ptmalloc2也是做不到的。
缓存行是CPU缓存中可分配操作的最小存储单元,一般是64字节,跟CPU架构有关。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。有人将伪共享描述成无声的性能杀手,因为从代码中很难看清楚是否会出现伪共享。
软件预取指令即将用到的数据从内存中加载到缓存,这样当前数据处理完毕后,即将用到的数据已经在缓存中,极大减小了从内存直接读取的开销,也减少了处理器等待的时间,从而提高了性能。增加预取指令并不需要时时考虑到缓存的存在,重点是在某些热点区域或者性能相关区域能够通过显式地加载数据到缓存,提高程序执行的效率。滥用软件预取指令反而还会造成程序性能下降。
发明内容
鉴于现有技术的不足,本发明提供的高性能要求软件从Grantley 平台过渡到Purley平台的优化方法及装置,完成该方法必要的组成模块包括CPU绑核控制器、线程绑核控制器、多线程变量缓存行填充器、网络数据包预取执行器、TCMalloc内存分配器和内存池;
实现本发明的步骤包括:
1)由CPU绑核控制器将属于同一个物理核的两个逻辑核按照顺序绑定在一起;由于两个逻辑核是同一个物理核虚拟出来的,每个物理核独有一级缓存和二级缓存,可以充分发挥Purley平台二级缓存增大的优势;
由CPU绑核控制器将属于同一个socket的物理核依次按序绑定在一起;所有物理核共享三级缓存,这样,尽可能降低Purley平台三级缓存减少的影响,同时避免远程访问另一个socket上的三级缓存,降低了访问延迟,socket是一个物理上的概念,指的是主板上的CPU插槽;
2)由线程绑核控制器将收包业务的线程单独绑核,其他业务线程都绑定到未单独绑核的CPU核;收包业务线程单独绑核,避免缓存抖动,间歇性丢包;而其他业务线程都绑定到未单独绑核的CPU核上,既可以充分利用CPU资源,同时不影响原有业务的性能;
3)由多线程变量缓存行填充器修改涉及多线程的变量,通过往对象中填充无意义的变量,来保证整个对象独占缓存行,由多线程变量缓存行填充器修改的涉及多线程的变量包括操作网络数据包的变量、操作流信息的变量、操作日志的变量;
4)由网络数据包预取执行器用软件预取指令来获取网络数据包;
5)使用内存池代替系统内存管理,内存池是在真正使用内存之前,先申请分配一定数量的、大小相等的内存块留作备用;当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存;
6)由TCMalloc内存分配器将tcmalloc库链接到程序中,完成针对内存对象不是固定的大小,无法使用内存池的变量的内存分配。
有益效果
实现本发明解决了高性能软件对Purley平台的适配,但又不需要全新重构,只需较小的改动及调整,较快地达到预期的性能,同时又保证了整体成本性价比最高,让产品在市场上有竞争力。
附图说明
图1是本发明的系统结构图。
具体实施方式
参看图1实现本发明提供的高性能要求软件从Grantley 平台过渡到Purley平台的优化方法及装置,完成该方法必要的组成模块包括CPU绑核控制器1、线程绑核控制器2、多线程变量缓存行填充器3、网络数据包预取执行器4、TCMalloc内存分配器5和内存池6;
实现本发明的步骤包括:
1)由CPU绑核控制器1将属于同一个物理核的两个逻辑核按照顺序绑定在一起;由于两个逻辑核是同一个物理核虚拟出来的,每个物理核独有一级缓存和二级缓存,可以充分发挥Purley平台二级缓存增大的优势;
由CPU绑核控制器1将属于同一个socket的物理核依次按序绑定在一起;所有物理核共享三级缓存,这样,尽可能降低Purley平台三级缓存减少的影响,同时避免远程访问另一个socket上的三级缓存,降低了访问延迟,socket是一个物理上的概念,指的是主板上的CPU插槽;
2)由线程绑核控制器2将收包业务的线程单独绑核,其他业务线程都绑定到未单独绑核的CPU核;收包业务线程单独绑核,避免缓存抖动,间歇性丢包;而其他业务线程都绑定到未单独绑核的CPU核上,既可以充分利用CPU资源,同时不影响原有业务的性能;
3)由多线程变量缓存行填充器3修改涉及多线程的变量,通过往对象中填充无意义的变量,来保证整个对象独占缓存行,由多线程变量缓存行填充器3修改的涉及多线程的变量包括操作网络数据包的变量、操作流信息的变量、操作日志的变量;
4)由网络数据包预取执行器4用软件预取指令来获取网络数据包;
5)使用内存池6代替系统内存管理,内存池6是在真正使用内存之前,先申请分配一定数量的、大小相等的内存块留作备用;当有新的内存需求时,就从内存池6中分出一部分内存块,若内存块不够再继续申请新的内存;
与系统内存管理相比,内存池6的操作非常迅速,它在性能优化方面的优点主要如下:
针对特殊情况,例如需要频繁分配释放固定大小的内存对象时,不需要复杂的分配算法和多线程保护;也不需要维护内存空闲表的额外开销,从而获得较高的性能;由于开辟一定数量的连续内存空间作为内存池块,因而提高了程序局部性,提升了程序性能;容易控制页边界对齐和内存字节对齐,没有内存碎片的问题;
6)由TCMalloc内存分配器5将tcmalloc库链接到程序中,完成针对内存对象不是固定的大小,无法使用内存池的变量的内存分配。

Claims (1)

1.高性能要求软件从Grantley 平台过渡到Purley平台的优化方法,其特征在于完成该方法必要的组成模块包括CPU绑核控制器、线程绑核控制器、多线程变量缓存行填充器、网络数据包预取执行器、TCMalloc内存分配器和内存池;
实现本发明的步骤包括:
1)由CPU绑核控制器将属于同一个物理核的两个逻辑核按照顺序绑定在一起;由于两个逻辑核是同一个物理核虚拟出来的,每个物理核独有一级缓存和二级缓存,可以充分发挥Purley平台二级缓存增大的优势;
由CPU绑核控制器将属于同一个socket的物理核依次按序绑定在一起;所有物理核共享三级缓存,这样,尽可能降低Purley平台三级缓存减少的影响,同时避免远程访问另一个socket上的三级缓存,降低了访问延迟,socket是一个物理上的概念,指的是主板上的CPU插槽;
2)由线程绑核控制器将收包业务的线程单独绑核,其他业务线程都绑定到未单独绑核的CPU核;收包业务线程单独绑核,避免缓存抖动,间歇性丢包;而其他业务线程都绑定到未单独绑核的CPU核上,既可以充分利用CPU资源,同时不影响原有业务的性能;
3)由多线程变量缓存行填充器修改涉及多线程的变量,通过往对象中填充无意义的变量,来保证整个对象独占缓存行,由多线程变量缓存行填充器修改的涉及多线程的变量包括操作网络数据包的变量、操作流信息的变量、操作日志的变量;
4)由网络数据包预取执行器用软件预取指令来获取网络数据包;
5)使用内存池代替系统内存管理,内存池是在真正使用内存之前,先申请分配一定数量的、大小相等的内存块留作备用;当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存;
6)由TCMalloc内存分配器将tcmalloc库链接到程序中,完成针对内存对象不是固定的大小,无法使用内存池的变量的内存分配。
CN202011296562.7A 2020-11-19 2020-11-19 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置 Active CN112306554B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011296562.7A CN112306554B (zh) 2020-11-19 2020-11-19 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011296562.7A CN112306554B (zh) 2020-11-19 2020-11-19 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置

Publications (2)

Publication Number Publication Date
CN112306554A true CN112306554A (zh) 2021-02-02
CN112306554B CN112306554B (zh) 2024-05-17

Family

ID=74334806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011296562.7A Active CN112306554B (zh) 2020-11-19 2020-11-19 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置

Country Status (1)

Country Link
CN (1) CN112306554B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590313A (zh) * 2021-07-08 2021-11-02 杭州朗和科技有限公司 负载均衡方法、装置、存储介质和计算设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530132A (zh) * 2013-10-29 2014-01-22 浪潮电子信息产业股份有限公司 一种cpu串行程序移植到mic平台的方法
CN107729193A (zh) * 2017-09-14 2018-02-23 郑州云海信息技术有限公司 一种基于Purley平台的Linpack测试自动优化配置方法及系统
CN107977369A (zh) * 2016-10-21 2018-05-01 北京计算机技术及应用研究所 便于移植的嵌入式数据库管理系统
CN108733409A (zh) * 2017-04-24 2018-11-02 华为技术有限公司 执行推测线程的方法以及片上多核处理器
US20190034239A1 (en) * 2016-04-27 2019-01-31 Hewlett Packard Enterprise Development Lp Dynamic Thread Mapping

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530132A (zh) * 2013-10-29 2014-01-22 浪潮电子信息产业股份有限公司 一种cpu串行程序移植到mic平台的方法
US20190034239A1 (en) * 2016-04-27 2019-01-31 Hewlett Packard Enterprise Development Lp Dynamic Thread Mapping
CN107977369A (zh) * 2016-10-21 2018-05-01 北京计算机技术及应用研究所 便于移植的嵌入式数据库管理系统
CN108733409A (zh) * 2017-04-24 2018-11-02 华为技术有限公司 执行推测线程的方法以及片上多核处理器
CN107729193A (zh) * 2017-09-14 2018-02-23 郑州云海信息技术有限公司 一种基于Purley平台的Linpack测试自动优化配置方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590313A (zh) * 2021-07-08 2021-11-02 杭州朗和科技有限公司 负载均衡方法、装置、存储介质和计算设备
CN113590313B (zh) * 2021-07-08 2024-02-02 杭州网易数之帆科技有限公司 负载均衡方法、装置、存储介质和计算设备

Also Published As

Publication number Publication date
CN112306554B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
US9898206B2 (en) Memory access processing method, apparatus, and system
Schneider et al. Scalable locality-conscious multithreaded memory allocation
US20060206635A1 (en) DMA engine for protocol processing
US8700857B2 (en) Optimizing memory copy routine selection for message passing in a multicore architecture
US7958314B2 (en) Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources
JP2018045700A (ja) ネットワークプロセッサにおけるマルチコア相互接続
US11940915B2 (en) Cache allocation method and device, storage medium, and electronic device
CN106202459A (zh) 虚拟化环境下的关系型数据库存储性能优化方法及系统
US11928061B2 (en) Cache management method and apparatus
Muthukrishnan et al. Gps: A global publish-subscribe model for multi-gpu memory management
CN112306554A (zh) 高性能要求软件从Grantley平台过渡到Purley平台的优化方法及装置
CN108958848A (zh) 近存储器计算体系结构
Pan et al. Tintmalloc: Reducing memory access divergence via controller-aware coloring
Zhang et al. SAC: sharing-aware caching in multi-chip GPUs
CN103955397A (zh) 一种基于微架构感知的虚拟机调度多策略选择方法
Tang et al. Towards high-performance packet processing on commodity multi-cores: current issues and future directions
CN110865869A (zh) 一种申威架构上的虚拟机访存特征提取方法及系统
Inoue et al. A study of memory management for web-based applications on multicore processors
US20060041882A1 (en) Replication of firmware
Li et al. Improving spark performance with zero-copy buffer management and RDMA
Pellegrini et al. On the effects of cpu caches on mpi point-to-point communications
CN109947672B (zh) 一种基于概率分布的mlc stt-ram缓存数据管理方法
Li et al. Designing registration caching free high-performance MPI library with implicit on-demand paging (ODP) of InfiniBand
Fu et al. A hardware-efficient dual-source data replication and local broadcast mechanism in distributed shared caches
CN112748989A (zh) 基于远程内存的虚拟机内存管理方法、系统、终端及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant