KR101107363B1 - 가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 컴퓨터 프로그램 제품, 컴퓨터-구현된 방법 및 컴퓨터 시스템 - Google Patents

가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 컴퓨터 프로그램 제품, 컴퓨터-구현된 방법 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR101107363B1
KR101107363B1 KR1020090064144A KR20090064144A KR101107363B1 KR 101107363 B1 KR101107363 B1 KR 101107363B1 KR 1020090064144 A KR1020090064144 A KR 1020090064144A KR 20090064144 A KR20090064144 A KR 20090064144A KR 101107363 B1 KR101107363 B1 KR 101107363B1
Authority
KR
South Korea
Prior art keywords
operating system
guest operating
sampling
item
guest
Prior art date
Application number
KR1020090064144A
Other languages
English (en)
Other versions
KR20100038036A (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 KR20100038036A publication Critical patent/KR20100038036A/ko
Application granted granted Critical
Publication of KR101107363B1 publication Critical patent/KR101107363B1/ko

Links

Images

Classifications

    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/12Payment architectures specially adapted for electronic shopping systems
    • G06Q20/123Shopping for digital content
    • G06Q20/1235Shopping for digital content with control of digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • 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

Abstract

중앙 처리 장치 계측 기능은 가상 환경 내에서 실행되는 다수의 게스트에 의해 이러한 기능의 동시 사용을 지원하도록 가상화된다. 가상 환경의 각각의 게스트는 해당 게스트에 대한 이러한 기능의 인에이블/디스에이블에 대해 독립적인 제어를 갖는다.
가상 처리 환경, 중앙 처리 장치 계측 기능, 제어 프로그램, 컴퓨터 프로그램 제품, 컴퓨터-구현된 방법, 컴퓨터 시스템

Description

가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 컴퓨터 프로그램 제품, 컴퓨터-구현된 방법 및 컴퓨터 시스템{VIRTUALIZATION OF A CENTRAL PROCESSING UNIT MEASUREMENT FACILITY}
본 발명은 일반적으로 계측 기능(measurment facilities)에 관한 것으로, 특히 가상화된(virtualized) 처리 환경을 위한 가상화된 계측 기능에 관한 것이다.
가상화를 지원하는 환경을 비롯하여 다양한 처리 환경의 우선적인 최고 목표는 시스템 성능의 개선 및 에러의 감소이다. 이러한 목표들을 달성하기 위한 노력으로, 진단 및 튜닝 툴(diagnostic and tuning tools)을 채용하고 있다. 이러한 툴 중 하나가, 처리 환경 내에서 발생하는 처리에 관련된 데이터를 수집하는 계측 기능이다.
구체적으로, 계측 기능은 하드웨어 내에서 발생하는 특정 이벤트들의 활동 카운트(activity counts)(예컨대, 사이클 카운트, 명령어 카운트, 등)을 누적하고/하거나 처리 환경 내에서 실행되는 중앙 처리 장치의 스냅샷(snapshot)을 주기적으로 제공하는데 사용된다. 이 기능은 중앙 처리 장치에 관련된 상태 정보(state information)를 기록한다. 이 정보를 이용하여 디버깅을 하고/하거나 시스템 성능 을 개선한다.
현재에는, 계측할 때마다, 데이터가 수집되어 레지스터에 저장되고, 제어 프로그램에 대해 인터럽트가 제공된다. 인터럽션에 의해, 제어 프로그램은 계측 데이터를 판독하고, 레지스터를 재설정하여 연산(operation)을 재개한다. 각 계측 기간마다의 이러한 인터럽션은 상당한 시스템 오버헤드를 발생시켜, 일부 실시간 환경에서는 심지어 계측된 데이터를 왜곡시킬 수 있다. 이런 오버헤드 문제로 인해, 사용자들은 수집해야할 계측 데이터의 양에 제한을 받게 되어, 계측 기능의 실제 사용에 제한을 받게 된다.
또한, 중앙 처리 장치에서는 단지 하나의 계측 기능만이 구현되지만, 그 기능은 다수의 게스트(guests)에 의해 공유될 수 있으므로, 가상 환경에서 문제가 존재한다. 공유된 이러한 사용은 수집된 데이터를 손상시킬 수 있다.
상기한 사항에 비추어, 현재의 계측 기능보다 덜 파괴적이고 더 효과적인 향상된 계측 기능의 필요성이 존재한다. 특히, 각각의 샘플링 기간마다 제어 프로그램을 인터럽트시키지 않는 계측 기능의 필요성이 존재한다. 또한, 다수 게스트들의 동시성 실행을 비롯하여, 가상 환경의 각종 구성(configurations)을 지원하도록 유연하게 가상화된 계측 기능의 필요성이 존재한다. 나아가, 특히 계측 기능이 특정 CPU 상에서 활성화되지 않을 때, 너무 많은 시스템 오버헤드를 도입시키지 않도록 하기 위해 계측 기능의 효율적인 가상화의 필요성이 존재한다.
처리 환경 내에서의 데이터의 수집을 관리하기 위한 컴퓨터 프로그램 제품(computer program product)을 제공함에 의해, 종래 기술의 단점이 극복되며 추가적인 장점들이 제공된다. 이 컴퓨터 프로그램 제품은 처리 회로에 의해 판독 가능하고, 소정의 방법을 수행하도록 컴퓨터에 의해 실행되는 명령어(instructions)를 저장하는 저장 매체를 포함한다. 이 방법은, 예를 들어, 가상 처리 환경의 한 게스트에 의해 그 게스트의 활동에 관련된 계측의 인에이블(enablement)을 제어하는 단계; 및 가상 처리 환경의 또 다른 게스트에 의해 그 게스트의 활동에 관한 계측의 허용을 제어하는 단계를 포함하며, 여기서 한 게스트에 의한 제어는 또 다른 게스트에 의한 제어와는 독립적이며, 계측은 한 게스트 및 또 다른 게스트에게 동시에 허용되거나, 또는 한 게스트와 또 다른 게스트 중 어느 한 게스트에게는 허용되지만 다른 한 게스트에게는 허용되지 않는다.
본원에는, 또한 본 발명의 하나 이상의 양상에 관한 방법 및 시스템들이 기술 및 청구된다. 또한, 본원에는 본 발명의 하나 이상의 양상들에 관련된 서비스들이 기술되고 청구될 수 있다.
추가의 특징들 및 이점들이 본 발명의 기술을 통해 실현된다. 본 발명의 다른 실시예들 및 양상들은 본원에 상세히 기술되며, 청구된 본 발명의 일부를 형성하는 것으로 고려된다.
본 발명에 의하면, 처리 환경 내에서의 데이터의 수집을 관리하기 위한 컴퓨 터 프로그램 제품을 제공함으로써, 종래 기술의 단점을 극복할 수 있다.
본 발명의 하나 이상의 양상들을 특별히 기술하였으며, 명세서의 결론부의 청구범위에서 예로서 명확하게 한정하였다. 본 발명의 상기 및 기타의 목적, 특징 및 이점들은 첨부된 도면에 관련하여 기술한 이하의 설명으로부터 명백해질 것이다.
본 발명의 일 양상에 따르면, CPU 계측 기능이 제공되며, 이 CPU 계측 기능은 이 기능을 실행 중인 중앙 처리 장치 또는 공유된 주변 프로세서의 활동을 계측(카운터 기능)하고/하거나, 지정된 샘플링 간격으로 중앙 처리 장치의 스냅샷을 제공하여 중앙 처리 장치 상에서 실행 중인 태스크(예를 들어, 애플리케이션, 모듈, 함수, 명령어, 등)에 관한 데이터를 수집한다(샘플링 기능). 이 데이터는 성능 특성(performance characteristics)의 통계적 산정을 위해 수집된다. 수집된 샘플링 데이터는 버퍼에 저장되고, 선택된 시점에서 인터럽트를 제공하여 버퍼로부터 데이터를 삭제시켜 버퍼의 재사용을 가능하게 한다. 이 인터럽트는 각 샘플 후에 제공되는 것이 아니라, 데이터를 제거하고 데이터 손실을 최소화할 수 있는 충분한 시간 후에 제공된다.
본 발명의 또 다른 양상에서, CPU 계측 기능은 가상 환경에서 실행되는 다수의 게스트에 의해 이 기능의 동시성 사용을 지원하기 위해 가상화된다. 일례로, CPU 계측 기능은 게스트가 계측의 인에이블(enablement)/디스에이블(disablement)을 독립적으로 제어할 수 있고, 다수의 게스트가 활동을 동시에 샘플링 및/또는 계 측할 수 있도록(예를 들어, 카운터를 통해) 가상화된다. 한 특정 예에서, 게스트에 할당된 각각의 논리(logic) 프로세서가 계측 기능을 실행할 수 있다.
본 발명의 하나 이상의 양상을 구체화하고 이용하는 처리 환경의 일 실시예를 도 1을 참조하여 기술하기로 한다. 일례에서, 처리 환경(100)은, 예를 들어, 미국 뉴욕주 아몬크에 소재하는 인터내셔널 비지니스 머신즈 코포레이션에 의해 제공된 z/Architecture®에 기반을 두고 있다. z/Architecture®은 2008년 2월 IBM® Publication No. SA22-7832-06, 7판의 "z/Architecture Principles of Operation"이란 제목의 공보에 기술되어 있으며, 이 내용 전부는 인용에 의해 본원에 포함된다. (z/Architecture® 및 IBM®은 미국 뉴욕주 아몬크에 소재하는 인터내셔널 비지니스 머신즈 코포레이션의 등록 상표이다. 본원에 사용된 다른 명칭들은 인터내셔널 비지니스 머신즈 코포레이션 또는 다른 회사의 등록 상표, 상표 또는 제품명일 수 있다. 일례에서, z/Architecture®에 기반을 두고 있는 처리 환경은 미국 뉴욕주 아몬크에 소재하는 인터내셔널 비지니스 머신즈 코포레이션에 의해 제공된 eServer zSeries를 포함한다.
이 예에서, 처리 환경(100)은 중앙 프로세서 복합체(CPC)(102)를 포함한다. 중앙 프로세서 복합체(102)는, 예를 들어, 하나 이상의 파티션 또는 존(104)(예컨대, 논리 파티션 LP1-LPn), 하나 이상의 중앙 프로세서(106)(예컨대, CP1-CPm), 및 하이퍼바이저(108)(예컨대, 논리 파티션 관리자)를 포함하며, 이들 각각에 대해서는 이하에서 기술하기로 한다.
각 논리 파티션(104)은 독립된 시스템으로서 기능할 수 있다. 즉, 각 논리 파티션은 독립적으로 재설정될 수 있고, 필요에 따라 초기에 운영 체제가 로딩될 수 있고, 상이한 프로그램들로 동작될 수 있다. 논리 파티션에서 실행되는 운영 체제 또는 애플리케이션 프로그램은 전체적이고(full) 완전한(complete) 시스템에 접근하는 것으로 보이지만, 그것 중 단지 일부만이 이용 가능하다. 하드웨어와 Licensed Internal Code(마이크로코드 또는 밀리코드라고도 함)의 결합(combination)에 의해, 한 논리 파티션 내의 프로그램이 다른 논리 파티션 내의 프로그램과 충돌하는 것이 방지된다. 이에 의해, 여러 개의 서로 다른 논리 파티션들이 시분할된 방식으로 단일 또는 다수의 물리 프로세서 상에서 동작되는 것이 허용된다. 이런 특정 예에서, 각각의 논리 파티션은 상주하는 운영 체제(110)를 갖는데, 이 운영 체제는 하나 이상의 논리 파티션마다 다를 수 있다. 일 실시예에서, 운영 체제(110)는 미국 뉴욕주 아몬크에 소재하는 인터내셔널 비지니스 머신즈 코포레이션에 의해 제공된 z/OS® 또는 z/Linux 운영체제이다. z/OS® 는 인터내셔널 비지니스 머신즈 코포레이션의 등록 상표이다.
중앙 프로세서(106)는 논리 파티션에 할당되는 물리(physical) 프로세서 자원들이다. 예를 들어, 논리 파티션(104)은 하나 이상의 논리 프로세서(112)를 포함하며, 이들 프로세서 각각은 해당 파티션에 할당된 물리 프로세서 자원(106)의 전부 또는 일부분(share)을 나타낸다. 기본이 되는(underlying) 프로세서 자원은 해당 파티션 전용일 수 있거나 또는 다른 파티션과 공유될 수 있다.
논리 파티션(104)은 프로세서들(106) 상에서 실행되는 펌웨어(firmware)에 의해 구현되는 하이퍼바이저(108)에 의해 관리된다. 논리 파티션(104) 및 하이퍼바이저(108) 각각은 중앙 프로세서들에 연관된 중앙 기억장치의 각자의 부분에 상주하는 하나 이상의 프로그램을 포함한다. 하이퍼바이저(108)의 일례로서, 미국 뉴욕주 아몬크에 소재하는 인터내셔널 비지니스 머신즈 코포레이션에 의해 제공된 프로세서 자원/시스템즈 관리자(Processor Resource/Systems Manager; PR/SM)가 있다.
처리 환경 내에서의 처리를 용이하게 하기 위한 정보를 제공하기 위해, 데이터가 규칙적으로 수집된다. 이 데이터는, 예를 들어, 디버깅 목적을 위해 및/또는 시스템 성능의 개선을 위해 사용된다. 가상 처리 환경에서, 계측 함수(예컨대, 카운터 및/또는 샘플링)(114)는 하나 이상의 논리 프로세서(112) 상에서 실행된다. 계측 함수를 실행 중인 각각의 논리 프로세서의 경우, 각 논리 프로세서는 하드웨어에서 발생하는 특정 이벤트들(예컨대, 사이클 카운트, 명령어 카운터, 등)의 활동 카운트를 누적(카운터)하고/하거나, 프로세서가 인식하는 처리 시간 간격인 지정된 각각의 샘플링 간격으로 논리 프로세서의 스냅샷을 제공한다(샘플링). 각각의 스냅샷은 샘플 데이터 집합을 생성하며, 이들 샘플 데이터 집합은, 예를 들어, 실행 중인 명령어의 명령어 어드레스 및 논리 프로세서에 관한 임의 상태 정보를 포함한다. 이 샘플 데이터는, 예를 들어, 버퍼의 하나 이상의 샘플 데이터 블록에 저장된다.
마찬가지로, 가상화를 지원하지 않는 처리 환경(본원에서는 비-가상 환경이 라 함)에서, 계측 함수는 하나 이상의 물리 CPU 상에서 실행되며, 계측 함수가 실행되고 있는 각 CPU의 경우, 각 CPU는 하드웨어에서 발생하는 특정 이벤트들(예컨대, 사이클 카운트, 명령어 카운터, 등)의 활동 카운트를 누적하고/하거나, 지정된 각각의 샘플링 간격으로 CPU의 스냅샷을 제공한다. 비-가상 환경을 위한 계측 기능의 일 실시예는 본원에 기술될 뿐만 아니라, Bartik 및 그외 공동인에 의해 본원과 함께 출원된 발명의 명칭이 "중앙 처리 장치 계측 기능(Central Processing Unit Measurment Facility)"인 미국 특허출원 제___________호(POU920080207US1)에 개시되어 있으며, 이 문헌은 인용에 의해 본원에 포함된다.
계측 기능을 기술함에 있어, CPU를 기준으로 하였다. 비-가상 환경의 경우, CPU는 물리 CPU이다. 그러나, 가상 환경의 경우에는, CPU는 게스트에 할당되는 논리 CPU(aka 논리 프로세서)이다. 가상 환경에서 물리 CPU는 복수의 게스트 간에서 공유될 수 있으므로, 각각의 논리 프로세서마다 계측에 연관된 상태 정보 및 컨트롤들(controls)은 유지된다. 따라서, 후술되는 논의에서는, 컨트롤에 대해 설명하ㄱ고이어서 가상 환경을 위한 임의 추가 또는 변경이 제공된다. 또한, 계측 기능의 카운터 기능 및 샘플링 기능 모두에 대해 기술하기로 한다.
CPU 계측 카운터 기능은, 예를 들어, 각각이 다수의 카운터를 갖는 4 개의 카운터 집합; 논리 카운터 상태 컨트롤 레지스터; 여러 개의 외부 인터럽션 이벤트; 및 후술할 쿼리 카운터 정보(Query Counter Information) 및 CPU 카운터 집합 컨트롤 설정(Set CPU Counter Set Controls) 명령어 등을 포함하여 각종 명령어를 포함한다.
일례에서, CPU 카운터 집합은 기본 카운터 집합, 문제 상태(problem state) 카운터 집합, 숨겨진(crypto)-활동 카운터 집합 및 확장된(extended) 카운터 집합을 포함하며, 이들 집합 각각은 CPU가 동작 상태에 있고 카운터가 활성 중일 때, CPU의 특정 활동마다 증분되는 복수의 카운터를 포함한다.
각 CPU 상에서, CPU 계측 카운터 기능은 로컬(local) 카운터 상태 컨트롤 레지스터를 제공하며, 이 레지스터는, 예를 들어, 각 CPU 카운터 집합마다 1 비트 인가 컨트롤(authorization control), 1 비트 인에이블 컨트롤, 및 1 비트 활성화 컨트롤을 포함한다. 이것은 또한 코프로세서 그룹 카운터 집합마다 1 비트 인가 컨트롤을 포함한다. 인가 컨트롤을 제외하고는, 로컬 카운터 컨트롤 레지스터의 내용은 초기 CPU 재설정, 클리어 재설정, 또는 파워-온 재설정에 의해 제로(0)로 클리어된다. 인가 컨트롤은 외부 수단에 의해 설정 또는 재설정된다.
외부 인터럽션 이벤트들은 카운터 인가 변경 경보(alert) 및 카운터 데이터 손실 경보를 포함한다.
일례에서, CPU 계측 샘플링 기능은 두 샘플링 함수, 여러 샘플링 컨트롤 레지스터, 여러 외부 인터럽션 이벤트 및 각종 명령어를 포함하며, 이들 각각에 대해서는 이하에서 기술하기로 한다.
두 샘플링 함수는, 예를 들어, 기본 샘플링 및 진단 샘플링을 포함한다. 기본 샘플링 함수는 구조화된(architectured) 샘플 데이터 집합을 제공한다. 샘플 데이터는 일례로서, 명령어 어드레스, 1차(primary) 어드레스 공간 번호(PASN), 및 CPU에 관한 임의 상태 정보를 포함한다. 이것은 툴링 프로그램이 명령어 어드레스 를 모듈 또는 태스크에 매핑하게 할 수 있고, 핫 스폿(hot spots)의 결정을 용이하게 한다. 진단 샘플링 함수는 비-구조화된 샘플 데이터 집합을 제공하고, 하드웨어 설계 분석가, 운영 체제, 정교한(sophisticated) 컴파일러, 및 내부 서브시스템에 의해 사용되도록 되어 있다. 진단 샘플링 함수에 의해 제공된 샘플 데이터는 상세화된 내부 하드웨어 설계를 나타낼 수 있으므로, 제어된 패스워드를 갖는 콘솔(console)을 사용하여 진단 샘플링 함수의 사용을 인가할 수 있다.
기본 샘플링 함수 및 진단 샘플링 함수 모두 동일한 샘플링 컨트롤 레지스터, 동일한 샘플링 버퍼 구조, 동일한 외부 인터럽션 이벤트, 및 동일한 명령어를 사용한다. 이들 두 함수들 간의 주된 차이점은 샘플 데이터이다.
각 샘플링 함수의 샘플 데이터 크기 및 포맷은 모델에 따라 달라지며, 예를 들어, 각 샘플 데이터에 저장되는 16-비트 데이터 항목 포맷 코드에 의해 결정된다. 기본 샘플링 함수에 의해 제공된 샘플 데이터는 진단 샘플링 함수에 의해 제공된 샘플 데이터에 포함되지 않는다. 중요한(meaningful) 진단 샘플링 데이터를 얻기 위해서는, 두 샘플링 함수들이 활성화되어야 한다. 각 샘플링 함수의 상태는 후술될, 샘플링 컨트롤 설정 명령어를 실행함에 의해 개별적으로 설정될 수 있다. 두 샘플링 함수들은 초기 CPU 재설정, 클리어 재설정 또는 파워-온 재설정에 의해 디스에이블된다.
일례에서, 외부 인터럽션 이벤트는 무효 항목 어드레스 경고(alert), 부정확한(incorrect) 샘플 데이터 블록 테이블 항목 경고, 프로그램 요청 경고, 샘플링 인가 변경 경고, 및 샘플 데이터 손실 경고를 포함한다. 이들 이벤트는 계측 경고 서브클래스를 호출한, 외부 인터럽션 서브클래스의 일부이다. 컨트롤 레지스터 제로의 서브클래스 마스크 비트, 예를 들어, 비트 58이 제공된다. 이 비트는 인터럽션을 인에이블시키는, 1로 초기화된다.
CPU 계측 샘플링 기능은 다수의 샘플링 컨트롤 레지스터를 제공한다. 인가 컨트롤을 제외하곤, 이들 컨트롤 레지스터의 내용은 초기 CPU 재설정, 클리어 재설정 또는 파워-온 재설정에 의해 제로로 클리어되며, 또한 모든 샘플링 함수들을 디스에이블시키는 샘플링 컨트롤 설정 명령어를 실행함에 의해 제로로 클리어될 수 있다. 인가 컨트롤은 외부 수단에 의해 설정 또는 재설정된다.
샘플링 컨트롤 레지스터의 일례를 도 2a를 참조하여 기술하기로 한다. 일례에서, 이들 레지스터는 CPU 내에 있는 하드웨어 레지스터들이다. 도시된 바와 같이, 샘플링 컨트롤 레지스터(200)는, 예를 들어, 테이블 항목 어드레스 레지스터(TEAR)(202), 데이터 항목 어드레스 레지스터(DEAR)(204), 최대 버퍼 크기 표시자(206), 샘플링 함수 상태 컨트롤 레지스터(208), 샘플링 간격 레지스터(210), 및 호스트 표시자(212)를 포함하며, 이들 각각은 이하에서 기술하기로 한다.
도 2b에 도시된 바와 같이, 테이블 항목 어드레스 레지스터(202)는, 예를 들어, 64비트이며, 현재 샘플 데이터 블록 테이블 항목(220)의 어드레스를 포함한다. 이것은 이 어드레스가 실제(real) 어드레스인지 또는 절대(absolute) 어드레스인지 예측할 수 없다.
도 2c를 참조해 보면, 데이터 항목 어드레스 레지스터(204)는, 예를 들어, 64비트이며, 다음 샘플 데이터 블록 데이터 항목(230)의 어드레스를 포함한다. 또 한, 이것은 이 어드레스가 실제 어드레스인지 또는 절대 어드레스인지 예측할 수 없다.
일례에서, 최대 버퍼 크기 표시자(206)는 1비트이다. 이 표시자가 0(제로)인 경우, 샘플 데이터 블록 테이블의 최대 크기 및 샘플 데이터 블록의 크기는 4K바이트이다. 이 표시자가 1인 경우, 샘플 데이터 블록 테이블의 최대 크기 및 샘플 데이터 블록의 크기는 1M바이트이다.
샘플링 함수 상태 컨트롤 레지스터(208)는, 예를 들어, 6비트로서, 3비트는 기본 샘플링 함수에 할당되고, 나머지 3비트는 진단 샘플링 함수에 할당된다. 각각의 샘플링 함수마다, 예를 들어, 인가 컨트롤(A), 인에이블 컨트롤(E), 및 활성화 컨트롤(C)을 포함한 3 상태 컨트롤 표시자가 있다.
샘플링 간격 레지스터(210)는, 예를 들어, 64비트이며, 이 레지스터의 내용은 각 샘플링 간격 내에서의 CPU 사이클의 수를 나타낸다.
호스트 레지스터(212)는, 예를 들어, 1비트이며, 논리 파티션 레벨에서 CPU에 이용 가능하다. CPU가 논리 파티션 레벨에서 실행 중이고 샘플링 함수가 활성인 경우, 호스트 표시자가 제로이면, 프로그램 파라미터 레지스터의 내용이 샘플 데이터 블록 업데이트 프로세스에 의해 샘플 데이터 블록의 게스트 프로그램 파라미터 필드 내에 저장된 것을 나타내고; 호스트 표시자가 1이면, 프로그램 파라미터 레지스터의 내용이 호스트 프로그램 파라미터 필드에 저장된 것을 나타낸다.
CPU가 동작 상태일 경우, 각각의 카운터 집합 또는 샘플링 함수는 다음의 4 상태, 일례로서 비인가 상태, 디스에이블 상태, 비활성 상태 및 활성 상태 중 임의 상태일 수 있다.
비인가 상태: 카운터 집합이 비인가 상태인 경우, 카운터들을 사용할 수 없으므로 증분되지 않는다. 샘플링 함수가 비인가 상태인 경우에는, 이 함수를 사용할 수 없으므로 샘플 데이터가 저장되지 않는다. 이들 함수의 사용을 인가 또는 비인가하기 위한 외부 수단이 제공된다.
디스에이블 상태: 카운터 집합 또는 샘플링 함수가 디스에이블 상태인 경우, 카운터 집합 또는 샘플링 함수는 사용하도록 인가되지만, 제어 프로그램은 카운터 집합 또는 샘플링 함수를 인에이블하지 않았다. 카운터 집합이 이런 상태이면, 카운터 집합 내의 카운터들은 증분되지 않아, 카운터 내용을 추출 또는 설정할 수 없다. 샘플링 함수가 이런 상태이면, 이 함수는 사용하도록 인가되지만, 제어 프로그램은 이 함수를 아직 인에이블하지 않았다. 이런 상태에서는, 새로운 샘플 데이터가 저장되지 않게 되어, 샘플 데이터 블록의 내용은 변경되지 않은 채로 남아 았고, 인가 컨트롤을 제외한 어떤 샘플링 컨트롤도 보존되지 않는다.
비활성 상태: 카운터 집합 또는 샘플링 함수가 비활성 상태인 경우, 카운터 집합 또는 샘플링 함수는 인가되고, 인에이블되고, 비활성화된다. 카운터 집합이 이런 상태이면, 카운터 집합 내의 카운터는 증분되지 않고, 카운터 내용은 변경되지 않은 채로 남아 있어 추출 또는 설정될 수 있다. 샘플링 함수가 이런 상태이면, 새로운 샘플 데이터가 저장되지 않고, 샘플 데이터 블록의 내용은 변경되지 않은 채로 남아 있고, 샘플링 컨트롤은 보존되어 추출될 수 있다.
활성 상태: 카운터 집합 또는 샘플링 함수가 활성 상태인 경우, 카운터 집합 또는 샘플링 함수는 인가되고, 인에이블되고, 활성화된다. 카운터 집합이 이런 상태이면, 카운터 집합 내의 각각의 카운터는 정의된 활동마다 증분되고, 카운터 내용은 추출 또는 설정될 수 있다. 샘플링 함수가 이런 상태이면, 이 함수는 인가되고, 인에이블되고, 활성화된다. 이런 상태에서, 각각의 샘플링 간격 동안 새로운 샘플링 데이터가 저장되고, 샘플링 컨트롤이 추출될 수 있다.
CPU가 동작 상태로부터 중지된 상태로 들어가면, 활성 중인 카운터 집합 및 샘플링 함수는 중지된다. CPU가 정지된 상태로부터 동작 상태로 들어가면, 카운터 집합 또는 샘플링 함수는 그들이 마지막으로 정지되었던 때의 상태를 재개한다.
이하의 테이블은 카운터 집합의 상태 천이를 일으키는 액션(actions)을 요약한 것이다.
~로부터 ~로
비인가 상태 디스에이블 상태 비활성 상태 활성 상태
비인가 상태

---*
외부 컨트롤 CPU에 적용불가
카운터 집합; 코프로세서 그룹 카운터 집합을 위한 외부 컨트롤
CPU에 적용불가
카운터 집합; 코프로세서 그룹 카운터 집합을 위한 외부 컨트롤
디스에이블 상태 외부 컨트롤 ---* SCCTL에 의한 인에이블 상태 및 비활성 상태 SCCTL에 의한 인에이블 상태 및 활성 상태
비활성 상태 외부 컨트롤 SCCTL 또는 재설정1에 의한 디스에이블 상태 ---* SCCTL에 의한 활성 상태
활성 상태 외부 컨트롤 SCCTL 또는 재설정에 의한 디스에이블 상태1 SCCTL 또는 에러에 의한 비활성 상태2 ---*
설명:
1 모든 CPU 카운터 집합이 디스에이블되고 이들 집합의 내용은 초기 CPU 재설정 , 클리어 재설정, 또는 파워-온 재설정에 의해 제로로 클리어된다.
2 각각의 활성 카운터 집합이 카운터 데이터 경고에 의해 비활성화된다.
* 카운터 집합이 비인가 상태, 디스에이블 상태, 비활성 상태, 또는 활성 상태 일 때, SCCTL의 실행이 상태 컨트롤을 초기 상태와 동일한 상태로 설정하면, 상태 컨트롤은 성공적으로 설정된 것으로 고려됨.
--- 액션이 요구되지 않음.
SCCTL SET CPU COUNTER SET CONTROLS 명령어
적용불가 이 상태 천이는 발생할 수 없음.
이하의 테이블은 샘플링 함수의 상태 천이를 일으키는 액션들을 요약한 것이다.

~로부터
~로
비인가 상태 디스에이블 상태 비활성 상태 활성 상태
비인가 상태 ---* 외부 컨트롤 적용불가 적용불가
디스에이블 상태 외부 컨트롤
---*
SSCTL에 의한 인에이블 상태 및 비활성 상태 SSCTL에 의한 인에이블 상태 및 활성 상태
비활성 상태 외부 컨트롤 SSCTL 또는 리세스트에 의한 디스에이블 상태1
---*
SSCTL에 의한 활성 상태
활성 상태 외부 컨트롤 SSCTL 또는 리세스트에 의한 디스에이블 상태1 SSCTL 또는 에러에 의한 비활성 상태2
---*
설명:
1 각각 인에이블된 샘플링 함수는 초기 CPU 재설정, 클리어 재설정, 또는 파워- 온 재설정에 의해 디스에이블된다.
2 각각의 활성 샘플링 함수는 무효 항목 어드레스 경고, 부정확한 샘플 데이터 블록 테이블 항목 경고, 또는 샘플 데이터 손실 경고에 의해 비활성화된다.
* 샘플링 함수가 비인가 상태, 디스에이블 상태, 비활성 상태, 또는 활성 상태 일 때, SSCTL의 실행이 상태 컨트롤을 초기 상태와 동일한 상태로 설정하면, 상태 컨트롤은 성공적으로 설정된 것으로 고려됨.
--- 액션이 요구되지 않음.
SCCTL SET SAMPLING CONTROLS 명령어
적용불가 이 상태 천이는 발생할 수 없음.
가상 환경에서, 인가, 인에이블 및 활성화 표시자는 상태 기술 블록(예컨대, 각 게스트 또는 논리 프로세서에 연관된 컨트롤 블록)에 유지된다. 예를 들어, 각 논리 프로세서의 상태 기술 블록에 저장된 것은, 이 정보를 유지하는 데 이용되는 컨트롤 블록 집합이다. 이들 컨트롤 블록의 예를 도 2d 내지 도 2h를 참조하여 기술하기로 한다.
도 2d를 참조해 보면, 계측 인가 기술(MAD) 컨트롤 블록(240)은 게스트가 지정된 각각의 계측 함수를 사용하도록 허용되는지를 제어하는데 이용된다. 이들 함수는 계측 기능의 카운터 및 샘플링 기능의 함수를 포함한다. 일례에서, 계측 인가 기술 컨트롤 블록(240)은 이하의 컨트롤을 포함한다.
Ag(242): 코프로세서 그룹 카운터 집합 인가 컨트롤 - Ag가 1이면, 게스트는 코프로세서 그룹 카운터 집합을 사용하도록 인가되고; Ag가 0이면, 게스트는 코프로세서 그룹 카운터 집합을 사용하도록 인가되지 않는다.
코프로세서 그룹 카운터 집합이 인가되면, 카운터들은 카운터 집합이 활성 중일 때의 특정 활동마다 증분된다.
As(244): 기본 샘플링 인가 컨트롤 - As가 1이면, 게스트는 기본 샘플링 함수를 사용하도록 인가되고; As가 0이면, 게스트는 샘플링 함수를 사용하도록 인가되지 않는다.
Ad(245): 진단 샘플링 인가 컨트롤 - Ad가 1이면, 게스트는 진단 샘플링 함수를 사용하도록 인가되고; Ad가 0이면, 게스트는 진단 샘플링 함수를 사용하도록 인가되지 않는다.
Ac(246): 숨겨진(crypto)-활동 카운터 집합 인가 컨트롤 - Ac가 1이면, 게스트는 숨겨진-활동 카운터 집합을 사용하도록 인가되고; Ac가 0이면, 게스트는 숨겨진-활동 카운터 집합을 사용하도록 인가되지 않는다.
Ap(247): 문제 상태 카운터 집합 인가 컨트롤 - Ap가 1이면, 게스트는 문제 상태 카운터 집합을 사용하도록 인가되고; Ap가 0이면, 게스트는 문제 상태 카운터 집합을 사용하도록 인가되지 않는다.
Ab(248): 기본 카운터 집합 인가 컨트롤 - Ab가 1이면, 게스트는 기본 카운 터 집합을 사용하도록 인가되고; Ab가 0이면, 게스트는 기본 카운터 집합을 사용하도록 인가되지 않는다.
Ae(249): 확장된 카운터 집합 인가 컨트롤 - Ae가 1이면, 게스트는 확장된 카운터 집합을 사용하도록 인가되고; Ae가 0이면, 게스트는 확장된 카운터 집합을 사용하도록 인가되지 않는다.
사용된 또 다른 컨트롤 블록은 계측 인에이블 기술(MED) 블록(250)(도 2e)이며, 이것은 게스트가 각각의 카운터 집합 및 각각의 샘플링 함수를 인에이블했는가를 나타낸다. 이하에서는 일례에서, 상태를 정의한다.
Es(252): 기본 샘플링 인에이블 컨트롤 - Es가 1이면, 기본 샘플링 함수는 인에이블되고; Es가 0이면, 기본 샘플링 함수는 인에이블되지 않는다.,
Ed(254): 진단 샘플링 인에이블 컨트롤 - Ed가 1이면, 진단 샘플링 함수는 인에이블되고; Ed가 0이면, 진단 샘플링 함수는 인에이블되지 않는다.,
Ec(256): 숨겨진-활동 카운터 집합 인에이블 컨트롤 - Ec가 1이면, 숨겨진-활동 카운터 집합은 인에이블되고; Ec가 0이면, 숨겨진-활동 카운터 집합은 인에이블되지 않는다.
Ep(257): 문제 상태 카운터 집합 인에이블 컨트롤 - Ep가 1이면, 문제 상태 카운터 집합은 인에이블되고; Ep가 0이면, 문제 상태 카운터 집합은 인에이블되지 않는다.
Eb(258): 기본 카운터 집합 인에이블 컨트롤 - Eb가 1이면, 기본 카운터 집합은 인에이블되고; Eb가 0이면, 기본 카운터 집합은 인에이블되지 않는다.
Ee(259): 확장된 카운터 집합 인에이블 컨트롤 - Ee가 1이면, 확장된 카운터 집합은 인에이블되고; Ee가 1이면, 확장된 카운터 집합은 인에이블되지 않는다.
사용된 또 다른 컨트롤 블록은 계측 활성화 기술(MCD) 컨트롤 블록(260)(도 2f)으로서, 이것은 게스트가 각각의 카운터 집합 및 각각의 샘플링 함수를 활성화하였는가를 나타낸다. 이하에서는, 일례에서 컨트롤들을 정의한다.
Cs261: 기본 샘플링 활성화 컨트롤 - Cs가 1이면, 기본 샘플링 함수는 활성화되고; Cs가 0이면, 기본 샘플링 함수는 활성화되지 않는다.
Cd(262): 진단 샘플링 활성화 컨트롤 - Cd가 1이면, 진단 샘플링 함수는 활성화되고; Cd가 0이면, 진단 샘플링 함수는 활성화되지 않는다.
Cc(263): 숨겨진-활동 카운터 집합 활성화 컨트롤 - Cc가 1이면, 숨겨진-활동 카운터 집합은 활성화되고; Cc가 0이면, 숨겨진-활동 카운터 집합은 활성화되지 않는다.
숨겨진-활동 카운터 집합이 활성화되면, 카운터들은 이런 논리 CPU에 의해 제공된 코프로세서 그룹의 지정된 활동들을 카운트한다.
Cp(265): 문제 상태 카운터 집합 활성화 컨트롤 - Cp가 1이면, 문제 상태 카운터 집합은 활성화되고; Cp가 0이면, 문제 상태 카운터 집합은 활성화되지 않는다.
문제 상태 카운터 집합이 활성화되면, 카운터들은 CPU가 문제 상태에 있을 때의 지정된 활동들을 카운트한다.
Cb(267): 기본 카운터 집합 활성화 컨트롤 - Cb가 1이면, 기본 카운터 집합은 활성화되고; Cb가 0이면, 기본 카운터 집합은 활성화되지 않는다.
기본 카운터 집합이 활성화되면, 카운터들은 CPU가 문제 상태 또는 감시(supervisor) 상태인지에 관계없이 지정된 활동들을 카운트한다.
Ce(269): 확장된 카운터 집합 인가 컨트롤 - Ce가 1이면, 확장된 카운터 집합은 활성화되고; Ce가 0이면, 확장된 카운터 집합은 활성화되지 않는다.
확장된 카운터가 활성화되면, 카운터들의 수 및 의미는 모델에 따라 달라진다.
또한, 상태 기술 블록의 보류 중인(pending) 인터럽션 파라미터(PIP)는 보류 중인 계측 경고 외부 인터럽션에 대한 소스들(sources)을 포함하고, 게스트 프리픽스(prefix) 영역 내의 외부 인터럽션 파라미터의 포맷이다.
또한, 상태 기술 블록의 지정된 바이트의 계측 블록 지정(MBD)은 호스트 실제 기억 영역 내의 계측 블록의 기점(origin)을 나타내는 어드레스를 포함한다.
계측 블록의 포맷의 일례가 도 2g에 도시되고 이하에서 기술하기로 한다. 각 카운터 집합 내의 카운터들은 카운터 집합에 할당된 필드의 기점에서 시작하여 증가하는 카운터 넘버 순으로 저장된다.
계측 블록으로의 접근 동안 발생되는 임의 접근 예외는 유효성 차단(validity interception)에 의해 보고된다.
일례로서, 계측 블록(280)은, 예를 들어,
기본 카운터 집합(282);
문제 상태 카운터 집합(284);
숨겨진-활동 카운터 집합(286);
확장된 카운터 집합(288)
을 포함한다.
샘플링 컨트롤 블록(290): 샘플링 컨트롤 블록은 128바이트로서, 게스트 샘플링 컨트롤 레지스터의 일부 및 추가 컨트롤 정보를 포함한다. 샘플링 컨트롤 블록 포맷의 일례는 도 2h를 참조하여 기술하기로 한다.
일례에서, 샘플링 컨트롤 블록(290)은, 예를 들어,
최대 버퍼 크기 표시자(S)(292): 이 표시자는 최대 버퍼 크기 표시자를 포함한다.
호스트 표시자(H)(294): 이 표시자는 호스트 표시자를 포함한다.
샘플링 간격(296): 이 필드는 샘플링 간격 레지스터의 내용을 포함한다.
현재 테이블 항목 어드레스(297):이 필드는 테이블 항목 어드레스 레지스터의 내용을 포함한다.
다음 데이터 항목 어드레스(298): 이 필드는 데이터 항목 어드레스 레지스터의 내용을 포함한다.
샘플 데이터는 버퍼, 예컨대, 메인 메모리에 저장된다. 예를 들어, 다수의 샘플 데이터 블록(버퍼를 포함함)은 머신(machine)이 각각의 샘플링 간격 동안 샘플 데이터를 저장하도록 제어 프로그램(예를 들어, 게스트로서 실행되는 운영 체제)에 의해 할당된다. 각각의 샘플 데이터 블록은 샘플 데이터 블록 테이블 내의 블록 링크 항목으로 지정된다. 샘플 데이터 블록 테이블의 현재 항목은 테이블 항목 어드레스 레지스터의 내용으로 지정되고, 샘플 데이터 블록의 다음 데이터 항목은 데이터 항목 어드레스 레지스터의 내용으로 지정된다. 본 발명에 따르면, 샘플링 버퍼의 구조에 대한 일례가 도 3에 도시된다.
도 3을 참조해 보면, 샘플링 버퍼(300)는 하나 이상의 샘플 데이터 블록 테이블(SDBT)(302) 및 하나 이상의 샘플 데이터 블록(SDB)(304)을 포함한다. 이 특정 예에서는, 세 개(3)의 샘플 데이터 블록 테이블이 도시되며, 이들은 순환 링크된 리스트로(in a circular linked list) 결합된다. 또한, 이 예에서는, 복수의 샘플 데이터 블록이 존재한다. 샘플링 버퍼의 다른 예는, 이 특정 예에서 도시된 것보다, 많거나, 적거나, 또는 동일한 수의 SDBT, 및/또는 도시된 것보다 많거나, 적거나, 또는 동일한 수의 SDB를 가질 수 있다.
테이블 항목 어드레스 레지스터(TEAR)(306)의 내용은 샘플 데이터 블록 테이블(302)의 현재 항목을 가리킨다. 각 샘플 데이터 블록 테이블에는, 예를 들어, 블록 링크 항목(308) 및 테이블 링크 항목(310)을 포함하여 두 종류의 항목이 있 다. 각각의 블록 링크 항목(308)은 샘플 데이터 블록(SDB) 기점(origin)을 포함하고, 각각의 테이블 링크 항목(310)은 샘플 데이터 블록 테이블(SDBT) 기점을 포함한다. 이 특정 실시예에서, 각각의 샘플 데이터 블록 테이블(302)은 16바이트의 정수 경계(integral boundary)에서 시작하고, 각각의 항목은 8바이트이다. 각각의 샘플 데이터 블록 테이블(302)은 다수의 블록 링크 항목(308) 및 하나의 테이블 링크 항목(310)을 포함한다. 각 항목 내의 지정된 비트(예를 들어, 비트 63)는 블록 링크 항목과 테이블 링크 항목을 구별한다. 비트 63이 0이면, 항목은 블록 링크 항목이고; 비트 63이 1이면, 항목은 테이블 링크 항목이다. 테이블 링크 항목이 동일한 데이터 블록 테이블의 최종 항목이다. 샘플 데이터 블록 테이블의 실제 크기는 테이블 링크 항목의 위치에 의해 결정되고, 최대 버퍼 크기 표시자에서 지정된 크기를 넘어서지 않는다. 이 실시예에서, 샘플 데이터 블록 테이블의 기점과 테이블 링크 항목은 최대 버퍼 크기의 정수 경계에 의해 분리될 수 없다.
최대 버퍼 크기 표시자(320)가 0이면, 블록 링크 항목의 지정된 부분(예를 들어, 비트 0 내지 51)은 실제 또는 절대 기억 영역의 샘플 데이터 블록의 기점을 포함한다. 데이터 항목 어드레스 레지스터에 샘플 데이터 블록 기점을 위치시켜야 하면, 우측에 제로들(예를 들어, 12개의 제로)을 첨부하여 64비트 어드레스를 형성한 후에 이 어드레스를 레지스터에 위치시킨다.
최대 버퍼 크기 표시자(320)가 1이면, 블록 링크 항목의 지정된 부분(예를 들어, 비트 0 내지 43)은 실제 또는 절대 기억 영역의 샘플 데이터 블록의 기점을 포함한다. 샘플 데이터 블록 기점을 데이터 항목 어드레스 레지스터에 위치시켜야 하면, 우측에 다수의 제로들(예를 들어, 20개)을 첨부하여 64비트 어드레스를 형성한 후에 이 어드레스를 레지스터에 위치시킨다.
일례에서, 테이블 링크 항목(310)의 비트 0 내지 59는 실제 또는 절대 기억영역의 샘플 데이터 블록 테이블의 기점을 포함한다. 샘플 데이터 블록 테이블 기점을 테이블 항목 어드레스 레지스터에 위치시켜야 하면, 우측에 다수의 제로들(예를 들어, 4개)을 첨부하여 64비트 어드레스를 형성한 후에 이 어드레스를 레지스터에 위치시킨다.
계속해서 도 3을 참조해 보면, 데이터 항목 어드레스 레지스터(330)의 내용은 샘플 데이터 블록(304)의 다음 데이터 항목(332)을 나타낸다. 각각의 샘플 데이터 블록은 최대 버퍼 크기의 정수 경계에서 시작한다. 샘플 데이터 블록의 크기는 최대 버퍼 크기 표시자에서 지정된 크기와 동일하다.
일례에서, 각 샘플 데이터 블록에는, 예를 들어, 데이터 항목(332) 및 트레일러 항목(336)을 포함하여 2 종류의 항목이 있다. 샘플 데이터 블록의 최종 바이트 넘버의 바이트(예를 들어, 64)가 트레일러 항목을 형성하고, 블록 내의 다른 모든 공간은 데이터 항목을 형성하는 데 사용된다.
적어도 하나의 샘플링 함수가 활성이면, 각각의 샘플링 간격 동안 데이터 항목이 저장된다. 단지 기본 샘플링 함수만이 활성이면, 저장되는 데이터 항목은 기본 샘플링 데이터 항목이고; 단지 진단 샘플링 함수만이 활성이면, 저장되는 데이터 항목은 진단 샘플링 데이터 항목이다. 두 샘플링 함수가 활성이면, 저장되는 데이터 항목은 결합된 데이터 항목이다. 이들 데이터 항목 각각에 대해 이하에서 더 상세히 기술하기로 한다.
기본 샘플링 데이터 항목의 일례에 대해 도 4a를 참조하면서 기술하기로 하낟. 일례에서, 기본 샘플링 데이터 항목(400)은, 예를 들어, 이하의 필드들을 포함한다. 즉,
데이터 항목 포맷 코드(402): 데이터 항목의 비트 0 내지 15는 데이터 항목의 포맷 코드를 포함한다.
고유 명령어 수(U)(404): 데이터 항목의 비트 20 내지 23은 고유 사이클 표시자가 온이었을 때의 샘플링 사이클 동안 동시에 실행된 고유하며 완료된 명령어의 수를 나타낸다.
파이프라인(pipelined) CPU는 중복된 방식으로 동시에 다수의 명령어를 실행할 수 있다: 동시에 실행되는 이들 명령어 각각은 서로 다른 파이프라인 단계(pipeline stage)에 있다. 또한, 일부 모델에서는, 파이프라인 CPU의 각각의 단계는 다수의 명령어를 동시에 실행할 수 있다.
명령어 실행 중, 샘플 데이터가 취해지는 CPU 내의 위치(place)인 샘플 점(sample point)에서 한 사이클 동안 고유 사이클 표시자는 턴온된다. 샘플링 점은 모델에 따라 다르지만, 동일 모델에 대해 실행되는 모든 명령어에 대해서는 동일하다. 파이프라인 CPU의 경우, 샘플링 점은 통상 특정 파이프라인 단계이다. 모델에 따라, 명령어 실행 중에 고유 사이클 표시자가 언제 턴온되는지는 예측할 수 없다. 이 필드는 고유 사이클 표시자가 온일 때의 샘플링 점에서 동시에 실행되는 명령어의 수를 포함한다.
샘플링 시점이 발생할 때, 그리고 CPU가 대기 상태이거나 또는 일부 다른 파이프라인 단계에서 지연(delay)으로 인해 샘플링 점이 사용 중(busy)이 아닌 경우에는, 이 필드의 내용은 제로(0)로 설정된다.
이 필드의 내용을 이용하여 충분히 작은 샘플링 간격 및 적당히 많은 수의 샘플을 이용할 할 때의 명령어에 대한 사이클을 산정할 수 있다.
특정 계측을 위한 명령어에 대한 사이클은 대기 상태 비트(후술됨)가 제로로 설정되는 샘플들인 사용 중 샘플의 수를 사용 중의 모든 샘플의 고유 명령어 총수로 나눔으로써 산정될 수 있다.
DAT 모드(T)(406): 데이터 항목의 비트 26은 CPU의 프로그램 상태 워드(PSW) 의 데이터 어드레스 변환(DAT) 모드 비트를 포함한다.
대기 상태(W)(408): 데이터 항목의 비트 27은 CPU의 PSW의 대기 상태 비트를 포함한다.
문제 상태(P)(410): 데이터 항목의 비트 28은 CPU의 PSW의 문제 상태 비트를 포함한다.
어드레스 공간 컨트롤(AS)(412): 데이터 항목의 비트 29 내지 30은 CPU의 PSW의 어드레스 공간 컨트롤을 포함한다.
무효 표시(I)(414): 데이터 항목의 비트 31은 항목이 유효인지 무효인지를 나타낸다. 이 비트가 0이면, 항목은 유효이고; 이 비트가 1이면, 항목은 무효이다. 항목 내의 샘플 데이터가 일관되지 않을 때는 항목은 무효로 설정된다.
1차 ASN(416): 데이터 항목의 바이트 오프셋 6 내지 7은 CPU의 컨트롤 레지 스터(4)의 비트 48 내지 63의 1차 어드레스 공간 넘버(PASN)를 포함한다.
명령어 어드레스(418): 데이터 항목의 바이트 오프셋 8 내지 15는 샘플링 사이클 동안 CPU가 실행한 명령어의 명령어 어드레스를 포함한다.
명령어 어드레스는 실제 모드에서 실제 어드레스로서 취급되고; 1차 어드레스 모드, 2차 공간 모드, 또는 액세스 레지스터 모드에서는 1차 가상 어드레스로서 취급되고; 홈(home) 공간 모드에서는 홈 가상 어드레스로서 취급된다.
샘플링 사이클 동안 샘플링 점이 다수의 명령어를 동시에 실행중이면, 동시에 실행되는 이들 명령어들 중 한 명령어의 어드레스만이 보고된다. 어느 명령어 어드레스를 보고해야 할지에 대한 선택은 모델에 따라 달라진다.
일부 모델에서는, 실행물(Execute)의 타겟 명령어의 어드레스는 동일 데이터에서는 보고되지 않는다. 대기 상태 비트가 1이면, 이 필드의 내용은 예측 불가능하다. 샘플링 시점이 발생하고 샘플링 점이 일부 다른 파이프라인 단계에서의 지연으로 인해 어떠한 명령어도 실행 중이지 않으면, CPU에서 동시에 실행중인 어느 명령어 어드레스가 보고되는가는 예측 불가능하다.
게스트 프로그램 파라미터(420): 데이터 항목의 바이트 오프셋 16 내지 23은 CPU가 논리 파티션 레벨에서 실행되지 않거나 또는 논리 파티션 레벨에서 실행되고 호스트 표시자가 0이면, 현재 프로그램 파라미터 레지스터를 포함한다. CPU가 논리 파티션 레벨에서 실행중이고 호스트 표시자가 1이면, 이 필드에는 0이 저장된다.
호스트 프로그램 파라미터(422): 데이터 항목의 바이트 오프셋 24 내지 31은 CPU가 논리 파티션 레벨에서 실행되고 호스트 표시자가 1이면, 현재 프로그램 파라미터 레지스터를 포함한다. 그렇지 않으면, 이 필드의 내용은 예측 불가능하다.
진단 샘플링 데이터 항목(440)의 일례에 대해 도 4b를 참조하면서 기술하기로 한다. 일례에서, 진단 샘플링 데이터 항목(440)은 이하의 것을 포함한다. 즉,
데이터 항목 포맷 코드(442): 데이터 항목의 비트 0 내지 5는 데이터 항목의 포맷 코드를 포함한다.
최대 버퍼 크기(444): 데이터 항목의 비트 19는 최대 버퍼 크기를 나타내도록 되어 있다. 0는 4K 바이트를 나타내고, 1은 1M 바이트를 나타낸다.
무효 표시(I)(446): 데이터 항목의 비트 31은 항목이 유효 또는 무효인지를 나타낸다. 비트가 0이면, 항목은 유효이고; 비트가 0이면, 항목은 무효이다. 항목 내의 샘플 데이터가 일관되지 않을 경우 항목은 무효로 설정된다.
이 항목의 나머지는 비-구조화된 샘플 데이터를 포함한다.
두 기본 샘플링 함수 및 진단 샘플링 함수가 활성이면, 각 샘플링 간격 동안 저장된 샘플 데이터는 결합된 데이터 항목으로, 이는 기본 샘플링 데이터 항목과 후속하는 진단 샘플 데이터 항목을 포함한다.
결합된 데이터 항목을 저장해야 할 경우, 현재 샘플 데이터 블록에 공간이 충분하면 이 항목은 전부 저장된다. 현재 샘플 데이터 블록에 공간이 충분치 않을 경우, 다음 샘플 데이터 블록에 충분한 공간이 있으면, 결합된 전체 샘플 데이터는 다음 샘플 데이터 블록에 저장된다. 이 예에서는, 결합된 데이터 항목의 기본 샘플링 데이터 항목 및 진단 샘플링 데이터 항목은 서로 다른 샘플 데이터 블록에는 저장되지 않는다. 가용할 공간이 없음으로 인해 결합된 샘플 데이터가 폐기될 때, 현재 샘플 데이터의 샘플 오버플로 카운트는 1만큼 증분된다.
트레일러 항목에 관련된 필드의 일 실시예에 대해 도 4c를 참조하면서 기술하기로 한다. 각각의 트레일러 항목은, 예컨대, 64바이트이며 샘플 데이터 블록의 최종 64바이트에 위치한다. 일례에서, 트레일러 항목(450)은, 예를 들어, 이하의 것을 포함한다. 즉,
블록 풀(full) 표시자(F)(452): 트레일러 항목의 바이트 오프셋 0의 비트 0는 블록 풀 표시자이다. 이 표시자가 1이면, 샘플 데이터 블록은 풀이다.
경고 요청 컨트롤(A)(454): 트레일러 항목의 바이트 오프셋 0의 비트 1은 경고 요청 표시자이다. 이 표시자가 1이고 샘플 데이터 블록이 풀로 되면, 샘플 데이터 블록 업데이트 프로세스의 종료 시에 프로그램 요청 경고 외부 인터럽션 이벤트가 승인된다(recognize). 여기서, 샘플 데이터 블록은 그 블록 풀 표시자가 설정이면 그것이 전체적으로 풀인지에 관계없이 풀인 것으로 여겨진다. 이 블록이 추가의 공간을 갖지만, 다음 샘플을 저장할 만큼 충분하지 않으면, 표시자는 설정되고 블록은 풀인 것으로 여겨진다.
경고 요청 컨트롤의 설정(setting)은 선택 가능하다. 예를 들어, 이것은 매 x(예를 들어, 10) 데이터 블록마다 설정될 수 있다. 따라서, 버퍼의 한 데이터 블록이 풀이더라도, 제10 풀 데이터 블록 이후의 것과 같이, 표시자가 설정되어 있는 데이터 블록에 도달될 때까지 인터럽트일 필요는 없다. 10에 대한 선택은 단지 일례에 불과하므로, 원하는 임의 다른 수를 사용할 수 있다. 따라서, 샘플 간격 이 후 또는 한 데이터 블록이 풀인 이후에도 인터럽트가 일어나지 않는다.
샘플 오버플로 카운트(456): 트레일러 항목의 바이트 오프셋 8 내지 15는 샘플 데이터 블록이 풀이므로 손실된 샘플 데이터 항목의 수를 포함한다.
타임스탬프(458): 트레일러 항목의 바이트 오프셋 16 내지 31은 샘플 데이터 블록이 풀로 된 때의 시점에서의 시계 시각(time of day clock value)을 포함한다.
프로그램 요청 경고가 발생하면, 프로그램(예를 들어, 게스트로서 실행되는 운영 체제 등의, 제어 프로그램)이 풀인 샘플 데이터 블록으로부터 샘플 데이터를 판독하는 것으로 예기된다. 이들 블록을 해방시키기 위해, 프로그램은 블록 풀 표시자(F) 및 샘플 오버플로 카운트를 재설정할 것이고, 또한 경고 요청 컨트롤(A)을 재확립할 것이다. 일례에서, 샘플 데이터 블록 내의 이들 필드들의 업데이팅은 Compare Double 및 Swap 명령어를 이용하여 인터로킹된(interlocked) 업데이트로서 수행될 것이다. 샘플링 함수가 활성인 채로 남아 있는 동안은 이들 판독 및 업데이트 전부가 수행된다.
CPU가 동작 상태이고 적어도 하나의 샘플링 함수가 활성이면, 각각의 샘플링 시점에서 샘플 데이터 블록 업데이트 프로세스가 수행된다. 이 프로세스는 새로운 데이터 항목을 위한 공간을 찾아내어, 항목을 형성하고, 레지스터의 내용이 다음 데이타 항목의 위치를 나타내도록 데이터 항목 어드레스 레지스터의 내용을 업데이트한다.
샘플 데이터 블록 업데이트 프로세스 동안, 또 다른 프로세스에 소정의 값을 추가함에 의해 임의 어드레스가 형성되면, 이 어드레스의 비트 위치 제로의 캐리 아웃(carry out)(있다면)은 무시된다. 마찬가지로, 샘플 오버플로우 카운트 필드의 내용이 증분되면, 카운트의 비트 위치 제로의 캐리 아웃(있다면)은 무시된다.
샘플 데이터 블록으로의 접근은 키 제어된 보호(key controlled protection)를 받지도 못하고, 낮은(low) 어드레스 보호도 받지 못한다.
샘플 데이터 블록 항목 또는 샘플 데이터 블록 테이블 항목으로의 기억 영역 접근이 수행될 때, 어드레스가 무효이면, 계측 경고 외부 인터럽션 이벤트(무효 항목 어드레스)가 승인되고, 해당 CPU를 위한 활성 샘플링 함수들이 비활성 상태에 놓이게 된다. 예를 들어, 어드레스가 0 내지 8191의 범위 내에 있거나, 지정된 샘플 데이터 블록 항목이 트레일러 항목 내에 있거나, 지정된 기억 위치가 구성(configuration)에서 이용 가능하지 않으면, 항목 어드레스는 무효이다.
샘플 데이터 블록 테이블 항목으로의 기억 영역 접근이 수행될 때, 임의 부정확한 SDB 테이블 항목이 검출되면, 계측 경고 외부 인터럽션 이벤트(부정확한 샘플 데이터 블록 테이블 항목)가 승인되고, 해당 CPU를 위한 활성 샘플링 함수는 비활성 상태에 놓인다. 샘플 데이터 블록 테이블 항목은, 그 항목이 테이블 링크 항목이고 그것이 또 다른 테이블 링크 항목을 지정하거나, 최종 테이블 항목이 테이블 링크 항목이 아닌 경우에는 부정확하다.
데이터 항목 어드레스 레지스터의 내용은 현재 샘플 데이터 블록에서 다음 데이터 항목을 찾아내는데 이용된다. 다음 데이터 항목이 샘플 데이터 블록의 트레일러 항목(예컨대, 최종 64바이트) 내에 위치되면, 계측 경고 외부 인터럽션 이벤트(무효 항목 어드레스 경고)가 승인되고, 샘플링 함수는 비활성 상태에 놓인다.
본 발명에 따라, 샘플링 버퍼의 업데이트에 관련된 로직(logic)의 일 실시예에 대해 도 5a 및 도 5b를 참조하면서 기술하기로 한다. 도 5a를 참조해 보면, 처음에, 샘플링 함수 동안 샘플 데이터를 획득하여 이것을 버퍼에 저장한다(단계 500). 현재 샘플 데이터 블록의 트레일러 항목 내의 블록 풀 표시자가 설정(예를 들어, 1)되어 있는가에 대한 판단을 행한다(단계 502). 블록 풀 표시자가 설정되어 있으면, 이 시점에서는 버퍼에 데이터를 저장할 공간이 충분치 않다는 것을 나타낸다. 트레일러 항목의 샘플 오버플로 카운트 필드의 내용은 1만큼 증분되고(단계 504), 저장될 샘플 데이터는 폐기된다(단계 506). 이로써, 업데이트 프로세스가 종료된다(단계 508).
단계(502)로 돌아가, 현재 샘플 데이터 블록의 트레일러 항목 내의 블록 풀 표시자가 0이면, 샘플 데이터를 저장할 공간이 충분한가에 대한 판단을 행한다(단계 510). 블록 풀 표시자가 0이고 공간이 충분하면, 다음 데이터 항목에 샘플 데이터를 저장하고(단계 512), 데이터 항목 어드레스 레지스터의 내용을 데이터 항목 크기만큼 증분한다(단계 514). 업데이트 프로세스가 완료된다(단계 508).
반면, 단계(510)로 돌아가, 블록 풀 표시자가 설정되어 있지 않고, 다음 데이터 항목에 샘플 데이터를 저장할 공간이 충분치 않으면, 현재 샘플 데이터 블록의 트레일러 항목 내의 블록 풀 표시자를 1로 설정하고(단계 520; 도 2b), 트레일러 항목의 타임스탬프 필드에 시계 시각을 업데이트한다(단계 522).
그 후, 트레일러 항목 내의 경고 요청 표시자가 1인지에 대한 판단을 행한다(단계 524). 트레일러 항목 내의 경고 요청 표시자가 1이면, 업데이트 프로세스 의 종료 시에 계측 경고 외부 인터럽션 이벤트(프로그램 요청된 경고)를 승인한다(단계 526). 그 후, 경고 요청 표시자가 설정되어 있지 않으면, SDB 테이블 내의 다음 항목이 현재 SDB 테이블 항목이 되도록 테이블 항목 어드레스 레지스터의 내용을 SDB 테이블 항목 크기만큼 증분시킨다(단계 528). 현재 SDB 테이블 항목을 페치하여(fetch) 이 항목의 비트 63을 검사한다(단계 530). 현재 SDB 테이블 항목의 비트 63이 0이면, 이 항목은 블록 링크 항목이고 샘플 데이터 블록(SDB) 기점을 포함하며; 비트 63이 1이면, 현재 SDB 테이블 항목은 테이블 링크 항목이고 샘플 데이터 블록 테이블(SDBT) 기점을 포함한다.
페치된 항목이 SDB 테이블 내의 최종 항목이고(즉, 최대 버퍼 크기에 도달하기 전에 이 항목이 최종 항목이고)(단계 532), 이 항목이 테이블 링크 항목이 아니면(즉, 항목의 비트 63이 0)(단계 534), 계측 경고 외부 인터럽션 이벤트(부정확한 SDB 테이블 항목 경고)가 승인된다(단계 536). 활성 샘플링 함수를 비활성 상태로 하고 업데이트 프로세스를 종료한다(단계 538).
단계(534)로 돌아가, 페치된 항목이 최종 항목이고 비트 63이 1이면, 지정된 테이블이 현재 SDB 테이블이 되도록 테이블 항목 어드레스 레지스터에서 이 항목에서 지정된 SDB 테이블의 기점 어드레스를 업데이트한다(단계 540). 현재 SDB 테이블 항목을 페치하여 이 항목의 비트 63을 검사한다(단계 542). 비트 63이 테이블 링크 항목에 의해 가리켜지는 SDB 테이블 항목 자체가 테이블 링크 항목을 나타내는 1이면(단계 544), 계측 경고 외부 인터렵션 이벤트(부정확한 SDB 테이블 항목 경고)가 승인된다(단계 536). 활성 샘플링 함수가 비활성 상태로 되어 업데이트 프로세스는 종료된다(단계 538).
그러나, 비트가 0이면(단계 544), 그 항목에서 지정된 샘플 데이터 블록의 기점 어드레스는 그 블록이 현재 샘플 데이터 블록이 되도록 데이터 항목 어드레스 레지스터에서 업데이트된다(단계 546). 이어서, 처리는 상술한 단계(502; 도 5a)를 계속한다.
단계(532; 도 5b)로 돌아가, 페치된 항목이 SDB 테이블 내의 최종 항목이 아니고(즉, 경계에 도달하기 전에는 페치된 항목이 최종 항목이 아니고), 페치된 테이블 항목의 비트 63이 0이면(단계 550), 처리는 상술한 바와 같은 단계(546)를 계속한다. 그러나, 페치된 비트 63이 테이블에 더 이상의 항목이 없는 것을 표시하는 1이면, 테이블이 많은 공간을 가지더라고, 처리는 기술된 단계(540)를 계속한다.
단계(526)를 참조하여 알 수 있는 바와 같이, 풀로서 표시된 샘플 데이터 블록의 트레일러 항목에서 경고 요청이 설정되어 있는 것으로 판단한 것에 응답하여, 업데이트 프로세스의 종료 시에 계측 경고 외부 인터럽션 이벤트를 승인한다. 이 처리의 일 실시예를 도 5c를 참조하면서 기술하기로 한다.
도 5c를 참조해 보면, 업데이트 프로세스의 종료 시에 인터럽션을 승인한다(단계 580). 이에 응답하여, 제어 프로그램(예를 들어, 게스트로서 실행되는 운영 체제)은 하나 이상의 샘플 데이터 블록(예를 들어, 풀인 블록, 또는 데이터 및 그의 부분 집합을 갖는 모든 블록)에 저장된 데이터를 판독하고 그 데이터를 DASD에 또는 다른 저장 매체에 기입한다(단계 582). 또한, 인터로킹된 업데이트 동작에 서, 제어 프로그램은 풀이었던 임의 블록의 트레일러 항목 내의 블록 풀 표시자를 재설정하고, 경고 요청 컨트롤을 재구축한다(단계 586). 일례에서, 재구축은 인터럽트를 개시한 바로 그 경고 표시자의 설정(또는 설정을 중단)을 포함한다. 다른 예에서는, 그러나, 하나 이상의 다른 경고 표시자는 설정될 수 있다. 경고 표시자는 얼마나 자주 데이터를 덤프(dump)해야 하는가에 따라, 하나 이상의 트레일러 항목에서 설정될 수 있다.
경고 표시자는, 예를 들어, 적어도 한 데이터 블록에서 설정되어 있으며, 이 블록은 버퍼가 풀(full)되기 전에 데이터를 덤프하기에 충분한 시간을 제공하도록 선택되어, 샘플 데이터 손실을 최소화한다. 그러나, 소량의 데이터가 손실되면, 수집된 데이터는 여전히 계속 사용할 수 있다. 반면, 구현(implementation)에 따라 종속되는 상당량의 데이터가 손실되면, 수집된 샘플 데이터는 무시된다.
도 5a 내지 도 5c를 참조하여 기술한 버퍼 업데이트 프로세스는 샘플 데이터를 캡처하도록 일어나는 전체 샘플링 프로세스의 일부이다. 샘플링 프로세스는 샘플링 함수가 개시되는 것에 응답하여, 오퍼레이터 요청에 의해 시작된다. 하나 이상의 오퍼레이터에 의해 동시에 개시되는 하나 이상의 샘플링 함수가 존재할 수 있다. 버퍼 업데이트 프로세스를 포함하여 샘플링 프로세스는 비-가상 한경 및 가상 환경에서 수행될 수 있다. 가상 환경을 위한 샘플링 프로세스의 개관에 대한 일 실시예에 대해 도 6a 내지 도 6c를 참조하여 기술하기로 한다. 그 후, 가상 환경 내의 카운터 처리에 대한 개관이 제공된다.
도 6a를 참조해 보면, 처음에, 오퍼레이터가 샘플링 함수를 호출하 고(invoke), 예를 들어, 샘플링 빈도, F,(예컨대, 분당 수집될 샘플의 수), 샘플링 실행의 기간, D,(분), 및 샘플링 유형(예컨대, 기본, 진단, 또는 결합된 샘플링)을 포함하는 각종 파라미터를 지정한다(단계 600).
또한, 호스트(예컨대, LPAR)는 샘플링이 수행될 게스트의 인가 표시자를 설정하여 샘플링을 인가한다(단계 602).
게스트(예컨대, 운영 체제 등의 제어 프로그램)가 배정된다(dispatch)(단계 604). 그 후, 게스트는 후술할 쿼리 샘플링 정보(QSI) 명령어를 발행하며, 이 명령어는 샘플링 기능에 관한 정보를 제공한다(단계 606). 일 예에서, 이 정보는 기본 샐플링 데이터 항목 크기(BSDES)(바이트), 진단 샘플링 데이터 항목 크기(DSDES)(바이트), 및 CPU 속도 = C 사이클/마이크로초를 포함한다. 얻어진 정보를 이용하여, 제어 프로그램은 계측에서 각 프로세서마다 샘플링 간격 = i 사이클/초를 계산한다(단계 608). 예를 들어,
F = 전체 샘플링 빈도(샘플/분);
p = 계측에 관련된 프로세서의 수;
f = (F/60)/p = 각 프로세서에 대한 개별 샘플링 빈도(샘플/초);
C = CPU 속도(사이클/(10**-6)초);
i = (1/f)C = 각 프로세서에 대한 개별 샘플링 간격(사이클/샘플).
또한, 개별 샘플링 빈도(위에서 정의됨),f, 샘플 데이터 항목 크기, L, 및 샘플링 실행의 지정된 기간, D,를 이용하여 각 프로세서마다 얼마나 큰 데이터 버퍼를 필요로 하는가를 계산한다(단계 610). 샘플 데이터 항목 크기, L,은 QSI 명 령어에 의해 반환된 지정된 샘플링 유형 및 각 항목 유형의 크기(BSDES 및 DSDES)을 이용하여 계산된다. 예를 들어,
L = 샘플링 데이터 항목 크기(바이트);
단지 기본 샘플링 만이 사용되면, L = BSDES;
단지 진단 샘플링 만이 사용되면, L = DSDES;
기본 및 진단 샘플링 모두 사용되면, L = BDES + DSDES;
f = 각 프로세서마다의 개별 샘플링 빈도(샘플/초);
D = 의도된 실행 기간(분);
B = f*L*D*60 = 전체 샘플링 실행 동안 개별 프로세서에 관한 모든 샘플에 필요한 버퍼 크기(바이트).
상기 정보에 기초하여, 게스트는 버퍼에 기억 영역을 할당한다(단계 612). 본 발명의 일 양상에 따르면, 총 버퍼 크기를 할당할 필요는 없다. 대신에, 버퍼의 단지 일부만이 할당되고, 특정 시점에서 버퍼로부터 데이터를 삭제하도록 인터럽트가 개시되어, 그 버퍼를 재사용할 수 있다. 기억 영역은 원하는 버퍼 크기로 할당되고, 기억 영역은 도 3을 참조하여 기술한 샘플링 데이터 버퍼의 형태로 형식화된다(formulate).
게스트에 의해 할당되는 버퍼 크기는, 게스트가 할당된 버퍼가 풀되기 전에 인터럽션을 서비스할 수 있을 정도로 충분히 커야한다. 이러한 최소치보다 큰 버퍼를 할당하는 것은, 게스트가 덜 자주 인터럽트되는 것이 요구될 것이다. 게스트 인터럽션들 간에 필요로 되는 시간은 그 다음 인터럽트가 나타나기 전에 각 인터럽 트의 서비스를 보장해야 한다. 게스트는 할당에 필요한 버퍼 크기의 배당량을 결정할 때 이들 요소들(factors)을 고려한다.
계측에 관련된 각 프로세서에 할당될 버퍼의 최소 크기,b,는 개별 샘플링 빈도,f, 샘플 크기,L, 및 제어 프로그램 간격,T,를 이용하여 계산된다. 예를 들어,
T = 버퍼를 서비스하는 데 필요로 되는 제어 프로그램 인터럽트들 간의 시간(초);
b = f*L*T = 최소 할당된 버퍼 크기(바이트).
일단 최소치 및 최대치가 계산되었으면, 게스트는 안전 마진(safety margin)을 포함하여 실제 버퍼 크기를 결정한다. 예를 들어, 최소 버퍼 크기,b,에 4를 곱해서 버퍼의 비동기성 기입이 기입 동작과 동시에 수집되는 샘플을 상실함이 없이도 발생하게 하여, 기입 동작은 완료하는 데 상당량의(nontrivial) 시간이 걸리는 것에 주목한다.
그 후, 게스트는 후술할 샘플링 컨트롤 설정(Set Sampling Controls) 명령어를 발행하여 샘플링 함수를 활성화시킨다(단계 614). 이 명령어는 샘플링 컨트롤의 적절한 인에이블(enablement) 및 활성화 비트를 설정한다. 이 명령어의 발행에 응답하여, 샘플링이 수행되고, 샘플 데이터는 도 5a 내지 도 5c를 참조하여 위에서 기술한 방식으로 처리된다(handle)(단계 616).
임의 시점에서, 게스트는 중지되고(suspend), 제어가 호스트로 반환된다(단계 620). 이것은 게스트의 시분할이 만료된 것을 비롯해서 여러 가지 이유로 인해 발생된다. 중지의 일부로서, 나머지 샘플링 간격 표시자가 업데이트된다(단계 628; 도 6b). 이 표시자는 각 게스트마다 제공된다. 게스트 시분할이 종료되면, 이 표시자를 이용하여 그 다음 샘플이 취해지기 전에 나머지 시간을 기록한다(record). 예를 들어, 샘플링 간격이 10㎳이고 게스트의 최종 샘플이 중지되기 전에 6㎳ 걸렸으면, 나머지 샘플링 간격에서 4㎳가 세이브된다(save). 이것은 이 게스트가 재배정(redispatch)될 때 이 샘플링 간격에 남아있는 시간으로서 사용될 것이다. 일례에서, 이 표시자는 후술될, 게스트에 연관된 계측 블록에 저장된다.
또한, 샘플링 컨트롤과 같은 컨트롤이 세이브된다(단계 630). 이는 가상 환경이므로, 컨트롤 블록은 본원에 기술된 바와 같이, 각 게스트마다 컨트롤을 세이브하도록 제공된다. 예를 들어, 적절한 인에이블 및 활성화 표시자는 상태 기술 블록의 MAD 및 MCD에 저장된다. 또한, 보류된 인터럽션 파라미터는 상태 기술 블록에 세이브된다.
또한, 샘플링 기능은 하나 이상의 하드웨어 표시자를 설정함에 의해 디스에이블 상태로 되고(단계 632), 제어가 호스트에게 복귀된다(단계 634).
샘플 데이터가 캡처되어 버퍼에 기입되는 상기한 것에 더하여, 카운터는 또한 게스트의 활동을 반영하도록 업데이트될 수 있다. 이런 처리는 도 6a 내지 도 6b를 참조하여 기술한 샘플링 처리와 유사하다. 예를 들어, 오퍼레이터는 카운터를 인가하고 하나 이상의 표시자를 지정한다. 또한, 호스트는 카운터가 수행될 특정 게스트의 인가 표시자를 설정함에 의해 카운트 기능을 인가한다. 게스트가 배정된 후, 게스트는 후술할 쿼리 카운터 정보(QCTRI) 명령어를 발행하며, 이 명령어는 카운터 기능에 관한 정보를 제공한다. 또한, 게스트는 후술할 CPU 카운터 집합 컨트롤 설정(Set CPU Counter Set Controls) 명령어를 발행하여 카운터 함수를 활성화한다. 이 명령어는 카운터 컨트롤의 적절한 인에이블 및 활성화 비트를 설정한다. 이 명령어에 응답하여, 카운터 함수가 수행된다.
게스트가 중지되면, 카운터 컨트롤이 세이브된다. 예를 들어, 적절한 인에이블 및 활성화 표시자는 MAD 및 MCD에 저장되고, 보류된 인터럽트 파라미터는 상태 기술 블록에 세이브된다. 제어는 호스트로 반환된다.
일례에서, 게스트가 재배정되면, 계측이 여전히 인가되어 있는가를 검사한다(단계 659; 도 6c). 이는, 일례에서, 인가 표시자를 검사하는 배정 루틴(예컨대, 밀리코드)에 의해 달성된다. 계측이 인가되지 않으면, 게스트는, 예를 들어, 게스트 인터럽션을 통해 통지를 받는다(단계 652). 그렇지 않으면, 본원에 기술된 바와 같이, 계측을 진행한다(단계 654).
본 발명에 따르면, 상기한 바와 비동기로, 제어 프로그램의 디스패처(dispatcher)가 태스크를 배정할 때마다, 제어 프로그램의 디스패처가 프로그렘파라미터 설정(Set Program Parameter) 명령어를 발행한다(단계 700; 도 7a). Set Program Parameter 명령어는 특정 태스크를 식별하는 식별자를 이 태스크에 태깅한다(tag). 이 식별자는 샘플 데이터와 함께 제공되어(예를 들어, 식별자는 레지스터로부터 검색되고 데이터가 포함됨), 데이터가 속한 태스크가 알려진다. 디스패처는 성능이 중요하므로, 계측 기능이 활성화인지를 판단하기 위한 테스트는 없다. 대신에, 이 명령어는 디스패처가 태스크를 배정할 때마다 발행된다. 일례에서, 구성(configuration)이 샘플링용으로 구성되지 않으면, 명령어는 아니오(no) 연산으로서 실행된다.
프로그램 파라미터 설정 명령어의 일 실시예에 대해 도 7b를 참조하여 기술하기로 한다. 일례로서, 프로그램 파라미터 설정 명령어(750)는 이하의 필드를 포함한다. 즉,
Op 코드(752): 이 필드는 프로그램 파라미터 설정 명령어를 나타내는 연산 코드(operation code)를 포함한다.
B2(754) 및 D2(756): B2 필드에 의해 지정된 일반(general) 레지스터의 내용이 D2 필드의 내용에 부가되어 제2 피연산자(operand) 어드레스를 형성한다.
실행 시에, 프로그램 파라미터 레지스터에서 제2 피연산자 어드레스에 의해 지정된 기억 위치 내의 8바이트 프로그램 파라미터가 업데이트된다. 일례에서, 이 레지스터는 64-비트 레지스터이고, 이 레지스터의 내용은 초기 CPU 재설정, 클리어 재설정, 및 파워-온 재설정에 의해 제로로 클리어된다. 한 특정 예에서, 프로그램 파라미터 레지스터는 실제 기억 영역에 유지된 상태 기술 블록 내에 포함된다.
위에서 언급된 쿼리 샘플링 정보 명령어를 이용하여 이 명령어의 제2 피연산자 어드레스에 의해 지정된 정보 블록에 CPU 계측 샘플링 기능에 관한 정보를 위치시킨다. 일례에서, 쿼리 샘플링 정보 명령어(800; 도 8a)는, 예를 들어, 이하의 것을 포함한다. 즉
Op 코드(802): 이 필드는 쿼리 샘플링 정보 명령어를 나타내는 연산 코드를 포함한다.
B2(804) 및 D2(806): B2 필드에 의해 지정된 일반 레지스터의 내용이 D2 필드의 내용에 부가되어 제2 피연산자 어드레스를 형성한다.
일례에서, 정보 블록(820; 도 8b)은 64바이트이고, 이하의 것을 포함한다. 즉
샘플링 상태 컨트롤(822): 정보 블록의 바이트 오프셋 0 내지 3은 기본 샘플링 및 진단 샘플링 함수를 위한 상태 컨트롤을 포함하며, 일례에서 이하의 포맷을 갖는다. 즉
0 0 0 0 0 0 0 0 0 0 0 0 0 0 As Ad
0 14 15
0 0 0 0 0 0 Es Ed 0 0 0 0 0 0 Cs Cd
16 30 31
Ad 진단 샘플링 인가 컨트롤
Es 기본 샘플링 인에이블 컨트롤
Ed 진단 샘플링 인에이블 컨트롤
Cs 기본 샘플링 활성화 컨트롤
Cd 진단 샘플링 활성화 컨트롤
기본 샘플링 데이터 항목 크기(BSDES)(824): 정보 블록의 바이트 오프셋 4 내지 5는 기본 샘플링 데이터 항목의 크기(바이트)를 나타내는, 부호없는 이진 정 수(unsigned binary integer)를 포함한다. 이 정보는 일례에서, 기계(machine)에서 하드-코딩된다(hard-code).
진단 샘플링 데이터 항목 크기(DSDES)(826): 바이트 오프셋 6 내지 7은 진단 샘플링 데이터 항목의 크기(바이트)를 나타내는, 부호없는 이진 정수를 포함한다. 이 정보는 일례에서는, 기계에서 하드 코딩된다.
최소 샘플링 간격(828): 정보 블록의 바이트 오프셋 8 내지 15는 CPU 사이클 수의 최소 샘플링 간격을 포함한다. 이 정보는 일례에서는, 기계에서 하드 코딩된다.
최대 샘플링 간격(830): 정보 블록의 바이트 오프셋 16 내지 23는 CPU 사이클 수의 최대 샘플링 간격을 포함한다. 이 정보는 일례에서는, 기계에서 하드 코딩된다.
TEAR 내용(832): 기본 샘플링 함수 또는 진단 샘플링 함수, 또는 이들 샘플링 함수 모두가 인에이블인 경우, 정보 블록의 바이트 오프셋 24 내지 31은 테이블 항목 어드레스 레지스터의 내용을 포함한다. 기본 샘플링 함수도 진단 샘플링 함수도 인에이블되지 않으면, 정보 블록의 바이트 오프셋 24 내지 31에 제로가 저장된다.
DEAR 내용(834): 기본 샘플링 함수 또는 진단 샘플링 함수, 또는 이들 샘플링 함수 모두가 인에이블인 경우, 정보 블록의 바이트 오프셋 32 내지 39는 테이블 항목 어드레스 레지스터의 내용을 포함한다. 기본 샘플링 함수도 진단 샘플링 함수도 인에이블되지 않으면, 정보 블록의 바이트 오프셋 32 내지 39에 제로가 저장 된다.
CPU 속도(836): 바이트 오프셋 44 내지 47은 마이크로초당 CPU 사이클 수의 CPU 속도를 나타내는, 부호없는 이진 정수를 포함한다. 이 정보는 일례에서는, 모델에 기초한 기계에 의해 제공된다.
위에서 언급된 쿼리 카운터 정보 명령어를 이용하여 이 명령어의 제2 피연산자 어드레스에 의해 지정된 정보 블록에 CPU 계측 카운터 기능에 관한 정보를 위치시킨다. 일례에서, 쿼리 카운터 정보 명령어(850)(도 8c)는, 예를 들어, 이하의 것을 포함한다. 즉
Op 코드(852): 이 필드는 쿼리 샘플링 정보 명령어를 나타내하는 연산 코드를 포함한다.
B2(854) 및 D2(856): B2 필드에 의해 지정된 일반 레지스터의 내용이 D2 필드의 내용에 부가되어 제2 피연산자 어드레스를 형성한다.
일례에서, 정보 블록(870; 도 8d)은 64바이트이고, 이하의 것을 포함한다. 즉
카운터 제1 버전 넘버(CFVN)(872): 정보 블록의 바이트 오프셋 0 내지 1은 카운터 제1 버전 넘버를 포함한다;
인가 컨트롤(874): 정보 블록의 바이트 오프셋 2 내지 3은 인가 컨트롤을 포함하고, 일례에서 이하의 포맷을 갖는다. 즉
Ag 0 0 0 0 0 0 0 0 0 0 0 Ac Ap Ab Ae
Ag 코프로세서 그룹 카운터 집합 인가 컨트롤
Ac 숨겨진-활동 카운터 집합 인가 컨트롤
Ap 문제 상태 카운터 집합 인가 컨트롤
Ab 기본 카운터 집합 인가 컨트롤
Ae 확장된 카운터 집합 인가 컨트롤
인에이블 컨트롤(876): 정보 블록의 바이트 오프셋 4 내지 5는 인에이블 컨트롤을 포함하고, 일례에서 이하의 포맷을 갖는다. 즉
Eg 0 0 0 0 0 0 0 0 0 0 0 Ec Ep Eb Ee
Eg 코프로세서 그룹 카운터 집합 인에이블 컨트롤
Ec 숨겨진-활동 카운터 집합 인에이블 컨트롤
Ep 문제 상태 카운터 집합 인에이블 컨트롤
Eb 기본 카운터 집합 인에이블 컨트롤
Ee 확장된 카운터 집합 인에이블 컨트롤
활성화 컨트롤(878): 정보 블록의 바이트 오프셋 6 내지 7은 활성화 컨트롤을 포함하고, 일례에서는 이하의 포맷을 갖는다. 즉
Cg 0 0 0 0 0 0 0 0 0 0 0 Cc Cp Cb Ce
Cg 코프로세서 그룹 카운터 집합 활성화 컨트롤
Cc 숨겨진-활동 카운터 집합 활성화 컨트롤
Cp 문제 상태 카운터 집합 활성화 컨트롤
Cb 기본 카운터 집합 활성화 컨트롤
Ce 확장된 카운터 집합 활성화 컨트롤
최대 CPU 어드레스(880): 정보 블록의 바이트 오프셋 8 내지 9는 기본 기계 레벨에서 최대 CPU 어드레스를 포함한다.
카운터 제2 버전 넘버(CSVN)(882): 바이트 오프셋 10 내지 11은 카운터 제2 버전 넘버를 포함한다.
도 9a를 참조하여 일례로서 기술한 샘플링 컨트롤 설정(Set Sampling Controls) 명령어를 이용하여 샘플링 컨트롤을 업데이트한다. 일 실시예에서, 샘플링 컨트롤 설정 명령어(900)는 일례에서 이하의 포맷을 포함한다. 즉
Op 코드(902): 이 필드는 샘플링 컨트롤 설정 명령어를 나타내는 연산 코드를 포함한다.
B2(904) 및 D2(906): B2 필드에 의해 지정된 일반 레지스터의 내용이 D2 필드의 내용에 부가되어 제2 피연산자 어드레스를 형성한다.
명령어 실행 중에, 제2 피연산자 어드레스에 의해 지정된 기억 위치 내의 요청 블록의 샘플링 컨트롤이 대응하는 샘플링 컨트롤 레지스터에 위치된다. 요청 블록의 컨트롤 값은 후술될 바와 같이, 오퍼레이터 및/또는 제어 프로그램(예컨대, 게스트로서 실행되는 운영 체제)에 의해 제공된다.
일례에서, 요청 블록은 64바이트이며, 도 9b를 참조하여 기술한 이하의 필드를 포함한다. 즉
S(922): 요청 블록의 비트 0,S,는 오퍼레이터에 의해 지정되는, 최대 버퍼 크기 표시자를 나타낸다.
H(924): CPU가 논리 파티션 레벨에서 실행되면, 요청 블록의 비트 1,H,는 호스트 표시자이다. CPU가 논리 파티션 레벨에서 실행되지 않으면, 비트 1은 무시되고 0로서 취급된다. 이것은 제어 프로그램에 의해 지정된다.
Es(926): 요청 블록의 비트 54,Es,는 기본 샘플링 인에이블 컨트롤을 나타내며, 이것은 오퍼레이터로부터의 입력 파라미터에 기초하여 설정된다.
Ed(928): 요청 블록의 비트 55,Ed,는 진단 샘플링 인에이블 컨트롤을 나타내며, 이것은 오퍼레이터로부터의 입력 파라미터에 기초하여 설정된다.
Cs(930): 요청 블록의 비트 62,Cs,는 기본 샘플링 활성화 컨트롤을 나타내며, 이것은 오퍼레이터로부터의 입력 파라미터에 기초하여 설정된다.
Cd(932): 요청 블록의 비트 62,Cd,는 진단 샘플링 활성화 컨트롤을 나타내며, 이것은 오퍼레이터로부터의 입력 파라미터에 기초하여 설정된다. 요청 블록의 비트 2 내지 53(925) 및 56 내지 61(929)은 제로이다.
샘플링 함수들의 지정된 인에이블 컨트롤 및 활성화 컨트롤은 샘플링 함수 모두가 유효 상태 천이를 행할 수 있을 경우에만 설정된다. 샘플링 함수가 유효 상태 천이를 행할 수 없을 경우에는, 임의 샘플링 함수에 대해서는 지정된 상태 컨트롤은 설정되지 않는다.
샘플링 함수가 디스에이블 상태, 비활성 상태, 또는 활성 상태로부터 활성 상태로 설정되면, 최대 버퍼 크기 표시자, 호스트 표시자, 샘플링 간격(934), 테이블 항목 어드레스 레지스터 카운터(936), 및 데이터 항목 어드레스 레지스터 컨트롤(938)을 포함한 추가 컨트롤들이 샘플링 컨트롤 레지스터에 위치된다. 샘플링 함수가 오퍼레이션(operation)에 의해 활성 상태로 되지 않으면, 추가의 컨트롤은 무시되고 샘플링 컨트롤 레지스터에 위치되지 않는다.
샘플링 함수가 디스에이블 상태, 비활성 상태, 또는 활성 상태로부터 활성 상태로 설정되어야 하고, 요청된 샘플링 간격이 지원되는 범위 외에 있을 경우, 임의 상태 컨트롤을 포함한 샘플링 컨트롤은 샘플링 컨트롤 레지스터에서 변경되지 않고 규격(specification) 예외로 인정된다. 지원되는 샘플링 간격 범위는 쿼리 샘플링 정보 명령어의 실행에 의해 제공되는 것을 포함하여 최대 샘플링 간격과 최소 샘플링 간격 사이이다.
일례에서, 두 샘플링 함수의 인에이블 컨트롤 및 활성화 컨트롤이 설정되면, 조건 코드(condition code) 0이 설정된다. 인에이블 컨트롤 및 활성화 컨트롤이 설정되어 있지 않으면, 조건 코드 3이 설정된다.
도 9c를 참조하여 일례로서 기술한 CPU 카운터 집합 컨트롤 설정(Set CPU 카운터 Set Controls) 명령어를 이용하여 카운터 상태 컨트롤을 업데이트한다. 일 실시예에서, CPU 카운터 집합 컨트롤 설정 명령어(900)는 일례에서, 이하의 포맷을 포함한다. 즉
Op 코드(952): 이 필드는 CPU 카운터 집합 컨트롤 설정 명령어를 나타내는 연산 코드를 포함한다.
B2(954) 및 D2(956): B2 필드에 의해 지정된 일반 레지스터의 내용이 D2 필드의 내용에 부가되어 제2 피연산자 어드레스를 형성한다.
명령어 실행 중에, 제2 피연산자 어드레스에 의해 지정된 기억 영역의 CPU 카운터 집합 상태 컨트롤은 로컬 카운터 상태 컨트롤 레지스터에 위치된다.
일례에서, 제2 피연산자는 64비트이며, 제2 피연산자의 비트 44 내지 47 및 60 내지 63은 CPU 카운터 집합의 상태 컨트롤을 지정한다. 이들 비트는, 예를 들어, 이하의 비트들을 포함한다. 즉
제2 피연산자의 비트 44,Ec,는 숨겨진-활동 카운터 집합의 인에이블 컨트롤을 포함한다.
제2 피연산자의 비트 45,Ep,는 문제 카운터 집합의 인에이블 컨트롤을 포함한다.
제2 피연산자의 비트 46,Eb,는 기본 카운터 집합의 인에이블 컨트롤을 포함한다.
제2 피연산자의 비트 47,Ee,는 확장된 카운터 집합의 인에이블 컨트롤을 포 함한다.
제2 피연산자의 비트 60,Cc,는 숨겨진-활동 카운터 집합의 활성화 컨트롤을 포함한다.
제2 피연산자의 비트 61,Cp,는 문제 카운터 집합의 활성화 컨트롤을 포함한다.
제2 피연산자의 비트 62,Cb,는 기본 카운터 집합의 활성화 컨트롤을 포함한다.
제2 피연산자의 비트 63,Ce,는 확장된 카운터 집합의 활성화 컨트롤을 포함한다.
모든 CPU 카운터 집합들이 유효 상태 천이를 행할 수 있을 경우, CPU 카운터 집합의 지정된 상태 컨트롤은 설정된다. 이 일 실시예에서, 카운터 집합이 유효 상태 천이를 행할 수 없으면, 지정된 상태 컨트롤은 임의 카운터 집합에 대해서는 설정되지 않는다.
앞에서는 CPU 계측 기능에 대해 상술하였으며, 이 기능은 하드웨어 내에서 발생하는 특정 이벤트들의 활동 카운트(예를 들어, 사이클 카운트, 명령어 카운트, 등)를 누적하고/하거나; 이 기능이 실행 중인 중앙 처리 장치의 스냅샷을 주기적으로 제공하고, 실행 중인 명령어를 비롯하여 CPU 상태 정보(예를 들어, Op 코드, 명령어에 문제가 있는지 등등)를 기록한다. 각각의 샘플링 시점에서, 샘플 데이터가 버퍼에 위치된다. 버퍼가 정해진 데이터량을 가지면, 버퍼로부터 데이터를 삭제하 도록 인터럽트가 제공된다.
본 발명의 다른 양상에 따르면, 계측 기능은 가상 환경의 구성들을 지원하도록 가상화된다. 가상 환경에서, 계측 기능은 하나 이상의 게스트에 의해 독립적으로 그리고 동시에 사용될 수 있다.
본 발명의 또 다른 양상에 따르면, 하나 이상의 처리 장치 상에 계측 로직의 하나 이상의 양상들을 배치(deploy)하기 위한 기술이 제공된다. 배치 로직의 일 실시예에 대해 도 10a 내지 도 10b를 참조하여 기술하기로 한다.
도 10a를 참조해 보면, 초기에, 계측 로직이 실행될 때 하나 이상의 서버 상에 상주해야 할 임의 프로그램이 있는가에 대해 판단한다(단계 1000). 예인 경우, 실행 프로그램(executables)을 포함하는 하나 이상의 서버를 식별하고(단계 1002), 하나 이상의 서버를 위한 계측 로직이, 예컨대, 파일 전송 프로토콜(FTP) 또는 임의 기타 프로토콜을 통하거나 또는 공유된 파일 시스템의 이용을 통한 복사(copy)에 의해 서버의 기억 영역으로 직접 전송된다(단계 1004). 그러면, 계측 로직이 서버 상에 설치된다(단계 1006).
그 후, 또는 실행 프로그램이 없을 경우, 서버 또는 서버들 상의 계측 로직에 사용자들이 접근하게 함으로써 계측 로직을 배치해야하는가에 대한 판단을 행한다(단계 1008). 사용자들이 서버들 상의 계측 로직에 접근해야 할 경우, 계측 로직을 저장할 서버 어드레스가 식별된다(단계 1010). 일례에서는, 계측 로직을 저장하기 위해 프록시 서버(proxy server)를 구축해야 하는가에 대한 판단을 행한다(단계 1012; 도 10b). 프록시 서버는 예를 들어, 웹 브라우저 등의 클라이언트 애 플리케이션과 실제 서버 사이에 위치하는 서버이다. 프록시 서버는 실제 서버로의 요청들을 가로채어(intercept) 그 자체가 그 요청을 충족시킬 수 있는지를 알아본다. 아닐 경우에는, 그 요청을 실제 서버로 전달한다(forward). 프록시 서버의 주된 두 가지 이익은 성능을 개선하고 요청들을 필터링한다. 프록시 서버를 구축해야하면, 프록시 서버가 설치된다(단계 1014).
그 후, 또는 프록시 서버를 구축할 필요가 없을 경우, 계측 로직은 예를 들어, 파일 전송 프로토콜(FTP) 등의 프로토콜을 통하거나, 또는 파일 공유를 통한 소스 파일로부터 직접 서버 파일로의 복사를 통해 서버로 전송된다(단계 1016). 다른 예로서, 계측 로직을 포함하는 트랜잭션(transaction)이 하나 이상의 서버에 전송되고, 서버들은 이 트랜잭션을 처리한 후, 계측 로직을 수신하여 이것을 서버들의 파일 시스템에 복사한다.
계측 로직이 서버들에 저장된 후, 사용자들은 그들의 클라이언트 컴퓨터를 통해 서버들 상의 계측 로직에 접근하고, 계측 로직의 적어도 일부를 그들의 클라이언트 컴퓨터의 파일 시스템에 복사할 수 있다(단계 1018). 그러면, 사용자는 클라이언트 컴퓨터 상에 계측 로직을 설치하는 프로그램을 실행한다(단계 1020). 다른 예에서, 서버들은 샘플링 로직의 하나 이상의 양상들을 각 클라이언트에 자동으로 복사하여 각 클라이언트 컴퓨터에서 그 로직을 위한 설치 프로그램을 실행한다. 이로써, 배포 처리(deployment processing)의 일례가 종료된다(단계 1022).
단계(1008; 도 10a)로 돌아가, 하나 이상의 서버 상의 계측 로직을 사용자들이 접근하게 함에 의해 계측 로직을 배포할 수 없을 경우, 계측 로직을 이메일을 통해 사용자들에게 전송함에 의해 계측 로직을 배포해야하는가에 대한 판단 처리를 행한다(단계 1030). 예인 경우, 계측 로직을 배포해야할 사용자들의 집합을 사용자 클라이언트 컴퓨터의 어드레스와 함께 식별한다(단계 1032). 계측 로직은 사용자의 클라이언트 컴퓨터 각각에 이메일을 통해 전송된다(단계 1034; 도 10b). 사용자들은 이메일을 수신하고(단계 1036), 이 이메일로부터 그들의 클라이언트 컴퓨터 상의 디렉터리로 계측 로직을 분리시킨다(단계 1038). 사용자는 클라이언트 컴퓨터 상의 계측 로직을 설치하는 프로그램을 실행한 후(단계 1020), 그 프로세스를 빠져 나온다(단계 1022).
단계(1030; 도 10a)로 돌아가, 계측 로직을 이메일을 통해 배포할 수 없을 경우에는, 계측 로직을 사용자 클라이언트 컴퓨터 상의 사용자 디렉터리에 직접 전송해야 하는가에 대한 판단을 행한다(단계 1040). 그럴 경우, 사용자 디렉터리를 식별한다(단계 1042). 계측 로직이 사용자의 클라이언트 컴퓨터 디렉터리에 직접 전송된다(단계 1044; 도 10b). 이것은, 예를 들어, 파일 시스템 디렉터리를 공유한 후 전송자의 파일 시스템으로부터 수신측 사용자의 파일 시스템에 복사하거나, 또는 파일 전송 프로토콜(FTP) 등의 전송 프로토콜을 이용하는 등의 여러 방식으로 행해질 수 있지만, 이런 방식에만 한정되는 것은 아니다. 사용자들이 계측 로직의 설치를 준비하기 위해 그들의 클라이언트 파일 시스템 상의 디렉터리에 접근한다(단계 1046). 사용자는 클라이언트 컴퓨터 상에 계측 로직을 설치하는 프로그램을 실행하고(단계 1020), 배치 프로세스를 빠져 나온다(단계 1022).
단계(1040; 도 10a)로 돌아가, 계측 로직을 사용자의 디렉터리에 직접 전송 할 수 없을 경우에는, 처리는 종료된다(단계 1050).
계측 로직의 배포 실시예가 제공되었지만, 본 발명의 사상을 벗어나지 않는 한 여러 변형 실시예가 가능하다.
본 발명의 하나 이상의 양상은 고객 환경의 관리를 지원하는(offer) 서비스 제공자에 의해 제공되고, 지원되고, 배포되고, 관리되고, 서비스될 수 있다. 예를 들어, 서비스 제공자는 한 명 이상의 고객에 대해 본 발명의 하나 이상의 양상을 수행하는 컴퓨터 코드 및/또는 컴퓨터 기반구조(infrastructure)를 생성하고, 유지하고, 지원 등을 할 수 있다. 그 대가로, 서비스 제공자는 예로서, 가입(subscription) 및 또는 보수(fee) 계약 하에서 고객으로부터 보수를 받을 수 있다. 추가로 또는 이와는 다르게, 서비스 제공자는 한 명 이상의 제3자에게 콘텐츠를 광고하는 판매를 통해 보수를 받을 수 있다.
본 발명의 일 양상에서, 상술한 바와 같이, 본 발명의 하나 이상의 양상을 수행하기 위한 애플리케이션이 배포될 수 있다. 일례로서, 애플리케이션을 배포하는 것은 본 발명의 하나 이상의 양상을 수행하도록 동작할 수 있는 컴퓨터 기반구조를 제공하는 것을 포함한다.
본 발명의 다른 양상으로서, 컴퓨팅 기반구조는 컴퓨팅 시스템에 컴퓨터 판독 가능 코드를 통합하는 것을 포함하여 배포될 수 있으며, 여기서 컴퓨터 판독 가능 코드는 컴퓨팅 시스템과 결합하여 본 발명의 하나 이상의 양상을 수행할 수 있다.
본 발명의 또 다른 양상으로서, 컴퓨터 판독 가능 코드를 컴퓨터 시스템에 통합하는 것을 포함하여, 컴퓨팅 기반구조를 통합하기 위한 프로세스가 제공될 수 있다. 컴퓨터 시스템은 컴퓨터 사용 가능 매체를 포함하며, 여기서 컴퓨터 사용 가능 매체는 본 발명의 하나 이상의 양상을 포함한다. 컴퓨터 판독 가능 코드는 컴퓨터 시스템과 결합하여 본 발명의 하나 이상의 양상을 수행할 수 있다.
본 발명의 하나 이상의 양상은 예를 들어, 컴퓨터 사용 가능 매체를 갖는 제조물(예를 들어, 하나 이상의 컴퓨터 프로그램 제품들)에 포함될 수 있다. 이 매체 내에는 예를 들어, 컴퓨터 판독 가능 프로그램 코드 수단 또는 로직(예컨대, 명령어, 코드, 커맨드, 등)이 포함되어 본 발명의 기능(capabilities)을 제공하고 용이하게 해준다. 제조물은 컴퓨터 시스템의 일부로서 또는 별개로 포함될 수 있다.
본 발명의 하나 이상의 양상을 구체화하는 제조물 또는 컴퓨터 프로그램 제품의 일례에 대해 도 11을 참조하여 기술하기로 한다. 컴퓨터 프로그램 제품(1100)은, 예를 들어, 컴퓨터 판독 가능 프로그램 코드 수단 또는 로직(1104)이 저장되어 있는 하나 이상의 컴퓨터 사용 가능 매체(1102)를 포함하여, 본 발명의 하나 이상의 양상을 제공하고 용이하게 해준다. 이 매체는 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템(또는 장치 또는 소자) 또는 전파 매체(propagation medium)일 수 있다. 컴퓨터 판독 가능 매체의 예로는, 반도체 또는 고상 메모리, 자기 테이프, 소거 가능 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 경화(rigid) 자기 디스크 및 광 디스크가 있다. 광 디스크의 예로는 콤팩트 디스트-판독 전용 메모리(CD-ROM), 콤팩트 디스크-판독/기입(CD-R/W) 및 DVD가 있다.
하나 이상의 컴퓨터 판독 가능 프로그램 코드 수단 또는 로직에 의해 정의되는 하나 이상의 상호관련된 모듈들의 일련의 프로그램 명령어 또는 논리 어셈블리는 본 발명의 하나 이상의 양상의 성능을 관리한다(direct).
유리하게도, 본 발명의 하나 이상의 양상의 계측 기능은 복수의 가상 환경 게스트에 의해 동시에 사용 가능하다. 각 게스트는 계측 기능이 그 게스트에 대해 인에이블되는가에 대한 제어를 갖는다. 이 계측 기능은 가상 환경 내의 논리 프로세서의 부분 집합 또는 전부에 대해 인에이블될 수 있다. 게스트의 데이터의 무결성(integrity)을 보호하기 위한 컨트롤이 별도로 유지된다.
유리하게도, 본 발명의 하나 이상의 계측 기능은 계측이 행해질 때마다 인터럽트를 필요로 하지 않는다. 대신에, 마킹된(marked) 샘플 데이터 블록이 거의 풀인 것으로 판단될 때(예를 들어, 다음 데이터 항목을 저장할 공간이 충분치 않음) 또는 원할 때에만 인터럽트가 수행된다. 인터럽트의 수를 줄임으로써, 시스템 성능이향상된다. 또한, 버퍼를 해방시킴에 의해, 그 버퍼를 반복적으로 사용할 수 있으므로, 필요로 되는 버퍼 공간의 양을 감소할 수 있다.
비록 위에서는 각종 실시예를 기술하였지만, 이들 실시예는 단지 일례에 불과하다. 예를 들어, 각종 명령어들을 기술하였지만, 본 발명의 하나 이상의 양상은 명령어 이외에 커맨드, 함수 등을 이용할 수 있다. 또한, 명령어의 포맷은 다른 필드, 다른 크기 필드, 다른 위치설정(psitioning) 등을 포함하여 다를 수 있다. 또한, 본원에서 기술한 항목 정보(예컨대, 요청 블록, 항목 필드, 정보 블록)는 다른 정보를 가질 수 있으며, 필드의 크기, 또한 위치설정도 다를 수 있다. 예 약된(reserved) 필드 또는 제로를 갖는 필드들은 항목으로부터 제거되었을 수 있다.
또한, 항목 내의 정보 중 일부는 본 발명의 하나 이상의 양상에 대해서는 사용될 수 없거나 또는 필요로 되지 않을 수 있다. 다수의 다른 변형이 행해질 수 있다.
비록 처리 환경의 일례를 본원에서 기술하였지만, 이는 단지 일례에 불과하다. 처리 환경의 다수의 다른 예가 본 발명의 하나 이상의 양상을 구체화할 수 있고 이용할 수 있다. 예를 들어, 처리 환경은 하나 이상의 게스트를 지원하는 단지 하나의 CPU만을 가질 수 있다. 다른 예에서, 처리 환경은 본원에 기술된 것과는 다른 제어 프로그램을 실행할 수 있다. 또한, 처리 환경은 인터내셔널 비지니스 머신즈 코포레이션에 의해 제공되는 z/VM® 등의 가상 기계를 실행할 수 있다(z/VM®은 인터내셔널 비지니스 머신즈 코포레이션의 등록 상표임). 일례에서, VM이 논리 파티션에서 실행 중일 때, VM이 게스트에 대한 샘플 데이터를 수집하고 있으면, VM은 호스트 표시자를 1로 설정할 것이다. 이는 논리 파티션 레벨에서의 프로그램 파라미터 레지스터 집합의 내용이 VM 샘플 데이터 블록 내의 데이터 항목의 호스트 프로그램 파라미터 필드에 저장되도록 할 것이고, 가상 기계 레벨에서의 프로그램 파라미터 레지스터 집합의 내용이 VM 샘플 데이터 블록 내의 데이터 항목의 게스트 프로그램 파라미터 필드에 저장되게끔 할 것이다. 이 경우에, 가상 기계 레벨에서의 프로그램 파라미터 레지스터 집합의 내용은 게스트에 의해 설정되고 태스크 ID 를 나타낼 수 있고; 논리 파티션 레벨에서의 프로그램 파라미터 레지스터 집합의 내용은 VM에 의해 설정되고 게스트 ID를 나타낼 수 있다. 이들 둘의 결합은 샘플 데이터에 기여한 게스트 태스크를 고유하게 식별할 수 있다. 다른 다수의 변형 역시 가능하다.
또한, 다른 유형의 컴퓨팅 환경은 본 발명의 하나 이상의 양상으로부터 이익을 얻을 수 있다. 일례로서, 환경은 에뮬레이터(예를 들어, 소프트웨어 또는 다른 에뮬레이션 메커니즘)를 포함할 수 있으며, 여기서는 특정 아키텍처(예를 들어, 명령어 실행; 어드레스 변환 및 구조화된 레지스터 등의 구조화된 함수를 포함) 또는 그 부분집합이 에뮬레이트된다(예를 들어, 프로세서 및 메모리를 갖는 고유(native) 컴퓨터 시스템 상에서). 이런 환경에서, 에뮬레이터를 실행하는 컴퓨터가 에뮬레이트되는 기능과는 다른 아키텍처를 가질 수 있더라도, 에뮬레이터의 하나 이상의 에뮬레이션 함수는 본 발명의 하나 이상의 양상을 구현할 수 있다. 일례로서, 에뮬레이션 모드에서, 에뮬레이트되는 특정 명령어 또는 오퍼레이션은 디코딩되고, 적당한 에뮬레이션 함수가 형성되어 개별 명령어 또는 오퍼레이션을 구현할 수 있다.
에뮬레이션 환경에서, 호스트 컴퓨터는, 예를 들어, 명령어 및 데이터를 저장하는 메모리; 메모리로부터 명령어를 페치하여 선택적으로 페치된 명령어를 위한 로컬 버퍼링을 제공하는 명령어 페치 유닛; 명령어 페치 유닛을 수신하여 페치된 명령어의 유형을 결정하는 명령어 디코드 유닛; 및 명령어를 실행하는 명령어 실행 유닛을 포함한다. 실행은 데이터를 메모리의 레지스터에 로딩하거나; 데이터를 레 지스터로부터 메모리로 다시 저장하거나; 또는 디코드 유닛에 의해 결정된, 임의 유형의 산술 또는 논리 연산을 수행하는 것을 포함할 수 있다. 일례에서, 각 유닛은 소프트웨어로 구현될 수 있다. 예를 들어, 유닛들에 의해 수행되는 연산들은 에뮬레이터 소프트웨어 내에서의 하나 이상의 서브루틴으로서 구현된다.
또한, 시스템 버스를 통해 메모리 요소들(memory elements)에 직접 또는 간접으로 결합되는 적어도 하나의 프로세서를 포함하는 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템이 사용 가능하다. 메모리 요소는, 예를 들어, 프로그램 코드의 실제 실행 중에 사용된 로컬 메모리, 벌크 기억 영역(bulk storage), 및 실행 중 벌크 기억 영역으로부터 검색해야 할 타임 코드의 수를 줄이기 위해 적어도 일부 프로그램 코드의 일시 기억 영역을 제공하는 캐시 메모리를 포함한다.
입력/출력, 즉 I/O 장치(키보드, 디스플레이, 포인팅 장치, DASD, 테이프, CD, DVD, 썸 드라이브(thumb drive) 및 기타 메모리 매체 등을 포함하지만, 이것에만 한정되는 것은 아님)는 시스템에 직접 또는 I/O 제어기를 개재하여 결합될 수 있다. 또한, 시스템에 네트워크 어댑터를 결합하여 데이터 처리 시스템이 개인 또는 공용 네트워크를 개재하여 다른 데이터 처리 시스템에 또는 원격 프린터나 기억 장치에 결합되는 것을 가능하게 할 수 있다. 모뎀, 케이블 모뎀 및 이더넷 카드는 이용 가능한 유형의 네트워크 어댑터 중 단지 몇몇에 불과하다.
본 발명의 하나 이상의 양상의 기능은 소프트웨어, 펌웨어, 하드웨어 또는 이들의 일부 결합으로 구현될 수 있다. 본 발명의 기능을 수행하기 위해 기계에 의해 실행 가능한 명령어의 적어도 한 프로그램을 구체화하는 기계에 의해 판독 가능한 적어도 하나의 프로그램 기억 장치가 제공될 수 있다.
본원에서 기술된 흐름도는 단지 예에 불과한 것이다. 본 발명의 사상을 벗어나지 않는 한 이들 흐름도 또는 단계(또는 동작)에 대한 다양한 여러 변형이 있을 수 있다. 예를 들어, 단계들은 다른 순서로 수행될 수 있거나, 단계들이 추가, 삭제 또는 변형될 수 있다. 이들 변형 모두는 청구된 본 발명의 일부로 고려된다.
본원에 사용된 획득이나 얻는다 라고 하는 용어는 수신, 제공, 검색, 결정 접근 등을 포함하지만, 이것에만 한정되는 것은 아니다.
비록 본원에서는 상술한 실시예들을 기술 및 도시하였지만, 당업자라면, 본 발명의 사상 및 범주를 벗어나지 않는 한, 각종 변형, 추가, 대체 등을 행할 수 있고, 이들은 첨부된 청구범위에 한정된 본 발명의 사상 내에 속하는 것으로 고려됨을 알아야 한다.
도 1은 본 발명의 하나 이상의 양상을 구체화하고 사용하기 위한 처리 환경의 일 실시예를 도시한 도면.
도 2a는 본 발명의 양상에 따라 사용된 각종 샘플링 컨트롤 레지스터의 일례를 도시한 도면.
도 2b는 본 발명의 양상에 따라, 도 2A의 테이블 항목(entry) 어드레스 레지스터의 내용의 일례를 도시한 도면.
도 2c는 본 발명의 양상에 따라, 도 2A의 데이터 항목 어드레스 레지스터의 내용의 일례를 도시한 도면.
도 2d는 본 발명의 양상에 따라, 계측 인가 기술 블록(measurment authorization description block)의 포맷의 일 실시예를 도시한 도면.
도 2e는 본 발명의 양상에 따라, 계측 인에이블 기술 블록(measurment enable description block)의 포맷의 일 실시예를 도시한 도면.
도 2f는 본 발명의 양상에 따라, 계측 활성화 기술 블록(measurment activation description block)의 포맷의 일 실시예를 도시한 도면.
도 2g는 본 발명의 양상에 따라, 계측 블록의 포맷의 일 실시예를 도시한 도면.
도 2h는 본 발명의 양상에 따라, 도 2G에 도시된 계측 블록의 샘플링 컨트롤 블록의 필드의 일 실시예를 도시한 도면.
도 3은 본 발명의 양상에 따라 사용된 샘플링 버퍼 구조의 일 실시예를 도시 한 도면.
도 4a는 본 발명의 양상에 따라, 기본 샘플링 데이터 항목 필드의 일 실시예를 도시한 도면.
도 4b는 본 발명의 양상에 따라, 진단 샘플링 데이터 항목 필드의 일 실시예를 도시한 도면.
도 4c는 본 발명의 양상에 따라, 트레일러(trailer) 항목 필드의 일 실시예를 도시한 도면.
도 5a 및 도 5b는 본 발명의 양상에 따라, 샘플링 버퍼의 업데이트에 연관된 로직의 일 실시예를 도시한 도면.
도 5c는 본 발명의 양상에 따라, 샘플링 버퍼로부터 수집된 데이터를 판독하기 위한 인터럽트의 제공과 연관된 로직의 일 실시예를 도시한 도면.
도 6a 및 도 6b는 본 발명의 양상에 따라, 샘플링 함수(sampling function)를 수행하는 것에 관련된 로직의 개관에 대한 일 실시예를 도시한 도면.
도 6c는 본 발명의 양상에 따라, 게스트를 재-배정할 때(re-dispatch) 계측이 인가되는가를 판정하는데 사용되는 로직의 일 실시예를 도시한 도면.
도 7a는 본 발명의 양상에 따라, 수집된 데이터와 함께 식별자의 저장을 허용하기 위해 샘플링 기능의 실행과 비동기로 수행되는 처리에 연관된 로직의 일 실시예를 도시한 도면.
도 7b는 본 발명의 양상에 따라 사용된 프로그램 파라미터 설정(Set Program Parameters) 명령어 포맷의 일례를 도시한 도면.
도 8a는 본 발명의 양상에 따라 사용된 쿼리 샘플링 정보(Query Sampling Information) 명령어 포맷의 일 실시예를 도시한 도면.
도 8b는 본 발명의 양상에 따라, 쿼리 샘플링 정보(Query Sampling Information) 명령어에 연관된 정보 블록에 관련된 필드의 일 실시예를 도시한 도면.
도 8c는 본 발명의 양상에 따라 사용된 쿼리 카운터 정보(Query Counter Information) 명령어 포맷의 일 실시예를 도시한 도면.
도 8d는 본 발명의 양상에 따라, 쿼리 카운터 정보(Query Counter Information) 명령어에 연관된 정보 블록에 관련된 필드의 일 실시예를 도시한 도면.
도 9a는 본 발명의 양상에 따라 사용된 샘플링 컨트롤 설정(Set Sampling Controls) 명령어 포맷의 일 실시예를 도시한 도면.
도 9b는 본 발명의 양상에 따라, 샘플링 컨트롤 설정(Set Sampling Controls) 명령어에 연관된 요청 블록의 일 실시예를 도시한 도면.
도 9c는 본 발명의 양상에 따라 사용된 CPU 카운터 집합 컨트롤 설정(Set CPU Counter Set Controls) 명령어 포맷의 일 실시예를 도시한 도면.
도 10a 및 도 10b는 본 발명의 양상에 따라, 하나 이상의 처리 장치 상에 계측 로직을 배포하기 위한 로직의 일 실시예를 도시한 도면.
도 11은 본 발명의 하나 이상의 양상을 구체화하는 컴퓨터 프로그램 제품의 일 실시예를 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
100: 처리 환경
102: 중앙 프로세서 복합체
104: 논리 파티션
108: 하이퍼바이저
110: 운영 체제
112: 논리 프로세서
114: 계측 함수
200: 샘플링 컨트롤 레지스터
202: 테이블 항목 어드레스 레지스터
204: 데이터 항목 어드레스 레지스터
210:샘플링 간격 레지스터
300:샘플링버퍼
306: 테이블항목 어드레스 레지스터
400: 기본 샘플링 데이터 항목

Claims (10)

  1. 처리 회로에 의해 판독 가능하고, 가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 방법을 수행하기 위해 상기 처리 회로에 의해 실행되는 명령어를 저장하는 컴퓨터 판독가능 저장 매체에 있어서,
    상기 방법은,
    상기 가상 처리 환경의 하나의 게스트 운영체제에 의해, 상기 하나의 게스트 운영체제의 활동에 관련된 계측의 인에이블(enablement of measurement)을 제어하는 단계, 및
    상기 가상 처리 환경의 다른 게스트 운영체제에 의해, 상기 다른 게스트 운영체제의 활동에 관련된 계측의 인에이블을 제어하는 단계를 포함하고,
    상기 하나의 게스트 운영체제에 의한 제어 단계는 상기 다른 게스트 운영체제에 의한 제어 단계와는 독립적이며, 계측은 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제에 대해 동시에 인에이블되거나, 또는 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제 중 하나에 대해서만 인에이블되고 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제 중 나머지에 대해서는 인에이블되지 않는 것인, 컴퓨터 판독가능 저장 매체.
  2. 제1항에 있어서,
    상기 하나의 게스트 운영체제에 의한 제어 단계는 계측을 인에이블링하는 단계를 포함하고, 상기 인에이블링 단계는 상기 하나의 게스트 운영체제의 논리 프로세서에 대한 계측을 인에이블링하는 단계를 포함하는 것인, 컴퓨터 판독가능 저장 매체.
  3. 제2항에 있어서,
    상기 계측의 인에이블은 상기 하나의 게스트 운영체제에 대한 샘플링 및 카운터 중 적어도 하나를 인에이블링하는 단계를 포함하는 것인, 컴퓨터 판독가능 저장 매체.
  4. 제2항에 있어서,
    상기 하나의 게스트 운영체제의 논리 프로세서는 상기 논리 프로세서에 대한 샘플링 데이터를 유지하기 위해 상기 논리 프로세서에 할당된 계측 블록과 연계되어 있는 것인, 컴퓨터 판독가능 저장 매체.
  5. 제4항에 있어서,
    상기 논리 프로세서는 상기 논리 프로세서에 대한 계측 상태를 유지하기 위해 하나 이상의 제어 블록들과 연계되어 있는 것인, 컴퓨터 판독가능 저장 매체.
  6. 제1항에 있어서,
    상기 하나의 게스트 운영체제는 상기 가상 처리 환경의 하나의 논리 파티션에서 실행되고, 상기 다른 게스트 운영체제는 상기 가상 처리 환경의 다른 논리 파티션에서 실행되는 것인, 컴퓨터 판독가능 저장 매체.
  7. 제1항에 있어서,
    상기 하나의 게스트 운영체제는 중지되고(suspend), 상기 방법은 상기 하나의 게스트 운영체제에 대한 다음 샘플을 취하기 전에 남아있는 시간을 나머지 간격에서 기록하는 단계를 더 포함하는 것인, 컴퓨터 판독가능 저장 매체.
  8. 제1항에 있어서,
    상기 하나의 게스트 운영체제에 의한 제어 단계는 상기 하나의 게스트 운영체제에 대한 계측을 디스에이블링하는 단계를 포함하고, 상기 다른 게스트 운영체제에 의한 제어 단계는 상기 다른 게스트 운영체제에 대한 계측을 디스에이블링하는 단계를 포함하는 것인, 컴퓨터 판독가능 저장 매체.
  9. 가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 컴퓨터-구현된 방법으로서,
    상기 가상 처리 환경의 하나의 게스트 운영체제에 의해, 상기 하나의 게스트 운영체제의 활동에 관련된 계측의 인에이블(enablement of measurement)을 제어하는 단계, 및
    상기 가상 처리 환경의 다른 게스트 운영체제에 의해, 상기 다른 게스트 운영체제의 활동에 관련된 계측의 인에이블을 제어하는 단계를 포함하고,
    상기 하나의 게스트 운영체제에 의한 제어 단계는 상기 다른 게스트 운영체제에 의한 제어 단계와는 독립적이며, 계측은 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제에 대해 동시에 인에이블되거나, 또는 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제 중 하나에 대해서만 인에이블되고 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제 중 나머지에 대해서는 인에이블되지 않는 것인, 컴퓨터-구현된 방법.
  10. 가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 컴퓨터 시스템으로서,
    메모리, 및
    상기 메모리와 통신하는 프로세서
    를 포함하며,
    상기 컴퓨터 시스템은,
    상기 가상 처리 환경의 한 게스트 운영체제에 의해, 상기 하나의 게스트 운영체제의 활동에 관련된 계측의 인에이블(enablement of measurement)을 제어하는 단계, 및
    상기 가상 처리 환경의 다른 게스트 운영체제에 의해, 상기 다른 게스트 운영체제의 활동에 관련된 계측의 인에이블을 제어하는 단계를 포함하는 방법을 수행할 수 있으며,
    상기 하나의 게스트 운영체제에 의한 제어 단계는 상기 다른 게스트 운영체제에 의한 제어 단계와는 독립적이고, 계측은 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제에 대해 동시에 인에이블되거나, 또는 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제 중 하나에 대해서만 인에이블되고 상기 하나의 게스트 운영체제 및 상기 다른 게스트 운영체제 중 나머지에 대해서는 인에이블되지 않는 것인, 컴퓨터 시스템.
KR1020090064144A 2008-10-02 2009-07-14 가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 컴퓨터 프로그램 제품, 컴퓨터-구현된 방법 및 컴퓨터 시스템 KR101107363B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/244,496 2008-10-02
US12/244,496 US9449314B2 (en) 2008-10-02 2008-10-02 Virtualization of a central processing unit measurement facility

Publications (2)

Publication Number Publication Date
KR20100038036A KR20100038036A (ko) 2010-04-12
KR101107363B1 true KR101107363B1 (ko) 2012-01-19

Family

ID=42076882

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090064144A KR101107363B1 (ko) 2008-10-02 2009-07-14 가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 컴퓨터 프로그램 제품, 컴퓨터-구현된 방법 및 컴퓨터 시스템

Country Status (4)

Country Link
US (3) US9449314B2 (ko)
JP (2) JP5547436B2 (ko)
KR (1) KR101107363B1 (ko)
TW (1) TWI453582B (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9449314B2 (en) * 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US7827321B2 (en) 2008-10-02 2010-11-02 International Business Machines Corporation Central processing unit measurement facility
US8701120B2 (en) 2009-02-27 2014-04-15 International Business Machines Corporation Virtualization of storage buffers used by asynchronous processes
US8850450B2 (en) * 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9104508B2 (en) * 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US9454462B2 (en) 2012-03-16 2016-09-27 International Business Machines Corporation Run-time instrumentation monitoring for processor characteristic changes
US9367316B2 (en) 2012-03-16 2016-06-14 International Business Machines Corporation Run-time instrumentation indirect sampling by instruction operation code
US9250902B2 (en) 2012-03-16 2016-02-02 International Business Machines Corporation Determining the status of run-time-instrumentation controls
US9280447B2 (en) 2012-03-16 2016-03-08 International Business Machines Corporation Modifying run-time-instrumentation controls from a lesser-privileged state
US9405541B2 (en) 2012-03-16 2016-08-02 International Business Machines Corporation Run-time instrumentation indirect sampling by address
US9158660B2 (en) 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
US9465716B2 (en) 2012-03-16 2016-10-11 International Business Machines Corporation Run-time instrumentation directed sampling
US9430238B2 (en) 2012-03-16 2016-08-30 International Business Machines Corporation Run-time-instrumentation controls emit instruction
US9471315B2 (en) 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
US9411591B2 (en) 2012-03-16 2016-08-09 International Business Machines Corporation Run-time instrumentation sampling in transactional-execution mode
US9483268B2 (en) 2012-03-16 2016-11-01 International Business Machines Corporation Hardware based run-time instrumentation facility for managed run-times
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US10437602B2 (en) * 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
GB2551747B (en) * 2016-06-29 2019-04-10 Advanced Risc Mach Ltd Diagnostic data capture
US10282327B2 (en) * 2017-01-19 2019-05-07 International Business Machines Corporation Test pending external interruption instruction
US11422851B2 (en) * 2019-04-22 2022-08-23 EMC IP Holding Company LLC Cloning running computer systems having logical partitions in a physical computing system enclosure

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH041834A (ja) * 1990-04-19 1992-01-07 Nec Corp 入出力装置のエラー情報収集方法およびその装置
KR20050016917A (ko) * 2002-06-29 2005-02-21 인텔 코오퍼레이션 가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과연관된 장애의 취급
KR20060097597A (ko) * 2005-03-11 2006-09-14 마이크로소프트 코포레이션 가상 기계 환경에서의 멀티-레벨 인터셉트 처리를 위한시스템 및 방법
US20070214380A1 (en) * 2006-03-08 2007-09-13 Rothman Michael A Monitoring writes to cache as part of system error handling

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8023A (en) * 1851-04-08 Fastening down table-leaves
JPS631834A (ja) 1986-06-19 1988-01-06 Showa Electric Wire & Cable Co Ltd 制振定盤
US4843541A (en) * 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
US6286025B1 (en) * 1994-12-09 2001-09-04 International Business Machines Corporation Method and system of process identification by user defined process variables
US5621912A (en) * 1994-12-29 1997-04-15 International Business Machines Corporation Method and apparatus for enabling monitoring of guests and native operating systems
US6023759A (en) * 1997-09-30 2000-02-08 Intel Corporation System for observing internal processor events utilizing a pipeline data path to pipeline internally generated signals representative of the event
US5809450A (en) * 1997-11-26 1998-09-15 Digital Equipment Corporation Method for estimating statistics of properties of instructions processed by a processor pipeline
US6119075A (en) * 1997-11-26 2000-09-12 Digital Equipment Corporation Method for estimating statistics of properties of interactions processed by a processor pipeline
JP2000020349A (ja) 1998-07-06 2000-01-21 Toshiba Corp プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体
US6195730B1 (en) * 1998-07-24 2001-02-27 Storage Technology Corporation Computer system with storage device mapping input/output processor
US6954923B1 (en) * 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6976083B1 (en) * 1999-02-19 2005-12-13 International Business Machines Corporation Apparatus for providing direct data processing access using a queued direct input-output device
US6345324B1 (en) * 1999-02-19 2002-02-05 International Business Machines Corporation Apparatus for transferring data using an interface element and a queued direct input-output device
US6347341B1 (en) * 1999-02-22 2002-02-12 International Business Machines Corporation Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device
US6574727B1 (en) * 1999-11-04 2003-06-03 International Business Machines Corporation Method and apparatus for instruction sampling for performance monitoring and debug
US6539502B1 (en) * 1999-11-08 2003-03-25 International Business Machines Corporation Method and apparatus for identifying instructions for performance monitoring in a microprocessor
US7412492B1 (en) * 2001-09-12 2008-08-12 Vmware, Inc. Proportional share resource allocation with reduction of unproductive resource consumption
US6983303B2 (en) * 2002-01-31 2006-01-03 Hewlett-Packard Development Company, Lp. Storage aggregator for enhancing virtualization in data storage networks
US7502917B2 (en) * 2002-12-05 2009-03-10 International Business Machines Corporation High speed memory cloning facility via a lockless multiprocessor mechanism
JP4001834B2 (ja) 2003-04-01 2007-10-31 Hoya株式会社 グレートーンマスクの欠陥検査方法及びグレートーンマスクの製造方法
EP1660993B1 (en) * 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US20050223180A1 (en) * 2004-03-31 2005-10-06 Philip Derbeko Accelerating the execution of I/O operations in a storage system
US7447140B2 (en) * 2004-07-30 2008-11-04 Seagate Technology Llc Ferroelectric probe storage apparatus
JP2006113767A (ja) * 2004-10-14 2006-04-27 Sony Corp 情報処理システム、および、情報処理方法、並びに、プログラム
US7716638B2 (en) * 2005-03-04 2010-05-11 Microsoft Corporation Methods for describing processor features
US7478219B2 (en) * 2005-04-14 2009-01-13 International Business Machines Corporation Retrieving event data for logical partitions
US7353369B1 (en) * 2005-07-13 2008-04-01 Nvidia Corporation System and method for managing divergent threads in a SIMD architecture
US7380049B2 (en) * 2005-09-06 2008-05-27 Intel Corporation Memory protection within a virtual partition
US7620938B2 (en) * 2005-10-31 2009-11-17 Microsoft Corporation Compressed program recording
US7359759B2 (en) * 2005-10-31 2008-04-15 Taiwan Semiconductor Manufacturing Company Method and system for virtual metrology in semiconductor manufacturing
JP4814617B2 (ja) * 2005-11-01 2011-11-16 株式会社日立製作所 ストレージシステム
US7478180B1 (en) * 2005-12-14 2009-01-13 Vmware, Inc. Virtualizing a communications channel in which blocks of data are divided into multiple sub-blocks for conveyance
JP4839841B2 (ja) * 2006-01-04 2011-12-21 株式会社日立製作所 スナップショット再起動方法
US7945908B1 (en) * 2006-03-31 2011-05-17 Vmware, Inc. Method and system for improving the accuracy of timing and process accounting within virtual machines
TWI315054B (en) * 2006-05-10 2009-09-21 Nat Cheng Kung Universit Method for evaluating reliance level of a virtual metrology system in product manufacturing
TWI297506B (en) * 2006-06-09 2008-06-01 Powerchip Semiconductor Corp Method and system for virtual metrology prediction for quality control in semiconductor manufacture
US7925862B2 (en) * 2006-06-27 2011-04-12 Freescale Semiconductor, Inc. Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges
US8607009B2 (en) * 2006-07-13 2013-12-10 Microsoft Corporation Concurrent virtual machine snapshots and restore
JP2008027306A (ja) 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
US8607228B2 (en) * 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
US7624240B1 (en) * 2006-10-17 2009-11-24 Vmware, Inc. Separate swap files corresponding to different virtual machines in a host computer system
US7657663B2 (en) * 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
JP2008152594A (ja) * 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
JP4249779B2 (ja) * 2006-12-25 2009-04-08 株式会社東芝 デバイス制御装置
JP4358224B2 (ja) * 2006-12-27 2009-11-04 株式会社東芝 ゲストosスケジューリング方法及び仮想計算機モニタ
JP2008210057A (ja) * 2007-02-23 2008-09-11 Hitachi Ltd 記憶システム及びその管理方法
JP4871174B2 (ja) 2007-03-09 2012-02-08 株式会社日立製作所 仮想計算機システム
JP2008234191A (ja) * 2007-03-19 2008-10-02 Toshiba Corp ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法
JP4980792B2 (ja) * 2007-05-22 2012-07-18 株式会社日立製作所 仮想計算機の性能監視方法及びその方法を用いた装置
US8141053B2 (en) * 2008-01-04 2012-03-20 International Business Machines Corporation Call stack sampling using a virtual machine
US8473946B2 (en) * 2008-07-03 2013-06-25 Vmware, Inc. Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8015343B2 (en) * 2008-08-08 2011-09-06 Amazon Technologies, Inc. Providing executing programs with reliable access to non-local block data storage
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US7827321B2 (en) * 2008-10-02 2010-11-02 International Business Machines Corporation Central processing unit measurement facility

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH041834A (ja) * 1990-04-19 1992-01-07 Nec Corp 入出力装置のエラー情報収集方法およびその装置
KR20050016917A (ko) * 2002-06-29 2005-02-21 인텔 코오퍼레이션 가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과연관된 장애의 취급
KR20060097597A (ko) * 2005-03-11 2006-09-14 마이크로소프트 코포레이션 가상 기계 환경에서의 멀티-레벨 인터셉트 처리를 위한시스템 및 방법
US20070214380A1 (en) * 2006-03-08 2007-09-13 Rothman Michael A Monitoring writes to cache as part of system error handling

Also Published As

Publication number Publication date
KR20100038036A (ko) 2010-04-12
JP5657090B2 (ja) 2015-01-21
US20160342442A1 (en) 2016-11-24
JP2014059909A (ja) 2014-04-03
US20100088771A1 (en) 2010-04-08
US11036611B2 (en) 2021-06-15
TWI453582B (zh) 2014-09-21
US9449314B2 (en) 2016-09-20
US20210263829A1 (en) 2021-08-26
JP5547436B2 (ja) 2014-07-16
JP2010086520A (ja) 2010-04-15
TW201015307A (en) 2010-04-16

Similar Documents

Publication Publication Date Title
KR101107363B1 (ko) 가상 처리 환경에서 데이터 수집을 용이하게 하기 위한 컴퓨터 프로그램 제품, 컴퓨터-구현된 방법 및 컴퓨터 시스템
US11068277B2 (en) Memory allocation techniques at partially-offloaded virtualization managers
EP3479223B1 (en) Secure booting of virtualization managers
US10620877B2 (en) Managing a collection of data
US20190095234A1 (en) Performance variability reduction using an opportunistic hypervisor
US8875114B2 (en) Employing identifiers provided by an operating system of a processing environment to optimize the processing environment
US10613895B2 (en) Virtualization of storage buffers used by asynchronous processes

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141215

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151228

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161228

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171227

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181227

Year of fee payment: 8