CN111756575A - 存储服务器的性能分析方法及装置、电子设备 - Google Patents

存储服务器的性能分析方法及装置、电子设备 Download PDF

Info

Publication number
CN111756575A
CN111756575A CN202010568680.2A CN202010568680A CN111756575A CN 111756575 A CN111756575 A CN 111756575A CN 202010568680 A CN202010568680 A CN 202010568680A CN 111756575 A CN111756575 A CN 111756575A
Authority
CN
China
Prior art keywords
function
information
target
storage server
probe
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
CN202010568680.2A
Other languages
English (en)
Other versions
CN111756575B (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.)
Xsky Beijing Data Technology Corp ltd
Original Assignee
Xsky Beijing Data Technology Corp 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 Xsky Beijing Data Technology Corp ltd filed Critical Xsky Beijing Data Technology Corp ltd
Priority to CN202010568680.2A priority Critical patent/CN111756575B/zh
Publication of CN111756575A publication Critical patent/CN111756575A/zh
Application granted granted Critical
Publication of CN111756575B publication Critical patent/CN111756575B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种存储服务器的性能分析方法及装置、电子设备。其中,该方法包括:确定存储服务器的软件栈架构上的多个系统服务层,其中,每个系统服务层对应有待探测的目标函数的函数标识,软件栈架构部署在预设运行软件环境中;基于函数标识,向预设运行软件环境的探测内核中注入探针模块;通过探针模块对目标函数的运行状态进行探测,得到目标探测信息;将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。本发明解决了相关技术中分析存储服务器性能时,由于探测模块无法与内核紧密集成,导致使用方式过于复杂的技术问题。

Description

存储服务器的性能分析方法及装置、电子设备
技术领域
本发明涉及服务器分析技术领域,具体而言,涉及一种存储服务器的性能分析方法及装置、电子设备。
背景技术
相关技术中,随着计算机存储技术的快速发展,存储方式从传统存储渐渐转变到分布式存储,随之而来的不仅仅是技术发展带来的便利和效益,同时也面临的一个问题就是随着软件架构和业务逻辑越来越复杂,若生产环境出现性能问题,工程师就需要花费大量的精力来解决生产环境上出现的存储性能问题,需要花费工程师大量的时间和精力。造成这种问题的原因主要就是缺乏有效的定位手段和工具。
当前,用来分析存储服务器性能的技术主要包括如下两种类型:静态追踪和动态追踪。其中,静态追踪包括埋点和分析dump文件两种方式;所谓埋点就是在代码关键路径里面添加一些用来记录性能数据或者记录日志信息的代码;而分析dump文件的方案为:事先在程序中添加收集当前程序运行时信息和堆栈信息后生成dump文件的功能,然后再静态分析工具来观察当时程序运行情况。而动态追踪主要为:DTrace(Dynamic Tracing,用来在生产和试验性生产系统上找出系统瓶颈的工具)。DTrace是一个非常通用的调试平台,它提供了一种很像C语言的脚本语言,叫做D语言,基于DTrace的调试工具都是使用这种语言编写的,D语言支持特殊的语法用以在某个运行环境的内核函数的入口或出口设定探测模块,也或者是在某个用户态进程的函数入口或出口设定探测模块。
但是当前的存储服务器性能分析方式都存在明显的弊端,对于静态分析的埋点和分析dump文件的方式来说,主要存在的问题是无法预估信息收集的量,可能出现收集的太多影响程序本身运行,或者收集太少不足以分析问题的情况。并且在出现问题后再添加埋点就需要重新运行程序会导致现场破坏,所以这些方式对于在线调试是不切合实际的。而传统的性能分析工具,如Perl的DProf、C世界里的gprof、以及其它语言和环境的性能分析器(profiler),往往需要用特殊的选项重新编译程序,或者以特殊的方式重新运行程序,这种需要特别处理和配合的性能分析工具,显然并不适用在线的实时活体分析。
而对于动态分析的Dtrace方式来说,弊端是使用方式过于复杂、不方便、工具的开发移植难、输出不够直观等。由于设置的探测模块并不是程序运行环境Linux内核的一部分,没有与内核紧密集成,因此设置的探测模块需要不停地追赶主线内核的变化,导致追踪成本高、学习成本高。另一个缺点是,在设置探测模块,通常需要将“小语言”脚本(有点像D语言)动态编译成一个Linux内核模块的C源码,因此经常需要在线部署C编译器工具链和Linux内核的头文件,这样就需要大量占据客户端内存,降低了程序运行环境的自身工作效率。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种存储服务器的性能分析方法及装置、电子设备,以至少解决相关技术中分析存储服务器性能时,由于探测模块无法与内核紧密集成,导致使用方式过于复杂的技术问题。
根据本发明实施例的一个方面,提供了一种存储服务器的性能分析方法,包括:确定存储服务器的软件栈架构上的多个系统服务层,其中,每个所述系统服务层对应有待探测的目标函数的函数标识,所述软件栈架构部署在预设运行软件环境中;基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块;通过所述探针模块对所述目标函数的运行状态进行探测,得到目标探测信息;将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能。
可选地,基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块的步骤,包括:对所述探针模块进行认证,以确定所述探针模块是否安全;若确定所述探针模块安全时,通过伯克利包过滤框架BPF的内核函数接口,将所述探针模块注入到所述预设运行软件环境的探测内核中。
可选地,在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之前,所述性能分析方法还包括:获取与每个所述系统服务层对应的服务层标识;基于所述函数标识和所述服务层标识,确定与每个所述系统服务层对应的探针程序;将所述探针程序编译为伯克利包过滤框架BPF的字节码,并以所述字节码作为所述探针模块。
可选地,在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之前,所述性能分析方法还包括:确定与所述目标函数对应的入口参数和时间戳标识,其中,所述入口参数用于解析外部输入命令,所述时间戳标识用于记录探针模块被调用时的时间点信息;将所述入口参数和所述时间戳标识加载至所述探针程序。
可选地,在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之后,所述性能分析方法还包括:若所述存储服务器的软件栈架构的服务层函数出现更新信息,则基于所述更新信息确定所述软件栈架构中出现函数更新的系统服务层的服务层标识;基于所述服务层标识,确定已更新的新服务层函数;为所述新服务层函数设置新函数标识;基于所述新函数标识和所述服务层标识,更新字节码,并将新的字节码作为所述探针模块。
可选地,将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能的步骤,包括:确定所述目标探测信息的信息大小和信息类型;基于所述信息大小和所述信息类型,确定能够存放所述目标探测信息的目标缓冲区;将所述目标探测信息存储至所述目标缓冲区中,以分析所述存储服务器的运行性能。
可选地,在将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能之后,所述性能分析方法还包括:接收信息调用指令,其中,所述信息调用指令至少包括:待调用的函数标识;响应所述信息调用指令,获取与所述函数标识对应的目标缓冲区中的目标探测信息;对所述目标探测信息进行整理,并显示在预设显示器上。
可选地,所述目标探测信息包括下述至少之一:函数调用堆栈、时延信息、预设时间段内的读写数据、读写数据的类型、读写数据占用空间、占用磁盘。
根据本发明实施例的另一方面,还提供了一种存储服务器的性能分析装置,包括:确定单元,用于确定存储服务器的软件栈架构上的多个系统服务层,其中,每个所述系统服务层对应有待探测的目标函数的函数标识,所述软件栈架构部署在预设运行软件环境中;注入单元,用于基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块;探测单元,用于通过所述探针模块对所述目标函数的运行状态进行探测,得到目标探测信息;分析单元,用于将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能。
可选地,所述注入单元包括:认证模块,用于对所述探针模块进行认证,以确定所述探针模块是否安全;注入模块,用于在确定所述探针模块安全时,通过伯克利包过滤框架BPF的内核函数接口,将所述探针模块注入到所述预设运行软件环境的探测内核中。
可选地,所述性能分析装置还包括:第一获取模块,用于在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之前,获取与每个所述系统服务层对应的服务层标识;第一确定模块,用于基于所述函数标识和所述服务层标识,确定与每个所述系统服务层对应的探针程序;第一编译模块,用于将所述探针程序编译为伯克利包过滤框架BPF的字节码,并以所述字节码作为所述探针模块。
可选地,所述性能分析装置还包括:第一确定模块,用于在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之前,确定与所述目标函数对应的入口参数和时间戳标识,其中,所述入口参数用于解析外部输入命令,所述时间戳标识用于记录探针模块被调用时的时间点信息;第一加载模块,用于将所述入口参数和所述时间戳标识加载至所述探针程序。
可选地,所述性能分析装置还包括:第二确定模块,用于在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之后,若所述存储服务器的软件栈架构的服务层函数出现更新信息,则基于所述更新信息确定所述软件栈架构中出现函数更新的系统服务层的服务层标识;第三确定模块,用于基于所述服务层标识,确定已更新的新服务层函数;为所述新服务层函数设置新函数标识;第一更新模块,用于基于所述新函数标识和所述服务层标识,更新字节码,并将新的字节码作为所述探针模块。
可选地,所述分析单元包括:第四确定模块,用于确定所述目标探测信息的信息大小和信息类型;第五确定模块,用于基于所述信息大小和所述信息类型,确定能够存放所述目标探测信息的目标缓冲区;第一存储模块,用于将所述目标探测信息存储至所述目标缓冲区中,以分析所述存储服务器的运行性能。
可选地,所述性能分析装置还包括:接收单元,用于在将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能之后,接收信息调用指令,其中,所述信息调用指令至少包括:待调用的函数标识;响应单元,用于响应所述信息调用指令,获取与所述函数标识对应的目标缓冲区中的目标探测信息;整理单元,用于对所述目标探测信息进行整理,并显示在预设显示器上。
可选地,所述目标探测信息包括下述至少之一:函数调用堆栈、时延信息、预设时间段内的读写数据、读写数据的类型、读写数据占用空间、占用磁盘。
根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的存储服务器的性能分析方法。
本发明实施例中,在分析存储服务器的性能时,先确定存储服务器的软件栈架构上的多个系统服务层,其中,每个系统服务层对应有待探测的目标函数的函数标识,软件栈架构部署在预设运行软件环境中,然后基于函数标识,向预设运行软件环境的探测内核中注入探针模块,通过探针模块对目标函数的运行状态进行探测,得到目标探测信息,最后将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。在该实施例,可以在预设运行软件环境的探测内核中注入探针模块,每个系统服务层对应设置一个探针模块,通过探针模块探测目标函数的运行状态,进而通过探测信息分析存储服务器的性能,使得探针模块与探测内核紧密关联,注入方式方便快捷,无需修改程序代码即可在运行软件环境中动态获取程序运行的运行状态(如获取读写时延和io信息),从而让工程师能够在多层复杂的软件结构下直观快速的找到问题的来源,从而解决相关技术中分析存储服务器性能时,由于探测模块无法与内核紧密集成,导致使用方式过于复杂的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的存储服务器的性能分析方法的流程图;
图2是根据本发明实施例的一种可选的多个系统服务层的架构图;
图3是根据本发明实施例的一种可选的注入探针模块的示意图;
图4是根据本发明实施例的一种可选的存储服务器的性能分析装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于本领域技术人员理解本发明,下面对本发明各实施例涉及的部分术语或者名词做出解释:
BPF,Berkeley Packet Filter,伯克利包过滤。
EBPF,The Extended Berkeley Packet Filter,是指扩展的伯克利包过滤框架。
BCC,BPF Compiler Collection,BPF编译和工具集合的python包。
Dtrace,Dynamic Tracing,由SunTM开发的一个用来在生产和试验性生产系统上找出系统瓶颈的工具。
Kprobes,Kernel probes Kprobes,是Linux中的轻量级装置,可以将断点插入到正在运行的内核之中。
Uprobes,Userspace probes,是Linux中的轻量级装置,可以将断点插入到正在运行的用户态程序之中。
本发明实施例,可以应用于各种服务器性能分析系统中,在分析服务器(包括但不限于分布式存储服务器)的性能时,以模块化方式向运行环境的内核注入探针模块(该探针模块具备高扩展性),通过探针模块检测软件栈架构中各服务层的内部函数运行状态,通过解析被探测的函数参数的方式来获取需要的信息,从而快速分析服务器性能。下面结合各个实施例来详细说明本发明。
实施例一
根据本发明实施例,提供了一种存储服务器的性能分析方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种可选的存储服务器的性能分析方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,确定存储服务器的软件栈架构上的多个系统服务层,其中,每个系统服务层对应有待探测的目标函数的函数标识,软件栈架构部署在预设运行软件环境中;
步骤S104,基于函数标识,向预设运行软件环境的探测内核中注入探针模块;
步骤S106,通过探针模块对目标函数的运行状态进行探测,得到目标探测信息;
步骤S108,将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。
通过上述步骤,可以在分析存储服务器的性能时,先确定存储服务器的软件栈架构上的多个系统服务层,其中,每个系统服务层对应有待探测的目标函数的函数标识,软件栈架构部署在预设运行软件环境中,然后基于函数标识,向预设运行软件环境的探测内核中注入探针模块,通过探针模块对目标函数的运行状态进行探测,得到目标探测信息,最后将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。在该实施例,可以在预设运行软件环境的探测内核中注入探针模块,每个系统服务层对应设置一个探针模块,通过探针模块探测目标函数的运行状态,进而通过探测信息分析存储服务器的性能,使得探针模块与探测内核紧密关联,注入方式方便快捷,无需修改程序代码即可在运行软件环境中动态获取程序运行的运行状态(如获取读写时延和io信息),从而让工程师能够在多层复杂的软件结构下直观快速的找到问题的来源,从而解决相关技术中分析存储服务器性能时,由于探测模块无法与内核紧密集成,导致使用方式过于复杂的技术问题。
本发明实施例涉及的运行软件环境可以为Linux环境,在Linux环境的内核中部署多个探针模块,每个探针模块对应一个系统服务层。
下面结合上述各步骤来详细说明本发明。
步骤S102,确定存储服务器的软件栈架构上的多个系统服务层,其中,每个系统服务层对应有待探测的目标函数的函数标识,软件栈架构部署在预设运行软件环境中。
图2是根据本发明实施例的一种可选的多个系统服务层的架构图,如图2所示,存储服务器的软件栈架构包括两部分,即:用户态空间(图2中示意为Userspace)和内核态空间(图2中示意为Kernelspace),其中,用户态空间对应的系统服务层为用户态应用程序层,该用户态应用程序层包括两个子服务层:Applications和System Call Interface,在Applications下还设置系统库(System Libraries);而内核态空间包括:内核态虚拟文件系统层(VFS)、内核态文件系统层(File Systems)、内核块层(包括两个子服务层,VolumeManager和Block Device Interface)、存储设备驱动层(Device Drivers),其中,每个系统服务层都可以设置一个服务层标识,该服务层标识可以使用字母、符号表示。
在图2示出的软件栈架构下,写操作数据的流向是用户态程序->内核态虚拟文件系统层VFS->内核态文件系统层File System->内核块层block->存储设备驱动层driver->hdd/ssd。对于读操作来说数据流向与写操作数据相反。本发明实施例可以在图2示出的软件栈架构中系统服务层中每一层插入的探针模块来追踪数据的流动。
可选的,在基于函数标识,向预设运行软件环境的探测内核中注入探针模块之前,性能分析方法还包括:获取与每个系统服务层对应的服务层标识;基于函数标识和服务层标识,确定与每个系统服务层对应的探针程序;将探针程序编译为伯克利包过滤框架BPF的字节码,并以字节码作为探针模块。
本发明实施例涉及的探针程序,可以是使用预设编程语言编写的,如使用C语言编写该探针程序,在编写探针程序之前,需要确定该探针程序探测哪一个服务层以及该服务层哪一个指定函数或目标函数。该探针程序可以是运行在Linux内核态的探针程序,负责控制要收集的信息。在编译好探针程序后,将探针程序编译为字节码,在本发明实施例可以定义为BPF字节码(BPF bytecode),也就是BPF特定格式的字节码。
在本发明实施例中,探针程序需要与要注入的目标函数适配,例如,如需要通过目标函数参数获取信息,那么就需要解析目标函数的入口参数,涉及到结构体解析和偏移地址解析,此时,需要编写负责处理用户输入的命令行解析,然后执行对应的注入接口。
本发明实施例涉及的伯克利包过滤框架BPF可以为扩展版的BPF,即EBPF,通过EBPF的存储服务器动态性能分析方式,编写探针程序后,将探针程序(例如,设置为hook)编译为字节码(该字节码指示探针模块),进而通过字节码在各个系统服务层中的待监测函数运行时,实时检测函数运行状态,并在存储服务器上IO路径软件上获取监测io信息,实现存储服务器的动态性能检测和性能分析。
另一种可选的,在基于函数标识,向预设运行软件环境的探测内核中注入探针模块之前,性能分析方法还包括:确定与目标函数对应的入口参数和时间戳标识,其中,入口参数用于解析外部输入命令,时间戳标识用于记录探针模块被调用时的时间点信息;将入口参数和时间戳标识加载至探针程序。
在探针程序中记录调用时的时间戳,这样在多次探针程序都调用后,就快速查询目标函数的时延。
步骤S104,基于函数标识,向预设运行软件环境的探测内核中注入探针模块。
本发明实施例,探测内核中设置多个探针模块,每一个探针模块通过字节码表示,每一个所述系统服务层对应设置至少一个探针模块。
作为本发明可选的实施例,基于函数标识,向预设运行软件环境的探测内核中注入探针模块的步骤,包括:对探针模块进行认证,以确定探针模块是否安全;若确定探针模块安全时,通过伯克利包过滤框架BPF的内核函数接口,将探针模块注入到预设运行软件环境的探测内核中。
图3是根据本发明实施例的一种可选的注入探针模块的示意图,如图3所示,在用户程序侧编译好探针程序后,可以将其编译为BPF字节码,然后将BPF字节码注入在运行软件环境的内核中,内核在接收到字节码后,先对字节码进行认证,然后将其字节码通过内核函数接口(例如,内核函数接口为BPF函数接口)注入到内核中,需要指定要注入的目标函数的函数名,在注入成功后在目标函数运行的时候,同时就会执行探针程序。
本发明实施例并不限定向内核注入字节码的方式,例如在图2中,示意说明了注入的方式分:kprobe、uprobe、tracepoints、perf_events,能够控制在指定函数执行时或者指定函数返回时运行探针程序。
另一种可选的,在基于函数标识,向预设运行软件环境的探测内核中注入探针模块之后,性能分析方法还包括:若存储服务器的软件栈架构的服务层函数出现更新信息,则基于更新信息确定软件栈架构中出现函数更新的系统服务层的服务层标识;基于服务层标识,确定已更新的新服务层函数;为新服务层函数设置新函数标识;基于新函数标识和服务层标识,更新字节码,并将新的字节码作为探针模块。
本发明实施例编写的探针程序可以按模块划分,例如,每一个系统服务层划分为一个模块,对应设置一个探针模块,例如,用户态应用程序层设置一个trace app,内核态虚拟文件系统层设置一个trace vfs,内核态文件系统层设置一个trace fs,内核块层设置两个:trace vol和trace block,存储设备驱动层设置一个trace deivce。存储系统软件栈上每一层都对应一个探针程序,如果存储系统程序发生了更新,只要修改对应系统服务层的探针程序即可,保证动态追踪工具具有良好的可扩展性。
步骤S106,通过探针模块对目标函数的运行状态进行探测,得到目标探测信息。
可选的,目标探测信息包括下述至少之一:函数调用堆栈、时延信息、预设时间段内的读写数据、读写数据的类型、读写数据占用空间、占用磁盘。
本发明实施例中,探测信息对应了读写跟踪信息,该读写跟踪信息包括:通用流程和模块特殊流程,其中,通用流程对应有函数调用堆栈、基本信息收集(如函数级统计时延、预设时间段内的读写数据、预设时间段内的读写个数)、统计信息过滤输出(分别按IO类型、IO大小、磁盘、偏移方式);而模块特殊流程设计到模块内重要数据结构和模块内部重要子模块需要跟踪的流程。
步骤S108,将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。
在本发明实施例中,将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能的步骤,包括:确定目标探测信息的信息大小和信息类型;基于信息大小和信息类型,确定能够存放目标探测信息的目标缓冲区;将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。
探针模块需要把收集到的信息放在BPF框架的数据结构缓存中,是一个用于和用户态交换数据的环形缓冲区(理解为maps),缓冲区有很多种类,探针模块需要把数据放到合适的缓冲区中,这样用户态程序才能正确的取到数据。
在本发明实施例,在将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能之后,性能分析方法还包括:接收信息调用指令,其中,信息调用指令至少包括:待调用的函数标识;响应信息调用指令,获取与函数标识对应的目标缓冲区中的目标探测信息;对目标探测信息进行整理,并显示在预设显示器上。
本发明实施例,需要在用户态程序通过BPF框架提供的接口从内核态缓冲区中取出数据,然后将该数据显示在预设显示器。把探针程序收集到缓冲区maps中的信息从内核态获取出来,然后在用户态显示,例如,以Python程序为例,本发明实施例可使用python调用bcc接口来从对应的缓冲区maps中获取数据到Python结构体中,之后通过Python编写合适的打印程序把数据处理、分析、过滤后显示出来。
实施例二
图4是根据本发明实施例的一种可选的存储服务器的性能分析装置的示意图,如图4所示,该性能分析装置可以包括:确定单元41、注入单元43、探测单元45、分析单元47,其中,
确定单元41,用于确定存储服务器的软件栈架构上的多个系统服务层,其中,每个系统服务层对应有待探测的目标函数的函数标识,软件栈架构部署在预设运行软件环境中;
注入单元43,用于基于函数标识,向预设运行软件环境的探测内核中注入探针模块;
探测单元45,用于通过探针模块对目标函数的运行状态进行探测,得到目标探测信息;
分析单元47,用于将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。
上述存储服务器的性能分析装置,可以在分析存储服务器的性能时,先通过确定单元41确定存储服务器的软件栈架构上的多个系统服务层,其中,每个系统服务层对应有待探测的目标函数的函数标识,软件栈架构部署在预设运行软件环境中,然后通过注入单元43基于函数标识,向预设运行软件环境的探测内核中注入探针模块,利用探测单元45通过探针模块对目标函数的运行状态进行探测,得到目标探测信息,最后通过分析单元47将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。在该实施例,可以在预设运行软件环境的探测内核中注入探针模块,每个系统服务层对应设置一个探针模块,通过探针模块探测目标函数的运行状态,进而通过探测信息分析存储服务器的性能,使得探针模块与探测内核紧密关联,注入方式方便快捷,无需修改程序代码即可在运行软件环境中动态获取程序运行的运行状态(如获取读写时延和io信息),从而让工程师能够在多层复杂的软件结构下直观快速的找到问题的来源,从而解决相关技术中分析存储服务器性能时,由于探测模块无法与内核紧密集成,导致使用方式过于复杂的技术问题。
可选的,注入单元包括:认证模块,用于对探针模块进行认证,以确定探针模块是否安全;注入模块,用于在确定探针模块安全时,通过伯克利包过滤框架BPF的内核函数接口,将探针模块注入到预设运行软件环境的探测内核中。
另一种可选的,性能分析装置还包括:第一获取模块,用于在基于函数标识,向预设运行软件环境的探测内核中注入探针模块之前,获取与每个系统服务层对应的服务层标识;第一确定模块,用于基于函数标识和服务层标识,确定与每个系统服务层对应的探针程序;第一编译模块,用于将探针程序编译为伯克利包过滤框架BPF的字节码,并以字节码作为探针模块。
在本发明实施例中,性能分析装置还包括:第一确定模块,用于在基于函数标识,向预设运行软件环境的探测内核中注入探针模块之前,确定与目标函数对应的入口参数和时间戳标识,其中,入口参数用于解析外部输入命令,时间戳标识用于记录探针模块被调用时的时间点信息;第一加载模块,用于将入口参数和时间戳标识加载至探针程序。
可选的,性能分析装置还包括:第二确定模块,用于在基于函数标识,向预设运行软件环境的探测内核中注入探针模块之后,若存储服务器的软件栈架构的服务层函数出现更新信息,则基于更新信息确定软件栈架构中出现函数更新的系统服务层的服务层标识;第三确定模块,用于基于服务层标识,确定已更新的新服务层函数;为新服务层函数设置新函数标识;第一更新模块,用于基于新函数标识和服务层标识,更新字节码,并将新的字节码作为探针模块。
在本发明实施例中,分析单元包括:第四确定模块,用于确定目标探测信息的信息大小和信息类型;第五确定模块,用于基于信息大小和信息类型,确定能够存放目标探测信息的目标缓冲区;第一存储模块,用于将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。
另一种可选的,性能分析装置还包括:接收单元,用于在将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能之后,接收信息调用指令,其中,信息调用指令至少包括:待调用的函数标识;响应单元,用于响应信息调用指令,获取与函数标识对应的目标缓冲区中的目标探测信息;整理单元,用于对目标探测信息进行整理,并显示在预设显示器上。
可选的,目标探测信息包括下述至少之一:函数调用堆栈、时延信息、预设时间段内的读写数据、读写数据的类型、读写数据占用空间、占用磁盘。
上述的存储服务器的性能分析装置还可以包括处理器和存储器,上述确定单元41、注入单元43、探测单元45、分析单元47等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。
上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述任意一项的存储服务器的性能分析方法。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:确定存储服务器的软件栈架构上的多个系统服务层,其中,每个系统服务层对应有待探测的目标函数的函数标识,软件栈架构部署在预设运行软件环境中;基于函数标识,向预设运行软件环境的探测内核中注入探针模块;通过探针模块对目标函数的运行状态进行探测,得到目标探测信息;将目标探测信息存储至目标缓冲区中,以分析存储服务器的运行性能。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种存储服务器的性能分析方法,其特征在于,包括:
确定存储服务器的软件栈架构上的多个系统服务层,其中,每个所述系统服务层对应有待探测的目标函数的函数标识,所述软件栈架构部署在预设运行软件环境中;
基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块;
通过所述探针模块对所述目标函数的运行状态进行探测,得到目标探测信息;
将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能。
2.根据权利要求1所述的性能分析方法,其特征在于,基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块的步骤,包括:
对所述探针模块进行认证,以确定所述探针模块是否安全;
若确定所述探针模块安全时,通过伯克利包过滤框架BPF的内核函数接口,将所述探针模块注入到所述预设运行软件环境的探测内核中。
3.根据权利要求2所述的性能分析方法,其特征在于,在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之前,所述性能分析方法还包括:
获取与每个所述系统服务层对应的服务层标识;
基于所述函数标识和所述服务层标识,确定与每个所述系统服务层对应的探针程序;
将所述探针程序编译为伯克利包过滤框架BPF的字节码,并以所述字节码作为所述探针模块。
4.根据权利要求3所述的性能分析方法,其特征在于,在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之前,所述性能分析方法还包括:
确定与所述目标函数对应的入口参数和时间戳标识,其中,所述入口参数用于解析外部输入命令,所述时间戳标识用于记录探针模块被调用时的时间点信息;
将所述入口参数和所述时间戳标识加载至所述探针程序。
5.根据权利要求2所述的性能分析方法,其特征在于,在基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块之后,所述性能分析方法还包括:
若所述存储服务器的软件栈架构的服务层函数出现更新信息,则基于所述更新信息确定所述软件栈架构中出现函数更新的系统服务层的服务层标识;
基于所述服务层标识,确定已更新的新服务层函数;
为所述新服务层函数设置新函数标识;
基于所述新函数标识和所述服务层标识,更新字节码,并将新的字节码作为所述探针模块。
6.根据权利要求1所述的性能分析方法,其特征在于,将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能的步骤,包括:
确定所述目标探测信息的信息大小和信息类型;
基于所述信息大小和所述信息类型,确定能够存放所述目标探测信息的目标缓冲区;
将所述目标探测信息存储至所述目标缓冲区中,以分析所述存储服务器的运行性能。
7.根据权利要求1所述的性能分析方法,其特征在于,在将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能之后,所述性能分析方法还包括:
接收信息调用指令,其中,所述信息调用指令至少包括:待调用的函数标识;
响应所述信息调用指令,获取与所述函数标识对应的目标缓冲区中的目标探测信息;
对所述目标探测信息进行整理,并显示在预设显示器上。
8.根据权利要求1至7中任意一项所述的性能分析方法,其特征在于,所述目标探测信息包括下述至少之一:函数调用堆栈、时延信息、预设时间段内的读写数据、读写数据的类型、读写数据占用空间、占用磁盘。
9.一种存储服务器的性能分析装置,其特征在于,包括:
确定单元,用于确定存储服务器的软件栈架构上的多个系统服务层,其中,每个所述系统服务层对应有待探测的目标函数的函数标识,所述软件栈架构部署在预设运行软件环境中;
注入单元,用于基于所述函数标识,向所述预设运行软件环境的探测内核中注入探针模块;
探测单元,用于通过所述探针模块对所述目标函数的运行状态进行探测,得到目标探测信息;
分析单元,用于将所述目标探测信息存储至目标缓冲区中,以分析所述存储服务器的运行性能。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至8中任意一项所述的存储服务器的性能分析方法。
CN202010568680.2A 2020-06-19 2020-06-19 存储服务器的性能分析方法及装置、电子设备 Active CN111756575B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010568680.2A CN111756575B (zh) 2020-06-19 2020-06-19 存储服务器的性能分析方法及装置、电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010568680.2A CN111756575B (zh) 2020-06-19 2020-06-19 存储服务器的性能分析方法及装置、电子设备

