KR101674787B1 - System and method for measuring performance of program - Google Patents
System and method for measuring performance of program Download PDFInfo
- Publication number
- KR101674787B1 KR101674787B1 KR1020150000774A KR20150000774A KR101674787B1 KR 101674787 B1 KR101674787 B1 KR 101674787B1 KR 1020150000774 A KR1020150000774 A KR 1020150000774A KR 20150000774 A KR20150000774 A KR 20150000774A KR 101674787 B1 KR101674787 B1 KR 101674787B1
- Authority
- KR
- South Korea
- Prior art keywords
- functional block
- functional blocks
- functional
- performance
- program
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/143—Reconfiguring to eliminate the error with loss of software functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
프로그램 성능 측정 시스템 및 방법이 개시된다. 본 발명의 일 실시예에 따른 프로그램 성능 측정 시스템은, 프로그램을 구성하는 하나 이상의 기능 블록 각각에 상기 기능 블록의 성능을 측정하기 위한 측정 코드를 삽입하는 코드 삽입부; 및 상기 프로그램의 실행시 상기 하나 이상의 기능 블록 중 상기 측정 코드에 의하여 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 수집하는 수집부를 포함한다.A program performance measurement system and method are disclosed. A program performance measurement system according to an embodiment of the present invention includes: a code insertion unit for inserting a measurement code for measuring the performance of the functional block into each of at least one functional block constituting a program; And a collecting unit for collecting information on the functional blocks determined as the performance degrading functional blocks by the measurement code among the one or more functional blocks when the program is executed.
Description
본 발명의 실시예들은 프로그램의 성능을 효율적으로 측정하기 위한 기술과 관련된다.
Embodiments of the present invention relate to techniques for efficiently measuring the performance of a program.
어플리케이션 성능 관리(Application Performance Management ; APM) 또는 응용 프로그램 성능 관리는 응용 프로그램의 성능과 서비스 이용성을 감시하고 관리하는데 초점을 둔 시스템 관리 원칙을 의미한다. 최근, 사용자에게 제공하는 서비스가 좀 더 다양해지고 복잡해짐에 따라, 사용자가 원하는 트랜잭션(transaction)을 지체없이 실행하기 위한 프로그램 성능 관리 기술의 중요성이 커지고 있다. 특히, 대용량의 서비스를 제공하는 대규모 시스템의 경우, 프로그램의 장애 원인을 신속하게 발견하고 이를 처리하는 것이 매우 중요하며, 또한 이 과정에서 시스템에 걸리는 부하를 최소화할 수 있어야 한다.Application Performance Management (APM) or application performance management refers to system management principles that focus on monitoring and managing application performance and service availability. Recently, as the service provided to the user becomes more diverse and complex, a program performance management technique for executing a desired transaction without delay is becoming more important. In particular, in the case of a large-scale system providing a large-capacity service, it is very important to quickly find out the cause of the program failure and to handle it, and it is also necessary to minimize the load on the system in this process.
그러나, 종래 프로그램 성능 관리 기술의 경우 프로파일링을 통해 트랜잭션의 대략적인 구간에 대한 프로그램의 성능 정보를 사용자(또는 시스템 관리자)에게 제공하는 데 그쳤으며, 성능 저하 또는 이상이 발생한 기능 블록(예를 들어, 메소드(method))의 정확한 위치를 실시간으로 사용자에게 제공할 수 없었다. 이에 따라, 시스템 관리자는 성능 저하 또는 이상이 발생한 기능 블록의 정확한 위치를 파악하기 위한 2차 분석을 수행하여야 하였으며, 이 과정에서 시간 및 비용이 낭비되는 문제점이 있었다. 또한, 종래 프로그램 성능 관리 기술의 경우 성능 저하 또는 이상이 발생한 기능 블록의 정확한 위치를 파악하기 위해, 분석한 프로그램의 성능 정보 모두를 사용자에게 제공하여야 했으며, 이 과정에서 시스템에 걸리는 부하가 가중되는 문제점이 있었다.
However, in the case of the conventional program performance management technology, the performance information of the program for the approximate interval of the transaction is provided to the user (or the system administrator) through profiling. , Method (method)) can not be provided to the user in real time. Accordingly, the system administrator has to perform a secondary analysis to determine the exact position of the functional block in which the performance degradation or abnormality occurs, and the time and cost are wasted in this process. Further, in the case of the conventional program performance management technology, in order to grasp the exact position of the functional block in which the performance degradation or abnormality has occurred, all of the performance information of the analyzed program has to be provided to the user. In this process, .
본 발명의 실시예들은 성능 저하가 발생한 기능 블록을 선별하고, 성능 저하가 발생한 기능 블록의 정확한 위치를 사용자에게 실시간으로 제공하기 위한 것이다.
Embodiments of the present invention are to select a functional block in which a performance degradation has occurred and provide an accurate position of the functional block in which performance degradation occurs to the user in real time.
본 발명의 예시적인 실시예에 따르면, 프로그램을 구성하는 하나 이상의 기능 블록 각각에 상기 기능 블록의 성능을 측정하기 위한 측정 코드를 삽입하는 코드 삽입부; 및 상기 프로그램의 실행시 상기 하나 이상의 기능 블록 중 상기 측정 코드에 의하여 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 수집하는 수집부를 포함하는, 프로그램의 성능 측정 시스템이 제공된다.According to an exemplary embodiment of the present invention, a code insertion unit for inserting a measurement code for measuring the performance of the functional block into each of at least one functional block constituting a program; And a collecting unit for collecting information of a functional block determined as a performance degrading functional block by the measurement code among the one or more functional blocks upon execution of the program.
상기 측정 코드는, 상기 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하고 상기 차이가 설정된 임계치 이상인 경우 상기 기능 블록을 상기 성능 저하 기능 블록으로 판단하기 위한 하나 이상의 명령어를 포함할 수 있다.Wherein the measurement code includes at least one instruction for calculating a difference between an execution start time and an execution end time of the functional block when the functional block is executed and determining the functional block as the performance reduction functional block when the difference is equal to or greater than a set threshold value . ≪ / RTI >
상기 프로그램의 성능 측정 시스템은, 상기 측정 코드의 삽입 전, 상기 하나 이상의 기능 블록 각각의 정보를 획득하는 전처리부를 더 포함할 수 있다.The performance measurement system of the program may further include a preprocessor for acquiring information on each of the one or more functional blocks before inserting the measurement code.
상기 코드 삽입부는, 상기 전처리부에 의하여 획득된 상기 기능 블록의 정보를 상기 측정 코드에 포함시켜 상기 기능 블록에 삽입할 수 있다.The code inserting unit may insert the information of the functional block obtained by the preprocessing unit into the functional block by inserting the information into the functional code.
상기 코드 삽입부는, 바이트 코드 인스트루먼트(Byte Code Instrument) 수단을 통해 상기 측정 코드를 상기 기능 블록에 삽입할 수 있다.The code inserting unit may insert the measurement code into the functional block through a bytecode instrument.
상기 기능 블록의 정보는, 상기 기능 블록의 명칭 및 상기 기능 블록이 속한 클래스의 명칭 중 하나 이상을 포함할 수 있다.The information of the functional block may include at least one of a name of the functional block and a name of a class to which the functional block belongs.
상기 프로그램의 성능 측정 시스템은, 상기 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 디스플레이하는 디스플레이부를 더 포함할 수 있다.The performance measurement system of the program may further include a display unit for displaying information of the functional blocks determined as the performance reduction functional blocks.
본 발명의 다른 예시적인 실시예에 따르면, 프로그램을 구성하는 하나 이상의 기능 블록 각각에 상기 기능 블록의 성능을 측정하기 위한 측정 코드를 삽입하는 단계; 및 상기 프로그램의 실행시 상기 하나 이상의 기능 블록 중 상기 측정 코드에 의하여 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 수집하는 단계를 포함하는, 프로그램의 성능 측정 방법이 제공된다.According to another exemplary embodiment of the present invention, there is provided a method for testing a function block, comprising: inserting a measurement code for measuring the performance of the functional block into each of at least one functional block constituting a program; And collecting information on a functional block determined as a performance degrading functional block by the measurement code among the one or more functional blocks at the time of execution of the program.
상기 측정 코드는, 상기 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하고 상기 차이가 설정된 임계치 이상인 경우 상기 기능 블록을 상기 성능 저하 기능 블록으로 판단하기 위한 하나 이상의 명령어를 포함할 수 있다.Wherein the measurement code includes at least one instruction for calculating a difference between an execution start time and an execution end time of the functional block when the functional block is executed and determining the functional block as the performance reduction functional block when the difference is equal to or greater than a set threshold value . ≪ / RTI >
상기 프로그램의 성능 측정 방법은, 상기 측정 코드를 삽입하는 단계 이전에, 상기 하나 이상의 기능 블록 각각의 정보를 획득하는 단계를 더 포함할 수 있다.The method for measuring the performance of the program may further include acquiring information on each of the one or more function blocks before the step of inserting the measurement code.
상기 측정 코드를 삽입하는 단계는, 획득된 상기 기능 블록의 정보를 상기 측정 코드에 포함시켜 상기 기능 블록에 삽입할 수 있다.The step of inserting the measurement code may include information on the obtained function block in the measurement code and insert the measurement code into the function block.
상기 측정 코드를 삽입하는 단계는, 바이트 코드 인스트루먼트(Byte Code Instrument) 수단을 통해 상기 측정 코드를 상기 기능 블록에 삽입할 수 있다.The step of inserting the measurement code may insert the measurement code into the function block by means of a by-code instrument.
상기 기능 블록의 정보는, 상기 기능 블록의 명칭 및 상기 기능 블록이 속한 클래스의 명칭 중 하나 이상을 포함할 수 있다.The information of the functional block may include at least one of a name of the functional block and a name of a class to which the functional block belongs.
상기 프로그램의 성능 측정 방법은, 상기 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 수집하는 단계 이후, 상기 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 디스플레이하는 단계를 더 포함할 수 있다.
The method of measuring the performance of the program may further include displaying information of the functional block determined as the performance degrading functional block, after the step of collecting information of the functional block determined as the performance degrading functional block.
본 발명의 실시예들에 따르면, 성능 저하로 판단된 기능 블록의 명칭과 해당 기능 블록이 속한 클래스의 명칭을 선별하여 사용자에게 실시간으로 제공함으로써, 사용자는 서비스의 장애 원인을 정확하게 파악하고 이에 대해 신속하게 대처할 수 있다. 이에 따라, 장애 원인의 분석 시간이 단축될 수 있으며, 이는 궁극적으로 서비스의 품질 향상을 초래한다. 특히, 대용량의 서비스를 제공하는 대규모 시스템에서는 그 시간 및 비용적 효과가 더욱 커지게 된다.
According to the embodiments of the present invention, the name of the functional block determined to be degraded and the name of the class to which the functional block belongs are selected and provided to the user in real time, so that the user can accurately grasp the cause of the failure of the service, . As a result, the analysis time of the cause of the failure can be shortened, which ultimately leads to an improvement in the quality of the service. Particularly, in a large-scale system that provides a large-capacity service, the time and cost effect becomes larger.
도 1은 본 발명의 일 실시예에 따른 프로그램의 성능 측정 시스템을 설명하기 위한 블록도
도 2는 본 발명의 일 실시예에 따른 프로그램의 성능 측정 시스템에 의하여 트랜잭션 흐름 내의 성능 저하 메소드를 검출하는 예시를 나타낸 도면
도 3은 본 발명의 일 실시예에 따른 프로그램의 성능 측정 방법을 설명하기 위한 흐름도1 is a block diagram for explaining a performance measurement system of a program according to an embodiment of the present invention;
2 is a diagram illustrating an example of detecting a degradation method in a transaction flow by a program performance measurement system according to an embodiment of the present invention;
3 is a flowchart illustrating a method of measuring a performance of a program according to an embodiment of the present invention.
이하, 도면을 참조하여 본 발명의 구체적인 실시예를 설명하기로 한다. 그러나 이는 예시적 실시예에 불과하며 본 발명은 이에 한정되지 않는다.Hereinafter, specific embodiments of the present invention will be described with reference to the drawings. However, this is an exemplary embodiment only and the present invention is not limited thereto.
본 발명을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.In the following description, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. The following terms are defined in consideration of the functions of the present invention, and may be changed according to the intention or custom of the user, the operator, and the like. Therefore, the definition should be based on the contents throughout this specification.
본 발명의 기술적 사상은 청구범위에 의하여 결정되며, 이하 실시예는 진보적인 본 발명의 기술적 사상을 본 발명이 속하는 기술분야에서 통상의 지식을 가진자에게 효율적으로 설명하기 위한 일 수단일 뿐이다.
The technical idea of the present invention is determined by the claims, and the following embodiments are merely a means for effectively explaining the technical idea of the present invention to a person having ordinary skill in the art to which the present invention belongs.
도 1은 본 발명의 일 실시예에 따른 프로그램의 성능 측정 시스템(100)을 설명하기 위한 블록도이다. 구체적인 설명에 앞서, 이하에서 언급될 프로그램(150)은 자바, C++, C# 등과 같은 객체 지향 언어(object-oriented language)로 작성된 소프트웨어 또는 어플리케이션일 수 있으며, 하나 이상의 기능 블록으로 구성될 수 있다. 여기서, 기능 블록이란 메소드(method), 함수(function) 등과 같이 특정 기능을 수행하기 위한 명령어들의 집합을 의미한다. 이하에서는, 설명의 편의상 본 발명의 일 실시예에 따른 프로그램(150)이 자바로 작성된 어플리케이션 또는 소프트웨어인 것으로 가정하며, 기능 블록은 자바의 메소드인 것으로 가정한다. 다만, 프로그램(150)의 작성 언어가 이에 한정되는 것은 아니며, 프로그램(150)은 예를 들어, C, C++ 등과 같은 다른 프로그래밍 언어로 작성될 수도 있다.FIG. 1 is a block diagram illustrating a program
본 발명의 일 실시예에 따른 프로그램의 성능 측정 시스템(100)은 모니터링 및 성능 측정의 대상이 되는 대상 클래스(여기서는, 클래스 1 내지 클래스 n을 대상 클래스로 정의함)의 소스 코드(원시 코드)를 수정하지 않으면서 성능 저하 또는 이상이 발생한 기능 블록을 효율적으로 검출하기 위한 것이다. 도 1에 도시된 바와 같이, 대상 클래스 각각은 하나 이상의 메소드를 포함할 수 있다. 여기서, 클래스는 일 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 다른 클래스 또는 외부 요소와 독립적으로 설계된다. 객체(object)는 클래스의 인스턴스로(instance)서, 자신 고유의 속성을 가지며 클래스에서 정의한 행위를 수행할 수 있다. 메소드는 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지이다. The
도 1에 도시된 바와 같이, 프로그램의 성능 측정 시스템(100)은 전처리부(102), 코드 삽입부(104), 수집부(106) 및 디스플레이부(108)를 포함한다.1, the program
전처리부(102)는 기능 블록 각각의 정보를 수집한다. 기능 블록의 정보는 기능 블록의 명칭 및 기능 블록이 속한 클래스의 명칭 중 하나 이상을 포함할 수 있다. 전처리부(102)는 후술할 코드 삽입부(104)의 측정 코드 삽입 전, 기능 블록 각각의 정보를 수집할 수 있다. 전처리부(102)는 예를 들어, 자바 가상 머신(Java Virtual Machine ; JVM, 미도시)에 대상 클래스의 명칭 및 대상 클래스 내 각 메소드의 명칭을 질의하고, 자바 가상 머신으로부터 이를 수집하여 저장할 수 있다. 자바 가상 머신은 자바로 작성된 프로그램을 해석하여 실행하는 소프트웨어로서, 예를 들어 전처리부(102)로부터의 질의에 따라 대상 클래스의 명칭 및 대상 클래스 내 각 메소드의 명칭을 파악하여 전처리부(102)로 제공할 수 있다. 후술할 바와 같이, 코드 삽입부(104)는 전처리부(102)에 의하여 획득된 기능 블록의 정보를 측정 코드에 포함시켜 기능 블록에 삽입할 수 있다. 기능 블록에 삽입된 기능 블록의 정보는 성능 저하 기능 블록의 정확한 위치를 파악하는데 사용될 수 있다. The preprocessing
코드 삽입부(104)는 하나 이상의 기능 블록 각각에 측정 코드를 삽입한다. 여기서 측정 코드는, 기능 블록의 실행시 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하고 상기 시각 차이가 설정된 임계치(예를 들어, 0.0001) 이상인 경우 해당 기능 블록을 성능 저하 기능 블록으로 판단하기 위한 하나 이상의 명령어를 포함할 수 있다. 예를 들어, 메소드의 시작 부분에는 프로그램(150)의 실행시 메소드의 실행 시작 시각을 기록하는 명령어가 삽입되며, 메소드의 끝 부분에는 프로그램(150)의 실행시 메소드의 실행 종료 시각을 기록하는 명령어, 메소드의 실행 시작 시각과 메소드의 실행 종료 시각과의 차이를 계산하는 명령어, 상기 차이가 설정된 임계치 이상인지 여부를 판단하고 상기 차이가 설정된 임계치 이상인 경우 해당 메소드를 성능 저하 메소드로 판단하는 명령어 등이 삽입될 수 있다. 한편, 코드 삽입부(104)는 각 기능 블록에 동일한 임계치를 부여할 수 있으나, 이와 달리 각 기능 블록별로 서로 다른 임계치를 부여할 수도 있다. The
또한, 코드 삽입부(104)는 전처리부(102)에 의하여 획득된 기능 블록의 정보를 측정 코드에 포함시켜 기능 블록에 삽입할 수 있다. 상술한 바와 같이, 기능 블록의 정보는 기능 블록의 명칭 및 해당 기능 블록이 속한 클래스의 명칭 중 하나 이상을 포함할 수 있다. 이때, 각 기능 블록에 삽입된 기능 블록의 정보는 메모리(미도시)에 해당 기능 블록의 명칭 및 해당 기능 블록이 속한 클래스의 명칭을 질의하는 메소드 또는 함수 형태로 이루어지는 것이 아니라, 해당 기능 블록의 명칭과 해당 기능 블록이 속한 클래스의 명칭을 정의하는 형태로 이루어진다. 이에 따라, 기능 블록은 실행 과정에서 자신의 명칭 및 해당 클래스의 명칭을 메모리에 별도로 질의할 필요가 없게 되며, 이는 대용량 시스템에서 기능 블록 추가로 인해 서비스 부하가 증가하는 것을 방지한다. 다음은 코드 삽입부(104)에 의하여 기능 블록에 삽입되는 측정 코드의 예시이다.
In addition, the
class Sell // 클래스 선언class Sell // Class declaration
{{
int numofObject = 30; // 변수 정의int numofObject = 30; // Define variables
int myMoney = 0 ; // 변수 정의int myMoney = 0; // Define variables
public int saleva(int money) // 메소드 선언public int saleva (int money) // method declaration
{{
long start = System.currentTimeMillis(); // 메소드의 실행 시작 시각을 기록 long start = System.currentTimeMillis (); // record the start time of method execution
char methodname = 'saleva' // 메소드의 명칭 정의 char methodname = 'saleva' // Name of Method Definition
char classname = 'Sell' // 메소드가 속한 클래스의 명칭 정의char classname = 'Sell' // Define the name of the class to which the method belongs
int num = money/1000; // 메소드 내용int num = money / 1000; // Method contents
numofObject -= price; // 메소드 내용numofObject - = price; // Method contents
return price; // 메소드 내용return price; // Method contents
long end = System.currentTimeMillis(); // 메소드의 실행 종료 시각 기록 long end = System.currentTimeMillis (); // Record execution end time of method
long elapsedTime = (end-start)/1000.0; // 메소드의 실행 시작 시각과 실행 종료 시각과의 차이 계산long elapsedTime = (end-start) / 1000.0; // Calculate the difference between the start and end times of the method
if(elapsedTime>0.00001) // 메소드의 실행 시작 시각과 실행 종료 시각과의 차이가 설정된 임계치 이상이 되는지의 여부 판단 if (elapsedTime> 0.00001) // Determine whether the difference between the execution start time and the execution end time of the method is equal to or greater than the set threshold value
System.out.println(methodname); // 메소드 명칭 출력System.out.println (methodname); // Output method name
System.out.println(classname); // 메소드가 속한 클래스 명칭 출력System.out.println (classname); // Output the class name to which the method belongs
}}
public void Buy(sell price, int money) // 메소드 선언public void Buy (sell price, int money) // method declaration
......
}
}
여기서는, 기능 블록의 실행 시작 시각과 실행 종료 시각의 차이가 설정된 임계치 이상이 되는 경우에만 해당 기능 블록의 명칭과 해당 기능 블록이 속한 클래스 명칭을 출력하는 것으로 기재하였으나, 이는 하나의 실시예에 불과할 뿐 이에 한정되는 것은 아니다. 예를 들어, 측정 코드는 각 기능 블록의 명칭과 해당 기능 블록이 속한 클래스의 명칭을 모두 출력하도록 구성되되, 후술할 수집부(106)는 측정 코드에 의하여 성능 저하 기능 블록으로 판단된 기능 블록의 명칭 및 해당 기능 블록이 속한 명칭을 선별하여 수집할 수도 있다.In this example, only when the difference between the execution start time and the execution end time of the functional block becomes equal to or greater than the set threshold value, the name of the functional block and the class name to which the functional block belongs are outputted. However, But is not limited thereto. For example, the measurement code is configured to output the name of each functional block and the name of the class to which the functional block belongs, and the collecting
한편, 코드 삽입부(104)는 바이트 코드 인스트루먼트(Byte Code Instrument) 수단을 통해 측정 코드를 각 기능 블록에 삽입할 수 있다. 바이트 코드 인스트루먼트란 프로그램(150)의 소스 코드(원시 코드)의 수정 없이 프로그램(150)의 실행 단계에서 특정 바이트 코드를 동적으로 삽입하는 기술을 의미한다. 바이트 코드는 자바 프로그램의 컴파일된 형태로서 자바 가산 머신에 의하여 실행될 수 있다. 코드 삽입부(104)는 소스 코드 레벨에서 측정 코드를 각 기능 블록에 삽입하는 것이 아니라 프로그램(150)의 실행 단계, 구체적으로는 프로그램(150)의 시작 준비 단계(또는 시작 직전)에서 바이트 코드 인스트루먼트 수단을 통해 측정 코드를 각 기능 블록에 삽입할 수 있다.On the other hand, the
수집부(106)는 프로그램(150)의 실행시 하나 이상의 기능 블록 중 측정 코드에 의하여 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 수집한다. 상술한 바와 같이, 코드 삽입부(104)에 의하여 각 기능 블록에 삽입된 측정 코드는 프로그램(150) 실행시 해당 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하고, 상기 차이가 설정된 임계치 이상이 되는지의 여부에 따라 해당 기능 블록이 성능 저하 기능 블록인지의 여부를 판단하기 위한 명령어들을 포함할 수 있다. 만약, 해당 기능 블록의 실행 시작 시각과 실행 종료 시각의 차이가 설정된 임계치 이상이 되는 경우, 측정 코드는 해당 기능 블록의 명칭 및 해당 기능 블록이 속한 클래스의 명칭을 출력하도록 구성될 수 있다. 즉, 기능 블록의 응답 시간(실행 시작 시각과 실행 종료 시각의 차이)이 해당 기능 블록의 성능 저하 여부를 판단하는 기준이 된다. 수집부(106)는 측정 코드에 의하여 출력된 성능 저하 기능 블록의 명칭 및 성능 저하 기능 블록이 속한 클래스의 명칭을 수집할 수 있다. When the
만약, 측정 코드가 각 기능 블록의 명칭과 해당 기능 블록이 속한 클래스의 명칭을 모두 출력하는 경우, 수집부(106)는 측정 코드에 의하여 성능 저하 기능 블록으로 판단된 기능 블록의 명칭 및 해당 기능 블록이 속한 명칭을 선별하여 수집할 수도 있다. 이후, 수집부(106)는 수집한 성능 저하 기능 블록의 명칭 및 성능 저하 기능 블록이 속한 클래스의 명칭을 디스플레이부(108)로 전송할 수 있다.If the measurement code outputs both the name of each functional block and the name of the class to which the functional block belongs, the collecting
디스플레이부(108)는 수집부(106)로부터 수신한 성능 저하 기능 블록의 명칭 및 성능 저하 메소드가 속한 클래스의 명칭을 디스플레이함으로써, 문제가 발생한 기능 블록 및 클래스의 정확한 위치를 사용자에게 제공한다. 또한, 디스플레이부(108)는 성능 저하 기능 블록의 명칭을 트랜잭션별로 사용자에게 제공할 수 있으며, 이에 대해서는 도 2를 참조하여 후술하기로 한다. The
본 발명의 실시예들에 따르면, 성능 저하로 판단된 기능 블록의 명칭과 해당 기능 블록이 속한 클래스의 명칭을 선별하여 사용자에게 실시간으로 제공함으로써, 사용자는 서비스의 장애 원인을 정확하게 파악하고 이에 대해 신속하게 대처할 수 있다. 이에 따라, 장애 원인의 분석 시간이 단축될 수 있으며, 이는 궁극적으로 서비스의 품질 향상을 초래한다. 특히, 대용량의 서비스를 제공하는 대규모 시스템에서는 그 시간 및 비용적 효과가 더욱 커지게 된다.
According to the embodiments of the present invention, the name of the functional block determined to be degraded and the name of the class to which the functional block belongs are selected and provided to the user in real time, so that the user can accurately grasp the cause of the failure of the service, . As a result, the analysis time of the cause of the failure can be shortened, which ultimately leads to an improvement in the quality of the service. Particularly, in a large-scale system that provides a large-capacity service, the time and cost effect becomes larger.
도 2는 본 발명의 일 실시예에 따른 프로그램의 성능 측정 시스템(100)에 의하여 트랜잭션 흐름 내의 성능 저하 메소드를 검출하는 예시를 나타낸 도면이다. 도 2에 도시된 바와 같이, 하나의 트랜잭션은 복수 개의 메소드가 결합된 형태로 나타날 수 있으며, 이는 다음과 같이 표현될 수 있다.
FIG. 2 is a diagram illustrating an example of detecting a degradation method in a transaction flow by a program
트랜잭션 1 : 메소드 1 → 메소드 2 → 메소드 4Transaction 1: Method 1 → Method 2 → Method 4
트랜잭션 2 : 메소드 1 → 메소드 3 → 메소드 4 → 메소드 5Transaction 2: Method 1 → Method 3 → Method 4 → Method 5
트랜잭션 3 : 메소드 1 → 메소드 5 → 메소드 6
Transaction 3: Method 1 → Method 5 → Method 6
코드 삽입부(104)에 의하여 각 메소드에 삽입된 측정 코드는 프로그램(150) 실행시 해당 메소드의 실행 시작 시각과 실행 종료 시각의 차이를 계산하고, 상기 차이가 설정된 임계치 이상이 되는지 여부를 판단할 수 있다. 만약, 해당 메소드의 실행 시작 시각과 실행 종료 시각의 차이가 설정된 임계치 이상이 되는 경우, 측정 코드는 해당 메소드의 명칭 및 해당 메소드가 속한 클래스의 명칭을 출력하도록 구성될 수 있으며, 수집부(106)는 성능 저하 메소드의 명칭 및 성능 저하 메소드가 속한 클래스의 명칭을 수집할 수 있다.The measurement code inserted into each method by the
만약, 이와 같은 과정에 의하여 메소드 2와 메소드 6이 성능 저하 메소드인 것으로 판단되는 경우, 수집부(106)는 성능 저하 메소드의 명칭(메소드 2, 메소드 6)뿐 아니라 성능 저하 메소드가 속한 트랜잭션의 명칭(트랜잭션 1, 트랜잭션 3)을 디스플레이부(108)로 제공할 수 있다. 이에 따라, 디스플레이부(108)는 성능 저하 메소드의 명칭, 성능 저하 메소드가 속한 클래스의 명칭 및 성능 저하 메소드가 속한 트랜잭션의 명칭을 사용자에게 디스플레이할 수 있다.
If it is determined that the method 2 and the method 6 are performance degradation methods by the above process, the collecting
도 3은 본 발명의 일 실시예에 따른 프로그램의 성능 측정 방법을 설명하기 위한 흐름도이다.3 is a flowchart illustrating a method of measuring a performance of a program according to an embodiment of the present invention.
먼저, 전처리부(102)는 기능 블록 각각의 정보를 획득한다(S302). 예를 들어, 전처리부(102)는 코드 삽입부(104)의 측정 코드 삽입 전, 자바 가상 머신(Java Virtual Machine ; JVM, 미도시)에 대상 클래스의 명칭 및 대상 클래스 내 각 메소드의 명칭을 질의하고, 자바 가상 머신으로부터 이를 수집하여 저장할 수 있다.First, the
다음으로, 코드 삽입부(104)는 기능 블록의 정보를 측정 코드에 포함시켜 각 기능 블록에 삽입한다(S304). 측정 코드는 기능 블록의 성능 저하를 판단하기 위한 명령어들의 집합로서, 각 기능 블록의 시작 부분과 끝 부분에 각각 삽입되어 프로그램(150)의 실행시 각 기능 블록의 실행 시작 시각과 실행 종료 시각을 기록하고, 각 기능 블록의 실행 시작 시각과 실행 종료 시각 차이가 설정된 임계치 이상인지의 여부를 판단하도록 구성될 수 있다. 또한, 측정 코드에는 기능 블록의 정보를 정의하는 명령어가 포함될 수 있다. 기능 블록의 정보는 기능 블록의 명칭 및 해당 기능 블록이 속한 클래스의 명칭 중 하나 이상을 포함할 수 있다. 이때, 기능 블록의 정보는 함수 또는 메소드 형태가 아닌 해당 기능 블록의 명칭과 해당 기능 블록이 속한 클래스의 명칭을 정의하는 형태로 이루어진다. 이에 따라, 기능 블록은 실행 과정에서 자신의 명칭 및 해당 클래스의 명칭을 메모리에 별도로 질의할 필요가 없게 되며, 이는 대용량 시스템에서 기능 블록 추가로 인해 서비스 부하가 증가하는 것을 방지한다.Next, the
한편, 코드 삽입부(104)는 바이트 코드 인스트루먼트(Byte Code Instrument) 수단을 통해 측정 코드를 각 기능 블록에 삽입할 수 있다. 바이트 코드 인스트루먼트란 프로그램(150)의 소스 코드(원시 코드)의 수정 없이 프로그램(150)의 실행 단계에서 특정 바이트 코드를 동적으로 삽입하는 기술을 의미한다. On the other hand, the
다음으로, 수집부(106)는 성능 저하 기능 블록으로 판단된 기능 블록의 명칭 및 성능 저하 기능 블록이 속한 클래스의 명칭을 수집한다(S306). 상술한 바와 같이, 해당 기능 블록의 실행 시작 시각과 실행 종료 시각의 차이가 설정된 임계치(예를 들어, 0.0001) 이상이 되는 경우, 측정 코드는 해당 기능 블록의 명칭 및 해당 기능 블록이 속한 클래스의 명칭을 출력하도록 구성될 수 있으며, 수집부(106)는 측정 코드에 의하여 출력된 성능 저하 기능 블록의 명칭 및 성능 저하 기능 블록이 속한 클래스의 명칭을 수집할 수 있다.Next, the collecting
마지막으로, 디스플레이부(108)는 성능 저하 기능 블록의 명칭 및 성능 저하 기능 블록이 속한 클래스의 명칭을 디스플레이한다(308). 이에 따라, 문제가 발생한 기능 블록 및 클래스의 정확한 위치를 사용자에게 제공할 수 있다. 또한, 디스플레이부(108)는 성능 저하 기능 블록의 명칭을 트랜잭션별로 사용자에게 제공할 수 있다.
Finally, the
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의하여 정해져야 한다.
While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, I will understand. Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined by equivalents to the appended claims, as well as the following claims.
100 : 프로그램의 성능 측정 시스템
102 : 전처리부
104 : 코드 삽입부
106 : 수집부
108 : 디스플레이부
150 : 프로그램100: Program performance measurement system
102:
104:
106: collecting section
108:
150: Program
Claims (14)
상기 기능 블록의 성능을 측정하기 위한 측정 코드에 상기 기능 블록의 정보를 정의하는 하나 이상의 명령어를 삽입하고, 상기 명령어가 삽입된 상기 측정 코드를 상기 기능 블록 각각에 삽입하는 코드 삽입부;
상기 프로그램의 실행시 하나 이상의 상기 기능 블록 중 상기 측정 코드에 의하여 성능 저하 기능 블록으로 판단된 기능 블록의 정보 및 상기 성능 저하 기능 블록으로 판단된 기능 블록이 속한 트랜잭션의 명칭을 수집하는 수집부; 및
상기 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 디스플레이하되, 상기 성능 저하 기능 블록으로 판단된 기능 블록의 명칭을 상기 성능 저하 기능 블록으로 판단된 기능 블록이 속한 트랜잭션별로 디스플레이하는 디스플레이부를 포함하는, 프로그램의 성능 측정 시스템.
A preprocessor for obtaining information of a function block including a name of a function block constituting a program and a name of a class to which the function block belongs;
Inserting one or more instructions for defining information of the functional block into a measurement code for measuring the performance of the functional block and inserting the measurement code into which the instruction is inserted into each of the functional blocks;
A collecting unit for collecting information on a functional block judged to be a performance degrading functional block by the measurement code and a name of a transaction to which a functional block judged to be the performance degrading functional block belongs among the one or more functional blocks when the program is executed; And
And a display unit for displaying the information of the functional blocks judged to be the performance degrading functional blocks and displaying the names of the functional blocks judged as the performance degrading functional blocks for each transaction to which the functional blocks determined as the performance degrading functional blocks belong, Program performance measurement system.
상기 측정 코드는, 상기 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하고 상기 차이가 설정된 임계치 이상인 경우 상기 기능 블록을 상기 성능 저하 기능 블록으로 판단하기 위한 하나 이상의 명령어를 포함하는, 프로그램의 성능 측정 시스템.
The method according to claim 1,
Wherein the measurement code includes at least one instruction for calculating a difference between an execution start time and an execution end time of the functional block when the functional block is executed and determining the functional block as the performance reduction functional block when the difference is equal to or greater than a set threshold value And the program performance metric.
상기 코드 삽입부는, 바이트 코드 인스트루먼트(Byte Code Instrument) 수단을 통해 상기 측정 코드를 상기 기능 블록 각각에 삽입하는, 프로그램의 성능 측정 시스템.
The method according to claim 1,
Wherein the code inserting unit inserts the measurement code into each of the functional blocks through a Byte Code Instrument.
코드 삽입부에서, 상기 기능 블록의 성능을 측정하기 위한 측정 코드에 상기 기능 블록의 정보를 정의하는 하나 이상의 명령어를 삽입하고, 상기 명령어가 삽입된 상기 측정 코드를 상기 기능 블록 각각에 삽입하는 단계;
수집부에서, 상기 프로그램의 실행시 하나 이상의 상기 기능 블록 중 상기 측정 코드에 의하여 성능 저하 기능 블록으로 판단된 기능 블록의 정보 및 상기 성능 저하 기능 블록으로 판단된 기능 블록이 속한 트랜잭션의 명칭을 수집하는 단계; 및
디스플레이부에서, 상기 성능 저하 기능 블록으로 판단된 기능 블록의 정보를 디스플레이하되, 상기 성능 저하 기능 블록으로 판단된 기능 블록의 명칭을 상기 성능 저하 기능 블록으로 판단된 기능 블록이 속한 트랜잭션별로 디스플레이하는 단계를 포함하는, 프로그램의 성능 측정 방법.
Acquiring information of a functional block including a name of a functional block constituting a program and a name of a class to which the functional block belongs;
Inserting at least one instruction defining the information of the functional block into a measurement code for measuring the performance of the functional block and inserting the measurement code into which the instruction is inserted into each of the functional blocks,
In the collecting unit, when the program is executed, the information of the functional blocks judged to be the performance degrading functional blocks by the measurement code and the names of the transactions to which the functional blocks determined as the performance degrading functional blocks belong are collected step; And
Displaying the information of the functional blocks judged to be the degraded functional blocks in the display unit and displaying the names of the functional blocks judged to be the degraded functional blocks for each of the transactions to which the functional blocks judged to be the degraded functional blocks belong; / RTI > of a program.
상기 측정 코드는, 상기 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하고 상기 차이가 설정된 임계치 이상인 경우 상기 기능 블록을 상기 성능 저하 기능 블록으로 판단하기 위한 하나 이상의 명령어를 포함하는, 프로그램의 성능 측정 방법.
The method of claim 8,
Wherein the measurement code includes at least one instruction for calculating a difference between an execution start time and an execution end time of the functional block when the functional block is executed and determining the functional block as the performance reduction functional block when the difference is equal to or greater than a set threshold value / RTI > of a program.
상기 측정 코드를 상기 기능 블록 각각에 삽입하는 단계는, 바이트 코드 인스트루먼트(Byte Code Instrument) 수단을 통해 상기 측정 코드를 상기 기능 블록각각에 삽입하는, 프로그램의 성능 측정 방법.
The method of claim 8,
Wherein inserting the measurement code into each of the functional blocks inserts the measurement code into each of the functional blocks through a Byte Code Instrument.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150000774A KR101674787B1 (en) | 2015-01-05 | 2015-01-05 | System and method for measuring performance of program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150000774A KR101674787B1 (en) | 2015-01-05 | 2015-01-05 | System and method for measuring performance of program |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160084560A KR20160084560A (en) | 2016-07-14 |
KR101674787B1 true KR101674787B1 (en) | 2016-11-10 |
Family
ID=56499090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150000774A KR101674787B1 (en) | 2015-01-05 | 2015-01-05 | System and method for measuring performance of program |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101674787B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019109553A1 (en) * | 2017-12-08 | 2019-06-13 | 平安科技(深圳)有限公司 | Functional and performance test script creation method, device, apparatus and storage medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009529742A (en) * | 2006-03-11 | 2009-08-20 | スラム ゲームズ リミテッド | Measurements for real-time performance profiling |
JP4866241B2 (en) * | 2004-08-23 | 2012-02-01 | 株式会社ガイア・システム・ソリューション | Source program analyzer |
JP2014102734A (en) * | 2012-11-21 | 2014-06-05 | Renesas Electronics Corp | Performance verification program, performance verification method, and performance verification device |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100503776B1 (en) | 2005-03-12 | 2005-07-26 | (주)위즈베이스 | Method for analyzing and tuning web application performance |
KR101191790B1 (en) * | 2010-11-02 | 2012-10-16 | 주식회사 엑셈 | Web page providing server and control method thereof |
-
2015
- 2015-01-05 KR KR1020150000774A patent/KR101674787B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4866241B2 (en) * | 2004-08-23 | 2012-02-01 | 株式会社ガイア・システム・ソリューション | Source program analyzer |
JP2009529742A (en) * | 2006-03-11 | 2009-08-20 | スラム ゲームズ リミテッド | Measurements for real-time performance profiling |
JP2014102734A (en) * | 2012-11-21 | 2014-06-05 | Renesas Electronics Corp | Performance verification program, performance verification method, and performance verification device |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019109553A1 (en) * | 2017-12-08 | 2019-06-13 | 平安科技(深圳)有限公司 | Functional and performance test script creation method, device, apparatus and storage medium |
Also Published As
Publication number | Publication date |
---|---|
KR20160084560A (en) | 2016-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7590521B2 (en) | Method and system for probe optimization while instrumenting a program | |
CN106874187B (en) | Code coverage rate collection method and device | |
CN109388566B (en) | Code coverage rate analysis method, device, equipment and storage medium | |
JP5249206B2 (en) | Automated method and system for collecting and reporting API performance profiles | |
US9864676B2 (en) | Bottleneck detector application programming interface | |
US9317400B2 (en) | Code coverage rate determination method and system | |
CN101261604B (en) | Software quality evaluation apparatus and software quality evaluation quantitative analysis method | |
JP3842592B2 (en) | Change risk measurement system, change risk measurement method, and change risk measurement program | |
US20090249305A1 (en) | Super Nested Block Method to Minimize Coverage Testing Overhead | |
CN112035314B (en) | Memory leakage monitoring method and device and electronic equipment | |
CN103186463B (en) | Determine the method and system of the test specification of software | |
JP2010033543A (en) | Software operation monitoring system, client computer, server computer thereof, and program thereof | |
CN106294136B (en) | The online test method and system of performance change between the concurrent program runtime | |
KR101674787B1 (en) | System and method for measuring performance of program | |
US20110218654A1 (en) | Method For Optimizing A Control Program For Actuators | |
US20110239197A1 (en) | Instance-based field affinity optimization | |
Reimann et al. | Quality-aware refactoring for early detection and resolution of energy deficiencies | |
GB2560749A (en) | Trace data representation | |
CN111291239A (en) | Unit testing method, device, equipment and storage medium | |
JP2009217617A (en) | Method and device for identifying memory leak place | |
CN107665166B (en) | Function detection method and system of information system | |
US9262251B1 (en) | Detecting memory failures in computing systems | |
CN110990265B (en) | Coverage rate determining method, coverage rate determining device and storage medium | |
RU2424564C2 (en) | Method of monitoring computer system | |
JP2009015734A (en) | Program profiling device, program profiling method and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |