一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种glibc性能调优的方法与流程

2022-04-27 07:26:56 来源:中国专利 TAG:


1.本发明涉及计算机科学技术领域,具体涉及一种glibc性能调优的方法。


背景技术:

2.linux,全称gnu/linux,是一种免费使用和自由传播的类unix操作系统,其内核由林纳斯
·
本纳第克特
·
托瓦兹于1991年10月5日首次发布,它主要受到minix和unix思想的启发,是一个基于posix的多用户、多任务、支持多线程和多cpu的操作系统。它能运行主要的unix工具软件、应用程序和网络协议。它支持32位和64位硬件。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的red hat enterprise linux、suse、oracle linux等。
3.glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于glibc囊括了几乎所有的unix通行的标准,可以想见其内容包罗万象。而就像其他的unix系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个操作系统。在gnu/linux系统中,其c函式库发展史点出了gnu/linux演进的几个重要里程碑,用glibc作为系统的c函式库,是gnu/linux演进的一个重要里程碑。glibc是一种按照lgpl许可协议发布的,自由的,公开源代码的,方便从网络下载的c的编译程序。gnu c运行期库,是一种c函数库,是程序运行时使用到的一些api集合,它们一般是已预先编译好,以二进制代码形式存在linux类系统中,gnu c运行期库通常作为gnu c编译程序的一个部分发布。glibc最初是自由软件基金会(fsf)为其gnu操作系统所写,但当前最主要的应用是配合linux内核,成为gnu/linux操作系统一个重要的组成部分。
4.随着linux系统的兴起,越来越多的企业开始把目光从windows转向linux。linux目前存在多种发行版,每个发行版都有自己的演进路线。虽然所有的linux都遵循posix接口,但是各自发行版仍然存在兼容性的问题,例如centos7.x中使用的glibc是2.17版本,centos8.x中使用的glibc是2.28版本。虽然使用越高的glibc版本性能可能会越好,但是glibc对于linux来说太过于基础,无法做到随心所欲升级和降级,这就需要对老版本的glibc进行性能优化,从而达到与新版本glibc性能相同或相近的目的。
5.因此,如何提供一种glibc优化方法,成为目前亟待解决的问题。


技术实现要素:

6.解决的技术问题
7.针对现有技术所存在的上述缺点,本发明提供了一种glibc性能调优的方法,该方法可以对老版本的glibc进行优化达到新版本相近的性能,避免升级glibc降低系统稳定性。
8.技术方案
9.为实现以上目的,本发明通过以下技术方案予以实现:
10.本发明提供一种glibc性能调优的方法,用于将旧版本linux系统中的glibc进行调优,使其具备新版本中glibc的性能,包括如下步骤:
11.s1、提取旧版本linux系统中的第一glibc和新版本linux系统中的第二glibc,对所述第一glibc和所述第二glibc进行性能测试,确定性能差别点;
12.s2、提取所述第二glibc基于所述第一glibc产生的所有社区补丁;
13.s3、基于所述性能差别点查找所述所有社区补丁,找到产生所述性能差别点的对应社区补丁;
14.s4、将所述对应社区补丁合入所述第一glibc。
15.进一步地,所述确定性能差别点至少通过分析低分测试项、分析测试项涉及到的外部命令和分析perf热力图实现。
16.进一步地,所述分析低分测试项具体包括:找到低分测试项对应的源码,对低分测试项调用的函数、执行的文件、整体流程,以及while循环和for循环内的代码进行分析。
17.进一步地,所述分析测试项涉及到的外部命令具体包括:对比测试项涉及到的外部命令版本以及动态库数量是否一致,若不一致则找到对应修改编译参数和替换版本的方式。
18.进一步地,所述分析perf热力图具体包括:使用perf record-g-f99-oa./pgms/dhry2reg10命令进行热力图构建,使用perf report-ia命令进行热力图查看。
19.进一步地,所述对所述第一glibc和所述第二glibc进行性能测试使用unixbench工具。
20.进一步地,还包括对unixbench工具进行性能测试的评分进行分析,若所述第一glibc的得分与所述第二glibc的评分相同,则不进行glibc性能调优,所述第一glibc的得分与所述第二glibc的评分不相同,则进行glibc性能调优。
21.基于同一发明构想,本发明还提供了一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述任一项所述的方法。
22.基于同一发明构想,本发明还提供了一种可读存储介质,其特征在于,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一项所述的方法。
23.有益效果
24.本发明使用unixbench工具发现旧版本linux系统的glibc存在性能缺陷,通过perf热力图等分析方法辅助分析,再从数以千计的社区补丁中进行合理的筛选,最终找到可以提高glibc性能的社区补丁,再将可以提高glibc性能的社区补丁合并到旧版本linux系统的glibc中,实现旧版本linux系统的glibc的调优。
附图说明
25.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1为本发明一实施例提供的glibc性能调优的方法步骤示意图;
27.图2为本发明一实施例提供的glibc性能调优的方法具体流程示意图。
具体实施方式
28.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.参阅图1,本发明一实施例提供了一种glibc性能调优的方法,用于将旧版本linux系统中的glibc进行调优,使其具备新版本中glibc的性能,包括如下步骤:
30.s1、提取旧版本linux系统中的第一glibc和新版本linux系统中的第二glibc,对所述第一glibc和所述第二glibc进行性能测试,确定性能差别点;
31.s2、提取所述第二glibc基于所述第一glibc产生的所有社区补丁;
32.s3、基于所述性能差别点查找所述所有社区补丁,找到产生所述性能差别点的对应社区补丁;
33.s4、将所述对应社区补丁合入所述第一glibc。
34.在本实施例中,对于步骤s1,性能优劣是相对而言的,对于两个linux系统进行对比才会有性能好坏之分,没有对比的性能调优是毫无意义的。因此针对旧版本linux系统的第一glibc和新版本linux系统的第二glibc进行调优,例如,旧版本linux系统可以选择centos7.4系统,新版本linux系统可以选择centos8.1系统,当然,本发明技术领域内的人员应该明白,新版本linux系统和旧版本linux系统的选择应该是随机的。
35.在本实施例中,参阅图2,所述确定性能差别点至少通过分析低分测试项、分析测试项涉及到的外部命令和分析perf热力图实现。所述分析低分测试项具体包括:找到低分测试项对应的源码,对低分测试项调用的函数、执行的文件、整体流程,以及while循环和for循环内的代码进行分析。所述分析测试项涉及到的外部命令具体包括:对比测试项涉及到的外部命令版本以及动态库数量是否一致,若不一致则找到对应修改编译参数和替换版本的方式。所述分析perf热力图具体包括:使用perf record-g-f99-oa./pgms/dhry2reg10命令进行热力图构建,使用perf report-ia命令进行热力图查看。
36.在本实施例中,所述对所述第一glibc和所述第二glibc进行性能测试使用unixbench工具。此外,在使用unixbench工具的时候,还包括对unixbench工具进行性能测试的评分进行分析,若所述第一glibc的得分与所述第二glibc的评分相同,则不进行glibc性能调优,所述第一glibc的得分与所述第二glibc的评分不相同,则进行glibc性能调优。例如,对上述unixbench工具产生的结果进行分析,只关注“double-precision whetstone”测试项分数,若centos7.4的成绩与centos8.1成绩持平,则无需调优,若较低则需要调优。
37.在本实施例中,基于所述性能差别点查找所述所有社区补丁,找到产生所述性能差别点的对应社区补丁,可以下载glibc完整git源码,重点排查2.17到2.28之间提的社区补丁。通过关键字optimized和optimized和strcmp进行筛选,最终将用于提升的社区补丁
合并到一个补丁中,最终将合并的补丁合入到centos7.4系统中。
38.基于同一发明构想,本发明还提供了一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述glibc性能调优的方法。
39.所述处理器在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器(例如gpu(graphics processing unit-图形处理器))、或其他数据处理芯片。该处理器通常用于控制所述电子设备的总体操作。本实施例中,所述处理器用于运行所述存储器中存储的程序代码或者处理数据,例如运行所述glibc性能调优的方法的程序代码。
40.所述存储器至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器可以是所述电子设备的内部存储单元,例如该电子设备的硬盘或内存。在另一些实施例中,所述存储器也可以是所述电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,所述存储器还可以既包括所述电子设备的内部存储单元也包括其外部存储设备。本实施例中,所述存储器通常用于存储安装于所述电子设备的操作方法和各类应用软件,例如所述glibc性能调优的方法的程序代码等。此外,所述存储器还可以用于暂时地存储已经输出或者将要输出的各类数据。
41.基于同一发明构想,本发明还提供一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现所述glibc性能调优的方法。
42.本发明的优点在于使用unixbench工具发现旧版本linux系统的glibc存在性能缺陷,通过perf热力图等分析方法辅助分析,再从数以千计的社区补丁中进行合理的筛选,最终找到可以提高glibc性能的社区补丁,再将可以提高glibc性能的社区补丁合并到旧版本linux系统的glibc中,实现旧版本linux系统的glibc的调优。
43.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献