Publications (2)

Publication Number Publication Date
CN111756575A true CN111756575A (zh) 2020-10-09
CN111756575B CN111756575B (zh) 2023-08-11

Family

ID=72674947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010568680.2A Active CN111756575B (zh) 2020-06-19 2020-06-19 存储服务器的性能分析方法及装置、电子设备

Country Status (1)

Country Link
CN (1) CN111756575B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112363901A (zh) * 2020-11-17 2021-02-12 浙江大华技术股份有限公司 硬盘性能检测方法、装置、系统、存储介质及电子装置
CN112445691A (zh) * 2020-12-02 2021-03-05 中国建设银行股份有限公司 非侵入式智能合约性能检测方法和装置
CN112564967A (zh) * 2020-12-02 2021-03-26 杭州谐云科技有限公司 基于eBPF的云服务拓扑自发现方法及系统、电子设备、存储介质
CN112965845A (zh) * 2021-02-05 2021-06-15 网宿科技股份有限公司 延迟分析方法、电子设备及存储介质
CN113076233A (zh) * 2021-03-30 2021-07-06 中国建设银行股份有限公司 一种io性能检测方法、装置、设备及存储介质
CN113688048A (zh) * 2021-08-27 2021-11-23 北京字节跳动网络技术有限公司 一种应用稳定性检测方法、装置、电子设备及存储介质
CN113794605A (zh) * 2021-09-10 2021-12-14 杭州谐云科技有限公司 一种基于eBPF的内核丢包检测方法、系统和装置
CN115202990A (zh) * 2022-09-09 2022-10-18 天津市天河计算机技术有限公司 Io性能数据的采集方法、装置、设备及存储介质
CN115442173A (zh) * 2022-06-07 2022-12-06 北京车和家信息技术有限公司 车辆报文转发、处理方法、装置、电子设备及存储介质
CN115729724A (zh) * 2022-11-30 2023-03-03 中电金信软件有限公司 故障注入方法、故障测试系统、电子设备及可读存储介质
CN116107843A (zh) * 2023-04-06 2023-05-12 阿里云计算有限公司 确定操作系统性能的方法、任务调度方法、设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1633110A (zh) * 2005-01-14 2005-06-29 中国科学院计算技术研究所 基于Linux内核的流量分析方法
CN1719785A (zh) * 2005-08-08 2006-01-11 清华大学 基于存域网的海量存储系统的性能监控方法及系统
CN102299923A (zh) * 2011-08-18 2011-12-28 工业和信息化部电信传输研究所 一种互联网性能测量系统中的探针注册方法
CN106933718A (zh) * 2015-12-30 2017-07-07 华为技术有限公司 性能监控方法及装置
EP3667531A1 (en) * 2018-12-11 2020-06-17 Koninklijke Philips N.V. A computing device with increased resistance against address probing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1633110A (zh) * 2005-01-14 2005-06-29 中国科学院计算技术研究所 基于Linux内核的流量分析方法
CN1719785A (zh) * 2005-08-08 2006-01-11 清华大学 基于存域网的海量存储系统的性能监控方法及系统
CN102299923A (zh) * 2011-08-18 2011-12-28 工业和信息化部电信传输研究所 一种互联网性能测量系统中的探针注册方法
CN106933718A (zh) * 2015-12-30 2017-07-07 华为技术有限公司 性能监控方法及装置
EP3667531A1 (en) * 2018-12-11 2020-06-17 Koninklijke Philips N.V. A computing device with increased resistance against address probing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佚名: ""Linux内核动态跟踪——SystemTap"", 《HTTPS://WWW.CNBLOGS.COM/LUCELUJIAMING/P/9467872.HTML》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112363901B (zh) * 2020-11-17 2023-08-29 浙江大华技术股份有限公司 硬盘性能检测方法、装置、系统、存储介质及电子装置
CN112363901A (zh) * 2020-11-17 2021-02-12 浙江大华技术股份有限公司 硬盘性能检测方法、装置、系统、存储介质及电子装置
CN112445691A (zh) * 2020-12-02 2021-03-05 中国建设银行股份有限公司 非侵入式智能合约性能检测方法和装置
CN112564967A (zh) * 2020-12-02 2021-03-26 杭州谐云科技有限公司 基于eBPF的云服务拓扑自发现方法及系统、电子设备、存储介质
CN112445691B (zh) * 2020-12-02 2024-05-28 中国建设银行股份有限公司 非侵入式智能合约性能检测方法和装置
CN112965845A (zh) * 2021-02-05 2021-06-15 网宿科技股份有限公司 延迟分析方法、电子设备及存储介质
CN113076233A (zh) * 2021-03-30 2021-07-06 中国建设银行股份有限公司 一种io性能检测方法、装置、设备及存储介质
CN113076233B (zh) * 2021-03-30 2024-02-27 中国建设银行股份有限公司 一种io性能检测方法、装置、设备及存储介质
CN113688048A (zh) * 2021-08-27 2021-11-23 北京字节跳动网络技术有限公司 一种应用稳定性检测方法、装置、电子设备及存储介质
CN113794605A (zh) * 2021-09-10 2021-12-14 杭州谐云科技有限公司 一种基于eBPF的内核丢包检测方法、系统和装置
CN115442173A (zh) * 2022-06-07 2022-12-06 北京车和家信息技术有限公司 车辆报文转发、处理方法、装置、电子设备及存储介质
CN115442173B (zh) * 2022-06-07 2024-02-06 北京车和家信息技术有限公司 车辆报文转发、处理方法、装置、电子设备及存储介质
CN115202990A (zh) * 2022-09-09 2022-10-18 天津市天河计算机技术有限公司 Io性能数据的采集方法、装置、设备及存储介质
CN115729724A (zh) * 2022-11-30 2023-03-03 中电金信软件有限公司 故障注入方法、故障测试系统、电子设备及可读存储介质
CN115729724B (zh) * 2022-11-30 2024-05-10 中电金信软件有限公司 故障注入方法、故障测试系统、电子设备及可读存储介质
CN116107843A (zh) * 2023-04-06 2023-05-12 阿里云计算有限公司 确定操作系统性能的方法、任务调度方法、设备
CN116107843B (zh) * 2023-04-06 2023-09-26 阿里云计算有限公司 确定操作系统性能的方法、任务调度方法、设备

