[发明专利]一种服务器lua性能热点分析方法有效
申请号: | 201811085570.X | 申请日: | 2018-09-18 |
公开(公告)号: | CN109408323B | 公开(公告)日: | 2022-05-10 |
发明(设计)人: | 刘马良;胡逸飞;马力;赵帅;赖炳新 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 俞梁清 |
地址: | 519000 广东省珠海市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 服务器 lua 性能 热点 分析 方法 | ||
本发明的技术方案包括一种游戏图形需求和设计的系统和方法,用于实现:通过Linux系统提供的动态追踪技术,利用systemtap工具对服务器进行周期性的采样,通过lua_pcall接口的调用情况,定位当前正在运行的虚拟机地址,并记录当前正在执行的lua函数,通过对采样数据进行分析处理即可得到性能数据文件。本发明的有益效果为:通过动态探测技术,可以在服务器运行期间动态的对服务器程序进行采样,无需修改服务器代码,同时也不需要打开LUA虚拟机提供的luaDebug功能,因此其对服务器的性能影响非常小,且非常方便的实现即插即用,获取lua性能热点,为研发人员优化提供数据支撑,从而降低游戏卡顿,提升游戏用户体验。
技术领域
本发明涉及一种服务器lua性能热点分析方法,属于计算机技术领域。
背景技术
Lua是一个小巧的脚本语言,Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的,这一切都决定了Lua是作为嵌入式脚本的较优选择。
目前lua语言使用较为广泛,部分游戏服务器甚至游戏引擎也支持lua语言开发(如使用较为广泛的unity游戏引擎)。在项目中,lua代码质量好坏直接影响游戏性能,性能低劣的lua代码会造成用户游戏卡顿,严重影响游戏体验,这样保证项目中的lua代码性能高效就变得尤为重要,本文实现了一套lua性能热点分析装置,在服务器运行期间通过动态探测技术,收集lua热点,为性能优化提供数据。此装置与其它luaprofiler不同点在于实现机制不同,传统的luaprofiler工具基于luaDebug提供的hook接口实现,通过在调用函数入口及返回两者时间差来统计函数运行消耗时间,而本装置则不依赖luaDebug,而是使用Linux系统提供的动态追踪技术(systemtap),对服务器进程进行周期性的采样,每个采样时间点记录当前正在执行的lua函数,通过一段时间的采样,被采样次数较多的lua函数就是热点。该方案的优点在于,无需修改服务器代码,同时也不需要打开LUA虚拟机提供的luaDebug功能,因此其对服务器的性能影响非常小,且非常方便实现即插即用。
发明内容
为解决上述问题,本发明的目的在于提供一种服务器lua性能热点分析方法,通过Linux系统提供的动态追踪技术systemtap对服务器进行周期性的采样,记录当前正在执行的lua函数,通过对采样数据进行分析处理即可得到性能数据文件。
本发明解决其问题所采用的技术方案是:一种服务器lua性能热点分析方法,其特征在于,该方法包括以下步骤:S100、预设采样策略;S200、对服务器进行周期采样;S300、判断全局变量L的值是否为0,若是,执行步骤S600,否则执行步骤S400;S400、根据全局变量L的值定位luaState地址并提取出当前执行的函数;S500、将提取出的函数及调用次数累计到MAP中;S600、判断采样时间是否大于等于周期时间,若是,执行步骤S700,否则,执行步骤S200;S700、结束采样,输出性能数据文件。
进一步的,所述步骤S200包括以下步骤:启动服务器,运行服务器代码;使用工具SystemTap对服务器进行采样。
进一步的,所述启动服务器运行服务器代码包括以下步骤:启动服务器;开启测试程序,运行代码。
进一步的,所述使用工具SystemTap对服务器进行采样包括以下步骤:将全局变量L初始化为0;使用SystemTap对lua_pcall接口进行采样,探测其调用及返回通知;判断lua_pcall的是否被调用,若是,则执行下一步,否则,不执行操作;将当前虚拟机luaState地址记录到全局变量L中;lua_pcall调用完成返回后,将全局变量L设置为0;结束采样。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司,未经珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811085570.X/2.html,转载请声明来源钻瓜专利网。