KR100292642B1 - 방해없는 코드 계측을 위한 시스템 및 방법 - Google Patents

방해없는 코드 계측을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR100292642B1
KR100292642B1 KR1019980032910A KR19980032910A KR100292642B1 KR 100292642 B1 KR100292642 B1 KR 100292642B1 KR 1019980032910 A KR1019980032910 A KR 1019980032910A KR 19980032910 A KR19980032910 A KR 19980032910A KR 100292642 B1 KR100292642 B1 KR 100292642B1
Authority
KR
South Korea
Prior art keywords
data
code
metrology
memory
segment
Prior art date
Application number
KR1019980032910A
Other languages
English (en)
Other versions
KR19990029301A (ko
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 KR19990029301A publication Critical patent/KR19990029301A/ko
Application granted granted Critical
Publication of KR100292642B1 publication Critical patent/KR100292642B1/ko

Links

Classifications

    • 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/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/3457Performance evaluation by simulation
    • G06F11/3461Trace driven simulation
    • 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/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
    • G06F11/3471Address tracing

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 가장 방해가 적도록 정보 처리 시스템 내에서 성능을 모니터하기 위한 시스템 및 방법에 관한 것이다. 본 발명의 방법은 수집 페이즈, 배치 페이즈, 및 계측 페이즈를 포함한다. 수집 페이즈 동안, 워크로드(즉, 코드 세그먼트)가 트레이스되며, 명령 및 데이터 액세스들이 판단된다. 배치 페이즈 동안, 트레이스 데이터는 캐시 시뮬레이터로 전달된다. 계측 코드 및 데이터에 대한 최적의 배치를 판단하기 위해, 하드웨어 및 계측 특성들에 따라서, 캐시 시뮬레이터는 트레이스 데이터를 사용한다. 소망의 충돌 레벨이 달성되지 않는다면, 가장 방해가 적은 배치가 발견될 때까지, 다양한 계측 코드 및 데이터 배치들로 모니터된 코드를 실행하므로써 가능한 가장 좋은 배치가 발견된다. 이때, 계측 코드를 실제 실행하는 계측 페이즈 동안 상기 가장 좋은 가능한 배치가 사용된다.

Description

방해없는 코드 계측을 위한 시스템 및 방법
본 발명은 정보 처리 시스템에 관한 것으로서, 특히 시스템 성능을 모니터하고, 모델링하며, 향상시키기 위한 소프트웨어 기기 및 방법에 관한 것이다.
시스템 성능을 향상시키기 위하여, 시스템 내의 어느 모듈들이 가장 자주 실행되는지 아는 것은 유용하다. 이들 가장 자주 실행되는 모듈들은 "핫(hot)" 모듈로 불리운다. 이들 핫 모듈들 내에서, 코드의 어느 라인들이 가장 자주 실행되는지 아는 것도 역시 유익하다. 이들 자주 실행되는 코드 세그먼트들은 "핫 스팟들(hot spots)"로 불리운다.
시스템 성능을 향상시키기를 원하는 프로그래머는 이들 모듈들 내에서 핫 모듈들 및 핫 스팟들의 성능을 향상시키는 것에 촛점을 맞추어야 한다. 가장 자주 실행되는 모듈들 및 코드 세그먼트들의 성능을 향상시키는 것은 전체 시스템 성능을 향상시키는 데에 가장 효과적이다. 드물게 실행되는 모듈들 또는 코드 세그먼트들의 성능 향상에 많은 시간을 투자한다는 것은, 전체 시스템 성능을 향상시키는데 거의 도움이되지 않기 때문에, 의미없는 일이다.
최근의 많은 프로세서들은 성능 데이터(performance data)가 수집될 수 있도록 하는 하드웨어 기능을 갖추고 있다. 예들 들어, 가장 최근의 프로세서들은 사이클 타임을 측정하기 위한 기능을 가지고 있다. 또한, 최근의 많은 프로세서들은 캐시 미스, 부동 소수점 연산(floating-point operations), 버스 이용 및 변환 색인 버퍼(TLB, Translation Look-aside Buffer) 미스 등의 다른 아이템들을 계수하는 능력들을 가지고 있다. 캐시 미스를 계수하기 위하여, 예를 들어 컨트롤 레지스터 내의 비트 또는 비트들의 순서가 소정의 코드로 설정된다. 상기 비트 순서는 캐시 미스가 있을 때마다 프로세서가 카운터를 증가시키도록 명령한다. 비트 순서가 리셋될 때, 프로세서는 캐시 미스를 계수하는 것을 중지하며, 캐시 미스의 총 수는 또 다른 레지스터로부터 또는 메모리 영역으로부터 판독될 수 있다.
성능 분석이 더 필요한 코드 세그먼트(즉, 핫 스팟)를 프로그래머가 일단 결정하면, 프로그래머는 테스트되는 코드를 "계측(instruments)"한다. 예를 들어, 22개 라인의 코드로 구성된 특정한 코드 세그먼트가 성능 분석이 더 필요한 핫 스팟이라고 프로그래머가 판단한다고 가정하자. 프로그래머는 22개의 명령에 앞에 "후크(hook)"(즉, 명령 또는 명령 그룹)를 배치한다. 후크는 전형적으로 점프 명령인데, 이 점프 명령은 계측 루틴(instrumentation routine)으로 점프를 실행하게 한다. 계측 루틴은 소정 형태의 성능 분석을 시작한다. 예를 들어, 프로세서 내에서의 캐시 미스 계수(cache miss counting)를 턴온하기 위해 계측 루틴이 컨트롤 레지스터 내에서 적절한 비트 또는 비트 세트를 설정할 수 있다. 이때, 계측 코드는 테스트되고 있는 명령들로 제어권을 되돌린다. 테스트되고 있는 코드 세그먼트의 말단에서, 프로그래머는 또 다른 후크를 삽입한다. 이 후크는 전형적으로 성능 테스트를 턴오프하는 계측 루틴으로 점프한다. 주어진 실시예에서, 계측 루틴은 캐시 미스를 계수하는 것을 중지하기 위해 컨트롤 레지스터 내의 적절한 비트 또는 비트들을 설정한 후, 캐시 미스 계수를 저장한다.
이러한 형태의 계측이 갖는 한가지 문제점은 계측 루틴들이 분석중인 코드의 성능 결과에 영향을 줄 수 있다는 것이다. 예를 들어, 테스트되고 있는 코드 내의 명령과 동일한 캐시 일치 클래스 내에 계측 루틴들 내의 명령들 중 어느 하나라도 있다면, 계측 명령은 테스트되는 명령이 명령 캐시 밖으로 밀려나도록 한다. 이것은 테스트되고 있는 코드에 대한 캐시 히트/미스율 및 CPI(Cycles Per Instruction) 측정에 영향을 준다. 계측 루틴에 의한 임의의 데이터 액세스에 의해 데이터 캐시 밖으로 데이터가 밀려난다면, 유사한 문제점들이 데이터 캐시 측정에서 발생할 수 있다. 또한, 변환 색인 버퍼(TLB) 측정 등의 다른 형태의 측정들과 함께 동일한 문제점들이 발생할 수도 있다.
그 결과, 방해가 가장 적도록 정보 처리 시스템 내에서 성능을 측정하기 위한 시스템 및 방법을 갖는 것이 바람직하다. 상기 시스템 및 방법이 계측 코드 또는 데이터가 테스트된 코드의 성능 측정에 영향을 주는 것을 크게 감소시키는 것도 또한 바람직하다.
따라서, 본 발명은 방해가 가장 적은 방법으로 정보 처리 시스템에서 성능을 모니터하기 위한 시스템 및 방법에 관한 것이다. 본 발명의 방법은 수집 페이즈(collection phase), 배치 페이즈(placement phase), 및 계측 페이즈(instrumentation phase)를 포함한다. 수집 페이즈 동안, 워크 로드(즉, 코드 세그먼트)가 트레이스되며, 명령 및 데이터 액세스들이 판단된다. 배치 페이즈 동안, 트레이스 데이터는 캐시 시뮬레이터로 전달된다. 하드웨어 및 계측 특성들에 따라서, 캐시 시뮬레이터는 트레이스 데이터를 사용하여 계측 코드 및 데이터를 위한 최적의 배치를 판단한다. 소망의 충돌 레벨(conflict level)에 도달하지 않는다면, 방해가 가장 적은 배치가 발견될 때까지, 다양한 계측 코드 및 데이터 배치들과 함께 모니터되는 코드를 실행하므로써 최적의 가능한 배치(best possible placement)가 발견된다. 이때, 계측 페이즈 동안 최적의 가능한 배치가 사용되어 실제로 계측된 코드를 실행한다.
본 발명의 일 실시예는 상술한 방법을 수행할 수 있는 정보 처리 시스템이다. 본 발명의 또 다른 실시예는 정보 처리 시스템 내에 상주하는 명령 세트들에 관한 것이다.
본 발명의 장점 중 하나는 방해가 가장 적게 코드 세그먼트들의 성능 모니터링을 할 수 있다는 것이다. 본 발명의 또 다른 장점은 계측 코드 또는 데이터가 테스트되고 있는 코드의 성능 측정에 영향을 주는 것을 감소시킨다는 것이다.
도 1은 본 발명의 성능 모니터링 방법을 실행할 수 있는 정보 처리 시스템의 블록도.
도 2a 및 2b는 도 1의 시스템에서 RAM 및 캐시 메모리의 부분들을 도시하는 블록도들.
도 3은 본 발명의 다중 페이즈들을 도시하는 플로우 챠트.
도 4는 본 발명의 교시에 따라 가장 방해가 적은 코드 및 데이터를 부가하기 위한 방법을 더욱 상세히 도시하는 플로우 챠트.
도 5는 본 발명의 교시에 따라 계측 코드 및 데이터의 가능한 가장 적절한 배치를 결정하기 위한 방법을 더욱 상세히 도시하는 플로우 챠트.
〈도면의 주요 부분에 대한 부호의 설명〉
10 : 프로세서
12 : 시스템 버스
14 : ROM
16 : RAM
18 : 입/출력 어뎁터
20 : 디스크 유닛
22 : 사용자 인터페이스 어뎁터
24 : 키보드
26 : 마우스
28 : 스피커
29 : 터치 스크린 장치
32 : 마이크로폰
34 : 통신 어뎁터
본 발명은 개인용 컴퓨터, 워크스테이션, 소형 컴퓨터 및 중앙 처리 장치 컴퓨터를 포함하는 다양한 하드웨어 플랫포옴 상에서 실시될 수 있다. 본 발명의 방법의 다수의 단계들은 다양한 형태의 병렬 프로세서들 상에서 편리하게 실시될 수 있다. 이제, 도 1을 참조하여, 본 발명의 새로운 방법을 실시하는데 사용될 수 있는 정보 처리 시스템의 전형적인 구성을 설명한다. 도 1의 컴퓨터 시스템은 적어도 하나의 프로세서(10)를 갖는다. 프로세서(10)는 시스템 버스(12)를 경유하여 랜덤 액세스 메모리(RAM, 16), 판독 전용 메모리(ROM, 14), 그리고 디스크 유닛들(20), 테이프 드라이브들(40), 및 프린터들(42) 등의 주변 장치들을 버스(12)에 접속하기 위한 입/출력(I/O) 어뎁터(18), 그리고 키보드(24), 버튼들(17a 및 17b)을 구비한 마우스(26), 스피커(28), 마이크로폰(32), 및/또는 터치 스크린 장치(29)와 같은 다른 사용자 인터페이스 장치들을 버스(12)에 접속하기 위한 사용자 인터페이스 어뎁터(22), 정보 처리 시스템을 데이터 처리 네트워크에 접속하기 위한 통신 어뎁터(34), 그리고 버스(12)를 디스플레이 장치(38)에 접속하기 위한 디스플레이 어뎁터(36)에 상호 접속된다. 각각의 프로세서(10)는 레벨 1 캐시 메모리(39)를 포함한다. 캐시 메모리의 부가적인 레벨들은 프로세서(10) 내에 있을 수도 있고 버스(12)에 접속되어 있을 수도 있다. 통신 어뎁터(34)는 수백의 또는 수천의 동일한 시스템들, 또는 떨어진 프린터들, 떨어진 서버들, 또는 떨어진 기억 장치들 등의 다른 장치들에 도1에 도시된 시스템을 링크할 수 있다.
정보 처리 시스템 내의 성능 문제점들을 식별하는데 도움을 주는 임의의 워크로드, 또는 코드 세그먼트의 고유 데이터(intrinsic data)를 수집하는 것이 때때로 바람직하다. 코드의 고유 특성들(inherent characteristics)을 설명하는 데이터가 고유 데이터이다. 예를 들면, 코드 세그먼트는 항상 캐시 미스를 유발하도록 기록될 수 있다. 이 캐시 미스는 코드 세그먼트의 고유 특성이다. 다른 방법으로, 코드 세그먼트는 캐시 미스를 발생시키는 인터럽트를 항상 유발하도록 기록될 수도 있다. 또한, 이와 같은 형태의 캐시 미스도 또한 코드 세그먼트의 고유 특성이다. 하드웨어 및 소프트웨어 모두를 위한 시스템 디자인으로의 입력으로서 고유 데이터가 사용될 수 있다. 예를 들면, 캐시 미스율과 같은 데이터는 하드웨어 캐시 구조(geometry)를 판단하는데 중요하며, 반면에 명령 계수 데이터는 컴파일러 최적화 용도에 중요하다.
두 종류의 고유 데이터가 수집될 수 있는데, 이것은 결정성 데이터(deterministic data)와 비결정성 데이터(non-deterministic data)이다. 결정성 데이터는 데이터 액세스 및 명령 실행 순서와 같은 것들을 포함한다. 보통, 방해(interrupt)와 같은 외부 요인들이 결정성 데이터의 수집을 방해하지는 않는다. 비결정성 데이터는 캐시 히트/미스율들 및 TLB 히트/미스율들과 같은 것들을 포함하는데, 방해와 같은 외부 요인들에 더 민감하다. 특히, 상대적으로 적은 워크로드로 측정될 때, 비결정성 데이터의 수집 및 사용은 부정확하거나 잘못될 수 있다.
본 발명은 비결정성 데이터의 유효성에 영향을 주는 외부 요인들을 최소화하며 임의의 워크로드나 코드 세그먼트의 고유 데이터를 수집하기 위한 시스템 및 방법을 설명한다. 특히, 계측 코드 자체의 사이드 효과들을 최소화하며 명령 및 데이터 통계를 수집하는데 다중 페이즈 방법(multi-phased method)이 사용된다.
본 발명은 임의의 크기를 갖는 워크로드용 데이터를 수집하는데 사용될 수 있지만, 특히 대략 200개의 명령에 이르기 까지 대략 10개의 명령의 코드 세그먼트들을 계측하는데 사용된다, 큰 코드 세그먼트(즉, 200개 이상의 명령)에 대해서, 캐시 내의 명령들 및 데이터를 중첩 기입(overwrite)하고 동일한 아이템들을 캐시 내로 되돌려 이동시키는 것과 관련된 오버헤드는 전체 실행 시간에 대해서 작은 퍼센티지이므로, 성능 측정에 최소한의 영향만을 미친다. 적은 코드 세그먼트(즉, 10개 이하의 명령들)에 대해서, 계측(instrumentation)이 너무 어렵기 때문에, 캐시 사용의 정밀한 화상을 얻는 것은 사실상 불가능하다.
목적을 분명히 하기 위해, 코드 세그먼트에 대한 명령 및 데이터 캐싱 통계를 수집하는 것과 관련하여 본 발명이 설명된다. 명령 및 데이터 캐시 정보 수집과 관련한 것 중의 하나는 정보를 수집하는 행동이 측정에 영향을 준다는 것이다. 이것은 계측화 코드 또는 데이터가 코드 세그먼트 명령들 또는 데이터와 같은 동일 캐시 일치 클래스 내에 우연하게 있을 수 있기 때문이다. 캐시 일치 클래스는 캐시 내로 동일 매핑(mapping)을 갖는 어드레스 클래스이다.
예를 들면, 테스트되고 있는 코드 세그먼트에 대한 특정 데이터가 데이터 캐시 내 4개의 장소 중 하나 내에 놓여질 수 있다고 가정하자. 데이터 캐시 내의 이들 4개의 장소들은 동일 캐시 일치 클래스의 일부분이다. 4개의 장소들 모두가 데이터로 채워지면, 가장 최근에 사용된 알고리듬을 이용하여, 다음 번에 새로운 데이터가 데이터 캐시 내로 기록될 필요가 있을 때 어느 데이터가 중첩 기입되는지를 결정한다. 계측 데이터가 동일 캐시 일치 클래스에 있다면, 정상적으로는 중첩 기입되지 않는 데이터의 일부를 계측 데이터의 일부분이 중첩 기입하는 것이 가능하다. 이것이 캐시 미스를 발생하게 하는데, 정상적으로는 발생하지 않는다. 동일한 상황이 명령 캐시 내의 명령 매핑과 함께 발생할 수 있다. 테스트되고 있는 코드로부터의 명령들이 계측 명령들처럼 명령 캐시 내의 동일 장소로 맵하는 것은 가능하다. 계측 코드 및 계측 데이터가 테스트되고 있는 코드 세그먼트를 방해하지 않는 것을 보증하므로써, 본 발명의 시스템 및 방법은 이와 같은 형태들의 측정들을 최소화한다. 물론, 본 기술 분야 숙련된 기술자는 본 발명과 관련된 다른 최적의 이익들이 있다는 것을 이해할 수 있을 것이다.
캐시 미스 데이터를 수집하는 것과 관련된 문제들이 도 2a 및 2b에 생생하게 도시된다. CUT(Code Under Test) 명령들(44) 및 CUT 데이터(46)는 RAM(16) 내로 로드된다. 캐시 라인들(49, 50 및 51)에서 명령 캐시(48) 내로 CUT 명령들(44)이 맵한다. 캐시 라인들(54, 55 및 56)에서 데이터 캐시(53) 내로 CUT 데이터(46)가 맵한다. 이제, 계측 명령들 및 데이터가 도 2b에 도시된 바와 같이 RAM(16) 내로 로드된다고 하자. CUT 명령들(44) 전후에 계측 명령들(60)이 로드된다. 계측 데이터(61)는 CUT 데이터(46) 전에 로드된다. 일견하면, 계측 명령들 및 데이터가 테스트 중인 코드 세그먼트를 간섭하지 않는 것처럼 보인다. 그러나, 명령 및 데이터 캐시들을 더 자세히 관찰해 보면, 캐시 히트/미스율이 계측 명령들 및 데이터에 의해 영향을 받는다는 것을 알 수 있다. 계측 명령들(60)은 캐시 라인들(49 및 51)을 부분적으로 겹쳐 쓰게하며, 기억 장소들(62 및 63)에서 명령 캐시(48) 내로 맵한다. 동일하게, 계측 데이터(61)는 기억 장소들(64 및 65)에서 데이터 캐시(53) 내로 맵한다. 기억 장소(64)로의 매핑은 CUT 데이터(46)에 영향을 주지 않는다. 그러나, 기억 장소(65)로의 매핑은 캐시 라인(56)을 부분적으로 겹쳐 쓰게하므로, 데이터 캐시 히트/미스율에 영향을 준다. 본 발명은 계측 명령들 및 데이터가 수집된 성능 측정들 상에 갖는 효과를 최소화하는 시스템 및 방법을 제공한다.
양호한 실시예에서, 본 발명은 도 3에 도시된 바와 같이 3개의 페이즈들에서 실행된다. 제1 페이즈는 수집 페이즈(80)로서 불리운다. 수집 페이즈(80) 동안, 계측되고 모니터되는 코드와 관련하여 데이터가 수집된다. 이때, 제2 페이즈, 즉 배치 페이즈(82) 동안 상기 데이터가 사용된다. 배치 페이즈 동안에, 모니터되고 있는 실제 코드 세그먼트에 최소한의 영향을 미치도록 계측 코드 세그먼트들 및 데이터 세그먼트들을 메모리 내의 어디에 배치할 것인지에 관한 판단이 이루어진다. 최종적으로, 제3 페이즈, 즉 계측 페이즈(84) 동안, 모니터된 코드는 최적의 메모리 기억 장소들 내의 계측 코드 세그먼트들 및 데이터 세그먼트들로써 실행된다.
이제, 도 4를 참조하여, 도 3에 도시된 3개의 페이즈들을 실행하기 위한 방법이 도시된다. 도 4에서, 단계들(90, 92 및 94)은 수집 페이즈(80)의 부분이다. 단계들(96 내지 110)은 배치 페이즈(82)의 부분이다. 도 4에서는 계측 페이즈(84)가 도시되지 않았다.
도 4에 도시된 바와 같이, 워크로드(즉, 모니터된 코드 세그먼트)가 트레이싱 프로그램과 동시에 실행된다(단계 90). 트레이싱 프로그램은 모니터된 코드 세그먼트에 대한 명령 캐시 액세스들 및 데이터 캐시 액세스들 모두를 수집한다(단계 92). 상기 데이터 수집 단계는 명령 및 데이터 캐싱에 의해 크게 방해 받지만, 트레이싱 프로그램에 의해 수집되는 결정성 데이터(즉, 모니터된 코드 세그먼트에 의해 사용되어지는 캐시 및 데이터 라인들)에 영향을 주지는 않는다. 이때, 데이터가 캐시 시뮬레이터에 의한 사용을 위해 기억된다(단계 94).
캐시 시뮬레이터는 트레이스 데이터와 캐시 구조(cache geometry)를 입력으로 받아서, 미스율 및 핫 캐시 라인들과 같은 데이터를 출력하는 프로그램이다. 이와 같은 프로그램은 캐시의 실제 하드웨어 실행만큼 복잡해 질 수 있거나, 측정된 결과들을 얻는 휴리스틱(heuristic) 알고리듬들을 사용할 수 있다. 예를 들면, n-by-m 웨이 세트(way xet) 관련 명령 캐시에 대한 캐시 미스율을 개발자가 얻기 원한다고 가정하자. 실행된 명령 어드레스들의 트레이스가 각 가변-길이 명령의 길이에 따라서 필요하게 된다. 캐시 시뮬레이터는 입력에 대하여 데이터 구조들에 기록되고, 상황 변화에 따라서 출력 계수기들을 조절한다. 예를 들어, 앞선 명령에 의해 이미 기록된 데이터 구조로 다음 명령 어드레스가 맵한다면, 캐시 미스 계수기는 증가되고, 캐시 캐스트-아웃 이벤트(cashe cast-out event)가 발생한다. 시뮬레이션의 마지막에서, 캐시 컨텐트를 표시하는 현재 데이터 구조들의 맵 뿐만아니라 계수기 데이터가 출력된다. 서로 다른 캐싱 알고리듬(예: 가장 최근에 사용된 제1 피트 등)을 실행하고 테스트하며, 임의의 캐시 구조들을 결정하며, 캐시 성능을 예측하는 기술에 캐시 시뮬레이터들이 사용된다.
계속해서 도 4를 참조하면, 트레이스 데이터가 이때 캐시 시뮬레이터로 전달된다(단계 96). 캐시 구조와 계측 코드 및 데이터 세그먼트들이 또한 캐시 시뮬레이터로 전달된다(단계 98). 캐시 구조는 캐시의 크기, 연관성(직접 맵된, 이방 연관, 4방 연관 등), 캐시 라인들의 크기, 및 다른 데이터 등의 데이터를 포함한다. 코드 세그먼트가 실행할 때, 코드 및 데이터가 캐시 내에 배치된 곳을 예측하기 위해 캐시 시뮬레이터는 트레이스 데이터 및 캐시 구조를 사용한다. 이때, 캐시 시뮬레이터가 실행하여(단계 100), 캐시 매핑 충돌을 최소화할 계측 코드 및 데이터 세그먼트들에 대한 가능한 배치를 판단한다. 이때, 캐시 매핑 충돌이 최소화되었는지 여부를 판단하는 검사를 캐시 시뮬레이터가 한다(단계 102). 다시 말하면, 캐시 매핑 충돌이 최소 허용 충돌 이상인지를 캐시 시뮬레이터가 판단한다. 최소 허용 충돌은 0이 될 수도 있으며, 또는 사용자에 의해 설정된 다른 임의의 소망 충돌 레벨이 될 수도 있다. 캐시 매핑 충돌이 최소화되었다면, 배치 패이즈가 종결된다(단계 108). 그렇지 않다면, 캐시 시뮬레이터는 다른 배치가 가능한지 여부를 검사한다(단계 104). 다른 배치들이 가능하다면, 계측 코드 및 데이터 세그먼트들이 재배열되고(단계 106) 다시 검사된다(단계 102). 캐시 매핑 충돌이 최소화될 때까지, 단계들(104 및 102)이 반복된다. 일단 충돌이 최소화된다면, 모니터된 코드 세그먼트에 따라서 계측 코드가 실행될 수 있고, 캐시 미스율들이 워크로드에 대해서 수집된다.
캐시 시뮬레이터에 의해 캐시 매핑 충돌이 소망 레벨로 최소화될 수 없는 가능성이 항상 존재한다. 가능한 모든 배치를 시도한 후에, 다른 어떤 배치도 가능하지 않다고 판단될 수 있다(단계 104에서). 이 경우에, 도 5에 도시된 방법(단계 110)이 계측 코드 및 데이터의 가장 좋은 가능한 배치를 판단하는데 사용된다.
도 5에 도시된 바와 같이, 계측 코드 및 데이터에 대한 가장 방해가 적은 배치들(즉, 가장 충돌이 적은 배치들)의 리스트가 캐시 시뮬레이터로부터 얻어진다(단계 120). 이때, 수신된 리스트에 따라서 계측 코드 및 데이터가 메모리 영역들 내로 배치된다(단계 102). 이때, 테스트 중인 코드가 실행되고(단계 124), 실행 시간이 임의의 앞선 실행 시간들과 비교된다(단계 126). 실행 시간이 임의의 앞선 실행 시간들 이하라면, 새로운 실행 시간이 세이브된다(단계 128). 시도할 메모리 영역들이 더 존재한다면(단계 130), 계측 코드 및 데이터는 다른 메모리 기억 장소들로 이동되고(단계 132), 테스트 중인 코드가 다시 실행된다(단계 124). 더 이상 시도할 다른 기억 장소들이 없을 때까지, 단계들(124 내지 132)이 반복된다(단계 130). 가장 적은 시간을 이끄는 배치가 계측 코드 및 테스트에 대한 최적의 배치로 간주된다.
본 발명이 임의의 특정 정도로 기술되었지만, 본 기술 분야의 숙련된 기술자들이 본 발명의 사상 및 범위에서 벗어나지 않게 그 구성 요소들을 변경할 수 있다는 것은 인식되어야 한다. 본 발명의 실시예들 중 하나는 도 1에 도시된 바와 같이 일반적으로 구성된 하나 이상의 컴퓨터 시스템들의 랜덤 액세스 메모리(16)에 상주하는 명령 세트들로서 실행될 수 있다. 명령 세트는, 컴퓨터 시스템에 의해 요구될 때까지, 예를 들어 CD-ROM 드라이브에 사용되는 광 디스크 또는 플로피 디스크 드라이브에 사용되는 플로피 디스크 등의 탈착 가능한 메모리 또는 하드 디스크 드라이브와 같은 또 다른 컴퓨터 판독 가능 메모리에 기억될 수 있다. 또한, 명령 세트는 또 다른 컴퓨터의 메모리에 기억될 수 있으며, 사용자가 바랄 때에는 인터넷 등의 로컬 영역 네트워크 또는 와이드 영역 네트워크에 의해 전송될 수 있다. 매체가 컴퓨터 판독 가능 정보를 전달하도록 전기적, 자기적, 또는 화학적으로 기억되는 매체를 명령 세트들의 물리적 기억 장소가 물리적으로 변화시키는 것은 본 기술 분야에서 숙련된 기술자들은 이해할 수 있을 것이다. 본 발명은 첨부된 청구항들 및 그 등가의 범위에 의해서만 제한된다.

Claims (16)

  1. 정보 처리 시스템에서 실행하는 코드 세그먼트(code segment)의 성능을 동적으로(dynamically) 모니터하기 위한 방법에 있어서,
    모니터되는 코드 세그먼트에 대한 데이터를 수집(collect)하는 단계와,
    하나 이상의 계측 코드 세그먼트들 및 하나 이상의 계측 데이터 세그먼트들을 배치할 하나 이상의 메모리 영역들을 선택(select)하는 단계와,
    상기 하나 이상의 계측 코드 세그먼트들에 따라서, 모니터된 상기 코드 세그먼트를 실행하는 단계
    를 포함하는 동적 성능 모니터 방법.
  2. 제1항에 있어서, 상기 선택 단계는 상기 수집 단계 동안 수집된 상기 데이터를 판독하는 단계와, 각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트에 대한 초기 기억 장소를 판단하는 단계와, 현재의 캐시 구조(geometry)를 분석하는 단계와, 존재하는 충돌 레벨(conflict level)을 판단하는 단계와, 상기 존재하는 충돌 레벨이 소망의 충돌 레벨 이상이라면, 각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트를 이동시킬 메모리 내의 기억 장소를 판단하는 단계를 포함하되, 상기 존재하는 충돌 레벨(conflict level)을 판단하는 단계와, 상기 각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트를 이동시킬 메모리 내의 기억 장소를 판단하는 단계는, 소망의 충돌 레벨에 도달할 때까지, 여러번 반복될 수 있는 동적 성능 모니터 방법.
  3. 정보 처리 시스템에 있어서,
    캐시 메모리(cache memory)를 포함하는 하나 이상의 프로세서들과,
    메모리 수단과,
    효과적인 동작을 위해 시스템의 구성 부품들을 접속하는 적어도 하나의 시스템 버스와,
    모니터된 상기 코드 세그먼트에 대한 데이터를 수집하기 위한 수단과,
    하나 이상의 계측 코드 세그먼트들 및 하나 이상의 계측 데이터 세그먼트들을 배치할 상기 메모리 수단 내의 하나 이상의 메모리 영역들을 선택하기 위한 수단과,
    상기 하나 이상의 계측 코드 세그먼트들에 따라서, 모니터된 상기 코드 세그먼트를 실행하기 위한 수단
    을 포함하는 정보 처리 시스템.
  4. 제3항에 있어서, 상기 수집 수단은,
    모니터된 상기 코드 세그먼트를 트레이싱하기 위한 수단과,
    상기 모니터된 코드 세그먼트에 대한 데이터를 수집하기 위한 수단과,
    상기 메모리 수단 내에 상기 데이터를 저장하기 위한 수단
    을 포함하는 정보 처리 시스템.
  5. 제3항에 있어서, 상기 선택 수단은
    상기 수집 수단에 의해 수집된 상기 데이터를 판독하기 위한 수단과,
    상기 각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트에 대한 초기 기억 장소를 판단하기 위한 수단과,
    현재의 캐시 구조를 분석하기 위한 수단과,
    현존하는 충돌 레벨을 판단하기 위한 수단과,
    각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트를 이동할 상기 메모리 수단 내의 기억 장소를 판단하기 위한 수단
    을 포함하는 정보 처리 시스템.
  6. 제3항에 있어서, 상기 선택 수단은 캐시 시뮬레이터를 포함하는 정보 처리 시스템.
  7. 제3항에 있어서, 상기 선택 수단은
    상기 각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트를 상기 메모리 수단 내의 메모리 기억 장소 내로 배치하기 위한 수단과,
    상기 계측 코드 세그먼트들에 따라서, 모니터된 상기 코드를 실행하기 위한 수단과,
    상기 모니터된 코드의 실행 시간을 판단하기 위한 수단
    을 더 포함하는 정보 처리 시스템.
  8. 제7항에 있어서, 상기 각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트에 대한 하나 이상의 가능한 메모리 배치들의 리스트를 수신하기 위한 수단을 더 포함하는 정보 처리 시스템.
  9. 제8항에 있어서, 어느 메모리 배치가 모니터된 상기 코드에 대한 최소 실행 시간을 이끄는지를 판단하도기 위해 각각의 가능한 메모리 배치를 시도하기 위한 수단을 포함하는 정보 처리 시스템.
  10. 정보 처리 시스템의 성능을 모니터하기 위한 컴퓨터 판독 가능 매체(computer-readable medium)에 있어서,
    상기 모니터된 코드 세그먼트에 대한 데이터를 수집하기 위한 수단과,
    하나 이상의 계측 코드 세그먼트들 및 하나 이상의 계측 데이터 세그먼트들을 배치할 하나 이상의 메모리 영역들을 선택하기 위한 수단과,
    하나 이상의 계측 코드 세그먼트들에 따라서, 상기 모니터된 코드 세그먼트를 실행하기 위한 수단
    을 포함하는 정보 처리 시스템의 성능을 모니터하기 위한 컴퓨터 판독 가능 매체.
  11. 제10항에 있어서,상기 수집 수단은,
    상기 모니터된 코드 세그먼트를 트레이싱하기 위한 수단과,
    상기 모니터된 코드 세그먼트에 대한 데이터를 수집하기 위한 수단과,
    메모리 수단 내에 상기 데이터를 기억하기 위한 수단
    을 포함하는 정보 처리 시스템의 성능을 모니터하기 위한 컴퓨터 판독 가능 매체.
  12. 제10항에 있어서,상기 선택 수단은,
    상기 수집 수단에 의해 수집된 상기 데이터를 판독하기 위한 수단과,
    각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트에 대한 초기 기억 장소를 판단하기 위한 수단과,
    현재의 캐시 구조를 분석하기 위한 수단과,
    현존하는 충돌 레벨을 판단하기 위한 수단과,
    각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트를 이동할 메모리 수단 내의 기억 장소를 판단하기 위한 수단
    을 포함하는 정보 처리 시스템의 성능을 모니터하기 위한 컴퓨터 판독 가능 매체.
  13. 제10항에 있어서, 상기 선택 수단은 캐시 시뮬레이터를 포함하는 정보 처리 시스템의 성능을 모니터하기 위한 컴퓨터 판독 가능 매체.
  14. 제10항에 있어서, 상기 선택 수단은,
    각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트를 메모리 수단 내의 메모리 기억 장소 내로 배치하기 위한 수단과,
    상기 계측 코드 세그먼트들에 따라서, 모니터된 상기 코드를 실행하기 위한 수단과,
    모니터된 상기 코드의 실행 시간을 판단하기 위한 수단
    을 포함하는 정보 처리 시스템의 성능을 모니터하기 위한 컴퓨터 판독 가능 매체.
  15. 제14항에 있어서, 각각의 계측 코드 세그먼트 및 각각의 계측 데이터 세그먼트에 대한 하나 이상의 가능한 메모리 배치들의 리스트를 수신하기 위한 수단을 더 포함하는 정보 처리 시스템의 성능을 모니터하기 위한 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서, 어느 메모리 배치가 모니터된 상기 코드에 대한 최소 실행 시간을 이끄는지를 판단하도록 각각의 가능한 메모리 배치를 시도하기 위한 수단을 더 포함하는 정보 처리 시스템의 성능을 모니터하기 위한 컴퓨터 판독 가능 매체.
KR1019980032910A 1997-09-22 1998-08-13 방해없는 코드 계측을 위한 시스템 및 방법 KR100292642B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/935,166 1997-09-22
US08/935,166 US5940618A (en) 1997-09-22 1997-09-22 Code instrumentation system with non intrusive means and cache memory optimization for dynamic monitoring of code segments
US08/935,166 1997-09-22

Publications (2)

Publication Number Publication Date
KR19990029301A KR19990029301A (ko) 1999-04-26
KR100292642B1 true KR100292642B1 (ko) 2001-06-15

Family

ID=25466647

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980032910A KR100292642B1 (ko) 1997-09-22 1998-08-13 방해없는 코드 계측을 위한 시스템 및 방법

Country Status (2)

Country Link
US (1) US5940618A (ko)
KR (1) KR100292642B1 (ko)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282701B1 (en) * 1997-07-31 2001-08-28 Mutek Solutions, Ltd. System and method for monitoring and analyzing the execution of computer programs
US6732357B1 (en) * 1997-12-12 2004-05-04 International Business Machines Corporation Determining and compensating for temporal overhead in trace record generation and processing
US6223337B1 (en) * 1997-12-12 2001-04-24 Hewlett-Packard Company Random test generation for compiler optimization
US6892173B1 (en) * 1998-03-30 2005-05-10 Hewlett-Packard Development Company, L.P. Analyzing effectiveness of a computer cache by estimating a hit rate based on applying a subset of real-time addresses to a model of the cache
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6175956B1 (en) * 1998-07-15 2001-01-16 International Business Machines Corporation Method and computer program product for implementing method calls in a computer system
US6286080B1 (en) * 1999-02-16 2001-09-04 International Business Machines Corporation Advanced read cache emulation
US6542861B1 (en) * 1999-03-31 2003-04-01 International Business Machines Corporation Simulation environment cache model apparatus and method therefor
US6397382B1 (en) * 1999-05-12 2002-05-28 Wind River Systems, Inc. Dynamic software code instrumentation with cache disabling feature
US6898696B1 (en) * 1999-06-14 2005-05-24 International Business Machines Corporation Method and system for efficiently restoring a processor's execution state following an interrupt caused by an interruptible instruction
US7058928B2 (en) 1999-12-23 2006-06-06 Identify Software Ltd. System and method for conditional tracing of computer programs
US20020087949A1 (en) * 2000-03-03 2002-07-04 Valery Golender System and method for software diagnostics using a combination of visual and dynamic tracing
US6968540B2 (en) * 2000-10-25 2005-11-22 Opnet Technologies Inc. Software instrumentation method and apparatus
DE60132229T2 (de) * 2000-10-26 2008-12-18 Matsushita Electric Industrial Co., Ltd., Kadoma Speichervorrichtung, speichersteuerverfahren und programm
US8312435B2 (en) * 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US6817014B2 (en) * 2001-04-11 2004-11-09 Hewlett-Packard Development Company, L.P. Analysis of executable program code using compiler-generated function entry points and endpoints with other sources of function entry points and endpoints
US6918110B2 (en) * 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
US6952664B1 (en) * 2001-04-13 2005-10-04 Oracle International Corp. System and method for predicting cache performance
US7111282B2 (en) * 2001-06-12 2006-09-19 Hewlett-Packard Development Company, L.P. Instrumenting a software program and collecting data from the instrumented software program by type
US6934942B1 (en) * 2001-08-24 2005-08-23 Microsoft Corporation System and method for using data address sequences of a program in a software development tool
US6883067B2 (en) * 2002-02-08 2005-04-19 Stmicroelectronics Limited Evaluation and optimization of code
US7539608B1 (en) * 2002-05-10 2009-05-26 Oracle International Corporation Techniques for determining effects on system performance of a memory management parameter
US7386839B1 (en) 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
US7143396B2 (en) * 2002-11-06 2006-11-28 Sun Microsystems, Inc. System and method for measuring code segment performance
US7058936B2 (en) * 2002-11-25 2006-06-06 Microsoft Corporation Dynamic prefetching of hot data streams
US7140008B2 (en) * 2002-11-25 2006-11-21 Microsoft Corporation Dynamic temporal optimization framework
US7114150B2 (en) * 2003-02-13 2006-09-26 International Business Machines Corporation Apparatus and method for dynamic instrumenting of code to minimize system perturbation
US8032866B1 (en) 2003-03-27 2011-10-04 Identify Software Ltd. System and method for troubleshooting runtime software problems using application learning
US7124276B2 (en) * 2003-04-14 2006-10-17 Broadcom Corporation Optimizing cache efficiency within application software
US7343598B2 (en) * 2003-04-25 2008-03-11 Microsoft Corporation Cache-conscious coallocation of hot data streams
US7178131B2 (en) * 2003-09-29 2007-02-13 International Business Machines Corporation Inspecting the runtime behavior of a program while minimizing perturbation
US7937691B2 (en) 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US20050071821A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically select instructions for selective counting
US20050071816A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically count instruction execution for applications
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US7373637B2 (en) 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US7331039B1 (en) 2003-10-15 2008-02-12 Sun Microsystems, Inc. Method for graphically displaying hardware performance simulators
US7587709B2 (en) * 2003-10-24 2009-09-08 Microsoft Corporation Adaptive instrumentation runtime monitoring and analysis
US7392370B2 (en) 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7293164B2 (en) * 2004-01-14 2007-11-06 International Business Machines Corporation Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7197586B2 (en) * 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
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
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
US7290255B2 (en) * 2004-01-14 2007-10-30 International Business Machines Corporation Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US20050155022A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses to identify hot spots
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US20050155018A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
US8135915B2 (en) * 2004-03-22 2012-03-13 International Business Machines Corporation Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator
US7299319B2 (en) * 2004-03-22 2007-11-20 International Business Machines Corporation Method and apparatus for providing hardware assistance for code coverage
US7526616B2 (en) * 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US20050210450A1 (en) * 2004-03-22 2005-09-22 Dimpsey Robert T Method and appartus for hardware assistance for data access coverage
US7480899B2 (en) * 2004-03-22 2009-01-20 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for code coverage
US7296130B2 (en) * 2004-03-22 2007-11-13 International Business Machines Corporation Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data
US7590521B2 (en) * 2004-04-07 2009-09-15 Microsoft Corporation Method and system for probe optimization while instrumenting a program
US7827539B1 (en) 2004-06-25 2010-11-02 Identify Software Ltd. System and method for automated tuning of program execution tracing
US20060129997A1 (en) * 2004-12-13 2006-06-15 Stichnoth James M Optimized layout for managed runtime environment
US7607119B2 (en) * 2005-04-26 2009-10-20 Microsoft Corporation Variational path profiling
US7912877B2 (en) * 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
US7770153B2 (en) * 2005-05-20 2010-08-03 Microsoft Corporation Heap-based bug identification using anomaly detection
US20070150881A1 (en) * 2005-12-22 2007-06-28 Motorola, Inc. Method and system for run-time cache logging
US7962901B2 (en) 2006-04-17 2011-06-14 Microsoft Corporation Using dynamic analysis to improve model checking
US7805510B2 (en) * 2006-05-11 2010-09-28 Computer Associates Think, Inc. Hierarchy for characterizing interactions with an application
US8656006B2 (en) * 2006-05-11 2014-02-18 Ca, Inc. Integrating traffic monitoring data and application runtime data
US7926043B2 (en) * 2006-06-20 2011-04-12 Microsoft Corporation Data structure path profiling
US9009680B2 (en) * 2006-11-30 2015-04-14 Ca, Inc. Selecting instrumentation points for an application
US20080148242A1 (en) * 2006-12-18 2008-06-19 Computer Associates Think, Inc. Optimizing an interaction model for an application
US7689610B2 (en) * 2006-12-01 2010-03-30 Computer Associates Think, Inc. Automated grouping of messages provided to an application using string similarity analysis
US7917911B2 (en) * 2006-12-01 2011-03-29 Computer Associates Think, Inc. Automated grouping of messages provided to an application using execution path similarity analysis
US8806461B2 (en) * 2007-06-21 2014-08-12 Microsoft Corporation Using memory usage to pinpoint sub-optimal code for gaming systems
US9235390B1 (en) * 2008-03-31 2016-01-12 Symantec Corporation Application optimization for use based on feature popularity
US20090287729A1 (en) * 2008-05-16 2009-11-19 Microsoft Corporation Source code coverage testing
US8140903B2 (en) 2009-04-16 2012-03-20 International Business Machines Corporation Hardware process trace facility
CN102231130B (zh) * 2010-01-11 2015-06-17 国际商业机器公司 计算机系统性能分析方法和装置
US20120011491A1 (en) * 2010-07-06 2012-01-12 Adi Eldar Efficient recording and replaying of the execution path of a computer program
US8978018B2 (en) 2010-12-02 2015-03-10 International Business Machines Corporation Reversibly instrumenting a computer software application
US8745598B2 (en) 2010-12-14 2014-06-03 Bmc Software, Inc. Running injected code prior to execution of an application
US8762952B2 (en) 2010-12-14 2014-06-24 Bmc Software, Inc. Recording method calls that led to an unforeseen problem
US8972952B2 (en) 2012-02-03 2015-03-03 Apple Inc. Tracer based runtime optimization for dynamic programming languages
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9753833B2 (en) * 2014-11-26 2017-09-05 Vmware, Inc. Workload selection and cache capacity planning for a virtual storage area network
US9977723B2 (en) 2014-11-26 2018-05-22 Vmware, Inc. Workload selection and cache capacity planning for a virtual storage area network
US9558126B2 (en) 2014-11-26 2017-01-31 Vmware, Inc. Workload selection and cache capacity planning for a virtual storage area network
US9471482B2 (en) 2014-11-26 2016-10-18 Vmware, Inc. Input/output trace sampling
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10324635B1 (en) 2016-03-22 2019-06-18 EMC IP Holding Company LLC Adaptive compression for data replication in a storage system
US10310951B1 (en) 2016-03-22 2019-06-04 EMC IP Holding Company LLC Storage system asynchronous data replication cycle trigger with empty cycle detection
US10565058B1 (en) 2016-03-30 2020-02-18 EMC IP Holding Company LLC Adaptive hash-based data replication in a storage system
US10095428B1 (en) 2016-03-30 2018-10-09 EMC IP Holding Company LLC Live migration of a tree of replicas in a storage system
US9959063B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Parallel migration of multiple consistency groups in a storage system
US9959073B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Detection of host connectivity for data migration in a storage system
US10048874B1 (en) 2016-06-29 2018-08-14 EMC IP Holding Company LLC Flow control with a dynamic window in a storage system with latency guarantees
US10152232B1 (en) * 2016-06-29 2018-12-11 EMC IP Holding Company LLC Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system
US10013200B1 (en) 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
US9983937B1 (en) 2016-06-29 2018-05-29 EMC IP Holding Company LLC Smooth restart of storage clusters in a storage system
US10083067B1 (en) 2016-06-29 2018-09-25 EMC IP Holding Company LLC Thread management in a storage system
US10346285B2 (en) * 2017-06-09 2019-07-09 Microsoft Technology Licensing, Llc Instrumentation of user actions in software applications

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IE60444B1 (en) * 1988-03-30 1994-07-13 Elverex Ltd A software verification apparatus
US5121489A (en) * 1988-08-02 1992-06-09 International Business Machines Corporation Tracing method for identifying program execution paths using a trace points bit map with one-to-one correspondence with embedded trace points
US5153886A (en) * 1990-01-31 1992-10-06 Hewlett Packard Company Visual display signal processing system and method
US5212794A (en) * 1990-06-01 1993-05-18 Hewlett-Packard Company Method for optimizing computer code to provide more efficient execution on computers having cache memories
US5157779A (en) * 1990-06-07 1992-10-20 Sun Microsystems, Inc. User extensible testing system
US5410685A (en) * 1990-06-12 1995-04-25 Regents Of The University Of Michigan Non-intrinsive method and system for recovering the state of a computer system and non-intrusive debugging method and system utilizing same
US5386547A (en) * 1992-01-21 1995-01-31 Digital Equipment Corporation System and method for exclusive two-level caching
US5454086A (en) * 1992-08-11 1995-09-26 International Business Machines Corporation Dynamic program analyzer facility
US5452440A (en) * 1993-07-16 1995-09-19 Zitel Corporation Method and structure for evaluating and enhancing the performance of cache memory systems
US5533193A (en) * 1994-06-24 1996-07-02 Xerox Corporation Method of saving machine fault information including transferring said information to another memory when an occurrence of predetermined events or faults of a reproduction machine is recognized
US5790858A (en) * 1994-06-30 1998-08-04 Microsoft Corporation Method and system for selecting instrumentation points in a computer program
US5664191A (en) * 1994-06-30 1997-09-02 Microsoft Corporation Method and system for improving the locality of memory references during execution of a computer program
US5689712A (en) * 1994-07-27 1997-11-18 International Business Machines Corporation Profile-based optimizing postprocessors for data references
US5581696A (en) * 1995-05-09 1996-12-03 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging

Also Published As

Publication number Publication date
US5940618A (en) 1999-08-17
KR19990029301A (ko) 1999-04-26

Similar Documents

Publication Publication Date Title
KR100292642B1 (ko) 방해없는 코드 계측을 위한 시스템 및 방법
EP1331566B1 (en) Method and apparatus for monitoring the performance of a computer system
Clark et al. Performance of the VAX-11/780 translation buffer: Simulation and measurement
US5937437A (en) Method and apparatus for monitoring address translation performance
US6751583B1 (en) Hardware and software co-simulation including simulating a target processor using binary translation
JP4371452B2 (ja) コンピュータメモリシステムにおいて空間的及び時間的サンプリングを行う装置
US6442585B1 (en) Method for scheduling contexts based on statistics of memory system interactions in a computer system
EP0919923B1 (en) Method for estimating statistics of properties of memory system interactions among contexts in a computer system
EP0919920B1 (en) Method for estimating statistics of properties of memory system transactions
JPH0830494A (ja) システム性能をプロファイルするための割り込みベースのハードウエア・サポート
US20090083716A1 (en) Profiling method and program
US8612952B2 (en) Performance optimization based on data accesses during critical sections
US7783866B2 (en) Method and apparatus for executing instrumentation code using processor instructions
Huber et al. WCET driven design space exploration of an object cache
Wang et al. Real time cache performance analyzing for multi-core parallel programs
US8621179B2 (en) Method and system for partial evaluation of virtual address translations in a simulator
EP1100017A1 (en) Memory access monitoring and debugging device
US20230161678A1 (en) Classification of different types of cache misses
Tong et al. Profiling CAD tools: A proposed classification
John et al. Exact cache characterization by experimental parameter extraction
Helm et al. Measurement of Main Memory Bandwidth and Memory Access Latency in Intel Processors
Lebeck et al. Fast-cache: A new abstraction for memory system simulation
Uhlig et al. Software TLB management in OSF/1 and Mach 3.0
JPH04326142A (ja) キャッシュ記憶装置の性能評価方法
Wood Fast-Cache: A New Abstraction for Memory System Simulation

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee