CN114461482A - 插件资源管理的方法和装置、电子设备、计算机可读介质 - Google Patents
插件资源管理的方法和装置、电子设备、计算机可读介质 Download PDFInfo
- Publication number
- CN114461482A CN114461482A CN202011249572.5A CN202011249572A CN114461482A CN 114461482 A CN114461482 A CN 114461482A CN 202011249572 A CN202011249572 A CN 202011249572A CN 114461482 A CN114461482 A CN 114461482A
- Authority
- CN
- China
- Prior art keywords
- plug
- resource
- bytecode
- consumed
- byte code
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本公开实施例提供了一种插件资源管理的方法,该方法包括:读取与所述插件对应的字节码文件;在所述字节码文件的资源消耗位置插入监控字节码,所述资源消耗位置为,在运行过程中需要消耗资源的资源函数对应的字节码在所述字节码文件中的位置,所述监控字节码用于标识所述插件的字节码。本公开实施例还提供了一种插件资源管理的装置、电子设备、计算机可读介质。
Description
技术领域
本公开实施例涉及资源管理技术领域,特别涉及一种插件资源管理的方法和装置、电子设备、计算机可读介质。
背景技术
现有的基础软件框架,如OSGi(Open Service Gateway Initiative,开放服务网关协议)框架,越来越多的被应用于各种嵌入式设备中,如智能家庭网关、机顶盒等家庭组网设备。
利用OSGi框架的插件动态部署技术,嵌入式设备提升了业务动态扩展能力。
但若在运行过程中,某个插件过度申请或占用虚拟机资源,可能会导致其他插件申请资源失败,影响其他插件的运行。
发明内容
本公开实施例提供一种插件资源管理的方法和装置、电子设备、计算机可读介质。
第一方面,本公开实施例提供一种插件资源管理的方法,其包括:
读取与所述插件对应的字节码文件;
在所述字节码文件的资源消耗位置插入监控字节码,所述资源消耗位置为,在运行过程中需要消耗资源的资源函数对应的字节码在所述字节码文件中的位置,所述监控字节码用于标识所述插件的字节码。
在一些实施例中,所述在所述字节码文件的资源消耗位置插入监控字节码之后,还包括:确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源。
在一些实施例中,所述确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源,包括:根据所述监控字节码建立所述资源函数与所述插件的对应关系;根据所述对应关系,确定所述插件对应的资源函数,并确定所述插件对应的资源函数消耗的资源为所述插件消耗的资源。
在一些实施例中,所述资源函数包括线程创建函数,所述线程创建函数用于创建插件线程。
在一些实施例中,所述确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源,包括:统计所述字节码文件对应的线程创建函数创建的插件线程占用的中央处理器时间,以所有所述插件线程占用的中央处理器时间之和作为所述插件占用的中央处理器时间;和/或,统计所述字节码文件对应的线程创建函数创建的插件线程的数量,以所述插件线程的数量作为所述插件消耗的线程数量。
在一些实施例中,所述资源函数包括入口函数,所述入口函数包括启动函数和停止函数。
在一些实施例中,所述确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源,包括:统计每个插件对象消耗的内存空间,以所有所述插件对象消耗的内存空间之和作为所述插件消耗的内存空间,所述插件对象为所述字节码文件对应的启动函数和停止函数运行过程中创建的对象。
在一些实施例中,所述确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源之后,还包括:根据所述插件消耗的资源,对所述插件进行控制。
在一些实施例中,所述插件为基于开放服务网关协议运行的插件。
第二方面,本公开实施例提供一种插件资源管理的装置,其包括:
读取模块,用于读取与所述插件对应的字节码文件;
插入模块,用于在所述字节码文件的资源消耗位置插入监控字节码,所述资源消耗位置为,在运行过程中需要消耗资源的资源函数对应的字节码在所述字节码文件中的位置,所述监控字节码用于标识所述插件的字节码。
第三方面,本公开实施例提供一种电子设备,其包括:
一个或多个处理器,
存储器,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述任意一项的插件资源管理的方法;
一个或多个I/O接口,连接在处理器与存储器之间,用于实现处理器与存储器的信息交互。
第四方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任意一种插件资源管理的方法。
本公开实施例的插件资源管理的方法和装置、电子设备、计算机可读介质中,在插件对应的类进行类加载之前,在插件对应的字节码文件的资源消耗位置插入监控字节码,通过监控字节码,在插件对应的类进行类加载的过程中,可以将资源函数与插件建立对应关系。一方面,在类加载之前插入监控字节码,在类加载过程中建立资源函数与插件的对应关系,对原有的类加载过程影响较小,易于实现;另一方面,通过资源函数与插件的对应关系以及资源函数消耗的资源,可以获取每个插件消耗的资源,从而实现对资源以及插件的精细化控制与管理,提升设备运行稳定性、可靠性和安全性。
附图说明
在本公开实施例的附图中:
图1为本公开实施例提供的一种插件资源管理的方法的流程图;
图2为本公开实施例提供的另一种插件资源管理的方法的流程图;
图3为本公开实施例提供的另一种插件资源管理的方法的流程图;
图4为本公开实施例提供的另一种插件资源管理的方法的流程图;
图5为本公开实施例提供的另一种插件资源管理的方法的流程图;
图6为本公开实施例提供的另一种插件资源管理的方法的流程图;
图7为本公开实施例提供的一种插件资源管理的装置的组成框图;
图8为本公开实施例提供的一种电子设备的组成框图;
图9为本公开实施例提供的一种计算机可读介质的组成框图。
具体实施方式
为使本领域的技术人员更好地理解本公开实施例的技术方案,下面结合附图对本公开实施例提供的插件资源管理的方法和装置、电子设备、计算机可读介质进行详细描述。
在下文中将参考附图更充分地描述本公开实施例,但是所示的实施例可以以不同形式来体现,且不应当被解释为限于本公开阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
本公开实施例的附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,
本公开实施例可借助本公开的理想示意图而参考平面图和/或截面图进行描述。因此,可根据制造技术和/或容限来修改示例图示。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
本公开所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本公开所使用的术语“和/或”包括一个或多个相关列举条目的任何和所有组合。如本公开所使用的单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。如本公开所使用的术语“包括”、“由……制成”,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或其群组。
除非另外限定,否则本公开所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本公开明确如此限定。
本公开实施例不限于附图中所示的实施例,而是包括基于制造工艺而形成的配置的修改。因此,附图中例示的区具有示意性属性,并且图中所示区的形状例示了元件的区的具体形状,但并不是旨在限制性的。
在一些相关技术中,部署在基础软件框架(如OSGi框架)的多个插件,在同一个虚拟机(如JAVA虚拟机)运行,所有插件运行消耗的资源,如线程、CPU(Central ProcessingUnit,中央处理器)、内存(如Java堆、栈、直接内存)等,都依赖于虚拟机本身的资源。
当某个插件在运行过程中,申请过多的虚拟机资源或长时间占用虚拟机的资源,可能会影响其他插件的运行。如某个插件长时间占用CPU,可能导致其他插件的业务运行受到影响;某个插件长时间占用内存,可能导致其他插件申请内存失败,影响其他插件的业务运行。
特别的,若插件在运行过程中过度申请虚拟机资源或过度占用虚拟机资源,会给插件运行带来巨大的安全隐患。
通过对整个虚拟机消耗的资源进行统计虽然可以获取所有插件消耗的资源总量,以实现对所有插件的统一管理。但由于无法统计各个插件各自消耗的资源,因此无法从多个插件中判断出过度申请虚拟机资源或占用虚拟机资源的插件,也无法实现对资源的精细化管理。
第一方面,参照图1,本公开实施例提供一种插件资源管理的方法,本公开实施例的插件资源管理的方法可以用于,对部署于基础软件框架(如OSGi框架),在同一个虚拟机(具体可以是JAVA虚拟机)上运行的多个插件中每个插件的资源进行管理。
本公开实施例的插件资源管理方法具体可以包括:
S101、读取与插件对应的字节码文件。
设备系统读取与某个插件(即需要进行资源管理的插件)对应的所有字节码文件。
具体的,设备系统在接收到插件中的类的类加载请求的情况下,从OSGi框架的插件缓存目录中读取该插件的所有字节码文件。
其中,类加载是指在虚拟机的运行过程中,在需要使用某个类的情况下,将与该类相关的字节码文件加载到虚拟机内存,运行字节码文件,生成虚拟机可以直接使用的对象的过程。
类加载请求即对某个类进行类加载的请求,插件对应的类加载请求,是指请求加载的类为插件在虚拟机上运行的过程(或者说在插件运行过程中)中需要使用的类的类加载请求。
字节码文件,即扩展名为“.class”的文件,是JAVA编译器编译JAVA源文件,即扩展名为“.java”文件产生的目标文件,在JAVA编译器的编译过程中,JAVA源文件中每个类都会生成一个字节码文件。
与插件对应的字节码文件,是指在插件在虚拟机上运行的过程中,需要使用的类对应的字节码文件。
因此,在接收到插件中的类的类加载请求的情况下,与该插件的类相关的字节码文件都会被加载至虚拟机内存(或者说缓存中),从缓存目录中可以较为容易的获取与插件对应的字节码文件。
S102、在字节码文件的资源消耗位置插入监控字节码,资源消耗位置为,在运行过程中需要消耗资源的资源函数对应的字节码在字节码文件中的位置,监控字节码用于标识插件的字节码。
设备系统对读取的字节码文件进行分析,分析字节码文件中是否存在资源消耗位置,若存在,则在资源消耗位置插入监控字节码。
其中,资源消耗位置是指,资源函数对应的字节码在字节码文件中的位置。资源消耗函数,是指在虚拟机的运行过程中,或者说JAVA源文件被执行过程中,需要消耗虚拟机资源的函数,如线程创建函数等。
监控字节码则用于标识存在资源消耗位置的字节码文件对应的插件,具体可以是插件的ID(唯一编码)。
设备系统在完成监控字节码的插入后,根据类加载请求,进行类加载过程,即将对应的字节码文件加载至虚拟机内存,运行字节码文件。
设备系统在插入了监控字节码的字节码被运行时,根据监控字节码中插件的标识,可以建立插件与插入了监控字节码的字节码对应的资源函数之间的对应关系。具体可以是,在系统中建立一张关系表,记录插件与资源函数的对应关系。
由于在插件运行过程中,资源函数消耗的资源是可以获取的,因此通过每个插件与资源函数的对应关系,以及每个资源函数消耗的资源,可以较为容易的得到每个插件所消耗的资源。
在获取每个插件所消耗的资源后,一方面,当存在过度申请虚拟机资源或占用虚拟机资源的插件,可以根据每个插件消耗的资源,从多个插件中判断出过度申请虚拟机资源或占用虚拟机资源的插件;另一方面,以插件为粒度,可以对虚拟机的资源进行精细化的控制和管理。
本公开实施例的插件资源管理的方法,在插件对应的类进行类加载之前,在插件对应的字节码文件的资源消耗位置插入监控字节码,通过监控字节码,在插件对应的类进行类加载的过程中,将资源函数与插件建立对应关系。一方面,在类加载之前插入监控字节码,在类加载过程中建立资源函数与插件的对应关系,对原有的类加载过程影响较小,易于实现;另一方面,通过资源函数与插件的对应关系以及资源函数消耗的资源,可以获取每个插件消耗的资源,从而实现对资源以及插件的精细化控制与管理,提升设备运行稳定性、可靠性和安全性。
在一些实施例中,参照图2,在字节码文件的资源消耗位置插入监控字节码(S102)之后,还包括:
S103、确定字节码文件对应的资源函数消耗的资源为插件消耗的资源。
设备系统在完成监控字节码的插入后,根据类加载请求,进行类加载过程,即将对应的字节码文件加载至虚拟机内存,运行字节码文件。
设备系统在插入了监控字节码的字节码被运行时,根据监控字节码中插件的标识,可以确定资源函数对应的插件,同时,由于在插件运行过程中,资源函数消耗的资源是可以获取的,因此通过插入了监控字节码的字节码被运行时,对应的资源函数消耗的资源来确定插件消耗的资源。
在一些实施例中,参照图3,确定字节码文件对应的资源函数消耗的资源为插件消耗的资源(S103),包括:
S1031、根据监控字节码建立资源函数与插件的对应关系。
S1032、根据对应关系,确定插件对应的资源函数,并确定插件对应的资源函数消耗的资源为插件消耗的资源。
设备系统在完成监控字节码的插入后,根据类加载请求,进行类加载过程,即将对应的字节码文件加载至虚拟机内存,运行字节码文件。
设备系统在插入了监控字节码的字节码被运行时,根据监控字节码中插件的标识,可以建立插件与插入了监控字节码的字节码对应的资源函数之间的对应关系。
具体可以是,在系统中建立一张关系表,记录插件与资源函数的对应关系。
由于在插件运行过程中,资源函数消耗的资源是可以获取的,因此通过每个插件与资源函数的对应关系,以及每个资源函数消耗的资源,可以较为容易的得到每个插件所消耗的资源。
在获取每个插件所消耗的资源后,一方面,当存在过度申请虚拟机资源或占用虚拟机资源的插件,可以根据每个插件消耗的资源,从多个插件中判断出过度申请虚拟机资源或占用虚拟机资源的插件;另一方面,以插件为粒度,可以对虚拟机的资源进行精细化的控制和管理。
在一些实施例中,资源函数包括线程创建函数,线程创建函数用于创建插件线程。
在一些实施例中,参照图4,确定字节码文件对应的资源函数消耗的资源为插件消耗的资源(S103),包括:
S1033、统计字节码文件对应的线程创建函数创建的插件线程占用的中央处理器时间,以所有插件线程占用的中央处理器时间之和作为插件占用的中央处理器时间。
和/或,
S1034、统计字节码文件对应的线程创建函数创建的插件线程的数量,以插件线程的数量作为插件消耗的线程数量。
设备系统在线程创建函数对应的字节码被运行时,根据监控字节码中插件的标识,可以确定插件与线程创建函数创建的线程之间的对应关系。
其中,线程创建函数(或者说线程构造函数)是用于创建线程的函数,创建线程的方式有多种,如可以通过扩展线程类创建线程。
线程是插件运行的执行单元,每个线程都有区别于其他线程的ID,多个线程组成一个进程,这组成一个进程的多个线程共享该进程的全部资源。
确定插件与线程创建函数创建的线程之间的对应关系,具体可以是建立插件线程的ID与插件ID的对应关系。
在插件的运行过程中,线程以及线程消耗的资源是可以获取的,因此通过每个插件与线程的对应关系,以及每个线程消耗的资源,可以较为容易的得到每个插件所消耗的资源。
具体的,设备系统在创建插件与线程的对应关系后,通过统计一个插件对应的所有线程占用的CPU时间来计算该插件占用的CPU时间。具体的可以是,以一个插件对应的所有线程所占用的CPU时间之和作为该插件占用的CPU时间。
设备系统在建立插件与线程的对应关系后,通过统计一个插件对应的所有线程数量获取该插件消耗的线程数量。
在一些实施例中,资源函数包括入口函数,入口函数包括启动函数和停止函数。
在一些实施例中,参照图5,确定字节码文件对应的资源函数消耗的资源为插件消耗的资源(S103),包括:
S1035、统计每个插件对象消耗的内存空间,以所有插件对象消耗的内存空间之和作为插件消耗的内存空间,插件对象为字节码文件对应的启动函数和停止函数运行过程中创建的对象。
设备系统在启动函数和停止函数对应的字节码被运行时,根据监控字节码中插件的标识,建立插件与插件对象之间的对应关系。
其中,每个插件只有一个启动函数,作为插件运行的开始,一个停止函数,作为插件运行的结束。从启动函数开始运行到停止函数运行结束的过程中,创建的对象都是插件对象。
因此,在将监控字节码插入启动函数和停止函数对应的字节码时,需要将监控字节码被插入在,启动函数和停止函数的起始处和结束处对应的字节码在字节码文件中的位置处,以便监测插件从开始运行到结束运行创建的所有插件对象,建立插件对象与插件的对应关系。
设备系统在创建插件与插件对象的对应关系后,通过统计一个插件对应的所有插件对象消耗的内存空间来计算该插件消耗的内存空间。具体的可以是,以一个插件对应的所有插件对象所消耗的内存空间之和作为该插件消耗的内存空间。
在一些实施例中,参照图6,确定字节码文件对应的资源函数消耗的资源为插件消耗的资源(S103)之后,还包括:
S104、根据插件消耗的资源,对插件进行控制。
根据资源函数消耗的资源(如线程、CPU时间、内存空间等),计算得到每个插件消耗的资源,根据每个插件消耗的资源,对所有插件进行控制。
具体的,对插件进行控制,可以是:
根据插件在插件运行过程中可能消耗的资源,计算每个插件的资源消耗风险等级,当插件在插件运行过程中可能消耗大量资源,则该插件的资源消耗风险等级为高;相反,当插件在插件运行过程中可能消耗的资源量较小,则该插件的资源消耗风险等级为低。
具体的,可以按照插件的类型对插件进行分类,如将插件分为系统插件(OSGi框架使用的插件)、预置插件(设备业务所必需的插件)、开放插件(设备业务可能需要的插件),生成插件分类文件,在插件分类文件中记录每个插件的分类信息,如插件名称、插件版本号、插件类型(系统插件、预置插件、开放插件中的一个)以及插件的资源消耗风险等级、插件功能描述等。
在插件运行过程中,读取插件分类文件中插件的分类信息,将资源消耗风险等级为高风险和中风险的插件作为重点监控对象,通过Linux(一种操作系统)安全控制技术,如Cgroup(Control Groups,控制群组)技术对其进行控制。
具体的,对插件进行控制,也可以是:
设定单个插件的资源消耗阈值,如对插件的占用的CPU时间、消耗的内存和消耗的线程数量设定阈值,当某个插件消耗的资源超过设定的阈值,则对该插件进行控制。
具体的,可以通过在资源消耗配置文件中设定Bundle.Resource.CPU.Threshold,设定插件占用的CPU时间的阈值;通过在资源消耗配置文件中设定Bundle.Resource.Memory.Threshold,设定插件消耗的内存的阈值;通过在资源消耗配置文件中设定Bundle.Resource.Thread.Threshold,设定插件消耗的线程数量的阈值。
在插件的运行过程中,读取资源消耗配置文件中设定的阈值,将其是否对插件进行控制的判断依据。当个插件消耗的资源超过设定的阈值,则通过Linux安全控制技术对该插件进行控制。
具体的,对插件进行控制,还可以是:
统计每个插件的资源消耗值,并将其记录存储至插件资源消耗表中,根据插件资源消耗表中每个插件对应的数据,计算JAVA虚拟机下每个插件消耗的每种资源的历史平均值,并将计算得到的历史平均值作为对插件进行控制的判断依据。
在一些实施例中,插件为基于开放服务网关协议运行的插件。
本公开实施例的基础软件框架,具体可以是OSGi框架。
OSGi框架在对插件进行部署时,使用插件动态部署技术,相比于传统的插件静态部署技术,动态部署具有轻量、灵活的特点。
基于OSGi框架,本公开实施例的方法具体可以包括:
A01、在JAVA虚拟机启动插件对应的类的类加载之前,通过JavaAgent类库对类加载过程进行拦截,从缓存目录中获取与插件对应的字节码文件。
A02、通过JavaSsist类库对获取的字节码文件进行分析与编辑。
利用JavaSsist对字节码文件中字节码进行分析,判断字节码对应的函数是否为该插件的启动函数或停止函数,如果是,则在插件的启动函数或停止函数的开始和结束位置对应的字节码在字节码文件中的位置处插入监控字节码字,监控字节码具体为插件ID;同时也判断字节码对应的函数是否是线程创建函数,如果是,则在线程创建函数对应的字节码在字节码文件中的位置处插入监控字节码字,监控字节码具体为插件ID。
A03、进行类加载过程,运行插入监控字节码的字节码文件,根据监控字节码,在JAVA虚拟机内部建立插件与线程对应关系的关系表,用来记录插件与线程的对应关系。
通过定义JAVA扩展类Javax.Bundle.ResourceInfo和JNI(Java NativeInterface,JAVA本地接口)的实现插件消耗的资源的统计与计算,通过定义Javax.Bundle.CPUUsage类提供获取计算得到的插件消耗的资源的接口,如定义getBundleID函数,其为获取插件ID的接口;定义getCPUTime函数,其为获取插件占用的CPU时间的接口。
其中,统计并计算插件占用的CPU时间的方法为:在JAVA虚拟机的所有线程启动时都设置该线程的起始时间,当需要统计并计算插件占用的CPU时间时,通过JAVA虚拟机的JNI获取当前运行的所有线程,计算每个正在运行的线程最近的占用CPU的时间点与其起始时间的差值,以获取该线程的占用的CPU时间,将正在运行的线程中与插件对应的线程占用的CPU时间进行累加计算得到插件占用的CPU时间。
A04、通过调用接口获取插件消耗的资源的数据,对获取的数据进行数据处理加工后记录到设备内部日志文件中,或打印至界面。
基于OSGi框架,本公开实施例的插件资源管理方法的步骤S104,即根据插件消耗的资源,对插件进行控制具体还可以包括:
B01、获取在OSGi框架下运行的插件,通过调用OSGi服务接口获取正在运行的插件的名称。
BO2、根据插件分类文件依次判断每个插件的资源消耗风险等级,若存在插件的资源消耗风险等级为高风险或中风险,属于需要对该插件进行精细化控制。
B03、周期性更新需要精细化控制的插件的资源消耗数据,计算JAVA虚拟机下该插件每个周期内的占用的CPU时间,判断该插件占用的CPU时间是否在持续T个(具体可以是5个)周期内大于设定的阈值。
B04、,如果是,则依据插件与线程的对应关系,获取与该插件对应的所有正在运行的线程,并将这些线程的ID作为控制参数进行设定,限制这些线程执行时占用的CPU时间。
第二方面,参照图7,本公开实施例提供一种插件资源管理的装置,其包括:
读取模块,用于读取与插件对应的字节码文件;
插入模块,用于在字节码文件的资源消耗位置插入监控字节码,资源消耗位置为,在运行过程中需要消耗资源的资源函数对应的字节码在字节码文件中的位置,监控字节码用于标识插件的字节码。
本公开实施例的插件资源管理的装置中,在插件对应的类进行类加载之前,在插件对应的字节码文件的资源消耗位置插入监控字节码,通过监控字节码,在插件对应的类进行类加载的过程中,将资源函数与插件建立对应关系。一方面,在类加载之前插入监控字节码,在类加载过程中建立资源函数与插件的对应关系,对原有的类加载过程影响较小,易于实现;另一方面,通过资源函数与插件的对应关系以及资源函数消耗的资源,可以获取每个插件消耗的资源,从而实现对资源以及插件的精细化控制与管理,提升设备运行稳定性、可靠性和安全性。
第三方面,参照图8,本公开实施例提供一种电子设备,其包括:
一个或多个处理器,
存储器,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述任意一项的插件资源管理的方法;
一个或多个I/O接口,连接在处理器与存储器之间,用于实现处理器与存储器的信息交互。
其中,处理器为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);I/O接口(读写接口)连接在处理器于存储器间,用于实现存储器与处理器的信息交互,其包括但不限于数据总线(Bus)等。
第四方面,参照图9,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现上述任意一种插件资源管理的方法。
其中,处理器为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);I/O接口(读写接口)连接在处理器与存储器间,能实现存储器与处理器的信息交互,其包括但不限于数据总线(Bus)等。
本领域普通技术人员可以理解,上文中所公开的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。
某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器(CPU)、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH)或其他磁盘存储器;只读光盘(CD-ROM)、数字多功能盘(DVD)或其他光盘存储器;磁盒、磁带、磁盘存储或其他磁存储器;可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
本公开已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (12)
1.一种插件资源管理的方法,其包括:
读取与所述插件对应的字节码文件;
在所述字节码文件的资源消耗位置插入监控字节码,所述资源消耗位置为,在运行过程中需要消耗资源的资源函数对应的字节码在所述字节码文件中的位置,所述监控字节码用于标识所述插件的字节码。
2.根据权利要求1所述的方法,其中,所述在所述字节码文件的资源消耗位置插入监控字节码之后,还包括:
确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源。
3.根据权利要求2所述的方法,其中,所述确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源,包括:
根据所述监控字节码建立所述资源函数与所述插件的对应关系;
根据所述对应关系,确定所述插件对应的资源函数,并确定所述插件对应的资源函数消耗的资源为所述插件消耗的资源。
4.根据权利要求2所述的方法,其中,所述资源函数包括线程创建函数,所述线程创建函数用于创建插件线程。
5.根据权利要求4所述的方法,其中,所述确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源,包括:
统计所述字节码文件对应的线程创建函数创建的插件线程占用的中央处理器时间,以所有所述插件线程占用的中央处理器时间之和作为所述插件占用的中央处理器时间;
和/或,
统计所述字节码文件对应的线程创建函数创建的插件线程的数量,以所述插件线程的数量作为所述插件消耗的线程数量。
6.根据权利要求2所述的方法,其中,所述资源函数包括入口函数,所述入口函数包括启动函数和停止函数。
7.根据权利要求6所述的方法,其中,所述确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源,包括:
统计每个插件对象消耗的内存空间,以所有所述插件对象消耗的内存空间之和作为所述插件消耗的内存空间,所述插件对象为所述字节码文件对应的启动函数和停止函数运行过程中创建的对象。
8.根据权利要求2所述的方法,其中,所述确定所述字节码文件对应的资源函数消耗的资源为所述插件消耗的资源之后,还包括:
根据所述插件消耗的资源,对所述插件进行控制。
9.根据权利要求1所述的方法,其中,所述插件为基于开放服务网关协议运行的插件。
10.一种插件资源管理的装置,其包括:
读取模块,用于读取与所述插件对应的字节码文件;
插入模块,用于在所述字节码文件的资源消耗位置插入监控字节码,所述资源消耗位置为,在运行过程中需要消耗资源的资源函数对应的字节码在所述字节码文件中的位置,所述监控字节码用于标识所述插件的字节码。
11.一种电子设备,其包括:
一个或多个处理器;
存储器,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现权利要求1至9中任意一项所述的插件资源管理的方法;
一个或多个I/O接口,连接在所述处理器与存储器之间,用于实现所述处理器与存储器的信息交互。
12.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1至9中任意一项所述的插件资源管理的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011249572.5A CN114461482A (zh) | 2020-11-10 | 2020-11-10 | 插件资源管理的方法和装置、电子设备、计算机可读介质 |
PCT/CN2021/128229 WO2022100485A1 (zh) | 2020-11-10 | 2021-11-02 | 插件资源管理的方法和装置、电子设备、计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011249572.5A CN114461482A (zh) | 2020-11-10 | 2020-11-10 | 插件资源管理的方法和装置、电子设备、计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461482A true CN114461482A (zh) | 2022-05-10 |
Family
ID=81403958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011249572.5A Pending CN114461482A (zh) | 2020-11-10 | 2020-11-10 | 插件资源管理的方法和装置、电子设备、计算机可读介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114461482A (zh) |
WO (1) | WO2022100485A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060156072A1 (en) * | 2004-01-10 | 2006-07-13 | Prakash Khot | System and method for monitoring a computer apparatus |
CN104346148B (zh) * | 2013-07-30 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 获取程序性能消耗信息的方法、装置及系统 |
JP6548379B2 (ja) * | 2014-10-23 | 2019-07-24 | キヤノン株式会社 | 情報処理装置およびその制御方法、並びにプログラム |
CN110134400A (zh) * | 2019-04-02 | 2019-08-16 | 北京奇艺世纪科技有限公司 | 数据获取方法、装置、电子设备及计算机可读存储介质 |
-
2020
- 2020-11-10 CN CN202011249572.5A patent/CN114461482A/zh active Pending
-
2021
- 2021-11-02 WO PCT/CN2021/128229 patent/WO2022100485A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022100485A1 (zh) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140351530A1 (en) | Linked list for lock-free memory allocation | |
US8918776B2 (en) | Self-adapting software system | |
CN110457925B (zh) | 内外部存储中应用数据隔离方法、装置、终端及存储介质 | |
CN115113972A (zh) | 应用改造方法、系统、集群、介质及程序产品 | |
CN114461482A (zh) | 插件资源管理的方法和装置、电子设备、计算机可读介质 | |
CN115981614B (zh) | 项目工程的模块化处理方法、电子设备及计算机存储介质 | |
CN108073453B (zh) | 分布式集群中cpu资源的调度方法以及装置 | |
CN106778270B (zh) | 一种恶意应用程序的检测方法及系统 | |
CN114679465A (zh) | 资源操作方法、装置、电子设备及存储介质 | |
CN114546717A (zh) | 安卓智能终端开机的方法、装置、智能终端和存储介质 | |
CN112486696A (zh) | 一种获取分布式锁的方法及设备 | |
CN106959870B (zh) | Nginx动态模块加载方法和装置 | |
CN116661905B (zh) | 一种基于动态库加载实现设备自动适配方法以及系统 | |
CN110554915A (zh) | 一种信息处理的方法、装置、计算机存储介质及终端 | |
CN110968328A (zh) | 一种实现应用加载的方法、装置、计算机存储介质及终端 | |
US10521155B2 (en) | Application management data | |
CN110287030B (zh) | 内存使用方法和装置 | |
CN116700833B (zh) | 应用后下载方法、装置、片上系统、终端及存储介质 | |
CN111124931B (zh) | 一种Java代码合规性检查方法和装置 | |
WO2024152745A1 (zh) | 第三方软件开发工具包访问控制方法、计算机设备、介质 | |
CN116627420A (zh) | 软件编译方法及装置 | |
CN118259925A (zh) | 一种Windows操作系统安装方法、装置、设备及存储介质 | |
CN114691159A (zh) | 软件安装包的处理方法、装置、存储介质及处理器 | |
CN116932029A (zh) | 一种组件库管理方法、装置、智能设备及存储介质 | |
CN116594774A (zh) | 用于容器管理系统的ip固定方法、装置、设备及介质 |
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 |