CN116257331A - 基于字节码的程序分配方法、系统、终端以及存储介质 - Google Patents

基于字节码的程序分配方法、系统、终端以及存储介质 Download PDF

Info

Publication number
CN116257331A
CN116257331A CN202111507269.5A CN202111507269A CN116257331A CN 116257331 A CN116257331 A CN 116257331A CN 202111507269 A CN202111507269 A CN 202111507269A CN 116257331 A CN116257331 A CN 116257331A
Authority
CN
China
Prior art keywords
program
instruction
application program
byte
bytecode
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
Application number
CN202111507269.5A
Other languages
English (en)
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.)
Shenzhen Institute of Advanced Technology of CAS
Original Assignee
Shenzhen Institute of Advanced Technology of CAS
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 Shenzhen Institute of Advanced Technology of CAS filed Critical Shenzhen Institute of Advanced Technology of CAS
Priority to CN202111507269.5A priority Critical patent/CN116257331A/zh
Publication of CN116257331A publication Critical patent/CN116257331A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请涉及一种基于字节码的程序分配方法、系统、终端以及存储介质。所述方法包括:利用JVMTI工具对应用程序进行插桩操作,获取函数的字节码信息;对所获取的字节码进行分析,获取所述字节码的指令类型,并根据所述字节码的指令类型对应用程序进行分类;根据所述应用程序分类结果将所述应用程序分配至与其资源相匹配的节点运行。本申请实施例通过对字节码信息进行分析,以指导应用程序在单个节点上合理搭配运行,从而提高了集群的资源利用率,并提高运行效率。

Description

基于字节码的程序分配方法、系统、终端以及存储介质
技术领域
本申请属于程序插装技术领域,特别涉及一种基于字节码的程序分配方法、系统、终端以及存储介质。
背景技术
在集群中,往往会在一个节点运行多个Java程序,每个Java程序都会有不同的运行特点,例如偏运算程序、偏存储程序等。如果在单个节点同时运行多个偏运算程序或偏存储程序,没有考虑到集群的资源利用率,会大大降低程序的运行效率。因此,如何合理的对多个Java程序进行搭配运行是亟待解决的问题。
发明内容
本申请提供了一种基于字节码的程序分配方法、系统、终端以及存储介质,旨在至少在一定程度上解决现有技术中的上述技术问题之一。
为了解决上述问题,本申请提供了如下技术方案:
一种基于字节码的程序分配方法,包括:
利用JVMTI工具对应用程序进行插桩操作,获取函数的字节码信息;
对所获取的字节码进行分析,获取所述字节码的指令类型,并根据所述字节码的指令类型对应用程序进行分类;
根据所述应用程序分类结果将所述应用程序分配至与其资源相匹配的节点运行。
本申请实施例采取的技术方案还包括:所述利用JVMTI工具对应用程序进行插桩操作,获取函数的字节码信息包括:
根据函数名称设置事件的回调接口;
在JVM执行过程中,调用每个事件对应的回调接口以及回调函数;
在所述事件的回调函数中获取对应函数的字节码。
本申请实施例采取的技术方案还包括:所述字节码的指令类型包括加载和存储指令、运算指令、类型转换指令、操作数栈管理指令、控制转移指令、方法调用指令。
本申请实施例采取的技术方案还包括:所述根据所述字节码的指令类型对应用程序进行分类具体为:
获取所述字节码的指令,并通过识别算法识别所述字节码的指令类型;
统计各个类型的指令数量,根据所述指令类型的数量比重判断应用程序的类型;所述应用程序类型包括偏运算型程序和偏存储型程序。
本申请实施例采取的技术方案还包括:所述根据所述应用程序分类结果将所述应用程序分配至与其资源相匹配的节点运行具体为:
将所述偏运算型程序分配在具有更多CPU资源的节点,将所述偏存储型程序分配在具有更多IO占比的节点。
本申请实施例采取的技术方案还包括:所述应用程序为java程序。
本申请实施例采取的另一技术方案为:一种基于字节码的程序分配系统,包括:
字节码获取模块:用于利用JVMTI工具对应用程序进行插桩操作,获取函数的字节码信息;
字节码分析模块:用于对所获取的字节码进行分析,获取所述字节码的指令类型,并根据所述字节码的指令类型对应用程序进行分类;
程序分配模块:用于根据所述应用程序分类结果将所述应用程序分配至与其资源相匹配的节点运行。
本申请实施例采取的又一技术方案为:一种终端,所述终端包括处理器、与所述处理器耦接的存储器,其中,
所述存储器存储有用于实现所述基于字节码的程序分配方法的程序指令;
所述处理器用于执行所述存储器存储的所述程序指令以控制基于字节码的程序分配。
本申请实施例采取的又一技术方案为:一种存储介质,存储有处理器可运行的程序指令,所述程序指令用于执行所述基于字节码的程序分配方法。
相对于现有技术,本申请实施例产生的有益效果在于:本申请实施例的基于字节码的程序分配方法、系统、终端以及存储介质运用JVMTI工具对java程序进行插桩操作,获取函数的字节码信息,并对字节码信息进行分析,以指导java程序在单个节点上合理搭配运行,从而提高了集群的资源利用率,并提高运行效率。
附图说明
图1是本申请实施例的基于字节码的程序分配方法的流程图;
图2为本申请实施例的基于字节码的程序分配系统结构示意图;
图3为本申请实施例的终端结构示意图;
图4为本申请实施例的存储介质的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
针对现有技术的不足,本申请实施例的基于字节码的程序分配方法通过JVM(JavaVirtual Machine,Java虚拟机)虚拟机自带的JVMTI(全称为JVM Tool Interface)工具对应用程序进行插桩操作,并获取运行时的字节码信息,对字节码信息进行统计性分析,计算程序的运算指令比重和存储指令比重,从而指导应用程序搭配运行,提高集群的资源利用率。为便于说明,以下实施例中仅以java程序为例,具体也可适用于其他类型的应用程序。
具体地,请参阅图1,是本申请实施例的基于字节码的程序分配方法的流程图。本申请实施例的基于字节码的程序分配方法包括以下步骤:
S10:利用JVMTI工具对java程序进行插桩操作,获取函数的字节码信息;
本步骤中,JVMTI为JVM虚拟机提供了一个监控和开发的接口,通过该接口可以实时监控java程序的运行状态并控制程序的执行。字节码(Byte-code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。本发明基于JVMTI对java程序进行字节码提取,通过获取的字节码分析java程序的性能。JVMTI是事件驱动的,JVM在执行事件的过程中会调用到事件的回调接口,在回调函数中可以对执行事件进行干预,在此过程中可以轻易获取到指定函数的字节码,并且不干预程序的执行。
具体的,本申请实施例的字节码获取过程包括以下步骤:
S11:根据函数名称设置事件的回调接口;
S12:在JVM执行的过程中,调用每个事件对应的回调接口以及回调函数;
S13:在回调函数中获取对应函数的字节码。
S20:对获取的字节码进行分析,获取字节码的指令类型,并根据字节码的指令类型对java程序进行分类;
本步骤中,字节码分析具体包括:首先获取字节码的指令,并通过识别算法识别字节码的指令类型,字节码的指令类型包括加载和存储指令、运算指令、类型转换指令、操作数栈管理指令、控制转移指令、方法调用指令等多种类型;然后统计各个类型的指令数量,根据指令类型的数量比重判断java程序的类型;例如,如果字节码的所有指令中运算指令类型的数量最多(即比重最大),则判定该java程序属于偏运算型程序;如果字节码的所有指令中加载和存储指令类型的数量最多,则判定该java程序属于偏存储型程序。
S30:根据java程序分类结果将不同类型的java程序分配至与其资源相匹配的节点运行;
本步骤中,java程序的分配方式具体为:例如,将偏运算型程序分配在具有更多CPU资源的节点,将偏存储型程序分配在具有更多IO占比的节点等。根据java程序分类结果合理的分配各个java程序,从而提高集群的资源利用率,并提高运行效率。
基于上述,本申请实施例的基于字节码的程序分配方法运用JVMTI工具对java程序进行插桩操作,获取函数的字节码信息,并对字节码信息进行分析,以指导java程序在单个节点上合理搭配运行,从而提高了集群的资源利用率,并提高运行效率。
请参阅图2,为本申请实施例的基于字节码的程序分配系统结构示意图。本申请实施例的基于字节码的程序分配系统40包括:
字节码获取模块41:用于利用JVMTI工具对java程序进行插桩操作,获取函数的字节码信息;其中,JVMTI为JVM虚拟机提供了一个监控和开发的接口,通过该接口可以实时监控java程序的运行状态并控制程序的执行。字节码(Byte-code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。本发明基于JVMTI对java程序进行字节码提取,通过获取的字节码分析java程序的性能。JVMTI是事件驱动的,JVM在执行事件的过程中会调用到事件的回调接口,在回调函数中可以对执行事件进行干预,在此过程中可以轻易获取到指定函数的字节码,并且不干预程序的执行。
具体的,字节码获取模块获取字节码的过程包括:根据函数名称设置事件的回调接口;在JVM执行的过程中,调用每个事件对应的回调接口以及回调函数;在回调函数中获取对应函数的字节码。
字节码分析模块42:用于对获取的字节码进行分析,获取字节码的指令类型,并根据字节码的指令类型对java程序进行分类;其中,字节码分析过程具体为:首先获取字节码的指令,并通过识别算法识别字节码的指令类型,字节码的指令类型包括加载和存储指令、运算指令、类型转换指令、操作数栈管理指令、控制转移指令、方法调用指令等多种类型;然后统计各个类型的指令数量,根据指令类型的数量比重判断java程序的类型;例如,如果字节码的所有指令中运算指令类型的数量最多(即比重最大),则判定该java程序属于偏运算型程序;如果字节码的所有指令中加载和存储指令类型的数量最多,则判定该java程序属于偏存储型程序。
程序分配模块43:用于根据java程序分类结果将不同类型的java程序分配至与其资源相匹配的节点运行;其中,程序分配模块对java程序的节点分配方式具体为:例如,将偏运算型程序分配在具有更多CPU资源的节点,将偏存储型程序分配在具有更多IO占比的节点等。根据java程序分类结果合理的分配各个java程序,从而提高集群的资源利用率,并提高运行效率。
基于上述,本申请实施例的基于字节码的程序分配系统运用JVMTI工具对java程序进行插桩操作,获取函数的字节码信息,并对字节码信息进行分析,以指导java程序在单个节点上合理搭配运行,从而提高了集群的资源利用率,并提高运行效率。
请参阅图3,为本申请实施例的终端结构示意图。该终端50包括处理器51、与处理器51耦接的存储器52。
存储器52存储有用于实现上述基于字节码的程序分配方法的程序指令。
处理器51用于执行存储器52存储的程序指令以控制基于字节码的程序分配。
其中,处理器51还可以称为CPU(Central Processing Unit,中央处理单元)。处理器51可能是一种集成电路芯片,具有信号的处理能力。处理器51还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
请参阅图4,为本申请实施例的存储介质的结构示意图。本申请实施例的存储介质存储有能够实现上述所有方法的程序文件61,其中,该程序文件61可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本申请中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本申请所示的这些实施例,而是要符合与本申请所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种基于字节码的程序分配方法,其特征在于,包括:
利用JVMTI工具对应用程序进行插桩操作,获取函数的字节码信息;
对所获取的字节码进行分析,获取所述字节码的指令类型,并根据所述字节码的指令类型对应用程序进行分类;
根据所述应用程序分类结果将所述应用程序分配至与其资源相匹配的节点运行。
2.根据权利要求1所述的基于字节码的程序分配方法,其特征在于,所述利用JVMTI工具对应用程序进行插桩操作,获取函数的字节码信息包括:
根据函数名称设置事件的回调接口;
在JVM执行过程中,调用每个事件对应的回调接口以及回调函数;
在所述事件的回调函数中获取对应函数的字节码。
3.根据权利要求2所述的基于字节码的程序分配方法,其特征在于,所述字节码的指令类型包括加载和存储指令、运算指令、类型转换指令、操作数栈管理指令、控制转移指令、方法调用指令。
4.根据权利要求3所述的基于字节码的程序分配方法,其特征在于,所述根据所述字节码的指令类型对应用程序进行分类具体为:
获取所述字节码的指令,并通过识别算法识别所述字节码的指令类型;
统计各个类型的指令数量,根据所述指令类型的数量比重判断应用程序的类型;所述应用程序类型包括偏运算型程序和偏存储型程序。
5.根据权利要求4所述的基于字节码的程序分配方法,其特征在于,所述根据所述应用程序分类结果将所述应用程序分配至与其资源相匹配的节点运行具体为:
将所述偏运算型程序分配在具有更多CPU资源的节点,将所述偏存储型程序分配在具有更多IO占比的节点。
6.根据权利要求1至5任一项所述的基于字节码的程序分配方法,其特征在于,所述应用程序为java程序。
7.一种基于字节码的程序分配系统,其特征在于,包括:
字节码获取模块:用于利用JVMTI工具对应用程序进行插桩操作,获取函数的字节码信息;
字节码分析模块:用于对所获取的字节码进行分析,获取所述字节码的指令类型,并根据所述字节码的指令类型对应用程序进行分类;
程序分配模块:用于根据所述应用程序分类结果将所述应用程序分配至与其资源相匹配的节点运行。
8.一种终端,其特征在于,所述终端包括处理器、与所述处理器耦接的存储器,其中,
所述存储器存储有用于实现权利要求1-6任一项所述的基于字节码的程序分配方法的程序指令;
所述处理器用于执行所述存储器存储的所述程序指令以控制基于字节码的程序分配。
9.一种存储介质,其特征在于,存储有处理器可运行的程序指令,所述程序指令用于执行权利要求1至6任一项所述基于字节码的程序分配方法。
CN202111507269.5A 2021-12-10 2021-12-10 基于字节码的程序分配方法、系统、终端以及存储介质 Pending CN116257331A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111507269.5A CN116257331A (zh) 2021-12-10 2021-12-10 基于字节码的程序分配方法、系统、终端以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111507269.5A CN116257331A (zh) 2021-12-10 2021-12-10 基于字节码的程序分配方法、系统、终端以及存储介质

Publications (1)

Publication Number Publication Date
CN116257331A true CN116257331A (zh) 2023-06-13

Family

ID=86683095

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111507269.5A Pending CN116257331A (zh) 2021-12-10 2021-12-10 基于字节码的程序分配方法、系统、终端以及存储介质

Country Status (1)

Country Link
CN (1) CN116257331A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117492831A (zh) * 2023-10-16 2024-02-02 东信和平科技股份有限公司 字节码指令序列分析方法、装置、电子设备、存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117492831A (zh) * 2023-10-16 2024-02-02 东信和平科技股份有限公司 字节码指令序列分析方法、装置、电子设备、存储介质

Similar Documents

Publication Publication Date Title
US8332845B2 (en) Compile timing based on execution frequency of a procedure
CN107506240B (zh) 后台应用程序管控方法、装置、存储介质及电子设备
US10747638B2 (en) Computing memory health metrics
CN103729235A (zh) Java虚拟机的编译方法和Java虚拟机
US7865901B2 (en) Managing memory resident objects to optimize a runtime environment
CN111625289B (zh) 应用程序快速启动方法、装置和电子设备
CN111966383B (zh) 一种操作系统内核兼容性量化分析方法、系统和介质
CN112099798B (zh) 公有函数执行耗时的统计方法、装置、存储介质及终端
CN103176892A (zh) 一种页面监控方法及系统
CN110888628A (zh) 生成控制工具的方法、装置、设备和存储介质
CN111988429A (zh) 算法调度方法以及系统
CN110291508A (zh) 垃圾收集器
CN111831411B (zh) 任务处理方法、装置、存储介质及电子设备
CN116795647A (zh) 一种数据库异构资源管理与调度方法、装置、设备及介质
CN116257331A (zh) 基于字节码的程序分配方法、系统、终端以及存储介质
CN113900896B (zh) 一种代码运行的监测方法、装置、设备及存储介质
GB2297402A (en) Determining a process's actual working set and relating same to high level data structures
CN113297057A (zh) 内存分析方法、装置及系统
EP1280051A1 (en) Information processing method and system
CN114116509A (zh) 程序分析方法、装置、电子设备和存储介质
CN113609101A (zh) 实时数据任务的发布方法、装置、电子设备及存储介质
CN115705294B (zh) 用于获取函数调用信息的方法、装置、电子设备和介质
US11372633B2 (en) Method, device and terminal apparatus for code execution and computer readable storage medium
US7219334B2 (en) Program conversion method, data processing apparatus and program
CN115904928A (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