KR20070121649A - 소프트웨어 프로그램의 성능분석 방법 및 장치 - Google Patents

소프트웨어 프로그램의 성능분석 방법 및 장치 Download PDF

Info

Publication number
KR20070121649A
KR20070121649A KR1020077020280A KR20077020280A KR20070121649A KR 20070121649 A KR20070121649 A KR 20070121649A KR 1020077020280 A KR1020077020280 A KR 1020077020280A KR 20077020280 A KR20077020280 A KR 20077020280A KR 20070121649 A KR20070121649 A KR 20070121649A
Authority
KR
South Korea
Prior art keywords
thread
threads
display
software program
event
Prior art date
Application number
KR1020077020280A
Other languages
English (en)
Inventor
스티븐 엠. 캐롤
에릭 씨. 리
사이몬 메캠
Original Assignee
마이크로소프트 코포레이션
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 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20070121649A publication Critical patent/KR20070121649A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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
    • G06F11/3419Recording 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 by assessing time
    • G06F11/3423Recording 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 by assessing time where the assessed time is active or idle time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

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

소프트웨어의 성능 테스트 정보를 표시하는 시스템이 제공된다. 이 시스템은 성능 문제와 그 원인을 쉽게 알아 낼 수 있는 형식으로 정보를 표시하는 그래픽 사용자 인터페이스를 포함한다. 그래픽 사용자 인터페이스는 테스트 대상 프로그램의 실행 중에 활동 수준을 나타내는 타임 라인 뷰를 포함한다. 프로그램 실행 중 시간 서브 레인지 동안의 이벤트는 프로그램을 구성하는 스레드의 상호 작용을 나타내는 정보와 함께 표시될 수 있다. 다른 표시 필드에는 텍스트 정보를 포함하는 추가 정보가 표시될 수 있다. 표시된 정보 중 많은 부분은 그래픽으로 나타내므로, 성능 엔지니어는 프로그램 중에서 더 조사해야 할 영역을 신속하게 찾아낼 수가 있다.
스레드, 소프트웨어의 성능 테스트, 그래픽 표현, 타임 라인 필드

Description

소프트웨어 프로그램의 성능분석 방법 및 장치{METHOD AND APPARATUS FOR PERFORMANCE ANALYSIS ON A SOFTWARE PROGRAM}
본 발명은 일반적으로 소프트웨어 개발에 관한 것으로, 특히 소프트웨어 프로그램의 성능분석에 관한 것이다.
일반적으로 소프트웨어 프로그램은 개발 도중에 테스트된다. 종래, 테스트 작업은 소프트웨어 프로그램이 의도한 대로 그 기능을 수행하는 지를 검증하기 위해 실시되었다. 소프트웨어 프로그램이 점점 복잡해짐에 따라, 성능 테스트도 개발 주기의 중요한 요소가 되고 있다. 성능 테스트는 "성능 엔지니어링(performance engineering)" 활동을 지원한다. "성능 엔지니어링" 활동이란 프로그램 중에 프로그램 실행을 지연시키는 부분을 찾아내어 다시 프로그래밍하여 프로그램 실행 시간을 단축시키는 것을 말한다.
성능 테스트 작업은 종종 "프로브"를 테스트 대상 프로그램 내에 삽입하여 실시된다. 프로브는 프로그램 실행 시에 데이터를 로그 파일에 써 넣는 단순한 기능을 말한다. 그러면, 로그 파일 속의 데이터가 분석되어 프로그램 동작의 여러 가지 특성을 판단할 수 있게 된다.
종래의 성능 분석 도구는 로그 파일 속의 데이터를 이용하여 테스트 대상 소 프트웨어 프로그램의 전체적인 실행 모습을 보여준다. 예컨대, 로그 파일 내의 데이터를 이용하여 테스트 대상 소프트웨어 프로그램 내의 각 기능의 실행 횟수를 판단할 수 있다. 그와 같은 정보를 통해 성능 엔지니어는 예컨대 의도한 횟수보다 더 실행된 루프 내에 특정 기능이 들어 있음을 알 수 있게 된다. 이것은 예컨대 프로그램을 재구성하여 루프의 실행 횟수를 줄임으로써 프로그램의 성능을 개선할 수 있음을 의미할 수 있다.
데이터의 전체적 모습도 각 기능의 평균 실행 시간을 나타낼 수 있다. 특정 기능의 평균 실행 시간이 예상 실행 시간을 많이 초과하는 경우에는 성능 엔지니어는 어떤 이벤트가 그 기능의 실행을 방해하고 있는 지를 조사할 수 있다.
테스트 대상 소프트웨어의 성능 데이터를 이 데이터를 검토할 성능 엔지니어에게 보여주는 도구가 이용되어 왔다. 이러한 도구를 통해 예컨대 성능 엔지니어는 여러 가지 종류의 전체 데이터 중에서 선택할 수가 있어 테스트 대상 소프트웨어 프로그램의 여러 양상을 조사할 수가 있다. 이와 같은 도구는 성능 엔지니어가 테스트 대상 소프트웨어 프로그램의 활동 수준을 볼 수 있도록 해주는 타임라인 뷰(timeline view)를 포함하고 있다.
본 발명은 테스트 대상 소프트웨어 프로그램의 성능 데이터를 제공하는 사용자 인터페이스에 관한 것이다. 성능 엔지니어나 기타 사용자는 이 사용자 인터페이스를 통해 성능 데이터의 표시(presentation)를 조작하여 테스트 대상 소프트웨어 프로그램 중에서 성능 문제를 일으킬 수 있는 부분을 아주 쉽게 찾아낼 수 있다.
본 발명의 일 양상으로서, 본 발명은 테스트 대상 소프트웨어 프로그램에 관한 성능 정보를 표시하는 방법에 관한 것이다. 이 방법은 테스트 대상 소프트웨어 프로그램이 실행되는 타임 레인지(time range)의 표현을 제1 표시 영역에 표시하는 단계를 포함한다. 제1 표시 영역에 표시된 타임 레인지의 지시부(indicated portion)를 나타내는 사용자 입력은 사용자 인터페이스 장치를 통해 입력된다. 제2 표시 영역에는 복수의 그래픽 지시자(indicators)가 표시된다. 그래픽 표시자 각각은 타임 레인지의 서브 레인지(sub-range) 동안의 복수의 스레드(threads) 중 어느 하나의 실행 시의 이벤트(events)를 나타낸다. 서브 레인지는 제1 표시 영역에 표시된 타임 레인지의 지시부를 포함한다.
본 발명의 다른 양상으로서, 본 발명은 테스트 대상 소프트웨어 프로그램에서 복수의 스레드에 대한 성능 정보가 표현된 디스플레이 장치에 관한 것이다. 상기 성능 정보는, 상기 복수의 스레드 각각에 대해, 상기 스레드의 동작을 나타내는 스레드 영역을 포함한다. 상기 스레드 영역은 적어도 하나의 표시자를 구비하고, 상기 표시자는 상기 스레드의 동작 이벤트를 나타내고, 상기 복수의 스레드에 대한 스레드 영역들 내의 표시자들이 상기 복수의 스레드 내의 동작 이벤트들의 시간적 상관을 나타내도록 상기 복수의 스레드 각각에 대한 상기 스레드 영역의 위치를 설정한다.
본 발명의 또 다른 양상으로서, 본 발명은 복수의 스레드에서 실행될 수 있는 테스트 대상 소프트웨어 프로그램의 성능을 분석하기 위한 컴퓨터 실행가능 요소를 가진 컴퓨터 판독 매체에 관한 것이다. 상기 컴퓨터 실행가능 요소는, 테스트 대상 소프트웨어 프로그램에서 상기 복수의 스레드의 실행 데이터를 수집할 수 있는 데이터 수집 요소; 상기 복수의 스레드에 대한 실행 정보를 얻기 위해 상기 수집된 데이터를 분석할 수 있는 분석 요소; 및 상기 복수의 스레드들 중 적어도 일부분에 대한 실행 정보를 사람이 지각할 수 있는 형태로 표시할 수 있는 보고(reporting) 요소를 포함하되, 상기 사람이 지각할 수 있는 형태는 상기 일부분에서 상기 복수의 스레드 각각에 대해 실행 정보를 시간 함수로 나타낸 그래픽 표현을 포함하며, 상기 일부분에서의 상기 복수의 스레드 각각의 상기 그래픽 표현은 상기 일부분에서의 상기 복수의 스레드 각각에서 이벤트들을 시간적으로 상관시키는 형식으로 표시된다.
첨부 도면은 일정한 비례로 확대 또는 축소되어 도시한 것은 아니다. 도면 중 동일 또는 유사한 구성요소에 대해서는 동일 도면 부호가 병기된다. 도면에 있어서 복잡함을 피하기 위해 일부 구성요소에 대해서는 도면 부호를 병기하지 않을 수도 있다.
도 1은 개발 환경을 나타낸 도;
도 2는 도 1의 개발 환경에서 사용자 인터페이스를 나타낸 도;
도 3은 다른 동작 상태에서의 도 2의 사용자 인터페이스를 나타낸 도;
도 4는 도 1의 개발 환경에서 사용자 인터페이스의 다른 실시예를 나타낸 도; 및
도 5는 다른 동작 상태에서의 도 4의 사용자 인터페이스를 나타낸 도.
성능 분석에 이용될 수 있는 개선된 성능 분석 도구가 제공된다. 이 도구는 성능 분석 정보를 여러 가지 형식으로 나타내며, 이 도구를 이용하여 여러 가지 형식의 데이터를 나타내는 표시 영역들을 구성할 수가 있다. 이러한 구성 능력을 통해 성능 엔지니어와 같은 사용자는 테스트 대상 프로그램 중에서 성능 문제를 일으킬 수 있는 부분을 찾아 내어, "드릴 다운(drill down)"하면서 성능 문제의 원인을 찾아 낼수 있다.
도 1은 이와 같은 도구가 이용될 수 있는 개발 환경(100)을 블록도 형태로 도시한 것이다. 개발 환경(100)은 예컨대 컴퓨터 워크스테이션이나 서버, 네트워크로 연결된 컴퓨터 그룹, 또는 프로그램 실행 능력을 갖춘 임의의 적당한 플랫폼 내에서 만들어질 수 있다.
테스트 대상 프로그램(110)은 여기서는 복수의 프로세스로 이루어진 것으로 도시되어 있다. 도 1의 예에서는 프로세스들(1121, 1122, 1123)이 도시되어 있다. 테스트 대상 프로그램(110)의 프로세스 수는 본 발명에서 특별히 제한되는 것은 아니지만, 본 발명은 많은 수의 프로세스를 포함하는 테스트 대상 프로그램의 성능을 분석하는데 아주 유용하다.
각 프로세스는 "스레드"를 실행할 수 있다. 스레드는 대부분의 경우에 프로세스 내에서 실행되는 프로그램의 일부이다. 그러므로 프로세스와 스레드는 서로 밀접하게 관련된 개념이다. 각 스레드는 일련의 펑션 콜(function calls)과 여러 가지 프로그램 이벤트들을 갖고 있다.
프로세스들은 각자의 프로세서에서 실행될 수 있다. 반면에 프로세스들은 하나의 프로세서에서 생성될 수 있다. 프로세스들 간에는 프로세서 자원을 공유하며, 임의의 주어진 시간에 작동하는 모든 스레드들은 교대로 프로세서 사이클을 소비한다. 하나의 프로세스가 한 번에 여러 개의 프로세서 사이클을 소비하고 있더라도 하나의 프로세서에서 여러 개의 스레드가 "가상적으로" 작동될 수 있다.
이와 달리, 어떤 스레드는 가용 프로세서의 수에 상관없이 "차단(blocked)"될 수 있다. 멀티프로세스 시스템은 개별 프로세스들에서 실행되는 스레드들 간의 데이터 교환을 위한 메커니즘을 포함한다. 어떤 스레드가 다른 스레드와 데이터를 교환할 필요가 있는 경우에, 이 두 개의 스레드는 동시에 데이터를 교환할 준비가 되어 있지 않을 수가 있다. 따라서, 하나의 스레드는 데이터 교환을 시작할 수 있는 시점까지 다른 스레드가 실행될 때까지 기다리고 있어야 한다. 하나의 스레드가 데이터를 교환하기 위해 또는 다른 기능을 수행하기 위하여 다른 스레드가 실행될 때까지 기다리고 있다면, 이는 그 스레드가 "차단"되어 있다고 말한다. 중요한 이벤트에서의 스레드의 "차단"은 프로그램의 성능에 영향을 줄 수 있다.
도 1에 도시된 예에서, 프로세스들(1121, 1122, 1123) 각각은 종래 기술에서도 볼 수 있는 것처럼 프로브 기능(probe function)을 갖고 있다. 테스트 대상 프로그램(110)이 실행되면, 프로브 기능은 데이터를 데이터 파일(120)에 써 놓는다. 본 실시예에서, 데이터 파일(120)은 복수의 버퍼(1221, 1222, ..., 1225)로 구성된다. 본 실시예에서, 테스트 대상 프로그램(110)의 프로세스 각각에 하나의 버퍼가 구비된다.
테스트 대상 프로그램(110)이 실행되면, 프로세스들(1121, 1122, 1123)에 내장된 프로브들이 실행된다. 프로세스들 내의 프로브들은 데이터 값을 프로세스와 연관된 버퍼 내에 써 넣는다. 이런 식으로, 버퍼(1221, 1222, 1223) 각각은 프로세스가 실행됨에 따라 프로세스 내에서 발생하는 이벤트들의 정렬된 리스트를 포함한다. 스레드와 프로세스 간의 관계때문에, 이 정보는 이벤트가 연관되어 있는 스레드를 찾아 내는데 이용될 수도 있다. 본 실시예에서, 버퍼 내에 써 넣어진 각 이벤트는 이벤트 발생 시간과 이벤트 표시를 포함한다.
본 실시예에서, 테스트 대상 프로그램(110)은 소정의 애플리케이션 프로그래밍 인터페이스(API)를 통한 호출(calls)에 따라 이벤트가 버퍼 내에 기록되게끔 구성된다. 본 예에서, 소정의 API를 통한 호출은 버퍼(1224)에 기록된다. 버퍼(1224)는 호출된 API 부분을 찾아 내는 정보, 그 호출을 한 프로세스, 및 그 호출 시간을 저장한다.
테스트 대상 프로그램(110)은 운영 체제(114)를 포함하는 플랫폼에서 실행되고 있다. 본 실시예에서, 운영 체제(114)도 여러 가지 이벤트를 데이터 파일(120)에 써 넣도록 구성되어 있다. 예외 조건(exception condition)이나 디스크 액세스 와 같은 소정의 이벤트는 이벤트 표시를 데이터 파일(120) 내에 써 넣도록 운영 체제(114) 내에 프로그램될 수 있다. 그와 같은 이벤트가 발생하면, 이벤트 표시는 버퍼(1225) 내로 써 넣어진다. 이벤트 표시는 발생된 특정 이벤트의 식별자(identifier), 이벤트 발생 시간, 및 이벤트를 발생시킨 스레드의 프로세스를 포함할 수 있다.
도 1은 테스트 대상 소프트웨어 프로그램의 실행 중에 캡쳐될(captured) 수 있는 이벤트 종류의 예를 보여주고 있다. 본 발명의 일 실시예에 따라서, 여러 가지 종류의 이벤트가 사용자가 이용하기 쉽도록 표시될 수 있다. 예컨대, SQL 이벤트, OS 커널(kernel) 이벤트, 웹 서버 이벤트, 기타 원하는 종류의 이벤트가 데이터 파일(120) 내로 캡쳐되어, 후에 분석되어 표시될 수 있다.
본 실시예에서, 데이터 파일(120)에 저장된 데이터는 프로그램(110)이 실행된 후에 분석된다. 이 분석은 분석 프로그램(130)에 의해 수행된다. 상기 실시예에서, 분석 프로그램(130)은 버퍼(1221,..., 1225) 각각에 저장된 이벤트 발생 시간들을 서로 상관시킨다. 버퍼 각각에 저장된 이벤트 발생 시간들을 서로 상관시키는데는 여러 가지 방법이 가능하다. 상기 실시예에서는, 인덱스(index)가 생성된다. 인덱스는 테스트 대상 프로그램(110)의 실행 중에 버퍼 내의 어느 엔트리(entry)가 특정 시간에 대응하는 가를 나타낸다. 이런 식으로, 분석된 데이터가 처리됨에 따라, 분석 프로그램(130)은 테스트 대상 프로그램(110)의 실행 중에 특정 시점에 대응하는 각 버퍼로부터의 데이터에 신속히 액세스할 수 있다. 인덱스 는 특정 시각에서 발생하는 이벤트에 대응하는 각 버퍼의 저장 위치의 추정치를 나타낼 수 있도록 적응적으로 생성될 수 있다. 데이터 파일(120)이 처리됨에 따라, 이들 추정치들은 갱신될 수 있다. 그러나, 인덱스를 생성하는데는 다른 적당한 방식을 이용해도 된다.
데이터 파일(120)에 저장된 데이터를 인덱싱하게 되면, 분석 프로그램(130)은 공통의 타임 프레임(time frame)에 관련된 여러 가지 서로 다른 프로세스들 내의 이벤트들을 보여주도록 사용자 인터페이스(140) 상에 표시하기 위해 데이터를 신속하게 포맷할 수가 있다. 서로 다른 프로세스들 또는 스레드들 내의 이벤트들을 서로 상관시키는데는 시간이 절대 기준에 대해 추적될(tracked) 필요가 없다. 오히려, 시간은 테스트 대상 프로그램(110)의 실행 시작 또는 다른 편리한 시점에 대해 추적되어도 된다. 시간은 예컨대 테스트 대상 프로그램(110)이 실행되는 프로세서에 내장된 시계 소리로 추적될 수 있다.
본 실시예에서, 사용자 인터페이스(140)는 컴퓨터 워크스테이션의 일부분이다. 그러나, 임의의 적당한 사용자 인터페이스 장치도 이용될 수 있다. 본 예에서, 사용자 인터페이스(140)는 출력 메카니즘을 제공하는 디스플레이(142)를 포함한다. 디스플레이(142)는 예컨대 출력을 사용자에게 제공할 수 있는 CRT나 TFT 디스플레이일 수 있다. 다른 형태의 출력 장치도 이용될 수 있다. 예컨대, 그래픽 출력은 프린트되거나 스크린 상에 투영될 수 있다. 이와 달리, 출력을 다른 프로그램이나 시스템으로 보내, 거기서 분석한 후에 분석된 정보를 사용자에게 제공할 수도 있다.
사용자 인터페이스(140)는 사용자 인터페이스 선택 장치도 포함한다. 이 사용자 인터페이스 선택 장치를 이용하여 사용자는 분석 프로그램(130)의 동작을 제어할 수 있는 사용자 인터페이스(140)를 통해 입력을 제공할 수 있다. 도시된 실시예에서, 사용자 인터페이스(140)는 사용자 인터페이스(140)를 통해 사용자 입력을 제공하는데 이용될 수 있는 마우스(146)를 포함한다. 전통적인 데스크톱 컴퓨터에서처럼, 사용자는 마우스(146)를 조작하여 커서를 디스플레이(142) 상에 위치시키고, 마우스 버튼을 작동시켜(즉, "클릭"하여) 디스플레이(142) 상의 입력 항목을 선택할 수 있다. 사용자 인터페이스(140)는 버튼이 눌러진 시각에서의 위치에 기초하여 프로그램 객체(object)를 불러낼 수 있다.
키보드(144)도 단독으로 또는 마우스와 함께 사용자 인터페이스 장치로서 이용될 수 있다. 사용자는 키보드(144)를 이용하여 사용자 인터페이스(140)를 통해 입력을 제공하기에 적합한 명령, 변수 기타 정보를 입력한다. 상기 실시예에서, 사용자 입력은 분석 프로그램(130)을 제어하여 디스플레이(142) 상에 원하는 표시를 제공한다.
도 2는 분석 프로그램(130)에 의해 생성되어 디스플레이(142) 상에 표시되어, 테스트 대상 소프트웨어 프로그램의 실행 중에 수집된 데이터를 사용자에게 보여줄 수 있는 사용자 인터페이스(210)의 예를 보여준다. 도 2의 실시예에서, 사용자 인터페이스(210)는 다수의 영역을 포함한다. 본 실시예에서, 영역들은 논리적으로 연관된 정보를 그룹으로 묶는데 이용된다. 예컨대, 메뉴 바(212)는 사용자가 사용자 인터페이스(210)의 정보나 기능을 제어하기 위해 액세스할 수 있는 명령의 위치를 찾기 위한 영역으로서 제공된다. 메뉴 바(210)에 포함된 명령은 특정 파일을 열거나 닫는 명령과 같이 종래의 그래픽 사용자 인터페이스에서 이용된 것과 같은 명령일 수 있다. 명령은 사용자 인터페이스(210)의 나머지 부분에 표시된 정보를 제어하거나, 테스트 대상 소프트웨어 프로그램의 실행 중에 수집된 성능 데이터를 표시하는데 이용된 사용자 인터페이스에 특정된 동작을 제어할 수도 있다.
도 2에 도시된 실시예에서, 사용자 인터페이스(210)는 테스트 대상 소프트웨어 프로그램(110)에 대한 논리적으로 서로 연관된 각종 정보가 표시된 3개의 영역을 갖고 있다. 이들 영역은 타임 라인 필드(220), 스레드 보기 필드(230) 및 텍스트 보기 필드(260)를 포함한다.
타임 라인 필드(220)는 테스트 대상 소프트웨어 프로그램(110)의 실행 중의 활동 수준의 그래픽 표현을 포함한다. 본 실시예에서, 활동 수준은 타임 라인 필드(220) 내에 음영으로서 나타나 있다. 예컨대, 영역(222)은 영역(224)보다 음영이 더 엷다. 이러한 음영은 영역(222)으로 나타낸 시간 중에 발생한 활동 수준은 영역(224)으로 나타낸 시간 중에 발생한 활동 수준보다 낮다는 것을 보여준다.
본 예에서, 테스트 대상 소프트웨어 프로그램(110)의 전체 실행은 좌측에서 우측으로 이동하는 타임 라인으로 나타나 있다. 이와 같은 활동 수준은 다른 적당한 형태를 이용하여 표현할 수도 있다. 예컨대, 서로 다른 여러 가지 색깔을 이용하여 여러 가지 활동 수준을 나타낼 수 있다. 또한, 타임 라인 필드(220)로 나타낸 타임 라인은 히스토그램으로 표현될 수도 있는데, 이 경우에는, 타임 라인의 표시 높이가 테스트 대상 소프트웨어 프로그램(110)의 실행 중의 특정 시각에서의 활 동 수준을 나타낸다.
활동 수준은 임의의 적당한 방식으로 측정될 수 있다. 실행되고 있는 프로그램이 소비하는 CPU 시간 비율을 추적하는 프로세스 모니터가 당 기술 분야에 공지되어 있는데, 이것은, 예컨대 활동 수준을 나타내는 도면 부호 220과 같은 타임 라인 필드를 발생시키는 데이터를 생성하는데 이용될 수 있다. 본 실시예에서, 타임 라인(220)은 테스트 대상 소프트웨어 프로그램(110)의 일부분을 실행시키는 모든 프로세스(1121, 1122,1123)의 전체 활동을 나타낸다. 본 예에서, 타임 라인 필드(220)는 운영 체제(114)의 일부인 프로그램 실행 프로세스에서의 활동에 대한 정보는 포함하지 않는다.
타임 라인 필드(220)는 시간 표시자(time indicator)(226)를 포함한다. 시간 표시자(226)는 사용자 작동 제어부이다. 예컨대, 시간 표시자(226)는 사용자 작동 마우스(146)(도 1)를 이용하여 선택될 수 있다. 그러면, 사용자는 마우스(146)를 조작하여, 프로그램 인터페이스에서 흔히 이용되는 바와 같이, 시간 표시자(226)를 드래그하여 타임 라인 필드(220) 상의 원하는 지점에 드롭한다. 이런 식으로, 사용자는 데이터 파일(120)(도 1)에 저장된 데이터의 일부를 특정하여 더 조사할 수 있게 된다. 특히, 시간 표시자(226)에 의해 특정된 실행 시간의 서브 레인지 동안에 수집된 데이터는 스레드 보기 필드(230)에서 더 상세히 표시될 수 있다.
도시된 바와 같이, 시간 표시자(226)는 하나의 시간을 특정한다. 사용자가 스레드 보기 필드(230)에서의 표시를 위해 타임 레인지를 특정할 수 있는 여러 가지 실시예가 가능하다. 본 예에서, 스레드 보기 필드(230)는 시간 표시자(226)가 표시하는 시간을 중심으로 시간의 서브 레인지에서 테스트 대상 소프트웨어 프로그램(110)의 동작에 대한 정보를 포함한다. 그러나 임의의 다른 적당한 방식도 이용될 수 있다. 예컨대, 타임 라인 필드(220)는 복수의 시간 표시자를 포함할 수 있는데, 이 경우, 예컨대 첫 번째 시간 표시자는 스레드 보기 필드(230)에서 표시될 구간의 시작 시각을 나타내고, 두 번째 시간 표시자는 스레드 보기 필드(230)에서 표시될 구간의 종료 시각을 나타낸다.
스레드 보기 필드(230)에서 표시되는 시간의 서브 레인지를 나타내는데 이용되는 특정 메카니즘에 상관없이, 스레드 보기 필드(230)는 선택된 구간 동안에 테스트 대상 소프트웨어 프로그램(110)의 일부로서 실행되는 스레드 내의 이벤트의 그래픽 표현을 포함한다. 도 2에 도시된 실시예에서, 각 스레드는 영역으로 나타나 있는데, 여기서는 트레이스 바(trace bar)(2401, 2402,..., 2409)로서 도시되어 있다. 도 2에는 9개의 스레드가 도시되어 있다. 본 발명에서는 이벤트가 도시된 스레드의 수는 특별히 제한되는 것은 아니다.
각 스레드 내의 이벤트들은 해당 트레이스 바 내에 그래픽으로 나타나 있다. 여러 가지 종류의 이벤트가 나타나 있다. 이벤트의 수와 종류는 예시적인 것이며, 임의 수와 종류의 이벤트가 표시될 수 있다.
도 2에 도시된 실시예에서, 트레이스 바(2401, 2402,..., 2409) 각각은 대응 하는 스레드가 존재하는 시간을 나타낸다. 테스트 대상 프로그램(110)의 동작 시에 스레드는 여러 가지 시각에서 시작되고 종료될 수 있는데, 이 상황은 스레드 보기 필드(230)에서 그래픽으로 나타낼 수 있다.
또한, 스레드가 존재한다 하더라도, 스레드가 존재하는 시간의 일부 동안에만 스레드가 활동할 수도 있다. 다른 임의의 적당한 방식에 따라 스레드 활동이 측정될 수도 있다. 그러나, 본 실시예에서, 스레드가 실행되고 있다면, 그 스레드가 한정된 수의 프로세서를 가진 시스템에서 다수의 프로세스의 스케쥴링 때문에 CPU 사이클을 능동적으로 소비하고 있지 않더라도, 그 스레드는 "작동(active)" 상태에 있다고 간주된다. 사용자 인터페이스(210)에서, 트레이스 바(2401, 2402,..., 2409)는 해당 스레드가 작동 또는 차단되는 기간을 시각적으로 나타내도록 되어 있다. 작동 또는 차단 기간을 나타내는데는 다른 적당한 방법을 이용할 수 있다. 본 예에서, 작동 표시자(242)와 같은 작동 표시자는 특정 트레이스 바와 중첩되어 해당 스레드가 작동하는 기간을 나타낸다. 반대로, 차단 구간(254)에서와 같이 작동 표시자가 없는 경우에는 해당 스레드는 특정 구간 동안 차단된다.
스레드 보기 필드(230)에는 다른 이벤트들도 그래픽으로 나타낼 수 있다. 본 예에서는 도면 부호 244와 같은 사용자 마크가 도시되어 있다. 도 1과 관련하여 전술한 바와 같이, 테스트 대상 소프트웨어 프로그램(110) 내의 이벤트들이 기록될 수 있다. 본 예에서, 사용자 마크(244) 각각은 호출이 테스트 대상 소프트웨어 프로그램(110)의 API 내의 기능에 위치해 있었던 그래픽 표시이다. 마찬가지로 시스템 마크(250)는 운영 체제(114)에 의해 추적된 이벤트들 중 하나의 발생을 나타낸다. 본 예에서, 시스템 마크(250)는 사용자 마크(244)와 시각적으로 구분될 수 있다. 색상, 형태 또는 위치 선정은 마크 종류에 따라 다르게 이용될 수 있다. 도 2에는 다수의 사용자 마크가 나타나 있다. 사용자 마크는 모두 동일한 그래픽 기호로 표시되어 있는데, 이는 동일 이벤트가 여러 번 발생할 수 있음을 나타낸다. 여러 가지 서로 다른 종류의 사용자 마크도 동일 또는 상이한 그래픽 기호로 나타낼 수 있다.
스레드 보기 필드(230)는 타임 스케일(time scale)(232)을 포함한다. 각 트레이스 바(2401, 2402,..., 2409) 내의 이벤트들은 타임 스케일(232)과 상관된다. 따라서 트레이스 바 내의 이벤트들도 서로 상관된다. 스레드 보기 필드(230)를 좌우로 읽으면, 한번에 스레드들 내에서 발생하는 이벤트들을 비교할 수 있다. 스레드 보기 필드(230)를 아래로 읽으면, 일련의 이벤트들이 나타난다.
타임 스케일(232)은 타임 라인 필드(220)이 나타내는 시간의 서브 레인지를 표시한다. 표시된 특정 서브 레인지는 사용자 조작 시간 표시자(226)를 이용하여 선택할 수 있다. 또한, 스레드 보기 필드(230)는 스크롤바(252)를 포함한다. 스크롤바는 표시되는 시간의 서브 레인지를 선택하는 다른 메카니즘을 제공한다. 스크롤바(262)는 그래픽 사용자 인터페이스에서 이용되는 현재 공지되어 있거나 장래 개발될 종류의 제어부일 수 있다. 스크롤바(252)를 이용하여 사용자는 스레드 보기 필드(230)에 표시된 시간 서브 레인지를 더 앞의 시간 또는 더 뒤의 시간으로 이동시킬 수 있다. 본 실시예에서, 시간 표시자(226)와 스크롤바(252)는 서로 상관된 제어부인데, 이는 시간 표시자(226)와 스크롤바(252) 중 어느 하나를 조정하면 스레드 보기 필드(230)에 표시된 시간 서브 레인지의 중심점을 조정할 수 있다는 것을 의미한다.
스레드 내의 이벤트들은 상관적으로 표시할 수 있게 되면, 사용자는 테스트 대상 프로그램(110)이 실행될 때 그 프로그램(110) 중에서 성능 문제를 일으킬 수 있는 부분을 쉽게 찾아낼 수가 있다. 예컨대, 도 2는 스레드 3은 비교적 짧은 기간 동안 작동한 다음에 작동을 중지한다. 스레드 3의 비작동 기간 동안에는 스레드 4가 비교적 긴 기간 동안 작동된다. 그 후, 스레드 4는 작동을 중지하고 스레드 3이 다시 작동된다. 이런 패턴은 예컨대 스레드 4를 기다리고 있는 동안에는 스레드 3이 차단됨을 사용자에게 보여 줄 수 있다. 이런 패턴은 스레드 4가 실행되는데 걸리는 시간을 조사하거나, 스레드 4를 기다리는 동안에 스레드 3이 실제로 차단되는 지를 조사함으로써 프로그램의 전체 성능을 향상시킬 수 있음을 보여 줄 수 있다. 이와 같은 시나리오는 전체 통계(aggregated statistics)만을 보여주는 것 만으로는 명백하게 나타낼 수 없다. 전체 통계는 스레드 3이 긴 실행 시간을 갖고 있는 것을 보여 주긴 해도 그 원인을 밝혀주지는 못한다.
도 2는 사용자 인터페이스(210)가 여러 가지 스레드의 실행에 대해 추가 정보를 얻을 수 있는 텍스트 보기(textview) 필드(260)를 포함하고 있는 것을 보여 주고 있다. 본 실시예에서는, 스레드 3과 스레드 4가 텍스트 보기 필드(260)에서 하이라이트되어 있다. 상기 실시예에서, 사용자는 텍스트 보기 필드(260)에서 표 시될 필드를 선택한다. 그러나, 텍스트 보기 필드(260)에서 표시될 스레드를 선택하는데는 임의의 적당한 방법이 이용될 수 있다. 예컨대, 사용자는 마우스(146)의 버튼을 이용하여, 스레드 보기 필드(220)에 나타난 스레드들 중 하나에 대한 속성(properties) 메뉴에 액세스하여 텍스트 보기 필드(260)에서 표시되어야 할 스레드를 그 메뉴에서 선택할 수 있다. 다른 예로서, 사용자는 마우스(146)를 이용하여 원하는 필드를 나타내는 트레이스바를 드래그하여 텍스트 보기 필드(260) 내에 드롭할 수 있다.
텍스트 보기 필드(260)에 표시하기 위해 선택된 각 스레드는 도면 부호 2641이나 2642와 같은 이벤트 트레이스로 나타낸다. 각 이벤트 트레이스는 이벤트 트레이스로 묘사된 스레드 내의 이벤트 리스트를 포함한다. 본 예에서, 이벤트 트레이스(2641 또는 2642)에 수록된 이벤트는, 스레드에 의해 개시된 특정 API호출이나 운영 체제 유틸리티 액세스와 같이, 스레드로부터 행해진 기능 호출과 마크 이벤트를 나타낸다. 그러나, 임의의 원하는 종류의 이벤트가 표시될 수도 있다. 예컨대, 도 2에 도시된 이벤트 대신에 또는 이에 부가하여 SQL 이벤트, OS 이벤트, 웹 서버 이벤트 등이 표시될 수 있다.
텍스트 보기 필드(260)는 타임 스케일(262)을 포함한다. 타임 스케일(262)은 텍스트 보기 필드(260)에서 묘사된 이벤트 트레이스가 테스트 대상 소프트웨어 프로그램(110)이 실행되는 시간 서브 레인지 내의 이벤트를 기술하고 있는 것을 보여 준다. 텍스트 보기 필드(260)에서 묘사된 시간 서브 레인지는 스레드 보기 필 드(230)에서 묘사된 시간 서브 레인지와 동일한 것일 수 있다. 그러나, 도 2의 예에서는, 텍스트 보기 필드(260)는 텍스트 보기 필드(260)에서 묘사된 시간 서브 레인지의 중점을 조정하기 위해 사용자 입력에 의해 조작될 수 있는 스크롤바(264)를 포함한다.
여기서 타임 스케일(262)은 불연속적인 것으로 나타나 있다. 본 실시예에서, 이벤트가 표시를 위해 이용 가능할 때에만 텍스트 보기 필드(260)에 엔트리가 행해진다. 이런 식으로, 연속한 이벤트 발생 시간들 간에 차이가 있더라도 그 연속한 이벤트들은 서로 인접하여 표시된다.
도 2의 예에서, 스레드 보기 필드(230)와 텍스트 보기 필드(260)는 동시에 표시되기는 하나 그 크기는 서로 다르다. 본 실시예에서, 이들 필드는 종래의 사용자 인터페이스에서 이용된 것과 같은 표시 영역으로서 구현되며, 임의의 적당한 방식으로 그 크기를 조정하여 각 윈도우 내에 나타난 데이터의 량을 증감시킬 수 있다. 또한, 도시된 실시예는 타임 라인 필드(220), 텍스트 보기 필드(260) 및 트레이스 보기 필드(230)를 디스플레이 상에 동시에 나타낸다. 각 필드를 서로 다른 시각에 표시할 수 있으며, 이들 필드를 임의의 원하는 조합으로 동시에 표시할 수도 있다.
텍스트 보기 필드(260)는 테스트 대상 소프트웨어 프로그램(110)의 성능 분석을 용이하게 할 수 있다. 도시된 예에서, 스레드 3에 대한 이벤트 트레이스(2641)는 시각 6에서 스레드 3이 다른 스레드를 기다리고 있는 것을 확인한다. 텍스트 보기 필드(260)에서 이용될 수 있는 추가적인 세부 사항은 스레드 3이 기다리고 있고, 그에 이어서 쓰기 데이터 기능이 시각 5에서 실행되는 것을 보여 준다. 이벤트 트레이스(2642)는 스레드 4가 쓰기 데이터와 연관된 여러 가지 동작을 수행하고 있는 것을 보여 준다. 이벤트 트레이스(2641)는 스레드 4가 시각 10에서 시작하여 _STRLEN 함수를 실행하는데 상당한 시간을 쓰고 있음을 보여 준다. 이 정보에 따라서 사용자는 테스트 대상 프로그램(110)이 가진 성능 문제를 신속하게 찾아낼 수가 있다.
프로그램 실해의 스레드 보기와 이벤트 트레이스를 함께 표시함으로써 성능 엔지니어는 문제의 근원을 신속하게 찾아 낼 수 있다. 특정 영역을 찾아 내어 더 조사하는데는 그래픽 표현이 이용될 수 있으며, 그 특정 영역의 세부 사항은 텍스트 형태로 제공될 수 있다. 더욱이 각 필드에 나타난 시간 서브 레인지를 변경할 수 있기 때문에 성능 엔지니어는 성능 문제를 쉽게 찾아낼 수가 있다. 예컨대, 스레드 3 및 4는 시각 23에서 유사한 패턴을 보여주는데, 이는 시각 23에서 스레드 3도 스레드 4에 의해 수행되는 기능을 호출할 수 있음을 나타낸다. 그러나, 시각 23에서 도시된 경우에서, 스레드 4는 시각 5에서 도시된 경우에서보다 훨씬 짧은 기간 동안 작동된다. 이러한 성능 데이터 패턴은 스레드 3이 쓰기 데이터 기능을 호출할 때에 다른 시각들에서 보다 그 호출 동작이 훨씬 더 길어진다는 것을 나타낼 수 있다. 그와 같은 성능 패턴에 의하면 전체적인 데이터로부터는 어떤 기능이 특정 성능 문제의 근원인지를 알아 내기 어렵다. 그러나, 사용자가 선택 가능한 서브 레인지에서 시간적으로 상관되어 있는 서로 다른 스레드 내의 이벤트를 조사할 수 있게 된다면 성능 문제를 더욱 쉽게 알아낼 수가 있다.
도 3은 사용자 인터페이스(210)의 다른 특성을 보여 준다. 도 3에 도시된 예에서는 스레드 보기 필드(230)에 대한 타임 스케일(232)이 확장되어 있다. 이 예에서는 스레드 보기 필드(230)가 표시되는 윈도우는 도 2의 것과 크기는 동일하지만, 타임 스케일(232)이 포함하는 서브 레인지는 도 2에 나타난 것의 대략 1/10이다. 결과적으로 스레드 보기 필드(230)에서 표시된 스레드 내의 이벤트들은 더 높은 해상도로 표시된다. 타임 스케일(232)의 해상도는 예컨대 사용자 입력에 따라 조정될 수 있다. 사용자는 예컨대 마우스(146)(도 1)를 이용하여 타임 스케일(232) 상에 커서를 위치시키고 그 필드 상에서 바로 클릭하여, 사용자가 타임 스케일(232)의 원하는 해상도를 지정하는 정보를 입력할 수 있는 속성 대화 상자 또는 기타 제어부를 열 수가 있다. 그러나, 타임 스케일을 지정하는데는 다른 임의의 적당한 입력 제공 방법이 이용될 수도 있다.
도 3은 텍스트 보기 필드(260)와 연관된 타임 스케일(262)도 프로그램가능한 해상도를 갖고 있음을 보여 준다. 도 3의 예에서는 타임 스케일(262)의 해상도가 타임 스케일(232)의 해상도와 일치한다. 그러나, 타임 스케일(262)의 해상도를 설정하는데는 임의의 적당한 수단이 이용될 수 있으며, 타임 스케일(262)의 해상도가 타임 스케일(232)의 해상도와 일치할 필요는 없다.
도 3은 도면 부호 232나 262와 같은 타임 스케일의 해상도를 변경함으로써 얻어질 수 있는 이점을 보여 준다. 도 2에 도시된 해상도에서는 스레드 4는 함수 _STRLEN에서 장시간 소비하고 있다. 도 3에 도시된 해상도에서는 스레드 4가 함수 _STRLEN에서 소비하는 시간의 일부는 _func1과 같은 다른 함수를 호출하는데 소비되고 있음을 알 수 있다.
도 3은 또한 사용자 인터페이스(210)의 다른 양상을 보여 준다. 마우스(146)(도 1)를 조작하여 커서(312)를 특정 이벤트의 그래픽 표현들 임의의 것 위에 위치시킬 수 있다. 사용자 인터페이스(210)에서 그래픽으로 도시된 이벤트 각각에 대한 추가 정보도 얻어질 수 있다. 도 3의 예에서, 사용자는 마크(344) 위에 커서(312)를 위치시켜 놓고 있다. 사용자는 마크(344) 상에서 바로 클릭하거나 마크(344) 위의 커서를 단순히 "정지(hovering)"함으로써 입력을 제공할 수 있다. 사용자 입력에 응답하여 분석 프로그램(130)은 텍스트 상자(310)에서 그 마크에 대한 추가 정보를 제공할 수 있다. 텍스트 상자(310)에 나타나는 정보는 사용자가 선택한 그래픽 객체로 나타낸 특정 이벤트에 따라 다르며, SQL 이벤트, OS 커널 이벤트 또는 웹 서버 이벤트를 포함하는 디스플레이 상의 임의의 원하는 이벤트에 대한 정보를 제공할 수 있다.
도 4는 본 발명의 다른 실시예에 따른 사용자 인터페이스(410)를 보여 준다. 본 실시예에서, 텍스트 보기 필드(460)에는 다수의 탭(4301, 4302,4303)이 구비되어 있다. 각 탭은 마우스(146)를 조작하여 커서를 탭 위에 올려 놓고 클릭함으로써 사용자 인터페이스를 통해 선택될 수 있다. 각 탭이 선택되면 텍스트 보기 필드(460) 내의 다른 종류의 정보를 표시할 수 있다. 탭(4301)은 종래의 성능 분석 시스템이 보여 주었던 것과 같이 기능들에 대한 전체 정보를 보여 준다. 탭(4301)이 선택되면, 테스트 대상 소프트웨어 프로그램(110)의 실행 중에 호출된 함수를 수록한 컬럼(4201)을 표시한다. 인접한 칼럼들은 컬럼(4201)에 수록된 함수 각각에 대한 정보를 제공한다. 예컨대, 컬럼(4202)은 테스트 대상 소프트웨어 프로그램(110)의 실행 중에 기록된 함수 내로의 엔트리 수를 나타낸다. 컬럼(4203)은 그 함수 내의 전체 실행 시간을 나타낸다. 이 탭에 나타낸 정보는 전체 또는 통계적 정보로서, 연대적 참조(chronological references)를 가진 이벤트를 보여 주지는 않는다.
탭(4302)이 선택되면, 종래의 성능 분석 시스템에서 표시된 호출 트리(call tree)와 유사한 호출 트리를 표시한다. 성능 분석 시스템에 의해 발생될 수 있는 다른 종류의 데이터도, 현재 알려져 있거나 장래 개발될 것이라도, 그 데이터에 액세스하기 위해 선택될 수 있는 탭을 제공함으로써 사용자에게 선택적으로 표시될 수 있다. 탭(4303)은 도 3에 도시된 것과 같은 이벤트 트레이스를 제공하도록 작동될 수 있다.
도 4는 사용자 인터페이스(410)의 다른 양상을 보여 준다. 본 예에서, 스레드 보기 필드(230)는 도 2에 도시된 시간 서브 레인지 후의 시간 서브 레인지를 보여 주고 있다. 따라서, 시간 표시자(226)는 타임 라인 필드(220)에서 도 2에서 보다 더 우측에 나타난다.
도 5는 사용자 인터페이스(410)의 다른 양상을 보여 준다. 스레드 보기 필드(230)에 나타낸 스레드는 사용자 입력에 기초하여 선택될 수 있다. 사용자가 스레드를 선택할 수 있게 되면, 사용자는 여러 가지 트레이스 내의 이벤트의 그래픽 표현들을 병렬로 배치할 수 있게 되어 성능 문제를 용이하게 알아낼 수가 있다. 이런 식으로, 사용자는 스레드들 간의 의존성과 이 의존성에 의해 유발되는 성능 문제를 알아낼 수가 있다.
도 5는 사용자가 표시를 위한 스레드를 선택할 수 있게 하는데 이용될 수 있는 메카니즘의 예를 보여 준다. 본 예에서, 사용자 인터페이스(410)는 메뉴바(212) 상에 선택 영역(510)을 포함한다. 선택 영역(510)은 종래 그래픽 사용자 인터페이스에서 이용된 것과 같은 메뉴 항목으로서 구현될 수 있는데, 이 메뉴 항목이 선택되면 리스트 상자(512)가 열린다.
리스트 상자(512)는 테스트 대상 프로그램(110)의 스레드 리스트를 포함한다. 스레드 각각에는 옆에 체크 상자가 있다. 각 체크 상자는 선택 시에 해당 스레드를 스레드 보기 윈도우(230)에 표시된 스레드 리스트에 포함시키는 제어부이다.
스레드 선택의 다른 양상도 사용자 인터페이스(410)의 제어부를 통해 이용될 수 있다. 예컨대, 제어부를 통해 사용자는 스레드 보기 윈도우(230)에서 스레드의 순서를 지정할 수 있다.
전술한 특성에 따라 사용자는 멀티 스레드 프로그램의 동적인 상호 작용을 쉽게 이해할 수 있도록 테스트 대상 프로그램 상에서 성능 데이터를 구성할 수가 있다. 이것은 다단계 드릴 다운(multiple levels of drill down)을 제공하며, 이에 따라 성능 엔지니어나 기타 사용자는 효과적인 프로세스를 갖고서 프로그램에 대한 성능 엔지니어링을 수행할 수가 있다. 통상적인 시나리오에서는 프로세스는 타임 라인 필드(220)를 이용하여, 프로그램의 실행 중에 더 조사할 가치가 있는 서브 영역을 찾아 내는 것을 포함할 수 있다. 예컨대, 활동이 많거나 거의 없는 서브 영역을 찾아 내어 더 조사할 수 있다.
더 조사할 서브 영역이 선택되면, 그 서브 영역 내의 특정 스레드들을 조사할 수 있다. 사용자는 스레드 보기 필드(230) 내의 표시를 위한 타임 스케일을 조정하여, 단일 스레드를 가진 지점들, 또는 스레드들 간의 상호 작용의 조합이 프로그램의 실행 속도를 저하시켰던 지점을 더 잘 알아낼 수 있다. 스레드 보기 필드(230)에서 마커나 활동바(activity bars)와 같은 시각적인 표시자는 사용자가 문제 영역을 찾아 내는데 도움을 준다.
그러면, 사용자는 텍스트 보기 윈도우(46)에서의 표시를 위한 스레드를 선택함으로써 특정 스레드의 특정 상호 작용에 대한 더 상세한 정보를 얻을 수 있다. 이벤트를 연대 형식(chronological format)으로 나타내거나, 기능에 대한 전체 데이터 또는 기타 다른 프로그램 요소를 나타낼 수 있다.
종래의 많은 그래픽 사용자 인터페이스에서처럼, 사용자가 표시 외양을 임의로 설정할 수 있도록 표시 영역을 디스플레이 스크린 상에서 열고, 닫고, 최소화시키거나 그 위치를 재조정할 수 있다.
사용자 인터페이스에서의 제어부는, 현재 알려져 있거나 장래 개발될 것이라 도, 임의의 적당한 방식으로 구현될 수 있다. 예컨대, 소프트웨어 개발 환경은 흔히 메뉴 항목을 프로그램에 대한 그래픽 사용자 인터페이스에 내장시킬 수 있는 확장형 인터페이스를 갖고 있다. 더욱이, 그와 같은 개발 환경에서는, 애플리케이션에 맞게 설정된 미리 정의된 제어부가 그래픽 사용자 인터페이스에 내장될 수 있다. 스크롤바, 텍스트 상자 및 드롭 다운 리스트와 같은 제어부는 그래픽 사용자 인터페이스에서 사용되는 현재 알려져 있는 제어부의 예들이며, 예컨대 액티브-X 오브젝트(Active-X objects)로서 구현될 수 있다.
동작에 있어, 그래픽 사용자 인터페이스 상에 표시된 정보는 임의의 적당한 방식으로 발생될 수 있다. 전술한 바와 같이, 이벤트에 대한 정보는 버퍼에서 모아진다. 버퍼에는 인덱스가 부여되어 있어 정보를 쉽게 처리할 수 있다. 분석 프로그램(130)은 당 기술 분야에 공지된 바와 같이 전체 데이터를 계산할 수 있다. 또한, 분석 프로그램(130)은 버퍼 내의 시정렬 정보(time ordered information)를 이용하여 프로그램의 시작과 끝을 알리는 이벤트를 찾아 낼수 있다.
분석 프로그램은 C++과 같은 임의의 적당한 프로그래밍 언어로 작성된 프로그램일 수 있다. 분석 프로그램은, 성능 엔지니어가 사용하는 워크스테이션과 연관된 프로세서와 같은 임의의 적당한 프로세서와 연관된 컴퓨터 판독 매체에 저장될 수 있다.
당기술 분야의 통상의 전문가라면 본 발명의 적어도 하나의 실시예에 대한 상술한 몇 가지 양상에 대해 여러 가지로 변경, 수정 및 개량을 쉽게 이루어 낼 수 있을 것이다.
이와 같은 변경, 수정 및 개량도 본 발명의 일부를 이루며, 본 발명의 본질과 영역 내에 있다고 할 것이다.
본 발명의 상기 실시예들은 매우 다양한 방식으로 구현될 수 있다. 예컨대, 본 실시예들은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 소프트웨어로 구현하는 경우에는, 임의의 적당한 프로세서, 또는 하나의 컴퓨터에 구비되거나 여러 컴퓨터에 분산 배치되어 있는 복수의 프로세서 상에서 소프트웨어 코드가 실행될 수 있다.
또한, 여기서 개설된 여러 가지 방법이나 프로세스들은 여러 가지 운영 체제나 플랫폼들 중 어느 하나를 채용한 하나 또는 그 이상의 프로세서에서 실행될 수 있는 소프트웨어로서 코드화될 수 있다. 또한, 그와 같은 소프트웨어는 여러 가지 적당한 프로그래밍 언어 및/또는 종래의 프로그래밍 또는 스크립팅(scripting) 툴들 중 어느 것을 이용하여 작성될 수 있으며, 또 실행가능한 기계어 코드로 컴파일될 수도 있다.
이 점에 있어서, 본 발명은, 하나 또는 그 이상의 컴퓨터나 프로세서 상에서 실행될 때에 전술한 여러 가지 실시예들을 구현하는 방법들을 수행하는 하나 또는 그 이상의 프로그램으로 인코딩된 하나의 컴퓨터 판독 매체(또는 다수의 컴퓨터 판독 매체들)(예컨대, 컴퓨터 메모리, 하나 또는 그 이상의 플로피 디스크, 컴팩트 디스크, 광디스크, 자기 테이프 등)로 구체화될 수 있다. 컴퓨터 판독 매체 또는 매체들은 운송할 수 있으므로 이 매체(들)에 저장된 프로그램(들)은 하나 또는 그 이상의 다른 컴퓨터 또는 프로세서 내로 로드하여 전술한 본 발명의 여러 가지 양 상을 구현할 수 있다.
여기서 사용된 용어 "프로그램"은 전술한 본 발명의 여러 가지 양상을 구현하기 위하여 컴퓨터 또는 프로세서를 프로그래밍하는데 이용될 수 있는 컴퓨터 코드 또는 명령어 집합을 말하는 포괄적인 의미를 갖는다. 또한, 본 발명의 일 양상에 따라서, 실행 시에 본 발명의 방법을 수행하는 하나 또는 그 이상의 컴퓨터 프로그램은 하나의 컴퓨터나 프로세서에 상주할 필요는 없고, 본 발명의 여러 양상을 구현하기 위하여 여러 컴퓨터나 프로세서에 모듈식으로 분산되어 있어도 된다.
본 발명의 여러 양상은 단독으로, 또는 조합하여, 또는 전술한 실시예들에서 특정하여 설명하지 않았던 다양한 구성으로서 이용될 수 있으며, 그러므로, 상세한 설명에서 설명되거나 도면에 도시된 구성 요소들의 세부 사항이나 구성에 대한 응용에 한정되지 않는다. 예컨대, 일 실시예에서 설명된 양상들은 다른 실시예에서 설명된 양상들과 임의의 방식으로 조합될 수 있다.
청구 범위에서 클레임 구성 요소를 수식하기 위해 사용된 "제1", "제2", "제3" 등과 같은 서수 용어는 특정의 클레임 구성요소가 다른 구성요소보다 우선 또는 선행한다거나 방법 상의 단계들에 시간적 수행 순서가 있다는 것을 의미하는 것은 아니며, 단지 특정 명칭을 가진 특정 클레임 구성요소를 동일 명칭을 가진 다른 구성요소 간을 구별하기 위한 것이다 (단, 그 특정 명칭이 서수 용어인 경우는 제외).
또한, 여기서 사용된 어구나 전문 용어는 발명의 설명을 위해 사용되는 것이며 발명을 한정하는 것으로 생각해서는 않된다. 여기서 사용된 "포함", "구성", " 구비", "내포", "관련" 등과 같은 용어는 이 용어 앞에 있는 내용과 그 등가 내용, 그 부가 내용을 포함한다는 의미를 갖는다.

Claims (20)

  1. 디스플레이와 사용자 인터페이스 장치를 포함하는 그래픽 사용자 인터페이스를 구비한 컴퓨터 시스템에서, 실행될 수 있는 복수의 스레드(thread)에서 실행될 수 있는 테스트 대상 소프트웨어 프로그램에 관한 성능 정보를 표시하는 방법에 있어서,
    a) 상기 테스트 대상 소프트웨어 프로그램이 실행되는 타임 레인지(time range)의 표현을 제1 표시 영역에 표시하는 단계;
    b) 상기 제1 표시 영역에 표시된 상기 타임 레인지의 표시부를 나타내는 사용자 입력을 상기 사용자 인터페이스 장치를 통해 수신하는 단계; 및
    c) 상기 제1 표시 영역에 나타난 상기 타임 레인지의 상기 표시부를 포함하는 상기 타임 레인지의 서브 레인지 동안에 상기 복수의 스레드들 중 어느 하나의 실행 시에 이벤트(event)를 나타내는 복수의 그래픽 표시자를 제2 표시 영역에 표시하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    a) 상기 제1 표시 영역에서의 타임 레인지 표현은 그래픽 표현을 포함하고,
    b) 상기 사용자 인터페이스 장치는 포인팅 장치를 포함하고, 상기 타임 레인지의 표시부를 나타내는 사용자 입력을 수신하는 단계는 사용자가 상기 포인팅 장 치를 이용하여 상기 타임 레인지 부분의 표시자를 드래그하여 상기 타임 레인지의 상기 그래픽 표현의 특정 위치에 드롭시킨 것을 감지하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 테스트 대상 소프트웨어 프로그램은 특정의 활동 수준을 갖고서 실행되며, 상기 제1 표시 영역은 상기 테스트 소프트웨어 프로그램의 실행의 활동 수준의 그래픽 표현을 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 제2 표시 영역에 대한 타임 스케일(time scale)을 나타내는 사용자 입력을 수신하고, 상기 타임 스케일을 나타내는 상기 사용자 입력에 응답하여 상기 서브 레인지를 조정하는 단계
    를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 제2 표시 영역은 스크롤바를 더 포함하고,
    상기 방법은 상기 스크롤바를 이동시키는 사용자 입력을 상기 사용자 인터페이스 장치를 통해 수신하고, 상기 스크롤바를 이동시키는 상기 사용자 입력에 응답하여 상기 제2 표시 영역에 표시된 상기 서브 레인지를 조정하는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 제2 표시 영역에서 그래픽 표시자로 나타낸 상기 복수의 스레드들 중 어느 하나의 스레드의 실행 시에, 상기 스레드 내에서 행해진 기능 호출을 포함하는 이벤트의 표시를 포함하는 적어도 하나의 텍스트 표현을 제3 표시 영역에 표시하는 단계
    를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 테스트 대상 소프트웨어 프로그램은 상기 테스트 대상 소프트웨어 프로그램이 실행될 때에 실행되는 기능을 포함하고,
    상기 적어도 하나의 텍스트 표현을 상기 제3 표시 영역에 표시하는 단계는,
    a) 상기 제3 표시 영역에 표시될 텍스트 정보의 속성을 지정하는 사용자 입력을 수신하는 단계; 및
    b) 상기 텍스트 정보의 속성을 지정하는 상기 사용자 입력에 응답하여, 상기 테스트 대상 소프트웨어 프로그램 내의 기능의 실행을 특징짓는 전체 정보(aggregated information)를 선택적으로 표시하는 단계
    를 더 포함하는 방법.
  8. 제1항에 있어서,
    a) 상기 테스트 대상 소프트웨어 프로그램은 운영 체제를 포함하는 플랫폼 상에서 실행되는 애플리케이션 프로그램을 포함하며,
    b) 이벤트를 나타내는 복수의 그래픽 표시자를 표시하는 단계는 기능 호출의 실행을 상기 운영 체제의 소정 부분이나 상기 테스트 대상 소프트웨어 프로그램의 소정 부분에 표시하는 단계를 포함하는 방법.
  9. 테스트 대상 소프트웨어 프로그램의 실행 중에 동작 이벤트가 발생하도록 상기 테스트 대상 소프트웨어 프로그램의 실행 중에 동작하는 복수의 스레드에 대한 성능 정보가 표현된 디스플레이 장치에 있어서, 상기 성능 정보는, 상기 복수의 스레드 각각에 대해,
    상기 스레드의 동작을 나타내는 스레드 영역을 포함하되, 상기 스레드 영역은 적어도 하나의 표시자를 구비하고, 상기 표시자는 상기 스레드의 동작 이벤트를 나타내고, 상기 복수의 스레드에 대한 스레드 영역들 내의 표시자들이 상기 복수의 스레드 내의 동작 이벤트들의 시간적 상관을 나타내도록 상기 복수의 스레드 각각에 대한 상기 스레드 영역의 위치를 설정하는 디스플레이 장치.
  10. 제9항에 있어서,
    상기 스레드 영역 각각은 상기 디스플레이 스크린 상에 긴 영역을 포함하고, 상기 복수의 스레드 영역의 적어도 일부분 내에서 표시자가 상기 스레드 영역으로 나타낸 스레드가 다른 스레드를 기다리는 동안에 차단되는 타임 레인지를 나타내는 디스플레이 장치.
  11. 제9항에 있어서,
    상기 스레드 영역 각각은 상기 디스플레이 스크린 상에 긴 영역을 포함하고, 상기 복수의 스레드 영역의 적어도 일부분 내에서 표시자가 상기 스레드 영역으로 나타낸 스레드가 작동하는 타임 레인지를 나타내는 디스플레이 장치.
  12. 제10항에 있어서,
    상기 스레드 영역들 중 적어도 하나는 상기 스레드 영역으로 나타낸 상기 스레드 내에서 소정의 기능에 액세스되었음을 나타내는 표시자를 포함하는 디스플레이 장치.
  13. 제12항에 있어서,
    상기 테스트 대상 소프트웨어 프로그램은 운영 체제에서 실행되는 애플리케이션 프로그램이고, 상기 소정의 기능은 상기 애플리케이션 프로그램 내의 기능을 포함하는 디스플레이 장치.
  14. 제9항에 있어서,
    상기 스레드 영역에 인접한 타임 스케일 영역을 더 포함하며, 상기 타임 스케일 영역은 표시자로 나타낸 상기 복수의 스레드 내의 이벤트들과 시간적으로 상 관된 디스플레이 장치.
  15. 제9항에 있어서,
    타임 라인 영역을 더 포함하며, 상기 타임 라인 영역은 상기 테스트 대상 소프트웨어 프로그램의 실행 중에 처리 강도를 그래픽으로 나타내는 디스플레이 장치.
  16. 제9항에 있어서,
    텍스트 영역을 더 포함하며, 상기 텍스트 영역은 적어도 하나의 스레드의 동작 중에 정렬된 이벤트 리스트를 포함하며, 상기 정렬된 이벤트 리스트는 기능 엔트리, 기능 이그지스트(exists), 및 SQL 이벤트, OS 커널(kernel) 이벤트 및 웹 서버 이벤트로 이루어진 집합 중에서 적어도 하나의 이벤트를 포함하는 디스플레이 장치.
  17. 복수의 스레드에서 실행될 수 있는 테스트 대상 소프트웨어 프로그램의 성능을 분석하기 위한 컴퓨터 실행가능 요소를 가진 컴퓨터 판독 매체에 있어서, 상기 컴퓨터 실행가능 요소는,
    (a) 테스트 대상 소프트웨어 프로그램에서 상기 복수의 스레드의 실행 데이터를 수집할 수 있는 데이터 수집 요소;
    (b) 상기 복수의 스레드에 대한 실행 정보를 얻기 위해 상기 수집된 데이터 를 분석할 수 있는 분석 요소; 및
    (c) 상기 복수의 스레드들 중 적어도 일부분에 대한 실행 정보를 사람이 지각할 수 있는 형태로 표시할 수 있는 보고(reporting) 요소
    를 포함하되,
    상기 사람이 지각할 수 있는 형태는 상기 일부분에서 상기 복수의 스레드 각각에 대해 실행 정보를 시간 함수로 나타낸 그래픽 표현을 포함하며, 상기 일부분에서의 상기 복수의 스레드 각각의 상기 그래픽 표현은 상기 일부분에서의 상기 복수의 스레드 각각에서 이벤트들을 시간적으로 상관시키는 형식으로 표시되는 컴퓨터 판독가능 매체.
  18. 제17항에 있어서,
    상기 보고 요소는 상기 복수의 스레드들 중 적어도 하나의 그래픽 표현을 표시할 수 있고, 상기 그래픽 표현은 상기 복수의 스레드들 중 어느 하나의 스레드로부터의 응답을 기다리는 동안에 적어도 하나의 스레드가 차단되는 시기의 표시를 포함하는 컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 테스트 대상 소프트웨어 프로그램은 소정의 이벤트를 수행할 수 있는 운영 체제를 포함하는 플랫폼 상에서 실행될 수 있고, 상기 보고 요소는 상기 일부분에서 상기 복수의 스레드들 중 적어도 하나의 그래픽 표현을 표시할 수 있고, 상 기 그래픽 표현은 상기 스레드가 상기 소정의 이벤트를 수행하기 위해 상기 운영 체제를 트리거했는지 여부에 대한 표시를 포함하는 컴퓨터 판독가능 매체.
  20. 제18항에 있어서,
    상기 테스트 대상 소프트웨어 프로그램은 적어도 하나의 API를 포함하고, 상기 데이터 수집 요소는 API에 액세스되었음을 나타내는 데이터를 수집할 수 있고, 상기 보고 요소는 상기 일부분에서 상기 복수의 스레드들 중 적어도 하나의 그래픽 표현을 표시할 수 있고, 상기 그래픽 표현은 상기 스레드 내로부터 상기 API가 액세스되었는지 여부에 대한 표시를 포함하는 컴퓨터 판독가능 매체.
KR1020077020280A 2005-04-15 2006-04-03 소프트웨어 프로그램의 성능분석 방법 및 장치 KR20070121649A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/107,464 2005-04-15
US11/107,464 US7698686B2 (en) 2005-04-15 2005-04-15 Method and apparatus for performance analysis on a software program

Publications (1)

Publication Number Publication Date
KR20070121649A true KR20070121649A (ko) 2007-12-27

Family

ID=37115641

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077020280A KR20070121649A (ko) 2005-04-15 2006-04-03 소프트웨어 프로그램의 성능분석 방법 및 장치

Country Status (6)

Country Link
US (1) US7698686B2 (ko)
EP (1) EP1869555B1 (ko)
JP (1) JP5021623B2 (ko)
KR (1) KR20070121649A (ko)
CN (1) CN101208659B (ko)
WO (1) WO2006113111A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150103262A (ko) * 2013-03-13 2015-09-09 인텔 코포레이션 성능 및 정확도에 대한 멀티 스레드 소프트웨어 프로그램들의 레코딩된 실행들의 시각화

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8132124B2 (en) * 2003-03-13 2012-03-06 Hewlett-Packard Development Company, L.P. Method and system for representing Web service activity through a user interface
US7774784B2 (en) * 2005-03-17 2010-08-10 Microsoft Corporation Determining an actual amount of time a processor consumes in executing a portion of code
US7747653B2 (en) * 2005-08-26 2010-06-29 International Business Machines Corporation Summarizing application performance in a large system from a components perspective
US8001532B1 (en) * 2006-03-10 2011-08-16 Parasoft Corporation System and method for generating source code-based test cases
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
NZ577198A (en) * 2006-12-28 2012-03-30 Arcsight Inc Storing logdata efficiently while supporting querying to assist in computer network security
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US8032867B2 (en) 2007-06-05 2011-10-04 Computer Associates Think, Inc. Programmatic root cause analysis for application performance management
US8010900B2 (en) * 2007-06-08 2011-08-30 Apple Inc. User interface for electronic backup
US8140919B2 (en) * 2007-10-15 2012-03-20 International Business Machines Corporation Display of data used for system performance analysis
JP2009303462A (ja) * 2008-06-17 2009-12-24 Mitsubishi Electric Corp 監視制御システム
US7526682B1 (en) * 2008-06-20 2009-04-28 International Business Machines Corporation Effective diagnosis of software hangs
JP2010015482A (ja) * 2008-07-07 2010-01-21 Yokogawa Electric Corp Icテスタのデバック装置
US8502822B2 (en) * 2008-09-30 2013-08-06 Nintendo Co., Ltd. Method and apparatus for visualizing and interactively manipulating profile data
US8499240B2 (en) * 2008-10-31 2013-07-30 Sap Ag Rule-based presentation of log messages on a graphic timeline
US8266593B2 (en) * 2008-12-01 2012-09-11 Wipro Limited System and method for analyzing performance of a software testing system
US8572581B2 (en) * 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
US8099631B2 (en) * 2009-07-17 2012-01-17 Sap Ag Call-stacks representation for easier analysis of thread dump
US8423088B2 (en) * 2009-07-22 2013-04-16 Microsoft Corporation Aggregated, interactive communication timeline
US20110098973A1 (en) * 2009-10-23 2011-04-28 Computer Associates Think, Inc. Automatic Baselining Of Metrics For Application Performance Management
US8601444B2 (en) * 2009-10-27 2013-12-03 Microsoft Corporation Analysis and timeline visualization of thread activity
JP2011138219A (ja) * 2009-12-25 2011-07-14 Toshiba Corp 並列プログラム解析結果表示装置および並列プログラム解析結果表示方法
US9846628B2 (en) * 2010-06-15 2017-12-19 Microsoft Technology Licensing, Llc Indicating parallel operations with user-visible events
US8966447B2 (en) 2010-06-21 2015-02-24 Apple Inc. Capturing and displaying state of automated user-level testing of a graphical user interface application
KR101623564B1 (ko) * 2010-10-19 2016-05-24 삼성전자주식회사 멀티쓰레드 환경을 테스트하는 커버리지 장치 및 방법
JP4905597B1 (ja) * 2011-03-15 2012-03-28 オムロン株式会社 コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
CN102855173B (zh) * 2011-06-27 2015-10-28 北京新媒传信科技有限公司 一种软件性能测试方法和装置
US9069899B2 (en) * 2012-06-27 2015-06-30 Microsoft Technology Licensing, Llc Integrating diagnostic information in development environment
US9691171B2 (en) 2012-08-03 2017-06-27 Dreamworks Animation Llc Visualization tool for parallel dependency graph evaluation
US9064037B2 (en) * 2012-12-14 2015-06-23 Microsoft Corporation Automated correlation and analysis of callstack and context data
CN104008030A (zh) * 2013-02-27 2014-08-27 腾讯科技(深圳)有限公司 内核性能测试的方法及装置
JP6437226B2 (ja) * 2013-07-22 2018-12-12 株式会社東芝 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム
WO2015027403A1 (en) * 2013-08-28 2015-03-05 Hewlett-Packard Development Company, L.P. Testing multi-threaded applications
WO2015094312A1 (en) 2013-12-20 2015-06-25 Hewlett-Packard Development Company, L.P. Identifying a path in a workload that may be associated with a deviation
US10489266B2 (en) * 2013-12-20 2019-11-26 Micro Focus Llc Generating a visualization of a metric at one or multiple levels of execution of a database workload
JP6189232B2 (ja) 2014-03-04 2017-08-30 株式会社東芝 プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム
JP6223866B2 (ja) * 2014-03-05 2017-11-01 株式会社東芝 表示情報生成装置、プログラム実行状況表示システム、方法およびプログラム
WO2015159365A1 (ja) * 2014-04-15 2015-10-22 富士機械製造株式会社 Nc工作機械
US9360523B2 (en) * 2014-04-18 2016-06-07 Breker Verification Systems Display in a graphical format of test results generated using scenario models
CN105204981A (zh) * 2014-05-28 2015-12-30 北京奇虎科技有限公司 应用性能测试方法和装置
JP6258159B2 (ja) 2014-08-26 2018-01-10 株式会社東芝 プログラム情報生成システム、方法、及びプログラム
US10353701B2 (en) 2014-09-29 2019-07-16 Sap Se Code analysis for cloud-based integrated development environments
JP2017539031A (ja) * 2014-12-09 2017-12-28 エントイット ソフトウェア エルエルシーEntit Software Llc テスト実行からのテスト検証の分離
CN104765685B (zh) * 2015-04-01 2017-12-05 上海闻泰电子科技有限公司 一种内核进程图形化分析方法
US10430316B2 (en) 2015-05-21 2019-10-01 Entit Software Llc Application thread visualization
JP6532762B2 (ja) * 2015-06-02 2019-06-19 株式会社東芝 情報生成システム、装置、方法、及びプログラム
US10922212B2 (en) * 2017-05-06 2021-02-16 Servicenow, Inc. Systems and methods for service catalog analysis
CN109298995B (zh) * 2017-07-24 2022-05-13 北京搜狗科技发展有限公司 一种性能测试方法、装置、电子设备以及存储介质
US10572374B2 (en) * 2017-09-06 2020-02-25 Mayank Mohan Sharma System and method for automated software testing based on machine learning (ML)
CN109753414A (zh) * 2017-11-01 2019-05-14 阿里巴巴集团控股有限公司 性能数据的采集方法、展示方法、电子设备和客户端
CN111061621B (zh) * 2019-12-30 2022-07-29 苏州浪潮智能科技有限公司 一种验证程序性能的方法、装置、设备及存储介质
CN113282444B (zh) * 2020-02-20 2023-09-22 北京京东振世信息技术有限公司 用于业务流程调试的可视化方法和装置
US11847597B2 (en) 2020-11-29 2023-12-19 Performetriks Llc Computer network with a performance engineering maturity model system
US11625313B2 (en) * 2021-04-22 2023-04-11 Microsoft Technology Licensing, Llc Aggregated view of task performance data

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168554A (en) * 1989-10-13 1992-12-01 International Business Machines Corporation Converting trace data from processors executing in parallel into graphical form
EP0610581A3 (en) * 1993-01-29 1994-12-28 Ibm Process for displaying flow data, produced by a parallel processing computer.
JPH07200364A (ja) * 1994-01-08 1995-08-04 Hitachi Denshi Ltd リアルタイムプログラム測定器
US5960199A (en) * 1996-11-12 1999-09-28 International Business Machines Corporation Model trace view for object-oriented systems
US5862381A (en) * 1996-11-26 1999-01-19 International Business Machines Corporation Visualization tool for graphically displaying trace data
KR100248376B1 (ko) * 1997-10-28 2000-03-15 정선종 동적-비주얼 통합 병렬 디버깅 장치 및 디버깅 방법
US6226787B1 (en) * 1999-01-25 2001-05-01 Hewlett-Packard Company Visualization method and system for dynamically displaying operations of a program
US6611276B1 (en) * 1999-08-31 2003-08-26 Intel Corporation Graphical user interface that displays operation of processor threads over time
US6701363B1 (en) * 2000-02-29 2004-03-02 International Business Machines Corporation Method, computer program product, and system for deriving web transaction performance metrics
US20030063130A1 (en) * 2000-09-08 2003-04-03 Mauro Barbieri Reproducing apparatus providing a colored slider bar
DE10055250A1 (de) * 2000-11-08 2002-06-06 Siemens Ag Softwarewerkzeug zur Überwachung eines Automatisierungsgerätes auf Störungen
US6789182B1 (en) * 2000-11-13 2004-09-07 Kevin Jay Brothers System and method for logging computer event data and physical components of a complex distributed system
US6785893B2 (en) * 2000-11-30 2004-08-31 Microsoft Corporation Operating system event tracker having separate storage for interrupt and non-interrupt events and flushing the third memory when timeout and memory full occur
US6802055B2 (en) * 2001-06-27 2004-10-05 Microsoft Corporation Capturing graphics primitives associated with any display object rendered to a graphical user interface
US7917895B2 (en) * 2001-07-27 2011-03-29 Smartesoft, Inc. Automated software testing and validation system
US7120901B2 (en) * 2001-10-26 2006-10-10 International Business Machines Corporation Method and system for tracing and displaying execution of nested functions
JP2003208339A (ja) * 2002-01-17 2003-07-25 Fujitsu Ltd プロセッサ動作表示装置及びプログラム
US7131113B2 (en) * 2002-12-12 2006-10-31 International Business Machines Corporation System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts
US7328429B2 (en) * 2003-11-13 2008-02-05 Intel Corporation Instruction operand tracing for software debug

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150103262A (ko) * 2013-03-13 2015-09-09 인텔 코포레이션 성능 및 정확도에 대한 멀티 스레드 소프트웨어 프로그램들의 레코딩된 실행들의 시각화

Also Published As

Publication number Publication date
WO2006113111A2 (en) 2006-10-26
US7698686B2 (en) 2010-04-13
EP1869555A2 (en) 2007-12-26
US20060248401A1 (en) 2006-11-02
JP2008537222A (ja) 2008-09-11
EP1869555A4 (en) 2012-04-18
JP5021623B2 (ja) 2012-09-12
CN101208659B (zh) 2012-06-13
WO2006113111A3 (en) 2007-11-29
EP1869555B1 (en) 2014-05-07
CN101208659A (zh) 2008-06-25

Similar Documents

Publication Publication Date Title
KR20070121649A (ko) 소프트웨어 프로그램의 성능분석 방법 및 장치
US6161200A (en) Method and apparatus for analyzing software executed in embedded systems
EP0714064B1 (en) Apparatus for visualizing program slices
US8959442B2 (en) Memory allocation visualization for unmanaged languages
US8381196B2 (en) Code execution visualization using software fingerprinting
JP3472026B2 (ja) ログ情報採取解析装置
US8418149B2 (en) Differential comparison system and method
US8839205B2 (en) Analysis and timeline visualization of thread activity
US6754891B1 (en) Debugger system using tracepoints for computer software
US20090150870A1 (en) Method, Apparatus, and Computer Program Product for Implementing Enhanced Template Debug
US20110078661A1 (en) Marker correlation of application constructs with visualizations
US8769497B2 (en) System and method for use in indicating execution of application code
US20110289373A1 (en) Electornic Design Emulation Display Tool
KR20110065067A (ko) 멀티 쓰레드 테스팅시 발생되는 에러 정보에 대한 비주얼 인터페이스를 제공하는 장치 및 방법
Drebes et al. Aftermath: A graphical tool for performance analysis and debugging of fine-grained task-parallel programs and run-time systems
WO2020163119A1 (en) Using historic execution data to visualize tracepoints
US20080184150A1 (en) Electronic circuit design analysis tool for multi-processor environments
US20130055218A1 (en) Automating Software Testing
Roberts et al. TraceVis: an execution trace visualization tool
Jovic et al. Listener latency profiling: Measuring the perceptible performance of interactive Java applications
US20050022170A1 (en) Visual debugging interface
US20090187890A1 (en) Method and System for Associating Profiler Data With a Reference Clock
US8539171B2 (en) Analysis and timeline visualization of storage channels
Kraft Stop Guessing
Vo et al. Benchmark Your Apps with Tools: Simulators and Real Device Test

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
SUBM Surrender of laid-open application requested