KR20150062654A - 소프트웨어 성능 측정 방법 및 장치 - Google Patents

소프트웨어 성능 측정 방법 및 장치 Download PDF

Info

Publication number
KR20150062654A
KR20150062654A KR1020130147522A KR20130147522A KR20150062654A KR 20150062654 A KR20150062654 A KR 20150062654A KR 1020130147522 A KR1020130147522 A KR 1020130147522A KR 20130147522 A KR20130147522 A KR 20130147522A KR 20150062654 A KR20150062654 A KR 20150062654A
Authority
KR
South Korea
Prior art keywords
performance
performance measurement
performance data
entry point
target system
Prior art date
Application number
KR1020130147522A
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 삼성전자주식회사
Priority to KR1020130147522A priority Critical patent/KR20150062654A/ko
Priority to US14/554,994 priority patent/US20150154103A1/en
Publication of KR20150062654A publication Critical patent/KR20150062654A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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
    • 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
    • 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/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

소프트웨어 성능 측정 방법 및 장치가 제공된다. 방법은, 성능 측정을 위하여 소스 코드에 성능 측정용 코드를 삽입하는 단계; 성능 측정용 코드에 기초하여 타겟 시스템 및 성능 카운터(performance counter)를 정지(stall)시키는 단계; 정지된 시점에서의 성능 데이터를 저장하기 위하여, 호스트 시스템에게 정지된 시점에서의 성능 데이터를 전송하는 단계; 및 성능 데이터가 전송되어 저장됨에 따라, 타겟 시스템 및 성능 카운터를 다시 실행시키는 단계를 포함한다.

Description

소프트웨어 성능 측정 방법 및 장치 {METHOD AND APPARATUS FOR MEASURING PERFORMANCE OF SOFTWARE}
소프트웨어의 성능을 측정하는 방법 및 장치에 관한 것이며, 보다 상세하게는, 정지 가능한 성능 카운터(stallable performance counter)를 이용하여, 함수별 성능을 측정하는 방법 및 장치에 관한 것이다.
소프트웨어의 성능을 분석하는 과정은 일반적으로 실행 중의 정보를 수집하고, 수집한 정보를 저장하고 전달하며, 전달된 정보를 분석하는 단계를 거친다. 수집한 정보를 손실 없이 저장하고 전달하는 것과 직관적인 분석 결과의 형태로 도출하는 것도 중요하지만, 무엇보다도 신뢰할 수 있는 측정 정보를 얻기 위한 정보 수집 방법을 가장 중요하게 고려해야 한다. 일반적으로 정보를 수집하는 기법은 그 방법에 따라 크게 소스 단계 추적 기법, 실행 파일 단계 추적 기법, 샘플링 기법으로 나누어진다.
소스 단계 추적 기법은 추적에 필요한 측정용 코드를 삽입하여 실행되는 동안의 정보를 추출하는 기법이다. 소프트웨어가 실행될 때 측정용 코드가 삽입된 루틴을 실행하기 때문에, 원래 시스템의 성능에 최소한의 영향만을 주어 해당 시점에 대한 신뢰할 수 있는 결과를 획득할 수 있다. 이와 같은 방법을 이용하는 대표적인 리눅스 커널 추적 도구로는 LTTng와 IBM 사의 K42가 있다.
실행 파일 단계 추적 기법은 실행 파일에 중단점을 삽입하고 실행하여 트랩을 발생시켜 측정을 수행하는 방법이다. GDB 디버거와 같이 중단점을 이용하여 측정을 수행하는 도구로는 SystemTAP, Sun 사의 Dtrace등이 있으며, 리눅스에는 Ptrace 라는 형태로 구현되어 있다.
샘플링 기법은 데몬이나 성능 카운터를 이용하여 일정 주기마다 원하는 정보를 수집하는 방법이다. 수집 데몬을 생성하여 실행되고 있는 심볼의 정보를 추출하거나, 성능 카운터와 같은 하드웨어 장치를 이용하여 명령어나 클럭 사이클 등의 정보를 획득한다. 이러한 기법을 이용하는 대표적인 예는 데몬과 성능 카운터를 모두 이용하여 커널 영역의 실행 중인 명령어 정보를 수집하고 해석해주는 프로파일러인 Oprofile이 있다.
현재 응용의 성능을 측정하기 위하여, 실행 파일, 즉 이진 파일(binary file)에 성능 측정용 동적 라이브러리를 링크(link)하는 방식과, 응용을 수정하여 성능 측정 함수를 삽입하는 방식이 광범위하게 사용되고 있다.
이진 파일(binary file)에 성능 측정용 동적 라이브러리를 링크(link)하는 방식은, 응용을 수정하지 않고 응용의 성능을 측정할 수 있으나, 수행 단계가 추가됨에 따라 응용의 동작 방식이 많이 변경되어, 데이터 캐시(data cache) 오염으로 인하여 성능 데이터의 정확성을 확보하기 어렵다.
응용을 수정하여 성능 측정 함수를 추가하는 방식은, 동적 라이브러리 방식보다는 응용의 동작 변경이 적지만, 성능 측정용 함수의 동작 및 데이터 사용으로 인하여 성능 데이터의 정확성을 확보하기 어렵다.
성능 측정을 위하여 소스 코드에 삽입된 성능 측정용 코드에 기초하여, 타겟 시스템 및 성능 카운터(performance counter)를 정지(stall)시키고, 호스트 시스템에게 정지된 시점에서의 성능 데이터를 전송하고, 전송된 성능 데이터가 저장됨에 따라, 타겟 시스템 및 성능 카운터를 다시 실행시켜 소프트웨어 성능을 측정할 수 있는 방법 및 장치를 제공한다.
본 실시예가 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
일 측면에 따르면, 소프트웨어 성능 측정 방법은, 성능 측정을 위하여 소스 코드에 성능 측정용 코드를 삽입하는 단계; 상기 성능 측정용 코드에 기초하여 타겟 시스템 및 성능 카운터(performance counter)를 정지(stall)시키는 단계; 상기 정지된 시점에서의 성능 데이터를 저장하기 위하여, 호스트 시스템에게 상기 정지된 시점에서의 성능 데이터를 전송하는 단계; 및 상기 성능 데이터가 전송되어 저장됨에 따라, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계를 포함한다.
또한, 상기 성능 측정용 코드를 삽입하는 단계는, 상기 타겟 시스템의 컴파일러가 상기 성능 측정용 코드를 자동으로 삽입하는 단계를 포함할 수 있다.
또한, 상기 성능 측정용 코드를 삽입하는 단계는, 상기 소스 코드 내의 성능 측정 대상 함수의 진입점 및 진출점 각각에 상기 성능 측정용 코드를 삽입하는 단계를 포함할 수 있다.
또한, 상기 성능 데이터를 전송하는 단계는, 상기 정지된 시점에서의 성능 데이터를 별도의 저장 장치에 저장하기 위하여, 호스트 시스템에게 상기 정지된 시점에서의 성능 데이터를 전송하는 단계를 포함할 수 있다.
또한, 상기 성능 데이터는, 프로그램 카운터 값(program counter value) 및 성능 카운터 값(performance counter value) 중 적어도 하나를 포함할 수 있다.
또한, 상기 성능 데이터는, 호출(call) 횟수, 사이클 정보, 메모리 뱅크 충돌(bank conflict), 버스 스톨(bus stall) 및 인스트럭션 캐시 미스(Instruction Cache Miss) 중 적어도 하나를 포함할 수 있다.
또한, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계는, 상기 호스트 시스템으로부터 상기 타겟 시스템에게로 소정의 이벤트가 수신됨에 따라, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계를 포함할 수 있다.
또한, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계는, 상기 성능 데이터가 저장되는데 필요한 소정의 시간이 경과한 후, 자동으로 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계를 포함할 수 있다.
또한, 상기 방법은, 상기 진입점에서의 성능 데이터 및 상기 진출점에서의 성능 데이터에 기초하여 성능 측정 결과를 산출하는 단계를 더 포함할 수 있다.
또한, 상기 성능 측정 결과를 산출하는 단계는, 상기 성능 측정 대상 함수가 말단 함수인지 여부를 판단하는 단계; 및 상기 성능 측정 대상 함수가 말단 함수인 경우, 상기 성능 측정 대상 함수의 상기 진출점에서의 성능 데이터 및 상기 진입점에서의 성능 데이터의 차분값에 기초하여 성능 측정 결과를 산출하고, 상기 성능 측정 대상 함수가 말단 함수가 아닌 경우, 상기 성능 측정 대상 함수의 상기 진출점에서의 성능 데이터 및 상기 진입점에서의 성능 데이터의 차분값에서, 상기 성능 측정 대상 함수의 호출된 함수(callee)들의 성능 측정 결과 값을 감하여 성능 측정 결과를 산출하는 단계를 포함하며, 상기 호출된 함수들의 성능 측정 결과 값은, 상기 호출된 함수들 각각의 진출점에서의 성능 데이터 및 진입점에서의 성능 데이터의 차분값에 기초하여 산출될 수 있다.
또한, 상기 방법은, 상기 산출된 성능 측정 결과를 디스플레이상에 표시하는 단계를 더 포함할 수 있다.
다른 일 측면에 따르면, 상기 소프트웨어 성능 측정 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
또 다른 일 측면에 따르면, 소프트웨어 성능 측정 장치는, 성능 측정을 위하여 소스 코드에 삽입된 성능 측정용 코드에 기초하여, 타겟 시스템 및 성능 카운터(performance counter)를 정지(stall)시키는 제어부; 상기 정지된 시점에서의 성능 데이터를 저장하기 위하여, 호스트 시스템에게 상기 정지된 시점에서의 성능 데이터를 전송하는 송수신부; 및 상기 성능 데이터가 전송되어 저장됨에 따라, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 실행부를 포함한다.
또한, 상기 성능 측정용 코드는, 상기 타겟 시스템의 컴파일러에 의해 자동으로 삽입될 수 있다.
또한, 상기 성능 측정용 코드는, 상기 소스 코드 내의 성능 측정 대상 함수의 진입점 및 진출점 각각에 삽입될 수 있다.
또한, 상기 송수신부는, 상기 정지된 시점에서의 성능 데이터를 별도의 저장 장치에 저장하기 위하여, 호스트 시스템에게 상기 정지된 시점에서의 성능 데이터를 전송할 수 있다.
또한, 상기 성능 데이터는, 프로그램 카운터 값(program counter value) 및 성능 카운터 값(performance counter value) 중 적어도 하나를 포함할 수 있다.
또한, 상기 성능 데이터는, 호출(call) 횟수, 사이클 정보, 메모리 뱅크 충돌(bank conflict), 버스 스톨(bus stall) 및 인스트럭션 캐시 미스(Instruction Cache Miss) 중 적어도 하나를 포함할 수 있다.
또한, 상기 송수신부는, 상기 호스트 시스템으로부터 소정의 이벤트를 수신하고, 상기 실행부는, 상기 소정의 이벤트가 수신됨에 따라, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시킬 수 있다.
또한, 상기 실행부는, 상기 성능 데이터가 저장되는데 필요한 소정의 시간이 경과한 후, 자동으로 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시킬 수 있다.
또한, 상기 장치는, 상기 진입점에서의 성능 데이터 및 상기 진출점에서의 성능 데이터에 기초하여 성능 측정 결과를 산출하는 산출부를 더 포함할 수 있다.
또한, 상기 산출부는, 상기 성능 측정 대상 함수가 말단 함수인지 여부를 판단하고, 상기 성능 측정 대상 함수가 말단 함수인 경우, 상기 성능 측정 대상 함수의 상기 진출점에서의 성능 데이터 및 상기 진입점에서의 성능 데이터의 차분값에 기초하여 성능 측정 결과를 산출하고, 상기 성능 측정 대상 함수가 말단 함수가 아닌 경우, 상기 성능 측정 대상 함수의 상기 진출점에서의 성능 데이터 및 상기 진입점에서의 성능 데이터의 차분값에서, 상기 성능 측정 대상 함수의 호출된 함수(callee)들의 성능 측정 결과 값을 감하여 성능 측정 결과를 산출하며, 상기 호출된 함수들의 성능 측정 결과 값은, 상기 호출된 함수들 각각의 진출점에서의 성능 데이터 및 진입점에서의 성능 데이터의 차분값에 기초하여 산출될 수 있다.
또한, 상기 장치는, 상기 산출된 성능 측정 결과를 표시하는 디스플레이부를 더 포함할 수 있다.
상기된 바에 따르면, 정지 가능한 성능 카운터를 이용하여, 성능 데이터 왜곡을 최소화하여 소프트웨어 성능을 높은 정확도로 측정할 수 있다.
또한, 컴파일러에 의하여 성능 측정용 코드가 삽입됨에 따라, 개발자가 소스 코드를 직접 수정하지 않고 편리하게 소프트웨어 성능을 측정할 수 있다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 성능을 측정하는 방법의 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 소프트웨어 성능 측정 개념도이다.
도 3은 본 발명의 일 실시예에 따른 소프트웨어 성능 측정 장치의 시스템도이다.
도 4는 본 발명의 일 실시예에 따른 성능 측정용 코드의 삽입을 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따라 소프트웨어의 성능 측정 결과를 산출하는 방법을 나타내는 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 말단 함수를 설명하는 도면이다.
도 7은 본 발명의 일 실시예에 따라, 함수별 성능 측정 결과를 출력한 예시도이다.
도 8은 본 발명의 일 실시예에 따른 소프트웨어의 성능 측정 장치의 블록도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
명세서 전체에서 “타겟 시스템”은 개발된 소프트웨어가 실행되는 시스템으로, 성능 분석 대상이 되는 시스템을 의미할 수 있다. 본 명세서에서 타겟 시스템은 타겟 프로세서(target processor), 타겟 코어(target core) 등을 포함하는 개념으로 사용될 수 있다.
명세서 전체에서 “호스트 시스템”은 타겟 시스템에서 실행되는 소프트웨어의 성능을 측정하는데 사용되는 범용 컴퓨터 시스템을 의미할 수 있다. 본 명세서에서 호스트 시스템은 호스트 프로세서(host processor), 호스트 코어(host core) 등을 포함하는 개념으로 사용될 수 있다.
명세서 전체에서 “소프트웨어”는 내장형 소프트웨어, 반내장형 소프트웨어 및 독립형 소프트웨어를 포괄하는 개념으로 사용될 수 있다.
명세서 전체에서 “말단 함수”는 함수 내에 호출된 함수(callee)를 포함하지 않는 함수를 의미할 수 있다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 성능을 측정하는 방법의 흐름도이다.
단계 110에서, 장치는 성능 측정을 위하여 소스 코드에 성능 측정용 코드를 삽입할 수 있다.
본 발명의 일 실시예에 따른 성능 측정용 코드는, 소프트웨어의 성능을 측정하기 위하여 소스 코드 내의 함수에 삽입될 수 있다. 성능 측정용 코드는, 타겟 시스템 및 성능 카운터를 정지(stall)시켜, 정지된 시점에서의 성능 데이터를 읽어올 수 있도록 하여, 데이터를 측정하는 동안 발생하는 데이터의 왜곡을 방지하는 역할을 수행할 수 있다.
본 발명의 일 실시예에 따르면, 성능 측정용 코드는 사용자 입력에 기초하여 소스 파일 내에 삽입될 수 있다.
본 발명의 다른 실시예에 따르면, 성능 측정용 코드는 자동으로 소스 파일 내에 삽입될 수 있다. 예를 들어, 컴파일 단계에서 타겟 시스템의 컴파일러가 성능 측정용 코드를 소스 파일 내에 자동으로 삽입할 수 있다. 성능 측정용 코드가 자동으로 삽입됨에 따라, 사용자가 직접 소스 코드를 수정할 필요 없이 편리하게 소프트웨어의 성능 분석을 수행할 수 있다.
본 발명의 다른 실시예에 따르면, 성능 측정용 코드는 소스 코드 내의 성능 측정 대상 함수의 진입점 및 진출점 각각에 삽입될 수 있다.
단계 120에서, 장치는 성능 측정용 코드에 기초하여 타겟 시스템 및 성능 카운터(performance counter)를 정지(stall)시킬 수 있다.
본 발명의 일 실시예에 따른 성능 카운터는, 성능 측정용 코드의 명령에 따라 타겟 시스템과 같이 실행이 정지될 수 있다. 즉, 종래의 성능 카운터는 타겟 시스템의 실행이 정지된 상태에서도 카운터의 동작이 멈추지 않아, 성능 데이터의 왜곡을 유발하였다. 본 발명의 일 실시예에 따르면, 성능 카운터는 정지 가능한 성능 카운터(stallable performance counter)로 구성되어, 성능 측정용 코드에 기초하여 타겟 시스템의 실행이 정지된 동안에는 카운터의 동작도 정지되어, 성능 데이터의 왜곡을 방지할 수 있다.
단계 130에서, 장치는 정지된 시점에서의 성능 데이터를 저장하기 위하여 호스트 시스템에게 정지된 시점에서의 성능 데이터를 전송할 수 있다.
본 발명의 일 실시예에 따른 성능 데이터는, 프로그램 카운터 값(program counter value) 및 성능 카운터 값(performance counter value) 중 적어도 하나를 포함할 수 있다.
본 발명의 일 실시예에 따른 성능 데이터는, 호출(call) 횟수, 사이클 정보, 메모리 뱅크 충돌(bank conflict), 버스 스톨(bus stall) 및 인스트럭션 캐시 미스(Instruction Cache Miss) 중 적어도 하나를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 정지된 시점에서의 성능 데이터는 호스트 시스템의 저장부에 저장될 수 있다.
본 발명의 다른 실시예에 따르면, 정지된 시점에서의 성능 데이터는 별도의 저장 장치에 저장될 수 있다. 별도의 저장 장치는, 예를 들어, 플로피디스크, 하드디스크, 자기드럼, 자기테이프, 광디스크(CD) 및 플래시 메모리 등을 포함할 수 있으며, 이에 제한되지 않는다. 별도의 저장 장치는, 외부 시스템에 존재할 수 있다. 호스트 시스템에게 정지된 시점에서의 성능 데이터가 전송되면, 호스트 시스템은 별도의 저장 장치에게 성능 데이터를 다시 전송할 수 있다. 전송된 성능 데이터는 별도의 저장 장치에 저장될 수 있다.
단계 140에서, 장치는 성능 데이터가 저장됨에 따라, 타겟 시스템 및 성능 카운터를 다시 실행시킬 수 있다.
본 발명의 다른 실시예에 따르면, 장치는 호스트 시스템으로부터 타겟 시스템에게로 소정의 이벤트가 수신됨에 따라, 타겟 시스템 및 성능 카운터를 다시 실행시킬 수 있다. 호스트 시스템은 성능 데이터를 저장한 후, 타겟 시스템 및 성능 카운터를 다시 실행시키기 위한 소정의 이벤트를 타겟 시스템에게 전송할 수 있다. 소정의 이벤트는 예를 들어, 레지스터(register)에 성능 데이터 값을 쓰는(write) 것, 타겟 시스템에 시그널을 보내는 것 등을 포함하지만, 이에 제한되지 않는다.
본 발명의 다른 실시예에 따르면, 장치는 성능 데이터가 저장되는데 필요한 소정의 시간이 경과한 후, 자동으로 타겟 시스템 및 성능 카운터를 다시 실행시킬 수 있다. 소정의 시간은 예를 들어, 환경 설정에 의해 설정되거나, 성능 데이터를 저장하는데 필요한 충분한 시간이 디폴트 값으로 설정될 수 있지만, 이에 제한되지 않는다.
본 발명의 일 실시예에서 타겟 시스템은 호스트 시스템과 같은 장치에 구비될 수 있다. 예를 들어, 타겟 시스템 및 호스트 시스템은 같은 장치 내에 구비된 타겟 코어 및 호스트 코어일 수 있다. 다른 예로, 타겟 시스템 및 호스트 시스템은 같은 장치 내에 구비된 타겟 프로세서 및 호스트 프로세서일 수 있다.
본 발명의 다른 실시예에서 타겟 시스템은 호스트 시스템과 별개의 장치에 구비된 시스템일 수 있다.
예를 들어, 크로스 개발 환경에서의 임베디드 소프트웨어 성능 측정에 적용되는 경우, 타겟 시스템은 임베디스 시스템일 수 있고, 호스트 시스템은 범용 컴퓨터 시스템일 수 있다.
임베디드 시스템은 시스템을 동작시키는 소프트웨어를 하드웨어에 내장한 특수한 기능을 가지는 컴퓨터 시스템을 의미한다. 일반적으로, 임베디드 시스템은 데스크탑 PC와 같은 범용 컴퓨터 시스템과는 다르게, 특수한 목적으로 특수한 기능을 하는 기기 또는 장치에 내장되는 컴퓨터 시스템을 의미할 수 있다. 예를 들면, 임베디드 시스템은 휴대폰, PDA, 웹 패드와 같은 이동형 기기에 내장된 컴퓨터 시스템 또는 디지털 TV, 인터넷 냉장고와 같은 가전 제품에 내장된 컴퓨터 시스템 등을 포함할 수 있으나, 이에 제한되지 않는다.
임베디드 시스템은 고성능, 고용량의 CPU와 메모리와 같은 자원을 요구하지 않으므로, 범용 컴퓨터 시스템과 비교하여 부족한 자원과 성능을 갖게 된다. 이와 같은 이유로 임베디드 시스템에서 수행되는 임베디드 소프트웨어에 대한 개발은 임베디드 시스템이 보다 성능이 우수한 범용 컴퓨터 시스템에서 이루어질 수 있다. 본 발명의 일 실시예에 따라, 호스트 시스템은 범용 컴퓨터 시스템이 될 수 있고, 타겟 시스템은 임베디드 시스템이 될 수 있다.
도 2는 본 발명의 일 실시예에 따른 소프트웨어 성능 측정 개념도이다.
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 타겟 시스템(220)은 컴파일러(230), 제어부(235), 실행부(240), 송수신부(245) 및 정지 가능한 성능 카운터(250)를 포함할 수 있다. 그러나 도시된 구성요소가 모두가 필수구성요소인 것은 아니다. 도시된 구성요소보다 많은 구성요소에 의해 타겟 시스템(220)이 구현될 수도 있고, 그보다 적은 구성요소에 의해서도 타겟 시스템(220)은 구현될 수 있다. 이에 대한 자세한 설명은 도 3에서 후술한다.
본 발명의 일 실시예에 따른 호스트 시스템(260)은 타겟 시스템(220)으로부터 읽어 들인 성능 데이터를 별도의 저장 장치(270)에 저장할 수 있다. 별도의 저장 장치(270)는, 예를 들어, 플로피디스크, 하드디스크, 자기드럼, 자기테이프, 광디스크(CD) 및 플래시 메모리 등을 포함할 수 있으며, 이에 제한되지 않는다. 별도의 저장 장치는, 외부 시스템에 존재할 수 있다. 호스트 시스템에게 정지된 시점에서의 성능 데이터가 전송되면, 호스트 시스템은 별도의 저장 장치에 성능 데이터를 다시 전송할 수 있다. 전송된 성능 데이터는 별도의 저장 장치에 저장될 수 있다.
본 발명의 일 실시예에 따른 호스트 시스템(260)은 성능 데이터를 서버(275)에 업로드할 수 있다. 서버(275)는 예를 들어, 클라우드와 같은 웹서버, DB 서버 등을 포함할 수 있으며, 이에 제한되지 않는다.
본 발명의 일 실시예에 따른 호스트 시스템(260)은 성능 데이터를 별도의 성능 분석 장치(280)에 전송할 수 있다. 즉, 성능 데이터의 수집은 호스트 시스템(260)에서 수행되고, 성능 데이터의 분석은 별도의 성능 분석 장치(280)에서 수행될 수 있다. 별도의 성능 분석 장치(280)는 예를 들어, 별도의 프로세서, 별도의 컴퓨팅 장치 등을 포함할 수 있으며, 이에 제한되지 않는다.
본 발명의 일 실시예에 따른 호스트 시스템(260)은 성능 데이터를 별도의 디스플레이 장치(285)상에 디스플레이할 수 있다. 예를 들어, 호스트 시스템(260)은 성능 데이터를 별도의 디스플레이 장치(285)에게 전송하고, 별도의 디스플레이 장치(285)상에 디스플레이할 수 있다.
본 발명의 다른 실시예에서, 호스트 시스템(260)은 전송된 성능 데이터를 저장하고, 성능 측정 결과를 산출하여, 산출된 성능 측정 결과를 별도의 디스플레이 장치(285)상에 디스플레이할 수 있다.
도 3은 본 발명의 일 실시예에 따른 소프트웨어 성능 측정 장치의 시스템도이다.
도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 타겟 시스템(220)은 컴파일러(230), 제어부(235), 실행부(240), 송수신부(245) 및 정지 가능한 성능 카운터(250)를 포함할 수 있다. 그러나 도시된 구성요소가 모두가 필수구성요소인 것은 아니다. 도시된 구성요소보다 많은 구성요소에 의해 타겟 시스템(220)이 구현될 수도 있고, 그보다 적은 구성요소에 의해서도 타겟 시스템(220)은 구현될 수 있다.
본 발명의 일 실시예에 따른 컴파일러(230)는, 성능 측정용 코드를 소스 파일 내에 자동으로 삽입할 수 있다. 성능 측정용 코드가 자동으로 삽입됨에 따라, 사용자가 직접 소스 코드를 수정할 필요 없이 편리하게 소프트웨어의 성능 분석을 수행할 수 있다.
본 발명의 일 실시예에 따른 제어부(235)는, 성능 측정을 위하여 소스 코드에 삽입된 성능 측정용 코드에 기초하여, 타겟 시스템 및 성능 카운터(250)를 정지시킬 수 있다.
본 발명의 일 실시예에 따른 실행부(240)는, 성능 데이터가 전송되어 저장됨에 따라, 타겟 시스템 및 성능 카운터(250)를 다시 실행시킬 수 있다.
본 발명의 일 실시예에 따르면, 실행부(240)는 호스트 시스템(260)으로부터 소정의 이벤트가 수신됨에 따라, 타겟 시스템 및 성능 카운터(250)를 다시 실행시킬 수 있다.
본 발명의 다른 실시예에 따르면, 실행부(240)는 성능 데이터가 저장되는데 필요한 소정의 시간이 경과한 후, 자동으로 타겟 시스템 및 성능 카운터(250)를 다시 실행시킬 수 있다.
본 발명의 일 실시예에 따른 송수신부(245)는, 정지된 시점에서의 성능 데이터를 저장하기 위하여, 호스트 시스템에게 정지된 시점에서의 성능 데이터를 전송할 수 있다. 또한, 호스트 시스템으로부터 타겟 시스템(220) 및 성능 카운터(250)를 다시 실행시키기 위한 소정의 이벤트를 수신할 수 있다.
본 발명의 일 실시예에 따른 정지 가능한 성능 카운터(250)는, 성능 측정용 코드의 명령에 따라 타겟 시스템(220)과 같이 정지될 수 있다. 즉, 종래의 성능 카운터(250)는 타겟 시스템(220)의 실행이 정지된 상태에서도 카운터의 동작이 멈추지 않아, 성능 데이터의 왜곡을 유발하였다. 본 발명의 일 실시예에 따르면, 성능 카운터(250)는 정지 가능한 성능 카운터(stallable performance counter)로 구성되어, 성능 측정용 코드에 기초하여 타겟 시스템(220)의 실행이 정지된 동안에는 카운터의 동작도 정지되어, 성능 데이터의 왜곡을 방지할 수 있다.
도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 호스트 시스템(260)은 송수신부(310), 저장부(320), 산출부(330) 및 표시부(340)를 포함할 수 있다. 그러나 도시된 구성요소가 모두가 필수구성요소인 것은 아니다. 도시된 구성요소보다 많은 구성요소에 의해 호스트 시스템(260)이 구현될 수도 있고, 그보다 적은 구성요소에 의해서도 호스트 시스템(260)은 구현될 수 있다.
본 발명의 일 실시예에 따른 송수신부(310)는, 타겟 시스템(220)으로부터 성능 데이터를 수신할 수 있다. 또한, 타겟 시스템(220) 및 성능 카운터(250)를 다시 실행시키기 위한 소정의 이벤트를 타겟 시스템(220)에게 전송할 수 있다.
본 발명의 일 실시예에 따른 저장부(320)는, 타겟 시스템(220) 및 성능 카운터(250)가 정지된 시점에서의 성능 데이터를 읽어 들여 저장할 수 있다. 그러나, 본 발명의 다른 실시예에서 저장부(320)는 호스트 시스템(260) 외부의 별개의 저장 장치에 구비될 수 있다.
본 발명의 일 실시예에 따른 산출부(330)는, 성능 데이터에 기초하여 성능 측정 결과를 산출할 수 있다. 예를 들어, 산출부(330)는, 성능 측정 대상 함수의 진입점에서의 성능 데이터 및 진출점에서의 성능 데이터에 기초하여 성능 측정 결과를 산출할 수 있다. 본 발명의 다른 실시예에서 산출부(330)는 호스트 시스템(260) 외부의 별개의 분석 장치에 구비될 수 있다.
본 발명의 일 실시예에 따른 표시부(340)는, 성능 데이터, 성능 측정 결과 및 성능 분석 결과 중 적어도 하나를 디스플레이상에 표시할 수 있다. 그러나, 본 발명의 다른 실시예에서 표시부(340)는 호스트 시스템(260) 외부의 별개의 출력 장치에 구비될 수 있다.
도 4는 본 발명의 일 실시예에 따른 성능 측정용 코드의 삽입을 나타내는 도면이다.
본 발명의 일 실시예에 따라 도 4에는 소스 코드(original source code)(210) 및 소스 코드의 함수 내에 성능 측정용 코드가 삽입된 코드(410)가 나타나 있다.
본 발명의 일 실시예에서 장치는 소스 코드(210)에 성능 측정용 코드를 삽입할 수 있다.
본 발명의 일 실시예에 따라 성능 측정용 코드는, 호스트 시스템으로부터 소정의 이벤트를 수신할 때까지 타겟 시스템 및 성능 카운터를 정지(stall)시키고 기다린다는 의미에서, “wait-for-event()”라는 이름의 함수로 작성될 수 있다. 그러나, 본 발명의 일 실시예에 따른 성능 측정용 코드는 반드시 함수 형태일 것을 요하지 않으며, 다른 형태의 명령어를 포함할 수도 있다.
본 발명의 다른 실시예에 따르면, 성능 측정용 코드는 소스 코드(210) 내의 성능 측정 대상 함수의 진입점 및 진출점 각각에 삽입될 수 있다. 또한, 성능 측정 대상 함수의 호출된 함수(callee)의 진입점 및 진출점 각각에 삽입될 수 있다.
도 5는 본 발명의 일 실시예에 따라 소프트웨어의 성능 측정 결과를 산출하는 방법을 나타내는 흐름도이다.
단계 510에서, 장치는 성능 측정 대상 함수가 말단 함수인지 여부를 판단한다.
말단 함수인지 여부를 판단하는 방법은 도 6을 참조하여, 상세히 후술한다.
판단 결과 성능 측정 대상 함수가 말단 함수인 경우, 단계 520이 수행되고, 측정 대상 함수가 말단 함수가 아닌 경우, 단계 530이 수행된다.
단계 520에서, 장치는 성능 측정 대상 함수의 진출점에서의 성능 데이터 및 진입점에서의 성능 데이터의 차분값에 기초하여 성능 측정 결과를 산출할 수 있다.
예를 들어, 함수별 수행 시간을 측정하기 위하여, 아래의 <수식 1>과 같은 계산식이 사용될 수 있다.
<수식 1>
수행 시간 = 함수의 진출점에서의 카운터 값 - 함수의 진입점에서의 카운터 값
단계 530에서, 장치는 성능 측정 대상 함수의 진출점에서의 성능 데이터 및 진입점에서의 성능 데이터의 차분값에서, 성능 측정 대상 함수의 호출된 함수(callee)들의 성능 측정 결과 값을 감하여 성능 분석 결과를 산출할 수 있다.
예를 들어, 함수별 수행 시간을 측정하기 위하여, 아래의 <수식 2> 및 <수식 3>과 같은 계산식들이 사용될 수 있다.
<수식 2>
수행 시간 = 성능 측정 대상 함수의 진출점에서의 카운터 값 - 성능 측정 대상 함수의 진입점에서의 카운터 값 - 호출된 함수들의 수행 시간의 합
<수식 3>
호출된 함수의 수행시간 = 호출된 함수의 진출점에서의 카운터 값 - 호출된 함수의 진입점에서의 카운터 값, (호출된 함수가 말단 함수인 경우)
도 6은 본 발명의 일 실시예에 따른 말단 함수를 설명하는 도면이다.
도 6을 참조하면, 본 발명의 일 실시예에 따라 f()는 호출한 함수(caller)(610)를 나타내고, h()는 호출된 함수(callee)(620)를 나타낸다.
말단 함수는, 본 발명의 일 실시예에 따른 h()와 같이, 함수 내에 호출된 함수를 포함하지 않는 함수를 의미할 수 있다. 따라서, 함수의 진출점에서의 성능 데이터 및 진입점에서의 성능 데이터의 차분값에 의해 말단 함수의 성능을 측정할 수 있다.
본 발명의 일 실시예에 따라 f()는 말단 함수에 해당하지 않으므로, 함수의 진출점에서의 성능 데이터 및 진입점에서의 성능 데이터의 차분값에서, 호출된 함수(callee)들의 성능 측정 결과 값을 감하여 성능 분석 결과를 산출할 수 있다.
도 7은 본 발명의 일 실시예에 따라, 함수별 성능 측정 결과를 출력한 예시도이다.
도 7에 도시된 바와 같이, 본 발명의 일 실시예에 따라, 세로축(710)은 성능 측정 대상 함수들을 나타내고, 가로축(720)은 각각의 함수에 대한 성능 측정 결과 값을 나타낼 수 있다. 예를 들어, 도 7의 세로축(710)에는 'A1, B1, C1, ... , A2, B2, C2, ...' 등과 같은 임의의 함수명이 도시되어 있다.
본 발명의 일 실시예에 따라, 장치는 각각의 함수별로 성능을 측정할 수 있다.
본 발명의 일 실시예에 따라, 측정된 성능은 호출(call) 횟수, 사이클 정보, 뱅크 충돌(bank conflict), 버스 스톨(bus stall) 및 인스트럭션 캐시 미스(Instruction Cache Miss)를 포함할 수 있으나, 이에 제한되지 않는다.
도 8은 본 발명의 일 실시예에 따른 소프트웨어 성능 측정 장치의 블록도이다.
도 8에 도시된 바와 같이, 본 발명의 일 실시예에 따른 소프트웨어 성능 측정 장치는 제어부(235), 실행부(240) 및 송수신부(245)를 포함할 수 있다.
이하 상기 구성요소들에 대해 차례로 살펴본다.
제어부(235)는, 성능 측정을 위하여 소스 코드에 삽입된 성능 측정용 코드에 기초하여, 타겟 시스템 및 성능 카운터(250)를 정지시킬 수 있다.
실행부(240)는, 성능 데이터가 전송되어 저장됨에 따라, 타겟 시스템 및 성능 카운터(250)를 다시 실행시킬 수 있다.
본 발명의 일 실시예에 따르면, 실행부(240)는 호스트 시스템(260)으로부터 소정의 이벤트가 수신됨에 따라, 타겟 시스템 및 성능 카운터(250)를 다시 실행시킬 수 있다.
본 발명의 다른 실시예에 따르면, 실행부(240)는 성능 데이터가 저장되는데 필요한 소정의 시간이 경과한 후, 자동으로 타겟 시스템 및 성능 카운터(250)를 다시 실행시킬 수 있다.
송수신부(245)는, 정지된 시점에서의 성능 데이터를 저장하기 위하여, 호스트 시스템에게 정지된 시점에서의 성능 데이터를 전송할 수 있다. 또한, 호스트 시스템으로부터 타겟 시스템(220) 및 성능 카운터(250)를 다시 실행시키기 위한 소정의 이벤트를 수신할 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
210: 소스 코드 220: 타겟 시스템
230: 컴파일러 235: 제어부
240: 실행부 245: 송수신부
250: 정지 가능한 성능 카운터 260: 호스트 시스템

Claims (23)

  1. 성능 측정을 위하여 소스 코드에 성능 측정용 코드를 삽입하는 단계;
    상기 성능 측정용 코드에 기초하여 타겟 시스템 및 성능 카운터(performance counter)를 정지(stall)시키는 단계;
    상기 정지된 시점에서의 성능 데이터를 저장하기 위하여, 호스트 시스템에게 상기 정지된 시점에서의 성능 데이터를 전송하는 단계; 및
    상기 성능 데이터가 전송되어 저장됨에 따라, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계;
    를 포함하는 소프트웨어 성능 측정 방법.
  2. 제1항에 있어서,
    상기 성능 측정용 코드를 삽입하는 단계는,
    상기 타겟 시스템의 컴파일러가 상기 성능 측정용 코드를 자동으로 삽입하는 단계;
    를 포함하는 방법.
  3. 제1항에 있어서,
    상기 성능 측정용 코드를 삽입하는 단계는,
    상기 소스 코드 내의 성능 측정 대상 함수의 진입점 및 진출점 각각에 상기 성능 측정용 코드를 삽입하는 단계;
    를 포함하는 방법.
  4. 제1항에 있어서,
    상기 성능 데이터를 전송하는 단계는,
    상기 정지된 시점에서의 성능 데이터를 별도의 저장 장치에 저장하기 위하여, 호스트 시스템에게 상기 정지된 시점에서의 성능 데이터를 전송하는 단계;
    를 포함하는 방법.
  5. 제1항에 있어서,
    상기 성능 데이터는, 프로그램 카운터 값(program counter value) 및 성능 카운터 값(performance counter value) 중 적어도 하나를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 성능 데이터는, 호출(call) 횟수, 사이클 정보, 메모리 뱅크 충돌(bank conflict), 버스 스톨(bus stall) 및 인스트럭션 캐시 미스(Instruction Cache Miss) 중 적어도 하나를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계는,
    상기 호스트 시스템으로부터 상기 타겟 시스템에게로 소정의 이벤트가 수신됨에 따라, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계;
    를 포함하는 방법.
  8. 제1항에 있어서,
    상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계는,
    상기 성능 데이터가 저장되는데 필요한 소정의 시간이 경과한 후, 자동으로 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 단계;
    를 포함하는 방법.
  9. 제3항에 있어서,
    상기 진입점에서의 성능 데이터 및 상기 진출점에서의 성능 데이터에 기초하여 성능 측정 결과를 산출하는 단계;
    를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 성능 측정 결과를 산출하는 단계는,
    상기 성능 측정 대상 함수가 말단 함수인지 여부를 판단하는 단계; 및
    상기 성능 측정 대상 함수가 말단 함수인 경우, 상기 성능 측정 대상 함수의 상기 진출점에서의 성능 데이터 및 상기 진입점에서의 성능 데이터의 차분값에 기초하여 성능 측정 결과를 산출하고,
    상기 성능 측정 대상 함수가 말단 함수가 아닌 경우, 상기 성능 측정 대상 함수의 상기 진출점에서의 성능 데이터 및 상기 진입점에서의 성능 데이터의 차분값에서, 상기 성능 측정 대상 함수의 호출된 함수(callee)들의 성능 측정 결과 값을 감하여 성능 측정 결과를 산출하는 단계를 포함하고,
    상기 호출된 함수들의 성능 측정 결과 값은, 상기 호출된 함수들 각각의 진출점에서의 성능 데이터 및 진입점에서의 성능 데이터의 차분값에 기초하여 산출되는 것인, 방법.
  11. 제9항에 있어서,
    상기 산출된 성능 측정 결과를 디스플레이상에 표시하는 단계;
    를 더 포함하는 방법.
  12. 제1항 내지 제11항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  13. 성능 측정을 위하여 소스 코드에 삽입된 성능 측정용 코드에 기초하여, 타겟 시스템 및 성능 카운터(performance counter)를 정지(stall)시키는 제어부;
    상기 정지된 시점에서의 성능 데이터를 저장하기 위하여, 호스트 시스템에게 상기 정지된 시점에서의 성능 데이터를 전송하는 송수신부; 및
    상기 성능 데이터가 전송되어 저장됨에 따라, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는 실행부;
    를 포함하는 소프트웨어 성능 측정 장치.
  14. 제13항에 있어서,
    상기 성능 측정용 코드는,
    상기 타겟 시스템의 컴파일러에 의해 자동으로 삽입되는, 장치.
  15. 제13항에 있어서,
    상기 성능 측정용 코드는,
    상기 소스 코드 내의 성능 측정 대상 함수의 진입점 및 진출점 각각에 삽입되는, 장치.
  16. 제13항에 있어서,
    상기 송수신부는,
    상기 정지된 시점에서의 성능 데이터를 별도의 저장 장치에 저장하기 위하여, 호스트 시스템에게 상기 정지된 시점에서의 성능 데이터를 전송하는, 장치.
  17. 제13항에 있어서,
    상기 성능 데이터는,
    프로그램 카운터 값(program counter value) 및 성능 카운터 값(performance counter value) 중 적어도 하나를 포함하는, 장치.
  18. 제13항에 있어서,
    상기 성능 데이터는,
    호출(call) 횟수, 사이클 정보, 뱅크 충돌(bank conflict), 버스 스톨(bus stall) 및 인스트럭션 캐시 미스(Instruction Cache Miss) 중 적어도 하나를 포함하는, 장치.
  19. 제13항에 있어서,
    상기 송수신부는, 상기 호스트 시스템으로부터 소정의 이벤트를 수신하고,
    상기 실행부는, 상기 소정의 이벤트가 수신됨에 따라, 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는, 장치.
  20. 제13항에 있어서,
    상기 실행부는,
    상기 성능 데이터가 저장되는데 필요한 소정의 시간이 경과한 후, 자동으로 상기 타겟 시스템 및 상기 성능 카운터를 다시 실행시키는, 장치.
  21. 제15항에 있어서,
    상기 진입점에서의 성능 데이터 및 상기 진출점에서의 성능 데이터에 기초하여 성능 측정 결과를 산출하는 산출부;
    를 더 포함하는 장치.
  22. 제21항에 있어서,
    상기 산출부는,
    상기 성능 측정 대상 함수가 말단 함수인지 여부를 판단하고,
    상기 성능 측정 대상 함수가 말단 함수인 경우, 상기 성능 측정 대상 함수의 상기 진출점에서의 성능 데이터 및 상기 진입점에서의 성능 데이터의 차분값에 기초하여 성능 측정 결과를 산출하고,
    상기 성능 측정 대상 함수가 말단 함수가 아닌 경우, 상기 성능 측정 대상 함수의 상기 진출점에서의 성능 데이터 및 상기 진입점에서의 성능 데이터의 차분값에서, 상기 성능 측정 대상 함수의 호출된 함수(callee)들의 성능 측정 결과 값을 감하여 성능 측정 결과를 산출하며,
    상기 호출된 함수들의 성능 측정 결과 값은, 상기 호출된 함수들 각각의 진출점에서의 성능 데이터 및 진입점에서의 성능 데이터의 차분값에 기초하여 산출되는 것인, 장치.
  23. 제21항에 있어서,
    상기 산출된 성능 측정 결과를 표시하는 디스플레이부;
    를 더 포함하는 장치.
KR1020130147522A 2013-11-29 2013-11-29 소프트웨어 성능 측정 방법 및 장치 KR20150062654A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130147522A KR20150062654A (ko) 2013-11-29 2013-11-29 소프트웨어 성능 측정 방법 및 장치
US14/554,994 US20150154103A1 (en) 2013-11-29 2014-11-26 Method and apparatus for measuring software performance

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130147522A KR20150062654A (ko) 2013-11-29 2013-11-29 소프트웨어 성능 측정 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20150062654A true KR20150062654A (ko) 2015-06-08

Family

ID=53265433

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130147522A KR20150062654A (ko) 2013-11-29 2013-11-29 소프트웨어 성능 측정 방법 및 장치

Country Status (2)

Country Link
US (1) US20150154103A1 (ko)
KR (1) KR20150062654A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170103275A (ko) * 2016-03-03 2017-09-13 한국전자통신연구원 실시간 QoS 모니터링 장치 및 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893258A (zh) * 2016-03-31 2016-08-24 中电海康集团有限公司 一种基于人工鱼群算法的性能调优方法及工具
CN106844195A (zh) * 2016-12-22 2017-06-13 福建瑞之付微电子有限公司 一种基于统一指令集测试的测试方法
US11722558B2 (en) * 2021-02-23 2023-08-08 Seagate Technology Llc Server-side resource monitoring in a distributed data storage environment

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265254A (en) * 1991-08-14 1993-11-23 Hewlett-Packard Company System of debugging software through use of code markers inserted into spaces in the source code during and after compilation
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US20090094596A1 (en) * 2007-10-05 2009-04-09 Scense B.V. Systems and methods for an adaptive installation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170103275A (ko) * 2016-03-03 2017-09-13 한국전자통신연구원 실시간 QoS 모니터링 장치 및 방법

Also Published As

Publication number Publication date
US20150154103A1 (en) 2015-06-04

Similar Documents

Publication Publication Date Title
US12001316B2 (en) Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction
US10235273B2 (en) Indexing a trace by insertion of key frames for replay responsiveness
KR20210002701A (ko) 교차 레벨 트레이스 매핑을 통한 실행 제어
US9959194B1 (en) Indexing a trace by insertion of memory snapshots for replay responsiveness
US8938729B2 (en) Two pass automated application instrumentation
US9268627B2 (en) Processor hang detection and recovery
US9355003B2 (en) Capturing trace information using annotated trace output
CN110168508B (zh) 监测断点出现的存储器位置的方法、计算机系统和介质
KR20150062654A (ko) 소프트웨어 성능 측정 방법 및 장치
KR20180096780A (ko) 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치
CN110688245B (zh) 信息获取方法、装置、存储介质及设备
US9424165B2 (en) Debugging processor hang situations using an external pin
US7735067B1 (en) Avoiding signals when tracing user processes
US8874856B2 (en) Apparatus and method for detecting false sharing
US20070245316A1 (en) Method, apparatus, and computer program product for implementing performance impact reduction of watched variables
US8756580B2 (en) Instance-based field affinity optimization
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
CN114579131A (zh) 用于获取硬件性能数据的方法、设备和系统
US20190042390A1 (en) Focused execution of traced code in a debugger
US10324510B2 (en) Information processing apparatus and method for measuring energy consumption
US11720468B1 (en) Unwinding program call stacks for performance profiling
CN112860224B (zh) 一种函数执行环境构建方法、装置、电子设备及存储介质
CN108874613B (zh) 一种性能瓶颈定位量化方法、装置及嵌入式io系统
CN115617267A (zh) 输入/输出信息的处理方法、装置及电子设备
CN113407350A (zh) 指令处理装置、处理器、芯片、计算设备及相应的方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid