CN109408323B - 一种服务器lua性能热点分析方法 - Google Patents

一种服务器lua性能热点分析方法 Download PDF

Info

Publication number
CN109408323B
CN109408323B CN201811085570.XA CN201811085570A CN109408323B CN 109408323 B CN109408323 B CN 109408323B CN 201811085570 A CN201811085570 A CN 201811085570A CN 109408323 B CN109408323 B CN 109408323B
Authority
CN
China
Prior art keywords
server
lua
sampling
performance
analysis method
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.)
Active
Application number
CN201811085570.XA
Other languages
English (en)
Other versions
CN109408323A (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.)
Zhuhai Xishanju Digital Technology Co ltd
Zhuhai Kingsoft Digital Network Technology Co Ltd
Original Assignee
Zhuhai Seasun Mobile Game Technology Co ltd
Zhuhai Kingsoft Online Game Technology Co 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 Zhuhai Seasun Mobile Game Technology Co ltd, Zhuhai Kingsoft Online Game Technology Co Ltd filed Critical Zhuhai Seasun Mobile Game Technology Co ltd
Priority to CN201811085570.XA priority Critical patent/CN109408323B/zh
Publication of CN109408323A publication Critical patent/CN109408323A/zh
Application granted granted Critical
Publication of CN109408323B publication Critical patent/CN109408323B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明的技术方案包括一种游戏图形需求和设计的系统和方法,用于实现:通过Linux系统提供的动态追踪技术,利用systemtap工具对服务器进行周期性的采样,通过lua_pcall接口的调用情况,定位当前正在运行的虚拟机地址,并记录当前正在执行的lua函数,通过对采样数据进行分析处理即可得到性能数据文件。本发明的有益效果为:通过动态探测技术,可以在服务器运行期间动态的对服务器程序进行采样,无需修改服务器代码,同时也不需要打开LUA虚拟机提供的luaDebug功能,因此其对服务器的性能影响非常小,且非常方便的实现即插即用,获取lua性能热点,为研发人员优化提供数据支撑,从而降低游戏卡顿,提升游戏用户体验。

Description

一种服务器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;结束采样。
进一步的,所述步骤S400包括以下步骤:根据全局变量L的值获取虚拟机luaState地址;使用查询指令查询在当前虚拟机中运行的进程ID;根据预设策略对运行中的进程进行采样;提取出当前正在执行的lua函数;结束采样。
进一步的,所述步骤S500包括以下步骤:保存被提取函数信息;根据函数信息进行分析处理,将处理后的信息输出为性能数据文件。
进一步的,所述步骤S100包括预设采样周期。
进一步的,所述的函数信息包括函数名以及调用信息。
进一步的,所述分析处理包括统计函数被调用次数。
本发明的有益效果是:本发明采用的一种服务器lua性能热点分析方法,此方法不依赖luaDebug,而是使用Linux系统提供的动态追踪技术,无需修改服务器代码,同时也不需要打开LUA虚拟机提供的luaDebug功能,因此其对服务器的性能影响非常小,且非常方便,实现即插即用。
附图说明
图1所示为根据本发明的方法流程图;
图2所示为根据本发明的具体实施例一;
图3所示为根据本发明的具体实施例二;
图4所述为根据本发明的具体实施例三。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
参照图1所示为根据本发明的方法流程图,方法流程如下:预设采样策略;
对服务器进行周期采样;
判断全局变量L的值是否为0,若是,执行判断采样时间是否大于周期时间的步骤,否则执行下一步骤;
根据全局变量L的值定位luaState地址并提取出当前执行的函数;
将提取出的函数及调用次数累计到MAP中;
判断采样时间是否大于等于周期时间,若是,执行下一步骤,否则,返回执行第二步骤,继续对服务器进行周期采样;
结束采样,输出性能数据文件。
参照图2所示为根据本发明的具体实施例一,主要用于解释如何根据lua_pcall的接口被调用状态来改变全局变量L的值:首先将全局变量L初始化为0;
使用SystemTap对lua_pcall接口进行采样,探测其调用及返回通知;
判断lua_pcall的是否被调用,若是,则执行下一步,否则,不执行操作;
将当前虚拟机luaState地址记录到全局变量L中;
lua_pcall调用完成返回后,将全局变量L设置为0;
结束采样。
参照图3所示为根据本发明的具体实施例二,主要用于解释如何在定位到进程运行的对应虚拟机的情况下,如何从运行的进程中提取出正在执行的lua代码:根据全局变量L的值获取虚拟机luaState地址;
使用查询指令查询在当前虚拟机中运行的进程ID;
根据预设策略对运行中的进程进行采样;
提取出当前正在执行的lua函数;
结束采样。
参照图4所示为根据本发明的具体实施例三,列举在游戏服务器中使用本发明的具体实施例:在游戏服务器中获取测试数据,
第一步:根据上述技术流程开发出lua.profiler装置;
第二步:启动游戏服务器GameServer,使用ps-aux|grep GameServer找到该进程的进程ID,为633;
第三步:开启压测程序,让模拟机器人登录GameServer并进行对战(此步为了增加服务器压力值);
第四步:使用“./lua.profiler-p 633-t 50”对游戏进程进行采样,其中633为进程ID,50是指采样50秒的时间(50秒的时间可根据不同的情景进行模拟);
第五步:50秒后结束采样,并输出profiler.txt性能数据文件;
第六步:分析profiler.txt性能数据文件即可定位游戏服务器中性能热点;
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

Claims (7)

1.一种服务器lua性能热点分析方法,其特征在于,该方法包括以下步骤:
S100、预设采样策略;
S200、对服务器进行周期采样;所述S200包括以下步骤:启动服务器,运行服务器代码;使用工具SystemTap对服务器进行采样;所述使用工具SystemTap对服务器进行采样包括以下步骤:将全局变量L初始化为0;使用SystemTap对lua_pcall接口进行采样,探测其调用及返回通知;判断lua_pcall的是否被调用,若是,则执行下一步,否则,不执行操作;将当前虚拟机luaState地址记录到全局变量L中;lua_pcall调用完成返回后,将全局变量L设置为0;结束采样;
S300、判断全局变量L的值是否为0,若是,执行步骤S600,否则执行步骤S400;
S400、根据全局变量L的值定位luaState地址并提取出当前执行的函数;
S500、将提取出的函数及调用次数累计到MAP中;
S600、判断采样时间是否大于等于周期时间,若是,执行步骤S700,否则,执行步骤S200;
S700、结束采样,输出性能数据文件。
2.根据权利要求1所述的服务器lua性能热点分析方法,其特征在于,所述启动服务器,运行服务器代码包括以下步骤:
启动服务器;
开启测试程序,运行代码。
3.根据权利要求1所述的服务器lua性能热点分析方法,其特征在于,所述步骤S400包括以下步骤:
根据全局变量L的值获取虚拟机luaState地址;
使用查询指令查询在当前虚拟机中运行的进程ID;
根据预设策略对运行中的进程进行采样;
提取出当前正在执行的lua函数;
结束采样。
4.根据权利要求1所述的服务器lua性能热点分析方法,其特征在于,所述步骤S500包括以下步骤:
保存被提取函数信息;
根据函数信息进行分析处理,将处理后的信息输出为性能数据文件。
5.根据权利要求1所述的服务器lua性能热点分析方法,其特征在于,所述步骤S100包括预设采样周期。
6.根据权利要求4所述的服务器lua性能热点分析方法,其特征在于,所述的函数信息包括函数名以及调用信息。
7.根据权利要求4所述的服务器lua性能热点分析方法,其特征在于,所述分析处理包括统计函数被调用次数。
CN201811085570.XA 2018-09-18 2018-09-18 一种服务器lua性能热点分析方法 Active CN109408323B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811085570.XA CN109408323B (zh) 2018-09-18 2018-09-18 一种服务器lua性能热点分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811085570.XA CN109408323B (zh) 2018-09-18 2018-09-18 一种服务器lua性能热点分析方法

Publications (2)

Publication Number Publication Date
CN109408323A CN109408323A (zh) 2019-03-01
CN109408323B true CN109408323B (zh) 2022-05-10

Family

ID=65465731

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811085570.XA Active CN109408323B (zh) 2018-09-18 2018-09-18 一种服务器lua性能热点分析方法

Country Status (1)

Country Link
CN (1) CN109408323B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111061538A (zh) * 2019-11-14 2020-04-24 珠海金山网络游戏科技有限公司 一种多Lua虚拟机内存优化方法及其系统
CN114385387B (zh) * 2022-03-23 2022-07-19 恒生电子股份有限公司 访问信息生成方法、装置和计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004678A (zh) * 2010-11-11 2011-04-06 青岛普加智能信息有限公司 操作系统性能分析方法及装置
CN106502876A (zh) * 2016-10-26 2017-03-15 腾讯科技(深圳)有限公司 一种热点函数确定的方法及相关设备
WO2017081558A1 (en) * 2015-11-10 2017-05-18 Quixey, Inc. Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention
CN108304303A (zh) * 2018-01-03 2018-07-20 珠海金山网络游戏科技有限公司 一种统计帧同步服务器的脚本运行性能的方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772865B2 (en) * 2015-02-23 2017-09-26 Futurewei Technologies, Inc. On-demand loading of dynamic scripting language code for reduced memory usage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004678A (zh) * 2010-11-11 2011-04-06 青岛普加智能信息有限公司 操作系统性能分析方法及装置
WO2017081558A1 (en) * 2015-11-10 2017-05-18 Quixey, Inc. Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention
CN106502876A (zh) * 2016-10-26 2017-03-15 腾讯科技(深圳)有限公司 一种热点函数确定的方法及相关设备
CN108304303A (zh) * 2018-01-03 2018-07-20 珠海金山网络游戏科技有限公司 一种统计帧同步服务器的脚本运行性能的方法和系统

Also Published As

Publication number Publication date
CN109408323A (zh) 2019-03-01

Similar Documents

Publication Publication Date Title
US10565442B2 (en) Picture recognition method and apparatus, computer device and computer- readable medium
CN102622536B (zh) 一种恶意代码捕获方法
CN110059468B (zh) 一种小程序风险识别方法和装置
US10657036B2 (en) Determining visual testing coverages
JP4681491B2 (ja) プロファイリングプログラムおよびプロファイリング方法
CN102591696A (zh) 一种手机软件行为数据提取方法及系统
CN109408323B (zh) 一种服务器lua性能热点分析方法
CN104866416B (zh) 实现应用程序性能分析的方法和装置
US20160077831A1 (en) Accurate and performant code design using memoization
CN107436834A (zh) 估算处理器功耗的方法、产品及系统
KR20180129623A (ko) 연관된 다중 파일 정적 분석 장치
CN107250979B (zh) 应用事件跟踪
US20150154103A1 (en) Method and apparatus for measuring software performance
CN111597111A (zh) 一种应用程序启动速度监控方法以及装置
KR20150047940A (ko) 어플리케이션 분석 방법 및 장치
KR20160098794A (ko) 디바이스 프로그램 구조 모델링 기반 골격코드 생성 장치 및 방법
US11074155B2 (en) Generating representative microbenchmarks
CN109271288B (zh) 处理器硅前性能评估方法
CN106897051B (zh) 一种进程清理的方法及装置
CN107679143B (zh) 基于百度地图动态分步加载的装置及方法、可读存储介质
KR20180120099A (ko) 데이터 수집 방법 및 이를 수행하기 위한 시스템
CN106649720B (zh) 一种数据处理方法及服务器
CN111597119A (zh) 测试脚本更新方法、装置、存储介质及处理器
CN114880091A (zh) 一种数据处理方法及设备
CN112860224B (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
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 519000 Room 102, 202, 302 and 402, No. 325, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province, Room 102 and 202, No. 327 and Room 302, No. 329

Patentee after: Zhuhai Jinshan Digital Network Technology Co.,Ltd.

Patentee after: Zhuhai Xishanju Digital Technology Co.,Ltd.

Address before: 519000 building 3, Jinshan Software Park, 325 Qiandao Ring Road, Xiangzhou District, Zhuhai City, Guangdong Province

Patentee before: ZHUHAI KINGSOFT ONLINE GAME TECHNOLOGY Co.,Ltd.

Patentee before: ZHUHAI SEASUN MOBILE GAME TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address