Also Published As

Publication number Publication date
CN111756575B (zh) 2023-08-11

Similar Documents

Publication Publication Date Title
CN111756575A (zh) 存储服务器的性能分析方法及装置、电子设备
CN106844217B (zh) 对应用的控件进行埋点的方法及装置、可读存储介质
CN100442245C (zh) 用于分析运行时存储器访问错误的方法和系统
CN101645119B (zh) 一种基于虚拟硬件环境的恶意代码自动分析方法及系统
EP1130518B1 (en) Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
KR102537875B1 (ko) 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치
US20210064512A1 (en) Selective memory tracing of program execution
CN104461894A (zh) 安卓软件的操作录制装置和方法
US20100115496A1 (en) Filter generation for load testing managed environments
CN104424094A (zh) 一种异常信息获取方法、装置及智能终端设备
US20110055777A1 (en) Verification of Soft Error Resilience
US20150006961A1 (en) Capturing trace information using annotated trace output
US20090222646A1 (en) Method and apparatus for detecting processor behavior using instruction trace data
US20160110281A1 (en) System and method for debugging firmware/software by generating trace data
CN105184166A (zh) 基于内核的安卓程序实时行为分析方法及系统
CN105074671A (zh) 用于在内核模块和设备驱动程序中检测并发编程错误的方法和系统
CN102541731B (zh) 平台不可知诊断数据收集与显示
CN110543420B (zh) 一种软件测试方法、系统、终端及存储介质
CN102999419B (zh) 一种Android测试事件记录回放方法及装置
CN113268427B (zh) 一种针对二进制程序的崩溃分析方法及系统
CN104252402A (zh) 一种程序调试方法及装置
CN110659197B (zh) 应用程序的测试用例生成方法、装置和软件测试系统
CN104461880B (zh) 一种嵌入式系统中自动检测内存越界的方法及系统
KR102165747B1 (ko) 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법
CN110889116A (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
CB02 Change of applicant information

Address after: 100094 101, floors 1-5, building 7, courtyard 3, fengxiu Middle Road, Haidian District, Beijing

Applicant after: Beijing Xingchen Tianhe Technology Co.,Ltd.

Address before: 100097 room 806-1, block B, zone 2, Jinyuan times shopping center, indigo factory, Haidian District, Beijing

Applicant before: XSKY BEIJING DATA TECHNOLOGY Corp.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant