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

一种JVM参数的测试方法、装置和电子设备与流程

2022-12-20 20:22:46 来源:中国专利 TAG:
一种jvm参数的测试方法、装置和电子设备
技术领域
:1.本发明涉及通信
技术领域
:,特别涉及一种jvm参数的测试方法、装置和电子设备。
背景技术
::2.随着物联网技术的发展,各种各样的智能终端设备和应用逐渐进入人们的生活中,物联网操作系统使得终端设备的软件开发更方便快捷,因此得到更加广泛的应用。例如,中移物联网公司的oneos就是针对物联网领域推出的一款轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持arm(进阶精简指令集机器,advancedriscmachine)cortex-m/r/a(arm处理器产品线)、无内部互锁流水级微处理器(microprocessorwithoutinterlockedpipedstages,mips)、第五代精简指令集计算机(risc-v)等主流中央处理器(centralprocessingunit,cpu)架构,兼容可移植操作系统接口(portableoperatingsysteminterface,posix)、微控制器软件接口标准(cortexmicrocontrollersoftwareinterfacestandard,cmsis)等标准接口,支持micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠,安全易用的物联网应用。物联网操作系统中的doms(分布式对象管理系统,distributedobjectmanagementsystems)设备运营管理系统。主要功能包括下发配置、监控告警、定时任务等功能。3.持续在线、并发,再加上不同的运行习惯、网络拓扑对运行环境有不同的诉求,使得java(计算机编程语言)虚拟机(javavirtualmachine,jvm)自动调优这样的手段有了施展的空间。4.jvm是基于java的程序运行的基础。前台swing(用于开发java应用程序用户界面的开发工具包)的java虚拟机参数要和后台数据处理的jawa虚拟机用同样的参数存在不合理性,jvm的运行参数有600多项,凭经验一概而论,没有运行环境的考量,这显然是不合理的。内存调校不当导致卡慢的网上问题,都可以通过调优来解决、提升用户体验。但是目前jvm的运行参数数量多,通过现有的调优方式,难以确定jvm运行参数的最优解。技术实现要素:5.本发明实施例提供一种jvm参数的测试方法、装置和电子设备,用以解决现有技术中,jvm的运行参数多,难以确定最优参数的问题。6.为了解决上述技术问题,本发明实施例提供如下技术方案:7.本发明实施例提供一种jvm参数的测试方法,包括:8.生成测试数据;所述测试数据包括以下数据的至少其中之一:堆参数、栈参数、直接内存、锁、垃圾回收日志gc;9.对所述测试数据进行for循环排列组合,生成多组jvm参数;10.对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数。11.可选地,所述方法还包括:12.在每一组所述jvm参数测试完毕后,记录每一组所述jvm参数以及对应的程序执行时间,生成jvm参数以及程序执行时间对照表;13.展示所述jvm参数以及程序执行时间对照表。14.可选地,所述方法还包括:15.根据所述程序执行时间,按照时间由短到长的顺序,对所述jvm参数进行排序;16.按照顺序执行所述jvm参数。17.可选地,所述对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数,包括:18.确定每一组所述jvm参数的程序运行开始时间、程序运行结束时间以及程序编译耗费时间;19.根据所述程序运行开始时间、所述程序运行结束时间以及所述程序编译耗费时间,确定所述程序执行时间;20.确定最短的所述程序执行时间对应的一组jvm参数为所述最优解jvm参数。21.可选地,所述根据所述程序运行开始时间、所述程序运行结束时间以及所述程序编译耗费时间,确定所述程序执行时间,包括:22.根据所述程序运行开始时间和所述程序运行结束时间,确定程序运行耗费绝对时间;23.根据所述程序运行耗费绝对时间和所述程序编译耗费时间,确定所述程序执行时间。24.可选地,所述对每一组所述jvm参数进行测试,包括:25.串行执行每一组所述jvm参数。26.可选地,所述方法还包括:27.对所述测试数据的范围进行修改后,更新所述jvm参数;28.对更新后的所述jvm参数进行测试。29.本发明实施例还提供一种jvm参数的测试装置,包括:30.第一数据生成模块,用于生成测试数据;所述测试数据包括以下数据的至少其中之一:堆参数、栈参数、直接内存、锁、垃圾回收日志gc;31.第二数据生成模块,用于对所述测试数据进行for循环排列组合,生成多组jvm参数;32.第一确定模块,用于对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数。33.可选地,所述装置还包括:34.记录模块,用于在每一组所述jvm参数测试完毕后,记录每一组所述jvm参数以及对应的程序执行时间,生成jvm参数以及程序执行时间对照表;35.展示模块,用于展示所述jvm参数以及程序执行时间对照表。36.可选地,所述装置还包括:37.排序模块,用于根据所述程序执行时间,按照时间由短到长的顺序,对所述jvm参数进行排序;38.执行模块,用于按照顺序执行所述jvm参数。39.可选地,所述第一确定模块,包括:40.第一确定单元,用于确定每一组所述jvm参数的程序运行开始时间、程序运行结束时间以及程序编译耗费时间;41.第二确定单元,用于根据所述程序运行开始时间、所述程序运行结束时间以及所述程序编译耗费时间,确定所述程序执行时间;42.第三确定单元,用于确定最短的所述程序执行时间对应的一组jvm参数为所述最优解jvm参数。43.可选地,所述第二确定单元具体用于:44.根据所述程序运行开始时间和所述程序运行结束时间,确定程序运行耗费绝对时间;45.根据所述程序运行耗费绝对时间和所述程序编译耗费时间,确定所述程序执行时间。46.可选地,所述第一确定模块,包括:47.执行单元,用于串行执行每一组所述jvm参数。48.可选地,所述装置还包括:49.更新模块,用于对所述测试数据的范围进行修改后,更新所述jvm参数;50.测试模块,用于对更新后的所述jvm参数进行测试。51.本发明实施例还提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如上任一项所述的jvm参数的测试方法的步骤。52.本发明实施例还提供一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如上任一项所述的jvm参数的测试方法的步骤。53.本发明的有益效果是:54.本发明方案,通过生成测试数据;所述测试数据包括以下数据的至少其中之一:堆参数、栈参数、直接内存、锁、垃圾回收日志gc,以及,对所述测试数据进行for循环排列组合,生成多组jvm参数,可以得到每一种jvm运行参数,对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数,可以实现根据程序执行时间确定jvm参数的最优解,也可以实现为java后端提供服务的标准评价准则。附图说明55.图1表示本发明实施例提供的jvm参数的测试方法的流程图;56.图2表示本发明实施例提供的jvm调优自动化测试系统的架构图;57.图3表示本发明实施例提供的jvm参数的测试装置的结构示意图;58.图4表示本发明实施例提供的电子设备的结构示意图。具体实施方式59.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。本发明针对现有技术中,jvm的运行参数多,难以确定最优参数的问题,提供一种jvm参数的测试方法、装置和电子设备。60.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。61.如图1所示,本发明实施例提供一种jvm参数的测试方法,包括:62.步骤101:生成测试数据;所述测试数据包括以下数据的至少其中之一:堆参数、栈参数、直接内存、锁、垃圾回收日志(garbagecollection,gc)。63.需要说明的是,本发明实施例提供的jvm参数的测试方法应用于一种基于物联网操作系统的jvm调优自动化测试系统,该jvm调优自动化测试系统的架构如图2所示,包括:jvm测试数据生成区域、jvm工作区、仿真网元区域、调用实例方法(demo)区域、系统日志读取解析区域(logs)、响应时间数据区域和jvm参数-响应时间对照表生成区域。需要说明的是,该jvm调优自动化测试系统可以集成到linux服务器上自动执行测试。64.在本发明实施例中,jvm测试数据生成区域用于生成测试数据,生成的测试数据包括:堆参数、栈参数、直接内存、锁、垃圾回收日志中的其中一项或者几项,在本发明实施例中,以服务器内存为16g,64bit为例,举例说明jvm测试数据生成区域生成的测试数据如下表1所示。65.表1测试数据表[0066][0067]步骤102:对所述测试数据进行for循环排列组合,生成多组jvm参数。[0068]在本发明实施例中,jvm测试数据生成区域还用于对测试数据进行for循环排列组合,生成多组jvm参数,还以上述的示例进行说明,生成的其中一组jvm参数如下表2所示。[0069]将生成的多组jvm参数以文件的形式存储至自动调优的服务器目录:/home/app/jvm中。[0070]表2jvm参数表[0071][0072]步骤103:对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数。[0073]在本发明实施例中,在jvm工作区,通过系统日志读取解析区域读取存储至服务器固定目录:/home/app/jvm中的jvm参数,以及通过仿真网元区域读取环境变量,并通过调用实例方法demo区域对每一组jvm参数进行测试,确定出每一组jvm参数对应的程序执行时间,确定出最短的程序执行时间对应的一组jvm参数为最优解jvm参数。[0074]具体来说,可以是预设的程序通过shell命令启动“自动测试jvm最优解.sh”脚本里面载入以上生成并存储的jvm参数,并以java$[jvm参数]-jar命令启动被测程序,“自动测试jvm最优解.sh”在启动时同时记录程序,记录每一组jvm参数对应的程序执行时间,确定出最短的程序执行时间对应的一组jvm参数为最优解jvm参数。[0075]本发明实施例,通过生成测试数据;所述测试数据包括以下数据的至少其中之一:堆参数、栈参数、直接内存、锁、垃圾回收日志,以及,对所述测试数据进行for循环排列组合,生成多组jvm参数,可以得到每一种jvm运行参数,对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数,可以实现根据程序执行时间确定jvm参数的最优解,也可以实现为java后端提供服务的标准评价准则。[0076]可选地,所述方法还包括:[0077]在每一组所述jvm参数测试完毕后,记录每一组所述jvm参数以及对应的程序执行时间,生成jvm参数以及程序执行时间对照表;[0078]展示所述jvm参数以及程序执行时间对照表。[0079]在本发明实施例中,在每一组的jvm参数对应的程序自动化测试执行完毕后,记录被测的jvm参数和计算出的程序执行时间t,对记录的每一组被测jvm参数和计算出的程序执行时间t数据汇总得到jvm参数-程序执行时间t对照表进行保存以及展示。[0080]需要说明的是,通过响应时间数据区域记录计算出的程序执行时间t,通过jvm参数-响应时间对照表生成区域记录并展示jvm参数-程序执行时间t对照表。[0081]可选地,所述方法还包括:[0082]根据所述程序执行时间,按照时间由短到长的顺序,对所述jvm参数进行排序;[0083]按照顺序执行所述jvm参数。[0084]在本发明实施例中,预设程序也支持通过调整jvm参数组合的顺序,优先执行之前自动化测试中性能表现良好的参数组合,也就是程序执行时间短的jvm参数组合,从而可以带来最大的测试收益。[0085]可选地,所述对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数,包括:[0086]确定每一组所述jvm参数的程序运行开始时间、程序运行结束时间以及程序编译耗费时间;[0087]根据所述程序运行开始时间、所述程序运行结束时间以及所述程序编译耗费时间,确定所述程序执行时间;[0088]确定最短的所述程序执行时间对应的一组jvm参数为所述最优解jvm参数。[0089]在本发明实施例中,预设的程序通过shell命令启动“自动测试jvm最优解.sh”,“自动测试jvm最优解.sh”在启动的同时,记录每一组jvm参数的程序开始运行时间t1,记录程序运行结束时间t2,以及通过jstat-compiler命令记录程序编译耗费时间t2。[0090]根据该预设的程序,通过程序开始运行时间t1、程序运行结束时间t2以及程序编译耗费时间t2,计算出程序执行时间t。[0091]根据每一组jvm参数对应的程序执行时间t,确定出最短的程序执行时间对应的一组jvm参数为最优解jvm参数。[0092]此方法兼容性高,适合对所有java语言类型的程序进行自动运行,只需将被测程序上传到shell命令所在的目录即可。[0093]可选地,所述根据所述程序运行开始时间、所述程序运行结束时间以及所述程序编译耗费时间,确定所述程序执行时间,包括:[0094]根据所述程序运行开始时间和所述程序运行结束时间,确定程序运行耗费绝对时间;[0095]根据所述程序运行耗费绝对时间和所述程序编译耗费时间,确定所述程序执行时间。[0096]在本发明实施例中,本系统采用整体响应时间,也就是程序执行时间t作为性能评判标准,整体响应时间的计算有三个元素:记录程序开始运行的时间t1、程序结束运行的时间t2以及程序编译消耗的时间t2,程序整体运行耗费的绝对时间t1=程序结束运行的时间t2-程序开始运行的时间t1,其中程序编译耗费的时间t2,因此程序执行时间t=程序整体运行耗费的绝对时间t1-程序编译耗费的时间t2,此程序执行时间t即为程序性能的评判标准,t时间越短则jvm参数越优,取各组jvm参数测试得到的程序执行时间t的极小值即为此被测程序对应的一组jvm参数最优解表现。此标准也为java后端提供服务的标准评判准则。[0097]可选地,所述对每一组所述jvm参数进行测试,包括:[0098]串行执行每一组所述jvm参数。[0099]在本发明实施例中,考虑到预设的程序对于系统中央处理器(centralprocessingunit,cpu)内存的依赖性,本系统要求在自动测试期间,每组jvm参数的测试为串行执行,且本测试服务器禁止同时运行其他系统服务之外的程序,避免因为硬件资源的占用导致的测试误差。可选地,所述方法还包括:[0100]对所述测试数据的范围进行修改后,更新所述jvm参数;[0101]对更新后的所述jvm参数进行测试。[0102]在本发明实施例中,jvm参数可以灵活增加修改,只需维护参数范围,并对维护后jvm参数进行测试即可,大大节省手动测试时间。[0103]本发明实施例,对被测方法兼容度高,适合各种不同的物联网操作系统程序进行自动化测试,只需替换jar文件便可顺利进行测试;整个操作由linux服务器自动执行,且可通过jenkins扩展监测被测程序迭代等插件可视化展示jvm参数-程序执行时间t的参照表,如果被测程序版本更新可智能设定时间重跑jvm优化并邮件通知管理者,功能延展性高。[0104]本发明实施例,针对物联网操作系统jvm调优场景,提供了一种灵活的方法,并能准精确优化被测系统性能指标,为项目提供最优质的服务体验。[0105]本发明实施例,具有灵活的jvm参数组合,灵活的实例方法适配,并且环境自适应,环境利用率高。[0106]如图3所示,本发明实施例还提供一种jvm参数的测试装置,包括:[0107]第一数据生成模块301,用于生成测试数据;所述测试数据包括以下数据的至少其中之一:堆参数、栈参数、直接内存、锁、垃圾回收日志gc;[0108]第二数据生成模块302,用于对所述测试数据进行for循环排列组合,生成多组jvm参数;[0109]第一确定模块303,用于对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数。[0110]本发明实施例提供的jvm参数的测试装置,通过生成测试数据;所述测试数据包括以下数据的至少其中之一:堆参数、栈参数、直接内存、锁、垃圾回收日志gc,以及,对所述测试数据进行for循环排列组合,生成多组jvm参数,可以得到每一种jvm运行参数,对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数,可以实现根据程序执行时间确定jvm参数的最优解,也可以实现为java后端提供服务的标准评价准则。[0111]可选地,所述装置还包括:[0112]记录模块,用于在每一组所述jvm参数测试完毕后,记录每一组所述jvm参数以及对应的程序执行时间,生成jvm参数以及程序执行时间对照表;[0113]展示模块,用于展示所述jvm参数以及程序执行时间对照表。[0114]可选地,所述装置还包括:[0115]排序模块,用于根据所述程序执行时间,按照时间由短到长的顺序,对所述jvm参数进行排序;[0116]执行模块,用于按照顺序执行所述jvm参数。[0117]可选地,所述第一确定模块303,包括:[0118]第一确定单元,用于确定每一组所述jvm参数的程序运行开始时间、程序运行结束时间以及程序编译耗费时间;[0119]第二确定单元,用于根据所述程序运行开始时间、所述程序运行结束时间以及所述程序编译耗费时间,确定所述程序执行时间;[0120]第三确定单元,用于确定最短的所述程序执行时间对应的一组jvm参数为所述最优解jvm参数。[0121]可选地,所述第二确定单元具体用于:[0122]根据所述程序运行开始时间和所述程序运行结束时间,确定程序运行耗费绝对时间;[0123]根据所述程序运行耗费绝对时间和所述程序编译耗费时间,确定所述程序执行时间。[0124]可选地,所述第一确定模块303,包括:[0125]执行单元,用于串行执行每一组所述jvm参数。[0126]可选地,所述装置还包括:[0127]更新模块,用于对所述测试数据的范围进行修改后,更新所述jvm参数;[0128]测试模块,用于对更新后的所述jvm参数进行测试。[0129]需要说明的是,本发明实施例提供的jvm参数的测试装置,是能够执行上述的jvm参数的测试方法的装置,则上述的jvm参数的测试方法的所有实施例均适用于该装置,且能够达到相同或者相似的技术效果。[0130]如图4所示,本发明实施例还提供一种电子设备,包括:处理器400;以及通过总线接口与所述处理器400相连接的存储器410,所述存储器410用于存储所述处理器400在执行操作时所使用的程序和数据,处理器400调用并执行所述存储器410中所存储的程序和数据。[0131]具体的,处理器400用于生成测试数据;所述测试数据包括以下数据的至少其中之一:堆参数、栈参数、直接内存、锁、垃圾回收日志gc;以及,对所述测试数据进行for循环排列组合,生成多组jvm参数;以及,对每一组所述jvm参数进行测试,确定最短的程序执行时间对应的一组jvm参数为最优解jvm参数。[0132]可选地,所述处理器400还用于在每一组所述jvm参数测试完毕后,记录每一组所述jvm参数以及对应的程序执行时间,生成jvm参数以及程序执行时间对照表;以及,展示所述jvm参数以及程序执行时间对照表。[0133]可选地,所述处理器400还用于根据所述程序执行时间,按照时间由短到长的顺序,对所述jvm参数进行排序;以及,按照顺序执行所述jvm参数。[0134]可选地,所述处理器400具体用于确定每一组所述jvm参数的程序运行开始时间、程序运行结束时间以及程序编译耗费时间;以及,根据所述程序运行开始时间、所述程序运行结束时间以及所述程序编译耗费时间,确定所述程序执行时间;以及,确定最短的所述程序执行时间对应的一组jvm参数为所述最优解jvm参数。[0135]可选地,所述处理器400具体用于根据所述程序运行开始时间和所述程序运行结束时间,确定程序运行耗费绝对时间;以及,根据所述程序运行耗费绝对时间和所述程序编译耗费时间,确定所述程序执行时间。[0136]可选地,所述处理器400具体用于串行执行每一组所述jvm参数。[0137]可选地,所述处理器400还用于对所述测试数据的范围进行修改后,更新所述jvm参数;以及,对更新后的所述jvm参数进行测试。[0138]其中,在图4中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器400代表的一个或多个处理器和存储器410代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。针对不同的终端,用户接口420还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。处理器400负责管理总线架构和通常的处理,存储器410可以存储处理器400在执行操作时所使用的数据。[0139]本发明实施例还提供一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如上任一项所述的jvm参数的测试方法的步骤。[0140]此外,需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行,某些步骤可以并行或彼此独立地执行。对本领域的普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。[0141]因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。[0142]以上所述的是本发明的优选实施方式,应当指出对于本
技术领域
:的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献