KR20190072625A - 타임-슬라이스-계측 퍼실리티 - Google Patents

타임-슬라이스-계측 퍼실리티 Download PDF

Info

Publication number
KR20190072625A
KR20190072625A KR1020197015381A KR20197015381A KR20190072625A KR 20190072625 A KR20190072625 A KR 20190072625A KR 1020197015381 A KR1020197015381 A KR 1020197015381A KR 20197015381 A KR20197015381 A KR 20197015381A KR 20190072625 A KR20190072625 A KR 20190072625A
Authority
KR
South Korea
Prior art keywords
time
slice
execution
interval
processing device
Prior art date
Application number
KR1020197015381A
Other languages
English (en)
Other versions
KR102238191B1 (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 KR20190072625A publication Critical patent/KR20190072625A/ko
Application granted granted Critical
Publication of KR102238191B1 publication Critical patent/KR102238191B1/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/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

타임-슬라이스-계측 퍼실리티
처리 장치의 실행 동안 타임-슬라이스-계측 정보를 수집하기 위한 퍼실리티가 제공된다. 상기 퍼실리티는 처리 장치의 실행 타임-슬라이스 동안 명시된 처리 장치 이벤트의 발생을, 적어도 부분적으로, 카운트 한다. 상기 타임-슬라이스의 제1 실행 구간 및 제2 실행 구간 동안 발생하는 카운트된 이벤트들이 유지된다. 상기 제1 실행 구간은 상기 제2 실행 구간 보다 앞서며, 상기 카운트된 이벤트들은 상기 처리 장치의 성능을 조정하는 것을 용이하게 한다. 일 실시 예에서, 상기 타임 슬라이스는 처리 장치 실행 시간의 인접 구간이고, 상기 명시된 처리 장치 이벤트는 캐시 이벤트를 포함한다. 상기 처리 장치는 다수의 다른 작업 단위들의 처리를 다수의 인접 타임-슬라이스들에 걸쳐서 인터리브 하고, 단일의 타임 슬라이스 동안, 다수의 다른 작업 단위들 중 하나의 작업 단위가 상기 처리 장치에 의해서 처리된다.

Description

타임-슬라이스-계측 퍼실리티
[0001] 본 발명의 하나 또는 그 이상의 실시 예들은, 일반적으로, 컴퓨팅 환경 내에서의 처리에 관한 것으로, 특히 그러한 처리를 개선하는 것에 관한 것이다.
[0002] 컴퓨터 시스템에서, 스케줄러(a scheduler)는 수행될 다양한 작업 단위들(units of work) 중에서 우선순위를 배정함으로써 작업단위들을 컴퓨터 자원들에게 할당하는 것을 관리할 수 있다. 스케줄러는 언제 작업 단위를 디스패치 할 것인지, 어느 컴퓨터 자원(computer resource) 에 할 것인지, 그리고 자원을 점유하기 위해 할당 된 기간을 결정한다. 워크로드 스케줄러는 스케줄러의 제어 하에 머신에서 실행중인 에이전트들(agents)을 추적하는 것을 포함 할 수 있다. 컨트롤러의 데이터베이스들은 실행할 작업의 세부 내용들(details), 스케줄링 명령들 및 자원들과 제한 사항들에 대한 정보를 보유한다. 상기 데이터베이스들은 향후 작업이 언제 실행될지를 결정하는 정보를 제공 할 수 있다. 또한 세부 생산 스케줄(a detailed production schedule)은 프로세스가 완료되고 자원을 사용할 수 있을 때 작업들을 제출하는 것을 허용하는 정보로부터 결정된다.
[0003] 작업 스케줄 소프트웨어(Job scheduling software )는, 할당된 처리 장치의 전체 캐시 구조와 유사한 누적 캐시 풋프린트(a cumulative cache footprint)를 갖지만, 초과하지는 않는, 한 세트의 작업들 또는 작업 단위들을 그룹화 함으로써 워크로드 성능(the workload performance )을 개선할 수 있다.
[0004] 컴퓨팅 환경에서 처리를 용이하게 하기 위한 컴퓨터 프로그램 제품의 제공을 통해 종래 기술의 단점들이 극복되고 부가적인 장점들이 제공된다.  상기 컴퓨터 프로그램 제품은 방법을 수행하기 위해 처리 회로에 의해 판독 가능하고 처리 회로에 의한 실행을 위한 명령들을 저장하는 저장 매체를 포함한다. 상기 방법은, 예를 들어, 실행 동안 처리 장치(a processing unit )를 위한 타임-슬라이스-계측 정보(time-slice-instrumentation information)를 수집하는 단계(collecting)를 포함하고, 상기 수집하는 단계는: 상기 처리 단위 실행의 타임-슬라이스 동안 명시된 처리 단위 이벤트의 발생을, 적어도 부분적으로, 카운트하는 단계(counting); 및 상기 타임-슬라이스 내 제1 실행 구간과 상기 타임-슬라이스 내 제2 실행 구간 동안 발생하는 카운트된 처리 단위 이벤트들을 유지하는 단계(retaining)를 포함한다. 상기 제1실행 구간은 상기 제2 실행 구간보다 타임-슬라이스에서 앞서고, 그리고 상기 카운트된 처리 단위 이벤트들은 상기 처리 단위의 성능을 조정하는 것을 용이하게 한다.
[0005] 바람직하게도, 컴퓨팅 환경에서의 처리는, 본 명세서에서 타임-슬라이스-계측(time-slice-instrumentation)이라 칭하는, 프로세서 또는 처리 장치 계측을 제공함에 의해서 향상된다. 타임-슬라이스-계측은(작업 스케줄 소프트웨어를 위한) 하나의 퍼실리티(a facility)이며, 이는 하나의 작업 단위(a unit of work)를 처리하는 두 개의 별개의 시간 구간들(two distinct periods of time)동안, 다시 말하면, 처리 장치 타임-슬라이스의 두 개의 별개의 실행 구간들(two distinct intervals of execution) 내에서, 처리장치 내에서 발생하는 이벤트들의 측정값들(measurements)을 획득하기 위한 것이다. 측정(또는 카운트)된 명시된 처리 장치 이벤트들은 로컬 캐시 메트릭(local cache metrics)을 포함 할 수 있다. 측정 값들이 기록되는 시간 구간들은 인접 시간(a contiguous time), 다시 말하면, 프로세서가 작업 단위를 처리하는 타임 슬라이스, 내에서 초기 및 후기 구간들(early and late intervals )에 대응한다. 카운트 된 처리 장치 이벤트들은 유지되며(retained), 예를 들어, 후속 작업 디스패치 결정시 고려할 수 있도록 작업부하 스케줄러에 의해 분석 될 수 있다. 바람직하게도, 상기 퍼실리티는 (하나 또는 그 이상의 실시 예들에서) 처리 장치 캐시 미스들을 감소시키기 위한 메카니즘을 제공하고, 따라서 개별 작업 단위들에 대한 성능뿐만 아니라 일반적으로 작업부하(workload)에 대한 성능을 향상시킨다.
[0006] 본 명세서에서 제공되는 상기 퍼실리티는 신규의 계측 카운터들, 신규의 카운터 로그들, 카운터 데이터 수집을 초기화 하기 위한 신규의 명령, 및 카운터 로그들을 읽고 저장하기 위한 신규의 명령을 도입한다. 본 명세서에 개시된 상기 카운터들 및 로그들에 대한 액세스는 감독자 상태의 (in the supervisor state)프로그램들로 제한 될 수 있다.
[0007] 특히, 하나 또는 그 이상의 구현들에서, 상기 타임-슬라이스는 처리 장치 실행 시간의 인접 구간(a contiguous period of time of processing unit execution)일 수 있고, 상기 명시된 처리 장치 이벤트는 캐시 이벤트 이거나 또는 캐시 이벤트(a cache event)를 포함 할 수 있다. 상기 처리 장치는 다수의 다른 작업 단위들의 처리를 다수의 인접 타임 슬라이스에 걸쳐 인터리브 할 수 있으며, 단일 타임 슬라이스 동안, 다수의 다른 작업 단위들 중 하나의 작업 구간이 상기 처리 장치에 의해 처리된다.
[0008] 하나 또는 그 이상의 실시 예들에서, 제1 실행 구간은 타임-슬라이스 내에서 초기 실행 구간(an initial interval of execution)을 포함하고, 제2 실행 구간은 타임-슬라이스 내에서 가장 최근에 완료된 실행 구간(a most-recently completed interval of execution)을 포함한다. 상기 제1 실행 구간과 상기 제2 실행 구간은 지속시간이 동일(equal duration)할 수 있다. 또한, 하나 또는 그 이상의 실시 예들에서, 상기 제2 실행 구간은 상기 타임-슬라이스 내에서 최후 실행 구간(a last interval of execution)을 포함할 수 있다.
[0009] 하나 또는 그 이상의 구현들에서, 카운트하는 단계는 상기 처리 장치에 로컬인(local) 타임-슬라이스-계측 카운터들(time-slice-instrumentation counters)을 사용하는 것과 처리 장치의 실행 타임-슬라이스 동안 명시된 처리 장치 이벤트의 발생을 카운트 하는 것을 수행하는 것을 포함한다.일 실시 예에서, 상기 명시된 처리 장치 이벤트는 캐시 미스 및 캐시 히트(a cache miss and a cache hit)로 구성되는 그룹으로부터 선택된 캐시 이벤트(a cache event)를 포함할 수 있다.
[0010] 예로서, 하나 또는 그 이상의 실시 예들에서 수집하는 단계는 타임-슬라이스-계측 온(a time-slice-instrumentation on: TSION) 명령을 실행하는 것에 의해서 시작 될 수 있고, 유지하는 단계는 스토어-타임-슬라이스-계측 카운터(a store time-slice-instrumentation counters: STSIC) 명령을 실행하는 것에 의해서 시작 될 수 있다.
[0011] 다른 실시 예에서, 컴퓨팅 환경 내에서 처리를 용이하게 하기 위한 컴퓨터 시스템이 제공된다. 상기 컴퓨터 시스템은 메모리, 및 상기 메모리와 통신하게 결합된 프로세서를 포함하고, 상기 컴퓨터 시스템은 방법을 수행하도록 구성된다. 상기 방법은 실행 동안 처리 장치를 위해 타임-슬라이스-계측 정보(time-slice-instrumentation information)를 수집하는 단계(collecting)를 포함한다. 상기 수집하는 단계는: 상기 처리 장치의 실행 타임-슬라이스 동안(during a time-slice of the processing unit execution) 명시된 처리 장치 이벤트의 발생을, 적어도 부분적으로, 카운트 하는 단계(counting); 및 상기 타임-슬라이스 내 제1 실행 구간(a first interval of execution) 및 상기 타임-슬라이스 내 제2 실행 구간(a second interval of execution) 동안 발생하는 카운트된 처리 장치 이벤트들을 유지하는 단계(retaining)를 포함한다. 상기 제1 실행 구간은 상기 타임 슬라이스 내에서 상기 제2 실행 구간 보다 앞서며(earlier), 상기 카운트된 처리 장치 이벤트들은 상기 처리 장치의 성능을 조정하는 것(adjusting)을 용이하게 한다.
[0012] 또 다른 실시 예에서, 컴퓨팅 환경 내에서 처리를 용이하게 하는 컴퓨터 구현 방법(a computer-implemented method)이 제공된다. 상기 컴퓨터 구현 방법은, 예를 들어, 실행 동안 처리 장치를 위해 타임-슬라이스-계측 정보(time-slice-instrumentation information)를 수집하는 단계(collecting)를 포함한다. 상기 수집하는 단계는: 상기 처리 장치의 실행 타임-슬라이스 동안(during a time-slice of the processing unit execution) 명시된 처리 장치 이벤트의 발생을, 적어도 부분적으로, 카운트 하는 단계(counting); 및 상기 타임-슬라이스 내에서 제1 실행 구간(a first interval of execution) 및 상기 타임-슬라이스 내에서 제2 실행 구간(a second interval of execution)동안 발생하는 카운트된 처리 장치 이벤트들을 유지하는 단계(retaining)를 포함한다. 상기 제1 실행 구간은 상기 타임 슬라이스 내에서 상기 제2 실행 구간 보다 앞서며(earlier), 상기 카운트된 처리 장치 이벤트들은 상기 처리 장치의 성능을 조정하는 것(adjusting)을 용이하게 한다.
[0013] 추가적인 특징들 및 장점들은 본 명세서에 기술 된 기술을 통해 실현된다. 다른 실시 예들도 본 명세서에 상세히 설명되고 청구범위에 기재된다.
[0014] 본 발명의 하나 또는 그 이상의 실시 예들이 본 명세서에 특별하게 설명되고 청구범위의 청구항들에서 예들로서 명확하게 청구된다. 본 발명의 하나 또는 그 이상의 실시 예들의 전술한 목적, 특징들 및 장점들은 첨부 된 도면들과 함께 설명하는 다음의 상세한 설명으로부터 명백하다.
도 1a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 일례를 도시한다;
도 1b는, 본 발명의 한 실시 예에 따라, 도 1a의 처리 장치의 추가적인 세부 사항들을 도시한다;
도 2a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다;
도 2b는도2a의 메모리의 추가적인 상세 사항들을 도시한다;
도 3 은, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 타임-슬라이스-계측 퍼실리티를 이용하여 수행된 처리의 일 실시 예를 도시한다;
도 4a는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 타임-슬라이스-계측 온(a Time-Slice-Instrumentation ON : TSION)명령의 일 예를 도시한다;
도 4b는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 타임-슬라이스-계측 카운터(a Store Time-Slice-Instrumentation Counters: STSIC)명령의 일 예를 도시한다;
도 4c는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 타임-슬라이스-계측 카운터(STSIC)명령에 의해서 추출된 측정 값들을 저장하는 데이터 구조의 일 실시 예를 도시한다;
도 5a는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 처리 장치에 의해서 실행되고 타임-슬라이스-계측 모니터링을 받을 작업부하의 일 예를 도시한다;
도 5b는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 도 5a의 데이터 구조에서 식별된 각 작업 단위를 위한 각각의 타임-슬라이스 내에서 제1 및 최후 실행 구간들 동안의 캐시 메트릭의 예시적 측정 값들을 도시한다;
도 5c는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 타임-슬라이스-계측 측정값들이 평가된 후 수정된 실행 스케줄의 일 예를, 그리고 도 5a의 작업부하의 하나 또는 그 이상의 작업 단위들을 위한 개선된 캐시 메트릭을 보여주는 일 예를 도시한다;
도 6a-6b는, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 타임-슬라이스-계측 처리의 일 예를 도시한다;
도 7은 클라우드 컴퓨팅 환경의 일 실시 예를 도시한다; 그리고
도 8은 추상화 모델 계층(abstraction model layers)의 일 예를 도시한다
[0015] 개선 된 컴퓨팅 환경 성능은, 본 명세서에서 타임-슬라이스-계측(Time-Slice-Instrumentation: TSI)라 불리는, 컴퓨터 처리 장치 계측에 의해 제공된다. 타임-슬라이스-계측은 작업 스케줄링을 위한 하나의 퍼실리티(a facility)(예를 들어, 작업 스케줄 소프트웨어)를 제공하며, 이는, 중앙 처리 장치(CPU)와 같은, 처리 장치(a processing unit: PU)가 각각의 작업 단위(a respective unit of work)를 처리하는 동안, 하나의 타임-슬라이스 내의 두 개의 별개의 실행 구간들(two distinct intervals of time) 동안, 처리장치 내에서 발생하는 이벤트들의 측정값들 (measurements)을 획득하기 위한 것이다. 상기 처리 장치 이벤트들은 로컬 캐시 메트릭(local cache metrics)을 포함 할 수 있다. 본 발명의 하나 또는 그 이상의 실시 예들에서, 측정 값들이 기록되는 시간 간격들은 PU처리의 타임-슬라이스(즉, 인접하는 하나의 시간 단위(a contiguous unit of time)) 내 초기 및 후기 간격들(early and late intervals)에 대응한다. 획득된 상기 측정값들은 하나의 운영 체제 컴포넨트로서 제공된 작업부하 스케줄러에 의해 분석 될 수 있고, 후속 작업 디스패치 결정들 동안 고려될 수 있다. 최종 혜택은 감소된 처리 장치 캐시 미스들이 될 수 있고, 따라서, 개별 작업 단위들에 대해서뿐만 아니라, 전체로서 작업부하에 대한 개선된 성능일 수 있다.
[0016] 본 명세서에 개시된 타임-슬라이스-계측 퍼실리티는, 예를 들어, 프로세서 실행의 타임-슬라이스 내에서 분리된 실행 간격들 동안 캐시 구조 이벤트들을 측정 할 수 있는 기능을 운영 체제에 제공한다. 모니터 되는 캐시 이벤트들은 머신에 따라 달라질 수 있으며 캐시 미스들, 캐시 히트들, MRU 등과 같은, 공통 캐시-관련 성능 메트릭을 포함 할 수 있다. 새로운 계측을 수집하는 두 개의 실행 시간 구간들은, 예를 들어, 동일한 지속 시간을 가지며, 일 실시 예에서, 소프트웨어에 의해 하드웨어에 식별 될 수 있다. 하나 또는 그 이상의 구현들에서, 제1실행 구간은, 캐시가 "콜드(cold)"일 때, 하나의 작업 단위의 디스패치 된 타임 슬라이스의 시작을 커버할 수 있고, 제 2 실행 구간은, 캐시가 "웜(warm)"일 때, 이 작업 단위의 디스패치 된 타임 슬라이스의 끝을 커버 할 수 있다. 카운트 된 처리 장치 이벤트들의 유지 된 결과들은 타임 슬라이스에 대해 비교 될 수 있고, 적절하게 후속 작업부하 디스패치 그룹들을 수정하는 데 사용 될 수 있다. 여기에 개시된 타임-슬라이스-계측 퍼실리티는 처리 장치와 관련하여 독립적인 퍼실리티로서 구현 될 수도 있다. 아래에 추가로 설명하는 바와 같이, 새로운 계측 카운터들, 새로운 카운터 로그들, 및 새로운 명령들이 새로운 카운터 데이터 수집을 시작하고, 새로운 카운터 로그를 읽고 저장하기 위해 채용될 수 있다. 새로운 카운터들 및 로그들에 대한 액세스는 감독자 상태의 프로그램으로 제한 될 수 있다.
[0017] 더욱 상세하게는, 본 명세서에 개시된 타임-슬라이스-계측 퍼실리티는, 설치 될 때, 예를 들어, 공동 타임-슬라이스(a common time-slice) 내에서 두 개의 프로그램 실행 구간들 동안 특정 처리 장치 이벤트들을 측정하기 위한 기능을, 작업부하 스케줄러(a workload scheduler )와 같은 제어 프로그램에 제공한다. 타임-슬라이스-계측(Time-Slice-Instrumentation: TSI) 퍼실리티는 각 처리 장치에 로컬 인 반복 구간 펄스(a repeating interval pulse), 각 처리 장치에 로컬 인 다수의 TSI 카운터들, 각 처리 장치에 로컬 인 모든 TSI 카운터들에 대한 TSI 카운터 로그들의 쌍, 및, 타임-슬라이스-계측 온(Time-Slice-Instrumentation ON: TION)과 스토어 타임-슬라이스-계측 카운터(Store Time-Slice-Instrumentation Counters: STSIC)를 포함하는, 데이터 측정값들을 초기화 하고 추출하는 명령들을 포함한다. 처리 장치 상에서 타임-슬라이스-계측이 활성화되면, 상기 처리 장치는 주기적으로, 캐시 미스들(cache misses) 또는 캐시 히트들(cache hits)과 같은, 다수의 처리 장치 이벤트들을 카운트 하는 것을 다시 시작 한다.
[0018] 처리 장치는, 예를 들어, 타임-슬라이스 내에서 초기 및 가장 최근에 완료된 실행 구간들 동안 발생한 카운트 된 이벤트의 이력을 유지한다. 기록되고 저장된 TSI 카운터 값들은 TSI 카운터 로그들이라고 할 수 있다. 전술 한 바와 같이, 타임-슬라이스-계측은 타임-슬라이스-계측 온 명령을 사용하여 활성화 될 수 있으며, 측정 된 데이터는, 본 명세서에서 설명된, 스토어 타임-슬라이스 계측 카운터 명령을 사용하여 획득될 수 있다.
[0019] 본 발명의 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 일 실시 예가 도 1a를 참조하여 기술된다. 한 예에서, 컴퓨팅 환경은, 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는, z/아키텍처에 기초한다. z/아키텍처의 한 실시 예는, 2015년 3월 발표된 IBM 공보 No. SA22-7832-10의 "z/아키텍처 작동 원리"에 기술되어 있다. Z/ARCHITECTURE는 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다.
[0020] 또 다른 예에서, 컴퓨팅 환경은 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 파우어 아키텍처(Power Architecture)를 기반으로 한다. 파우어 아키텍처의 한 실시 예는 2015 년 4 월 9 일 발표된 인터내셔널 비즈니스 머신즈 코포레이션"Power ISA ™ Version 2.07B "에 설명되어 있고, 이는 전체로서 본 명세서에서 참조로 포함된다. POWER ARCHITECTURE 는 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다.
[0021] 컴퓨팅 환경은 또한 Intel x86 아키텍처를 포함하되, 이에 국한되지 않는 다른 아키텍처를 기반으로 할 수도 있다.  다른 예들도 또한 있다.
[0022] 도 1a에 도시 된 바와 같이, 컴퓨팅 환경(100)은, 예를 들어, 노드(10)을 포함하고, 노드(10)은, 예를 들어, 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성과 동작 가능한, 컴퓨터 시스템/서버(12)를 갖는다. 컴퓨터 시스템/서버(12)와 함께 사용하기에 적합 할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예로는 퍼스널 컴퓨터(PC) 시스템들, 서버 컴퓨터 시스템들, 씬(thin) 클라이언트들, 씩(thick) 클라이언트들, 핸드헬드 또는 랩탑 장치들, 멀티프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그램 가능 가전 제품들, 네트워크 PC들, 미니 컴퓨터 시스템들, 메인 프레임 컴퓨터 시스템들 및, 상기 시스템들 또는 장치들 중 어느 하나를 포함하는 분산 형 클라우드 컴퓨팅 환경 등을 포함하지만 이에 한정되는 것은 아니다.
[0023] 컴퓨터 시스템/서버(12)는, 컴퓨터 시스템에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능 명령들의 일반적인 관점에서 설명 될 수 있다.  일반적으로, 프로그램 모듈들은 특정 작업들(particular tasks)을 수행하거나 특정 추상 데이터 유형들(particular abstract data types)을 구현하는 루틴들, 프로그램들, 객체들, 구성 요소들, 논리들, 데이터 구조들 등을 포함 할 수 있다. 컴퓨터 시스템/서버(12)는 통신 네트워크를 통해 링크 된 원격 처리 장치들에 의해 작업들이 수행되는 분산형 클라우드 컴퓨팅 환경들을 포함하는 많은 컴퓨팅 환경에서 실시될 수 있지만, 이에 국한되지는 않는다. 분산형 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 장치들을 포함하는 로컬 및 원격 컴퓨터 시스템 저장 매체 모두에 위치 할 수 있다.
[0024] 도 1a에 도시 된 바와 같이, 컴퓨터 시스템/서버(12)는 범용 컴퓨팅 장치의 형태로 도시되어 있다. 컴퓨터 시스템/서버(12)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 장치들(16), 시스템 메모리(28), 및 시스템 메모리(28)를 포함하는 다양한 시스템 컴포넌트들을 처리 장치(16)에 연결시키는 버스(18)를 포함 할 수 있지만, 이에 한정되는 것은 아니다.
[0025] 버스(18)는, 메모리 버스 또는 메모리 제어기, 주변장치 버스(a peripheral bus), 가속 그래픽 포트(an accelerated graphics port), 및 다양한 종류의 버스 아키텍처들 중 어느 하나를 사용하는 프로세서 또는 로컬 버스를 포함하는, 여러 유형의 버스 구조들 중 하나 또는 그 이상을 나타낸다. 예를 들어, 이러한 아키텍처들에는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스가 포함되지만, 이에 한정되는 것은 아니다.
[0026] 컴퓨터 시스템/서버(12)는 일반적으로 다양한 컴퓨터 시스템 판독 가능 매체를 포함한다. 이러한 매체는 컴퓨터 시스템/서버(12)에 의해 액세스 가능한 모든 이용 가능한 매체 일 수 있으며, 휘발성(volatile) 및 비 휘발성 매체, 착탈식(removable) 및 비착탈식 매체를 모두 포함한다.
[0027] 시스템 메모리(28)는 RAM(30) 및/또는 캐시 메모리(32)와 같은 휘발성 메모리 형태의 컴퓨터 시스템 판독 가능 매체를 포함 할 수 있다. 컴퓨터 시스템/서버(12)는 다른 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 시스템 저장 매체를 더 포함할 수 있다. 단지 예시로서, 저장 시스템(34)은 비착탈식, 비휘발성 자기 매체(도시되지 않았고 일반적으로 "하드 드라이브"로 지칭 됨)로부터의 판독 및 이들로의 기록을 위해 제공 될 수 있다. 도시되지는 않았지만, 착탈식, 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터의 판독 및 그 자기 디스크에의 기록을 위한 자기 디스크 드라이브, 및, CD-ROM, DVD-ROM 또는 다른 광 매체와 같은, 착탈식, 비휘발성 광 디스크로부터의 판독 또는 그 광 디스크에의 기록을 위한 광 디스크 드라이브가 제공 될 수 있다. 그러한 경우들에서, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(18)에 접속 될 수 있다. 후술하는 바와 같이, 메모리(28)는 본 발명의 실시 예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함 할 수 있다.
[0028] 프로그램 모듈들(42)의 세트(적어도 하나)를 갖는 프로그램/유틸리티 (40)는 메모리(28)에 저장될 수 있으며, 이 들의 예에는 운영 체제뿐만 아니라, 하나 또는 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터가 포함되나, 이에 한정되지는 않는다. 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합의 각각은 네트워킹 환경의 구현을 포함 할 수 있다. 프로그램 모듈들(42)은 일반적으로 본 명세서에서 설명 된 바와 같은 본 발명의 실시 예들의 기능들 및/또는 방법들을 수행한다.
[0029] 컴퓨터 시스템/서버(12)는 또한, 키보드, 포인팅 장치, 디스플레이(24) 등과 같은, 하나 또는 그 이상의 외부 장치들(14)과 통신 할 수 있다. 이들 외부 장치들(14)에는 사용자가 컴퓨터 시스템/서버(12)와 상호 작용할 수 있게 하는 하나 또는 그 이상의 장치들; 및/또는 컴퓨터 시스템/서버(12)가 하나 또는 그 이상의 다른 컴퓨팅 장치와 통신 할 수 있게 하는 모든 장치들(예를 들어, 네트워크 카드, 모뎀 등)이 포함될 수 있다. 통신은 입력/출력(I/O) 인터페이스들(22)을 통해서 일어난다. 또한, 컴퓨터 시스템/서버(12)는 네트워크 어댑터(20)를 통해서 근거리 통신망(LAN), 일반 광역 통신망(WAN) 및/또는 공중 네트워크(예를 들어, 인터넷)과 같은 하나 또는 그 이상의 네트워크들과 통신 할 수 있다. 도시 된 바와 같이, 네트워크 어댑터(20)는 버스(18)를 통해 컴퓨터 시스템/서버(12)의 다른 구성 요소들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넨트들이 컴퓨터 시스템/서버(12)와 함께 사용될 수 있음을 이해하여야 한다. 이들의 예에는 마이크로 코드, 장치 드라이버들, 리던던트 프로세싱 유닛들, 외장형 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이브 저장 장치들이 포함되지만 이에 한정되지는 않는다.
[0030] 예를 들어, 처리 장치(16)는 명령들을 실행하는데 사용되는 복수의 기능 컴포넌트들을 포함한다. 도 1b에 도시 된 바와 같이, 이들 기능 컴포넌트들은, 예를 들어, 실행될 명령들을 페치하기 위한 명령 페치 컴포넌트(120); 페치된 명령들을 디코드 하기 위한 명령 디코드 유닛(122); 디코된 명령들을 실행하기 위한 명령 실행 컴포넌트들(124); 필요한 경우, 명령 실행을 위해 메모리에 액세스하는 메모리 액세스 컴포넌트(126); 및 실행 된 명령들의 결과들을 제공하기 위한 라이트 백 컴포넌트(130)를 포함한다. 이들 컴포넌트들 중 하나 또는 그 이상은, 본 발명의 일 실시 예에 따라, 타임-슬라이스-계측 퍼실리티(a time-slice-instrumentation facility )(136)를 구현하기 위해 사용될 수 있다. 타임-슬라이스-계측 퍼실리티 (136)는, 본 발명의 하나 또는 그 이상의 실시 예들에서, 실행의 반복 구간(a repeating interval of execution)(137), TSI 카운터들(138) 및 TSI 카운터 로그들(139)을 포함하고, 이에 관해서는 이하에서 더 설명한다.
[0031] 처리 장치(16)는 또한, 일 실시 예에서, 하나 또는 그 이상의 기능 컴포넌트들에 의해 사용될 하나 또는 그 이상의 레지스터들(140)을 포함한다.
[0032] 본 발명의 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 다른 실시 예가 도 2a를 참조하여 설명된다. 이 예에서, 컴퓨팅 환경(200)은, 예컨대, 네이티브 중앙 처리 장치(CPU)(202), 메모리(204), 및, 예를 들어, 하나 또는 그 이상의 버스들(208) 및/또는 다른 접속들을 통해, 서로 연결된 하나 또는 그 이상의 입출력 장치들 및/또는 인터페이스들(206)을 포함한다. 예로서, 컴퓨팅 환경(200)은 미국 뉴욕 주 아몽크에 있는 인터내셔널 비즈니스 머신즈 코포레이션이 공급하는 PowerPC 프로세서 또는 pSeries 서버를 포함 할 수 있으며; 미국 캘리포니아 주 팔로 알토에 있는 Hewlett Packard Co.가 공급하는 Intel Itanium II 프로세서들이 장착 된 HP Superdome; 및/또는 인터내셔널 비즈니스 머신즈 코포레이션, Hewlett Packard, Intel, Oracle 또는 기타 회사들이 공급하는 아키텍처들에 기초하는 기타 머신들을 포함할 수 있다. 
[0033] 네이티브 중앙 처리 장치(202)는, 환경 내에서 처리 중에 사용되는 하나 또는 그 이상의 범용 레지스터들 및/또는 하나 또는 그 이상의 특수 목적 레지스터들과 같은 하나 또는 그 이상의 네이티브 레지스터들(210)을 포함한다. 이들 레지스터들은 특정 시점에서 환경 상태를 나타내는 정보를 포함한다.
[0034] 더 나아가서, 네이티브 중앙 처리 장치(202)는 메모리(204)에 저장된 명령들 및 코드를 실행한다. 하나의 특정 예에서, 상기 중앙 처리 장치는 메모리 (204)에 저장된 에뮬레이터 코드(212)를 실행한다. 이 코드는 한 아키텍처에서 구성된 컴퓨팅 환경이 다른 아키텍처를 에뮬레이트 할 수 있게 해 준다. 예를 들어, 에뮬레이터 코드(212)는 z/아키텍처가 아닌 아키텍처들에 기초한 머신들, 예를 들어 PowerPC 프로세서들, pSeries 서버들, HP Superdome 서버들, 또는 다른 서버들이 z/아키텍처를 에뮬레이트 하여 z/아키텍처에 기초하여 개발된 소프트웨어 및 명령들을 실행할 수 있게 해 준다.
[0035] 에뮬레이터 코드(212)에 관한 더 상세한 설명은 도 2b를 참조하여 기술된다. 메모리(204)에 저장된 게스트 명령들(250)은 네이티브 CPU(202)의 아키텍쳐가 아닌 아키텍쳐에서 실행되도록 개발 된 소프트웨어 명령들(예를 들어, 머신 명령들에 관련되는)을 포함한다. 예를 들어, 게스트 명령들(250)은 z/아키텍처 프로세서 상에서 실행하도록 설계되었지만, 예를 들어 Intel Itanium II 프로세서인, 네이티브 CPU(202)상에서 에뮬레이트 될 수 있다. 한 예에서, 에뮬레이터 코드(212)는 메모리(204)로부터 하나 또는 그 이상의 게스트 명령들 (250)을 획득하고 획득 된 명령들에 대한 로컬 버퍼링을 선택적으로 제공하기 위한 명령 페치 루틴(252)을 포함한다. 또한, 획득 된 게스트 명령의 유형을 결정하고 상기 게스트 명령을 하나 또는 그 이상의 대응하는 네이티브 명령들 (256)로 변환하기 위한 명령 변환 루틴(254)을 포함한다. 이 변환은, 예를 들어, 상기 게스트 명령에 의해 수행 될 기능을 식별하는 것과 그 기능을 수행하기 위한 네이티브 명령(들)을 선택하는 것을 포함한다.
[0036] 또한, 에뮬레이터 코드(212)는 네이티브 명령들이 실행되도록 하는 에뮬레이션 제어 루틴(260)을 포함한다. 에뮬레이션 제어 루틴(260)은 네이티브 CPU(202)로 하여금 하나 또는 그 이상의 이전에 획득 된 게스트 명령들을 에뮬레이트하는 네이티브 명령들의 루틴을 실행하게 하고, 그러한 실행의 종료 시에, 다음 게스트 명령 또는 일 군의 게스트 명령들을 획득하는 것을 에뮬레이트 하기 위해 상기 명령 페치 루틴에 제어를 반환(return)하게 할 수 있다. 네이티브 명령들(256)의 실행은 메모리(204)로부터 레지스터로 데이터를 로드하는 단계(loading); 레지스터로부터 데이터를 메모리에 다시 저장하는 단계(storing); 또는 변환 루틴에 의해 결정되는 어떤 유형의 산술 또는 논리 연산을 수행하는 단계(performing)를 포함 할 수 있다.
[0037] 각 루틴은, 예를 들어, 소프트웨어로 구현되고, 상기 소프트웨어는 메모리에 저장되며, 네이티브 중앙 처리 장치(202)에 의해 실행된다. 다른 예에서, 하나 또는 그 이상의 루틴들 또는 연산들은 펌웨어, 하드웨어, 소프트웨어 또는 이들의 조합으로 구현된다. 에뮬레이트된 프로세서의 레지스터들은 상기 네이티브 CPU의 레지스터들(210)을 사용하여 또는 메모리(204) 내의 위치들을 사용하여 에뮬레이트 될 수 있다. 실시 예들에서, 게스트 명령들(250), 네이티브 명령들(256) 및 에뮬레이터 코드(212)는 동일한 메모리 내에 상주 하거나 또는 다른 메모리들 사이에서 분산 될 수 있다.
[0038] 본 명세서에서 사용 된 바와 같이, 펌웨어는, 예를 들어, 프로세서의 마이크로 코드, 밀리 코드 및/또는 매크로 코드를 포함한다. 펌웨어는, 예를 들어, 하드웨어 레벨 명령들(the hardware-level instructions) 및/또는 상위 레벨 머신 코드의 구현에 사용 되는 데이터 구조(data structures used in implementation of higher level machine code)를 포함한다. 일 실시 예에서, 펌웨어는, 예를 들어, 소유권 있는 코드(proprietary code)를 포함하며, 이 소유권 있는 코드는 통상적으로 마이크로 코드로 전달되며, 하부의 하드웨어(the underlying hardware)에 특정된 신뢰 소프트웨어 또는 마이크로 코드를 포함하고 시스템 하드웨어에 대한 운영 체제 액세스를 제어한다.
[0039] 획득되고, 변환되고 실행되는 게스트 명령(250)은, 예를 들어, 타임-슬라이스-계측 온(a Time-Slice-Instrumentation ON: TSION)명령 또는 스토어 타임-슬라이스-계측 카운터( a Store Time-Slice-Instrumentation Counters: STSIC) 명령이며, 이하에서 이를 설명한다. 상기 명령은, 하나의 아키텍처(예: z/Architecture)를 가지고 있고, 메모리에서 페치되어, 다른 아키텍처 (예: PowerPC, pSeries, Intel 등)의 네이티브 명령들(256)의 시퀀스로 변환되어 표현된다. 그런 다음 이들 네이티브 명령들은 실행된다.
[0040] 타임-슬라이스-계측 온((TSION) 명령 및 스토어 타임-슬라이스-계측 카운터(STSIC) 명령의 필드들 및 프로세서(네이티브 또는 에뮬레이트 된 시스템 어느 쪽에서던지) 에 의한 실행을 포함하는, 이들 명령들의 하나 또는 그 이상의 실시 예들에 관한 세부 사항들이 이하에서 설명된다.
[0041] 본 발명의 하나 또는 그 이상의 실시 예 따라, 실행 중인 처리 장치에 대한, 예를 들어, 작업 단위를 실행 중인 중앙 처리 장치의, 타임-슬라이스-계측 정보를 수집하는 단계(collecting)를 위해 타임-슬라이스-계측 퍼실리티가 제공 된다. 상기 수집하는 단계는, 본 명세서에 개시된 타임-슬라이스-계측 온 (TSION) 명령에 의해 시작 될 수 있으며, 상기 처리 장치 실행의 타임-슬라이스 동안 명시된 처리 장치 이벤트의 발생을, 적어도 부분적으로, 카운트 하는 단계(counting); 및 상기 타임-슬라이스 내에서 제1 실행 구간(a first interval of execution) 및 상기 타임-슬라이스 내에서 제2 실행 구간(a second interval of execution) 동안 발생하는 카운트된 처리 장치 이벤트들을 유지하는 단계(retaining)를 포함할 수 있다. 상기 제1 실행 구간은 상기 타임 슬라이스 내에서 상기 제2 실행 구간 보다 앞서며(earlier), 상기 유지되고, 카운트된 처리 장치 이벤트들은 상기 처리 장치의 성능을 조정하는 것(adjusting)을 용이하게 한다. 상기 유지하는 단계는 본 명세서에서 개시된 스토어-타임-슬라이스-계측 카운터(a store time-slice-instrumentation counters: STSIC) 명령을 실행하는 것에 의해서 시작 될 수 있다.
[0042] 하나 또는 그 이상의 실시 예들에서, 타임-슬라이스는 처리 장치 실행 시간의 인접 구간(a contiguous period of time of processing unit execution)이고, 명시된 처리 장치 이벤트는 캐시 이벤트(a cache event)이거나 또는 이를 포함할 수 있다. 예로서, 상기 처리 장치는 다수의 다른 작업 단위들의 처리(processing of multiple different units of work)를 다수의 인접 타임-슬라이스들에 걸쳐서 인터리브(interleave)하도록 스케줄 될 수 있고, 단일의 타임 슬라이스 동안, 다수의 다른 작업 단위들 중 하나의 작업 단위가 상기 처리 장치에 의해서 처리될 수 있다. 하나 또는 그 이상의 구현들에서, 제1 실행 구간은 각각의 타임-슬라이스 내에서 초기 실행 구간(an initial interval of execution)을 포함하고, 제2 실행 구간은 상기 타임-슬라이스 내에서 가장 최근의 실행 구간(a most-recent interval of execution)을 포함한다. 구현에서, 상기 제1 실행 구간과 상기 제2 실행 구간은 동일한 지속시간(equal duration)을 갖는다. 예로서, 상기 제2 실행 구간은 상기 타임-슬라이스 내에서 최후 실행 구간(a last interval of execution)을 포함할 수 있다.
[0043] 하나 이상의 실시 예에서, 상기 카운트 하는 단계는 상기 처리 장치의 실행 타임-슬라이스 동안 상기 명시된 처리 장치 이벤트의 발생을 카운트 하는 것을 수행함에 있어서 상기 처리 장치에 로컬인(local) 타임-슬라이스-계측 카운터들(time-slice-instrumentation counters)을 사용하는 것을 포함할 수 있다. 구체적이 예로서, 상기 명시된 처리 장치 이벤트는, 캐시 미스 및 캐시 히트(a cache miss and a cache hit)와 같은, 데이터 캐시 이벤트(a data cache event)를 포함할 수 있다. 언급 한 바와 같이, 상기 수집하는 단계는 타임-슬라이스-계측 온(a time-slice-instrumentation on: TSION) 명령을 실행하는 것에 의해서 시작 될 수 있고, 상기 카운트하는 단계 및 상기 유지하는 단계 중 적어도 하나는 스토어-타임-슬라이스-계측 카운터(a store time-slice-instrumentation counters: STSIC) 명령을 실행하는 것에 의해서 시작 될 수 있다.
[0044] 타임- 슬라이스-계측 퍼실리티(Time-Slice-Instrumentation: TSI) facility)는 설치 될 때, 타임- 슬라이스 내에서 프로그램의 두 개의 실행 구간 동안(during two intervals of program execution) 발생하는, 특정 처리 장치 이벤트들 (예를 들어, CPU 이벤트들)을 측정하기 위한 기능을, 운영 체제와 같은, 제어 프로그램에 제공한다. 타임-슬라이스-계측(TSI) 퍼실리티는 각 처리 장치에 로컬인 반복 구간 펄스(a repeating interval pulse), 각 처리 장치에 로컬인 다수의 TSI카운터들, 각 처리 장치에 로컬인 TSI카운터들을 위한 TSI카운터 로그들의 쌍을 포함한다. 처리 장치 상에서 타임-슬라이스-계측이 활성화되면, 상기 처리 장치는 주기적으로 다수의 이벤트들을 카운트 하는 것을 다시 시작 한다. 상기 처리 장치는 타임-슬라이스 내에서 초기 및 가장 최근에 완료된 실행 구간 동안 발생한 카운트 된 이벤트들의 이력을 유지할 수 있다. 기록되고 저장된 타임-슬라이스 카운터 값들은 본 명세서에서 TSI 카운터 로그들이라 한다. 언급 된 바와 같이 타임-슬라이스-계측은 타임-슬라이스-계측 온 명령을 사용하여 활성화 될 수 있으며, 측정 된 데이터는 스토어 타임-슬라이스-계측 카운터 명령을 사용하여 획득될 수 있다.
[0045] 하나 또는 그 이상의 구현들에서, 타임-슬라이스-계측 퍼실리티에 의해 제공되는 측정 데이터는 작업 단위의 PU 실행 타임-슬라이스 내에서 두 개의 분리 된 실행 구간들 동안 획득된 성능 관련 특성의 통계적 비교를 위해 사용될 수 있다.
[0046] 도 3은 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 처리의 일 실시 예를 도시한다. 예시 된 바와 같이, 상기 처리는 처리 장치를 위해 타임-슬라이스-계측 정보(예를 들어, 본 명세서에서 설명 한 바와 같은)를 획득하는 단계를 포함할 수 있다(300). 그 다음 상기 타임-슬라이스-계측 정보는, 예를 들어, 운영 시스템 또는 작업 부하 스케줄러 의해서, 예를 들어, 처리 장치에 작업 단위의 할당을 재 스케줄함으로써 처리 장치의 성능을 조정하기 위해 사용될 수 있다(310).
[0047] 도 4a는 타임-슬라이스-계측 온 명령 (400)의 일 예를 도시한다. 도시 된 바와 같이, 상기 명령은 동작 중인 타임-슬라이스-계측을 나타내는 오피코드 필드 (401)를 포함한다.
[0048] 감독자 상태의 타임-슬라이스-계측 온 명령의 실행은 처리 장치에서 타임-슬라이스-계측 데이터 수집을 시작하고, 예를 들어, 다음을 포함 할 수 있다:
Figure pct00001
0들을 포함하도록 TSI 카운터들을 리세트 함.
Figure pct00002
16 진수 FFFFFFFF를 포함하도록 TSI 카운터 로그들을 리세트 함.
Figure pct00003
타임-슬라이스-계측 주기 구간들을 시작함.
Figure pct00004
대응 TSI 카운터에서 명시된 처리 장치 이벤트의 각 발생을 카운트하기 시작함.
[0049] 하나 또는 그 이상의 실시 예들에서, 조건 코드는 변경 없이 유지된다. 
[0050] 제 1구간이 완료된 후, 각각의 TSI 카운터 값은 대응 TSI 카운터 제1구간 로그에 로컬로 기록되고 보존되며, 도 4c에 도시된 일 실시 예에서, TSI 카운터 제 1 구간 로그들(420)은 데이터 구조의 좌측에 위치한다. 나중에, TSI 카운터들은 0들을 포함하도록 리세트 될 수 있으며 TSI 카운터들은 대응 처리 장치 이벤트들을 카운트하는 것을 재개한다. 모든 후속 구간들이 완료된 후에, 각각의 TSI 카운터 값은, 도 4c에 도시 된 바와 같이, 대응TSI 카운터 최후 구간 로그들(421)에 국부적으로 기록되고 보존 될 수 있다. 그 후 TSI 카운터들은 다시 0들을 포함하도록 리세트 되고, TSI 카운터들은 대응 CPU 이벤트들을 카운트 하는 것을 재개한다.
[0051] 상기 TCI 구간 지속시간은 처리 장치들 사이클들의 머신 종속 수(a machine dependent number of processing units cycles) 일 수 있고, 이는, 예를 들어, 도 4c의 데이터 구조에서, 기록된 타임-슬라이스-계측 버전 수(the Time-Slice-Instrumentation Version Number: TSIVN)(422)에 의해 결정될 수 있다. 당업자에 의해 이해되는 바와 같이, 다른 컴퓨팅 머신들은 다른 사이클 수들에서 동작 할 수 있고, 및 / 또는 다른 처리 장치 이벤트들은 TSI 버전 수에 따라 다르게 측정 될 수 있다.
[0052] 하나 또는 그 이상의 구현들에서, 처리 장치 이벤트들을 모니터 하는 다수의 TSI 카운터들은, 예를 들어, 1에서 7까지 변화할 수 있다. 다수의 TSI 카운터들은 머신 종속적일 수 있다. 각 TSI 카운터가 모니터 하는 처리 장치 이벤트도 또한 머신 종속적일 수 있다. 다시 말하면, 타임-슬라이스-계측의 모델 종속 특성은 타임-슬라이스-계측 버전 수(422) (도 4c)에 의해 결정될 수 있다.
[0053] 하나 또는 그 이상의 실시 예들에서, TSI 카운터들은 32 비트 일 수 있다 (일 예로서 만). 각 TSI 카운터는 측정 된 값을 32 비트 제1 구간 로그(420)(도 4c) 및 32 비트 최후 구간 로그(421)에 기록할 수 있고, 모든 TSI카운터의 비트 위치0으로부터의 캐리는 버려진다. 하나 또는 그 이상의 실시 예들에서, TSI 카운터들은 감독자 상태 및 문제 상태의(in supervisor state and problem state) 처리 장치 이벤트들을 카운트 할 수 있다. 일 실시 예에서, 처리 장치의 재시도 및 처리 장치의 리셋 동안, TSI 카운터들은 0으로 리셋 될 수 있고, TSI 카운터 로그들도, 예를 들어, 16진수 FFFFFFFF로 리셋 될 수 있으며, 후속의 타임-슬라이스-계측 온 명령이 성공적으로 완료될 때까지 어떤 타임-슬라이스 카운터도 증가되지(increment) 않는다. 처리 장치에 의해서 인지되는 기타 조건들은 일시적으로 TSI 측정들을 허용하지 않거나 인터럽트 할 수 있으며 이들 조건들은 TSI 카운터 로그를 16진수FFFFFFFF로 리세트 하는 결과를 가져올 수 있다.
[0054] 스토어 타임-슬라이스-계측 카운터(STSIC) 명령의 일 실시 예가 도 4 B에 도시된다. 도시된 바와 같이, 상기 명령은 복수의 필드를 가질 있고, 하나의 필드는 그와 연관된 첨자 번호를 가질 수 있다. 상기 명령 필드와 연관된 첨자 번호는 그 필드가 적용되는 오퍼랜드를 나타낸다. 예를 들어, B2와 연관된 첨자 번호 2는 B2에 명시된 레지스터의 내용들이 제2 오퍼랜드와 연관됨을 나타낸다.
[0055] 예를 들면, 명령(410)은 스토어 타임-슬라이스-계측 연산을 표시하는 오피코드 필드(411), 베이스 필드(B2)(412) 및 변위 필드(D2)(413)을 포함한다. B2(412)는, 하나의 레지스터를 나타낼 수 있고, 이 레지스터의 내용들은, 타임-슬라이스-계측 정보가 저장 될 어드레스를 식별하는 제 2 오퍼랜드 위치를 제공하기 위해 D2 413)에 명시된 값에 더해진다. 하나 혹은 그 이상의 구현들에서, 상기 필드들은 서로 분리되어있을 수도 있고 서로 독립적 일 수도 있다; 그러나, 다른 실시 예들에서는 하나 이상의 필드가 결합 될 수 있다. 또한, 다양한 필드들 및 레지스터들이 기술되었지만, 본 발명의 하나 이상의 실시 예들은 다른, 추가 또는 더 적은 필드들 또는 레지스터들, 또는 다른 크기의 필드들 또는 레지스터들을 사용할 수 있다. 많은 변형들이 가능하다. 예를 들어, 묵시적 레지스터들이 상기 명령의 명확히 명시된 레지스터들 또는 필드들 대신 사용될 수 있다.
[0056] 연산에서, TSI 정보는 제2 오퍼랜드 위치에 배치된다. 일 구현에서, 제 2 오퍼랜드는 길이가 8 개의 더블 워드일 수 있다. 예에서, 조건 코드는 변경되지 않고 유지 될 수 있다. 상기 명령에 관한 자세한 내용은 아래에 설명된다.
[0057] 타임-슬라이스-계측 카운터(STSIC) 명령을, 예를 들어, 감독자 상태에서, 실행하면 TSI 정보를 저장소의 블록(이를 STSIC 저장소 블록 또는 데이터 구조 라고 함)(도 4c에서 예시한 바와 같이)으로서 STSIC 명령의 제2오퍼랜드 위치에 저장한다. TSI정보 및 STSIC저장소 블록은, 예로서만 묘사된, 7개의 카운터(C1?C7) 제1 및 최후 구간 로그들을 갖는 TSI 카운터 제 1 및 최후 구간 로그들(420, 421)의 원하는 수 뿐만 아니라, TSI 버전 수(422)를 포함할 수 있다.
[0058] 특정 머신에서 지지된 상기 다수의TSI카운터들이 7보다 적을 때, TSIVN (422)에 의해서 표시된 바와 같이, 지원되지 TSI 카운터들과 연관된 STSIC 저장소 블록 또는 데이터 구조의 TSI 카운터 제1 및 최후 구간 로그들은, 예를 들어, 16진수 값 FFFFFFFF를 사용하여 저장될 수 있다. 액세스 예외들은 STSIC 저장소 블록의 64바이트에 대해서 인지 될 수 있다.
[0059] STSIC 명령이 제 1 TSI 구간이 완료되기 전에 실행됨에 기초하여, TSI 카운터 제1및 최후 구간 로그들은, 예를 들어, 16진수 값 FFFFFFFF 를 포함 할 수 있다.
[0060] STSIC 명령이 제 2 TSI 구간이 완료되기 전에 실행됨에 기초하여, TSI 카운터 최후 구간 로그들은, 예를 들어, 16진수 값 FFFFFFFF 를 포함 할 수 있다.
[0061] 언급 한 바와 같이, 타임-슬라이스-계측의 모델 종속적 특성들은 타임-슬라이스-계측 버전 수(TSIVN)(422)에 의해 결정될 수 있다. 타임-슬라이스-계측 버전 수(TSIVN)(422)는, 언급 한 바와 같이, 모니터 되는 CPU 이벤트뿐만 아니라, TSI 구간(CPU 사이클들의 수)을 표시할 수 있다.
[0062] 하나 또는 그 이상의 구현들에서, 처리 장치의 타임-슬라이스 내의 다른 실행 구간들 동안 카운트된 처리 장치 이벤트들은, 데이터 캐시 이벤트들과 같은, 캐시 이벤트를 포함 할 수 있다. 예를 들어, 데이터 캐시 미스들 또는 데이터 캐시 히트들이 카운트 될 수 있다. 하나 또는 그 이상의 구현들에서, 카운트 된 처리 장치 이벤트들은 L1 데이터 캐시 미스들, L2 데이터 캐시 미스들, 제1사분위(the first quartile)에서의 L2 데이터 캐시 히트들, 제2사분위에서의 L2 데이터 캐시 히트들, 제3사분위에서의 L2 데이터 캐시 히트들, 제4사분위에서의 L2 데이터 캐시 히트들, 데이터에 대한 L3 공유 캐시 히트들 또는 데이터에 대한 L3 공유 캐시 미스들을 포함할 수 있다.
[0063] 하나 또는 그 이상의 구현들에서 제어 프로그램은 TSI 데이터 수집을 시작하는 것과 잠재적으로 잘못된 해석 결과로 이어질 수 있는 TSI 측정값들을 추출하는 것 사이에서 발생할 수 있는 다양한 인터럽트들을 알고 있을 수 있다. STSIC 명령을 실행하는 프로그램은 지원되는 TSI 카운터 최후 구간 로그를, 예를 들어, 16진 수 값 FFFFFFFF에 대해서 테스트를 함에 의해서, 불완전하거나 또는 인터럽트 된 TSI 측정값, 그러므로 사용할 수 없는 결과를 인지 할 수 있다.
[0064] 또한, TSI 구간 지속시간은, 성능 스케일링의 다양한 수준들에서 다른 주파수들로 실행되는 몇몇 모델들에 걸쳐 보다 일관되게 보이기 위해, 시간의 양에서가 아닌 처리 장치 사이클들의 수로 측정 될 수 있음에 또한 주목해야 한다. 하나 또는 그 이상의 실시 예들에서, TSI 구간 지속시간은 모든 측정된 값을 나타내기 위해 TSI 카운터가 32 비트 이상을 요구하지 않도록 머신 당(per machine) 정의 될 수 있다. 잠재적인 TSI 카운터 오버 플로우들은 머신 구현 을 단순화 하기 위해 표시되지 않을 수 있다.
[0065] 도 5a - 5c는, 본 발명의 하나 또는 이상의 실시 예들에 따라, 타임-슬라이스-계측 퍼실리티가 어떻게 채용될 수 있는지의 일 예를 도시한다. 예로서, 도 5a는 처리 장치 ID A에서 처리를 위해 스케줄 된 작업 ID 1, 2, 3, 4를 갖는 4 개의 작업 단위들을 포함하는 디스패치 큐를 도시한다. 이 예에서, 작업 ID2는 큰 데이터 캐시(Dcache ) 풋 프린트를 소비하기 위한 것임에 주목해야 한다.
[0066] 도 5b는 원래 디스패치 스케줄의 일 예를 도시하는데, 여기서 디스패치 큐가 처리 장치 A의 연속되는 타임-슬라이스들 (510)에서 작업 ID 1, 2, 3, 4를 인터리브하는 예를 도시한다. 이 예에서, "콜드"데이터 캐시 미스 레이트 및 " 웜"데이터 캐시 미스 레이트는 상기 타임-슬라이스-계측 퍼실리티에 의해서 카운트 된다. 카운트 된 (또는 측정 된) 타임-슬라이스-계측 정보는 작업 단위들 (작업 ID 1, 2, 3)과 같은 각 작업 단위에 대한 하나의 타임-슬라이스 또는 디스패치 시간 내에 제1 및 최후 구간들 동안의 모든 처리 장치 캐시 메트릭을 포함 할 수 있다. 도 5b에 묘사된 예의, 확장 된 타임 슬라이스 (510)의 제 1 실행 구간 (511)에서, "콜드"데이터 캐시 미스 레이트는 20 개 중에 1개이고, 한편 타임-슬라이스 (510)의 최후 실행 구간 (512)에서는 50개 마다 1개임을 묘사하는데, 이는 캐시 활용이 제1 실행 구간에서보다 최후 실행 구간에서 더 효율적이라는 것을 의미한다. 특히, 타임-슬라이스의 시작에서, 데이터 캐시가 처리 장치 A의 현재 작업 단위(예를 들어, 작업 ID 1)에 대해 "콜드"인 경우, 20 개의 명령마다 1개의 데이터 캐시 미스가 발생하고, 한편 최후 실행 구간(512)과 같은, 타임-슬라이스의 후반에, 데이터 캐시 미스 레이트는 매 50 개의 명령들 중에서 1개가 발생함을 보여준다.
[0067] 각각의 타임-슬라이스에서 각 작업 단위에 대해서, 그리고 특히, 제1 및 최후 실행 구간(511, 512) 내에서, 명시된 처리 장치 이벤트 (예를 들어, 데이터 캐시 미스 레이트)를 카운트하고 추적함에 의해서, 최종의 타임-슬라이스-계측 정보는, 예를 들어, 도 5c에 도시된, 디스패치 스케줄을 수정하는데 사용될 수 있다. 이 예에서, 작업 단위 ID 1과 ID 2 는 하나의 세트로 그룹화되고, 작업 단위 ID 3과 ID 4 는 하나의 세트로 그룹화되는데, 이는, 예를 들어, 작업부하 관리자 또는 스케줄러에 의해서 그룹화된다. 도 5c에 도시 된 바와 같이, 타임-슬라이스 (510)의 제1 및 최후 실행 구간 (511, 512)에서의 데이터 캐시 미스 레이트들을 카운트함으로써, 측정 된 캐시 메트릭이 처리 장치 A에서 실행하는 작업부하 ID1에 대해 개선하였음을 보여 주는데, "콜드" 데이터 미스 레이트가 이제는 35개의 명령마다 1개이고, "웜"데이터 캐시 레이트는 50 개마다 1개로 유지되기 때문이다. 이 예에서 시간 = 0과 시간 = T 사이의 시간은 각 작업 단위가 실행한 시간의 누적 시간을 나타내고, 이는 도 5b의 원래 디스패치 스케줄과 도 5c의 수정된 디스패치 스케줄을 비교할 때 동일하다.
[0068] 도 6a를 참조하면, 여기에 개시된 타임-슬라이스-계측 퍼실리티는 실행 동안 처리 장치를 위해 타임-슬라이스-계측 정보(time-slice-instrumentation information)를 수집하는 단계(collecting)(600)를 포함하는 처리를 제공한다. 상기 수집하는 단계는: 상기 처리 장치의 실행 타임-슬라이스 동안(during a time-slice of the processing unit execution) 명시된 처리 장치 이벤트의 발생을, 적어도 부분적으로, 카운트 하는 단계(counting); 및 상기 타임-슬라이스 내에서 제1 실행 구간(a first interval of execution) 및 상기 타임-슬라이스 내에서 제2 실행 구간(a second interval of execution) 동안 발생하는 카운트된 처리 장치 이벤트들을 유지하는 단계(retaining)를 포함할 수 있다. 상기 제1 실행 구간은 상기 타임 슬라이스 내에서 상기 제2 실행 구간 보다 앞서며(earlier), 상기 카운트된 처리 장치 이벤트들은 상기 처리 장치의 성능을 조정하는 것(adjusting)을 용이하게 한다.
[0069] 상기 타임 슬라이스는 처리 장치 실행 시간의 인접 구간(a contiguous period of time of processing unit execution)이고, 상기 명시된 처리 장치 이벤트는 캐시 이벤트(a cache event)이거나 또는 이를 포함할 수 있다(605). 상기 처리 장치는 다수의 다른 작업 단위들의 처리(processing of multiple different units of work)를 다수의 인접 타임-슬라이스들에 걸쳐서 인터리브하고 (interleaves), 단일의 타임 슬라이스 동안, 다수의 다른 작업 단위들 중 하나의 작업 단위가 상기 처리 장치에 의해서 처리된다(610).
[0070] 예시로서, 도 6b에 도시 된 바와 같이, 상기 제1 실행 구간은 타임-슬라이스 내에서 초기 실행 구간(an initial interval of execution)을 포함 할 수 있고, 상기 제2 실행 구간은 상기 타임-슬라이스 내에서 가장 최근에 완료된 실행 구간(a most-recently completed interval of execution)을 포함 할 수 있다(615). 본 발명의 하나 또는 그 이상의 구현들에서, 상기 제1 및 상기 제2 실행 구간들은 동일한 지속시간(equal duration)을 가지며, 상기 제2 실행 구간은 상기 타임-슬라이스 내에서 최후 실행 구간(a last interval of execution)을 포함할 수 있다(620). 예시한 바와 같이, 상기 카운트하는 단계는 상기 처리 장치의 실행 타임-슬라이스 동안 상기 명시된 처리 장치 이벤트의 발생을 카운트 하는 것을 수행함에 있어서 상기 처리 장치에 로컬인(local) 타임-슬라이스-계측 카운터들(time-slice-instrumentation counters)을 사용하는 것을 포함할 수 있다(625). 상기 명시된 처리 장치 이벤트는 캐시 미스 및 캐시 히트(a cache miss and a cache hit)로 구성되는 그룹으로부터 선택된 데이터 캐시 이벤트(a data cache event)를 포함할 수 있다(630). 본 발명의 하나 또는 그 이상의 실시 예들에서, 상기 수집하는 단계는 타임-슬라이스-계측 온(a time-slice-instrumentation on: TSION) 명령을 실행하는 것에 의해서 시작 될 수 있고(635), 상기 유지하는 단계는 스토어-타임-슬라이스-계측 카운터(a store time-slice-instrumentation counters: STSIC) 명령을 실행하는 것에 의해서 시작 될 수 있다(640).
[0071] 다양한 실시 예들이 제공되었지만, 청구 범위의 정신을 벗어남이 없이 다양한 변형들이 가능하다. 예를 들어, 상기 명령에 의해서 사용되는 레지스터들 및/또는 필드들에 포함되는 값들은, 다른 실시 예들에서는, 다른 위치들, 예를 들어, 메모리 위치들에 포함될 수 있다. 많은 다른 변형들도 능하다.
[0072] 본 발명의 하나 또는 그 이상의 실시 예들은 클라우드 컴퓨팅과 관련될 수 있다.
[0073] 본 명세서에서 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 그러한 설명들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해 하여야 한다. 오히려, 본 발명의 실시 예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0074] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 리소스들(예를 들어, 네트워크, 네트워크 대역폭, 서버, 처리, 메모리, 저장소, 애플리케이션, 가상 머신, 및 서비스)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0075] 클라우드 컴퓨팅 특성들은 다음과 같다: 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 기능들을 일방적으로 제공(provision)할 수 있다. 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰, 랩탑, 및 PDA)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다. 리소스 풀링(Resource pooling): 제공자의 컴퓨팅 리소스들은 멀티-테넌트 모델(a multi-tenant model)을 이용하여, 각기 다른 물리적 및 가상 리소스들을 요구(demand)에 따라 동적으로 할당 및 재할당하면서, 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 리소스들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다. 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 얼마든 구매할 수 있는 것처럼 보인다. 측정 가능한 서비스(Measured service): 클라우드 시스템은 리소스 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 저장소, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 리소스 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0076] 서비스 모델들(Service Models)은 다음과 같다: 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다. 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 저장소를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다. 인프라스트럭처 서비스(Infrastructure as a Service )(IaaS): 소비자에게 제공되는 서비스는 처리, 저장소, 네트워크, 및 기타 기본 컴퓨팅 리소스들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽)에 대하여 제어할 수 있다.
[0077] 배치 모델들(Deployment Models)은 다음과 같다: 사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다. 커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다. 공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다. 하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 독립체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0078] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호 운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다. 하나의 그러한 노드가 도 1a에 도시한 노드(10)이다.
[0079] 컴퓨팅 노드(10)는 적절한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 본 명세서에서 기술된 본 발명의 실시 예들의 사용 또는 기능의 범위를 한정하려는 의도가 있는 것은 아니다. 여하간, 클라우드 컴퓨팅 노드(10)는 전술한 모든 기능이 구현가능하고 그리고/또는 수행하는 것이 가능하다.
[0080] 이제 도 7을 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(10)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54A), 데스크탑 컴퓨터(54B), 랩탑 컴퓨터(54C), 및/또는 자동차용 컴퓨터 시스템(54N)과 통신할 수 있다. 노드들(10)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 리소스들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 7에 도시된 컴퓨팅 장치들(54A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(10)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 장치와 통신할 수 있다는 것을 이해해야 한다.
[0081] 이제 도 8을 참조하면, 클라우드 컴퓨팅 환경(50) (도 7)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 8에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다: 하드웨어 및 소프트웨어 계층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 저장장치들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다. 가상화 계층(70)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 저장소(72); 가상 사설 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영체제들(74); 및 가상 클라이언트들(75).
[0082] 한 예에서, 관리 계층(80)은 아래에 기술하는 기능들을 제공한다. 리소스 제공(Resource provisioning)(81)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 리소스들 및 기타 리소스들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(82)은 리소스들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 리소스들의 소비에 대한 요금 청구를 제공한다. 한 예에서, 이 리소스들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 리소스들뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(83)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(84)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 리소스 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 계획 및 충족(planning and fulfillment)(85)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 리소스들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0083] 워크로드 계층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및 명령 처리(96).
[0084] 본 발명은 시스템, 방법, 및/또는 통합의 모든 가능한 기술적 세부 수준에서 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 저장 매체를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0085] 상기 컴퓨터 판독 가능 저장 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 장치일 수 있다. 상기 컴퓨터 판독 가능 저장 매체는, 예를 들면, 전자 저장 장치, 자기 저장 장치, 광 저장 장치, 전자기 저장 장치, 반도체 저장 장치, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 저장 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코딩된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 저장 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0086] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 저장 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 저장 장치로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 장치 내의 컴퓨터 판독 가능 저장 매체에 저장하기 위해 전송한다.
[0087] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0088] 본 명세서에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 순서 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들을 기술한다. 순서 예시도들 및/또는 블록도들의 각 블록과 순서 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0089] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 장치들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 저장 매체가 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0090] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 장치 상에서 실행되는 명령들이 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0091] 도면들 내 순서도 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 순서도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의한다.
[0092] 전술한 것에 추가하여, 본 발명의 하나 또는 그 이상의 실시 예들은 고객 환경들의 관리를 공급하는 서비스 제공자에 의해 제공, 공급, 배치, 관리, 서비스 될 수 있다. 예를 들면, 서비스 제공자는 하나 또는 그 이상의 고객들을 위해 본 발명의 하나 또는 그 이상의 실시 예들을 수행하는 컴퓨터 코드 및/또는 컴퓨터 인프라스트럭처의 제작, 유지, 지원 등을 할 수 있다. 그 대가로, 서비스 제공자는, 예를 들어, 가입제(subscription) 및/또는 수수료 약정에 따라 고객으로부터 대금을 수령할 수 있다. 추가적으로 또는 선택적으로, 서비스 제공자는 하나 또는 그 이상의 제3자들에게 광고 콘텐츠를 판매하고 대금을 수령할 수 있다.
[0093] 한 예에서, 본 발명의 하나 또는 그 이상의 실시 예들을 수행하기 위해 하나의 애플리케이션이 배치될 수 있다. 한 예로서, 하나의 애플리케이션의 배치는 본 발명의 하나 또는 그 이상의 실시 예들을 수행하기 위해 동작 가능한 컴퓨터 인프라스트럭처를 제공하는 것을 포함할 수 있다.
[0094] 추가의 예로서, 컴퓨터 판독 가능 코드를 컴퓨팅 시스템으로 통합하는 것을 포함하는 컴퓨팅 인프라스트럭처가 배치될 수 있으며, 그 컴퓨팅 시스템에서 상기 코드는 상기 컴퓨팅 시스템과 결합하여 본 발명의 하나 또는 그 이상의 실시 예들을 수행할 수 있다.
[0095] 추가 예로서, 컴퓨터 판독 가능 코드를 컴퓨터 시스템으로 통합시키는 것을 포함하는 컴퓨팅 인프라스트럭처를 통합하기 위한 프로세스가 제공될 수 있다. 상기 컴퓨터 시스템은 컴퓨터 판독 가능 매체를 포함하고, 상기 컴퓨터 시스템에서 상기 컴퓨터 매체는 본 발명의 하나 또는 그 이상의 실시 예들을 포함한다. 상기 코드는 상기 컴퓨터 시스템과 결합하여 본 발명의 하나 또는 그 이상의 실시 예들을 수행할 수 있다.
[0096] 위에서 다양한 실시 예들이 기술되었지만, 이들은 단지 예시들일 뿐이다. 예를 들면, 다른 아키텍처들의 컴퓨팅 환경들이 본 발명의 하나 또는 그 이상의 실시 예들을 포함하고 사용하는 데 사용될 수 있다. 또한, 다른(different) 명령들, 명령 포맷들, 명령 필드들 및/또는 명령 값들이 사용될 수 있다. 많은 변형들이 가능하다.
[0097] 또한, 다른 유형의 컴퓨팅 환경들도 유익을 얻을 수 있고 사용될 수 있다. 예로서, 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템이 사용될 수 있으며, 이 시스템은 시스템 버스를 통해서 메모리 엘리먼트들에 직접적으로 또는 간접적으로 결합된 적어도 두 개의 프로세서를 포함한다. 상기 메모리 엘리먼트들은, 예를 들어, 프로그램 코드의 실제 실행 동안 사용되는 로컬 메모리, 대용량 저장소(bulk storage), 및 코드가 실행 동안에 대용량 저장소로부터 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 저장(temporary storage)을 제공하는 캐시 메모리를 포함한다.
[0098] 입력/출력 또는 I/O 장치들(키보드, 디스플레이, 포인팅 장치, DASD, 테이프, CD들, DVD들, 썸 드라이브들 및 기타 메모리 매체 등을 포함하나 이에 한정되지는 않음)은 직접 또는 중개(intervening) I/O 제어기들을 통해서 상기 시스템에 결합될 수 있다. 네트워크 어댑터 또한 상기 시스템에 결합되어 상기 데이터 처리 시스템이 중개하는 사설 또는 공공 네트워크를 통해서 기타 데이터 처리 시스템 또는 원격 포인터 또는 저장 장치에 결합되는 것을 가능하게 한다. 모뎀, 케이블 모뎀, 및 이더넷 카드는 이용 가능한 유형의 네트워크 어댑터들의 단지 일부 예이다.
[0099] 본 명세서 내에 사용된 용어들은 단지 본 발명의 특정 실시 예들을 기술할 목적으로 사용된 것이지 한정하려는 의도로 사용된 것은 아니다. 본 명세서에서 사용할 때, 단수 형태는 그 컨텍스트에서 그렇지 않은 것으로 명시되어 있지 않으면, 복수 형태도 또한 포함할 의도로 기술된 것이다. 또한, "포함한다" 및/또는 "포함하는" 이라는 말들은 본 명세서에서 사용될 때, 언급되는 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하는 것은 아니라는 것을 이해할 수 있을 것이다.
[00100] 이하의 청구항들에서, 대응하는 구조들(structures), 재료들(materials), 동작들(acts), 및 모든 수단의 등가물들 또는 단계 플러스 기능 엘리먼트들은, 만일 있다면, 구체적으로 청구되는 다른 청구된 엘리먼트들과 함께 그 기능을 수행하기 위한 구조, 재료, 또는 동작을 포함할 의도가 있다. 본 발명의 하나 또는 그 이상의 실시 예들에 대한 설명은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 형태로 빠짐없이 총 망라하거나 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자라면 많은 수정들 및 변형들이 있을 수 있다는 것을 알 수 있다. 본 발명의 실시 예는 여러 특징들 및 실제 응용을 가장 잘 설명하기 위해 그리고 고려되는 구체적인 용도에 적합하게 여러 수정들을 갖는 다양한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되고 기술되었다.

Claims (20)

  1. 컴퓨팅 환경 내에서 처리를 용이하게 하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은:
         처리 회로에 의해 판독 가능하고, 방법을 수행하기 위해 상기 처리 회로에 의한 실행 명령들을 저장하는 컴퓨터 판독 가능 저장 매체를 포함하고, 상기 방법은: 실행 동안 처리 장치를 위해 타임-슬라이스-계측 정보(time-slice-instrumentation information)를 수집하는 단계(collecting)를 포함하며, 상기 수집하는 단계는:
    상기 처리 장치의 실행 타임-슬라이스 동안(during a time-slice of the processing unit execution) 명시된 처리 장치 이벤트의 발생을, 적어도 부분적으로, 카운트 하는 단계(counting); 및
    타임-슬라이스 내에서 제1 실행 구간(a first interval of execution) 및 상기 타임-슬라이스 내에서 제2 실행 구간(a second interval of execution) 동안 발생하는 카운트된 처리 장치 이벤트들을 유지하는 단계(retaining) - 상기 제1 실행 구간은 상기 타임 슬라이스 내에서 상기 제2 실행 구간 보다 앞서며(earlier), 카운트된 처리 장치 이벤트들은 처리 장치의 성능을 조정하는 것(adjusting)을 용이하게 함- 를 포함하는
    컴퓨터 프로그램 제품.
  2. 제 1 항에 있어서, 상기 타임-슬라이스는 처리 장치 실행 시간의 인접 구간(a contiguous period of time of processing unit execution)이고, 명시된 처리 장치 이벤트는 캐시 이벤트(a cache event)를 포함하는
    컴퓨터 프로그램 제품
  3. 제 2 항에 있어서, 상기 처리 장치는 다수의 다른 작업 단위들의 처리(processing of multiple different units of work)를 다수의 인접 타임-슬라이스들에 걸쳐서 인터리브 하고(interleaves), 단일의 타임 슬라이스 동안, 다수의 다른 작업 단위들 중 하나의 작업 단위가 상기 처리 장치에 의해서 처리되는
    컴퓨터 프로그램 제품.
  4. 제 2 항에 있어서, 상기 제1 실행 구간은 상기 타임-슬라이스 내에서 초기 실행 구간(an initial interval of execution)을 포함하고, 상기 제2 실행 구간은 타임-슬라이스 내에서 가장 최근에 완료된 실행 구간(a most-recently completed interval of execution)을 포함하며, 상기 제1 실행 구간과 상기 제2 실행 구간은 지속시간이 동일한(equal duration)
    컴퓨터 프로그램 제품.
  5. 제 4 항에 있어서, 상기 제2 실행 구간은 상기 타임-슬라이스 내에서 최후 실행 구간(a last interval of execution)을 포함하는
    컴퓨터 프로그램 제품.
  6. 제 1 항에 있어서, 상기 카운트하는 단계는 상기 처리 장치의 실행 타임-슬라이스 동안 상기 명시된 처리 장치 이벤트의 발생을 카운트 하는 것을 수행함에 있어서 상기 처리 장치에 로컬인(local) 타임-슬라이스-계측 카운터들(time-slice-instrumentation counters)을 사용하는 것을 포함하는
    컴퓨터 프로그램 제품.
  7. 제 1 항에 있어서, 상기 명시된 처리 장치 이벤트는 캐시 미스 및 캐시 히트(a cache miss and a cache hit)로 구성되는 그룹으로부터 선택된 데이터 캐시 이벤트(a data cache event)를 포함하는
    컴퓨터 프로그램 제품.
  8. 제 1 항에 있어서, 상기 수집하는 단계는 타임-슬라이스-계측 온(a time-slice-instrumentation on: TSION) 명령을 실행하는 것에 의해서 시작 되는
    컴퓨터 프로그램 제품.
  9. 제 1 항에 있어서, 상기 유지하는 단계는 스토어-타임-슬라이스-계측 카운터(a store time-slice-instrumentation counters: STSIC) 명령을 실행하는 것에 의해서 시작 되는
    컴퓨터 프로그램 제품.
  10. 컴퓨팅 환경 내에서 처리를 용이하게 하기 위한 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은:
    메모리; 및
    상기 메모리와 통신하게 결합된 프로세서를 포함하고, 상기 컴퓨터 시스템은 방법을 수행하도록 구성되며, 상기 방법은:
    실행 동안 처리 장치를 위해 타임-슬라이스-계측 정보(time-slice-instrumentation information)를 수집하는 단계(collecting)를 포함하며,
    상기 수집하는 단계는:
    상기 처리 장치의 실행 타임-슬라이스 동안(during a time-slice of the processing unit execution) 명시된 처리 장치 이벤트의 발생을, 적어도 부분적으로, 카운트 하는 단계(counting); 및
    타임-슬라이스 내에서 제1 실행 구간(a first interval of execution) 및 상기 타임-슬라이스 내에서 제2 실행 구간(a second interval of execution) 동안 발생하는 카운트된 처리 장치 이벤트들을 유지하는 단계(retaining) - 상기 제1 실행 구간은 상기 타임 슬라이스 내에서 상기 제2 실행 구간 보다 앞서며(earlier), 카운트된 처리 장치 이벤트들은 처리 장치의 성능을 조정하는 것(adjusting)을 용이하게 함- 를 포함하는
    컴퓨터 시스템.
  11. 제 10 항에 있어서, 상기 타임 슬라이스는 처리 장치 실행 시간의 인접 구간(a contiguous period of time of processing unit execution)이고, 명시된 처리 장치 이벤트는 캐시 이벤트(a cache event)를 포함하며, 상기 처리 장치는 다수의 다른 작업 단위들의 처리(processing of multiple different units of work)를 다수의 인접 타임-슬라이스들에 걸쳐서 인터리브 하고(interleaves), 단일의 타임 슬라이스 동안, 다수의 다른 작업 단위들 중 하나의 작업 단위가 상기 처리 장치에 의해서 처리되는
    컴퓨터 시스템.
  12. 제 11 항에 있어서, 상기 제1 실행 구간은 상기 타임-슬라이스 내에서 초기 실행 구간(an initial interval of execution)을 포함하고, 상기 제2 실행 구간은 타임-슬라이스 내에서 가장 최근에 완료된 실행 구간(a most-recently completed interval of execution)을 포함하며, 상기 제1 실행 구간과 상기 제2 실행 구간은 지속시간이 동일한(equal duration)
    컴퓨터 시스템.
  13. 제 12 항에 있어서, 상기 제2 실행 구간은 상기 타임-슬라이스 내에서 최후 실행 구간(a last interval of execution)을 포함하는
    컴퓨터 시스템.
  14. 제 10 항에 있어서, 상기 카운트하는 단계는 상기 처리 장치의 실행 타임-슬라이스 동안 상기 명시된 처리 장치 이벤트의 발생을 카운트 하는 것을 수행함에 있어서 상기 처리 장치에 로컬인(local) 타임-슬라이스-계측 카운터들(time-slice-instrumentation counters)을 사용하는 것을 포함하는
    컴퓨터 시스템.
  15. 제 10 항에 있어서, 상기 수집하는 단계는 타임-슬라이스-계측 온(a time-slice-instrumentation on: TSION) 명령을 실행하는 것에 의해서 시작되고, 상기 유지하는 단계는 스토어-타임-슬라이스-계측 카운터(a store time-slice-instrumentation counters: STSIC) 명령을 실행하는 것에 의해서 시작되는
    컴퓨터 시스템.
  16. 컴퓨팅 환경 내에서 처리를 용이하게 하는 컴퓨터 구현 방법(a computer-implemented method)에 있어서, 상기 컴퓨터 구현 방법은: 
    실행 동안 처리 장치를 위해 타임-슬라이스-계측 정보(time-slice-instrumentation information)를 수집하는 단계(collecting)를 포함하며,
    상기 수집하는 단계는:
    상기 처리 장치의 실행 타임-슬라이스 동안(during a time-slice of the processing unit execution) 명시된 처리 장치 이벤트의 발생을, 적어도 부분적으로, 카운트 하는 단계(counting); 및
    타임-슬라이스 내에서 제1 실행 구간(a first interval of execution) 및 상기 타임-슬라이스 내에서 제2 실행 구간(a second interval of execution) 동안 발생하는 카운트된 처리 장치 이벤트들을 유지하는 단계(retaining) - 상기 제1 실행 구간은 상기 타임 슬라이스 내에서 상기 제2 실행 구간 보다 앞서며(earlier), 카운트된 처리 장치 이벤트들은 처리 장치의 성능을 조정하는 것(adjusting)을 용이하게 함- 를 포함하는
    컴퓨터 구현 방법.
  17. 제 16 항에 있어서, 상기 타임-슬라이스는 처리 장치 실행 시간의 인접 구간(a contiguous period of time of processing unit execution)이고, 명시된 처리 장치 이벤트는 캐시 이벤트(a cache event)를 포함하며, 상기 처리 장치는 다수의 다른 작업 단위들의 처리(processing of multiple different units of work)를 다수의 인접 타임-슬라이스들에 걸쳐서 인터리브 하고(interleaves), 단일의 타임 슬라이스 동안, 다수의 다른 작업 단위들 중 하나의 작업 단위가 상기 처리 장치에 의해서 처리되는
    컴퓨터 구현 방법.
  18. 제 17 항에 있어서, 상기 제1 실행 구간은 상기 타임-슬라이스 내에서 초기 실행 구간(an initial interval of execution)을 포함하고, 상기 제2 실행 구간은 타임-슬라이스 내에서 가장 최근에 완료된 실행 구간(a most-recently completed interval of execution)을 포함하며, 상기 제1 실행 구간과 상기 제2 실행 구간은 지속시간이 동일한(equal duration)
    컴퓨터 구현 방법.
  19. 제 18 항에 있어서, 상기 제2 실행 구간은 상기 타임-슬라이스 내에서 최후 실행 구간(a last interval of execution)을 포함하는
    컴퓨터 구현 방법.
  20. 제 16 항에 있어서, 상기 수집하는 단계는 타임-슬라이스-계측 온(a time-slice-instrumentation on: TSION) 명령을 실행하는 것에 의해서 시작되고, 상기 유지하는 단계는 스토어-타임-슬라이스-계측 카운터(a store time-slice-instrumentation counters: STSIC) 명령을 실행하는 것에 의해서 시작되는
    컴퓨터 구현 방법.
KR1020197015381A 2017-01-10 2017-12-15 타임-슬라이스-계측 퍼실리티 KR102238191B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/402,412 2017-01-10
US15/402,412 US10303575B2 (en) 2017-01-10 2017-01-10 Time-slice-instrumentation facility
PCT/EP2017/083139 WO2018130375A1 (en) 2017-01-10 2017-12-15 Time-slice-instrumentation facility

Publications (2)

Publication Number Publication Date
KR20190072625A true KR20190072625A (ko) 2019-06-25
KR102238191B1 KR102238191B1 (ko) 2021-04-09

Family

ID=60937716

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197015381A KR102238191B1 (ko) 2017-01-10 2017-12-15 타임-슬라이스-계측 퍼실리티

Country Status (13)

Country Link
US (1) US10303575B2 (ko)
EP (1) EP3568762A1 (ko)
JP (1) JP7023283B2 (ko)
KR (1) KR102238191B1 (ko)
CN (1) CN110168503B (ko)
AU (1) AU2017392846B2 (ko)
CA (1) CA3037292A1 (ko)
IL (1) IL265555B (ko)
MX (1) MX2019012412A (ko)
RU (1) RU2727070C1 (ko)
TW (1) TWI663548B (ko)
WO (1) WO2018130375A1 (ko)
ZA (1) ZA201905199B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11165679B2 (en) 2019-05-09 2021-11-02 International Business Machines Corporation Establishing consumed resource to consumer relationships in computer servers using micro-trend technology
US10877866B2 (en) 2019-05-09 2020-12-29 International Business Machines Corporation Diagnosing workload performance problems in computer servers
US11182269B2 (en) 2019-10-01 2021-11-23 International Business Machines Corporation Proactive change verification

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6847905B2 (en) * 2002-02-12 2005-01-25 Tektronix, Inc. Architecture providing increased information display for long acquisitions or constrained memory bandwidth
KR100656353B1 (ko) * 2005-07-12 2006-12-11 한국전자통신연구원 메모리 전력 소모를 줄이는 방법
US20080256542A1 (en) * 2004-09-17 2008-10-16 Kazushi Kurata Processor
US9723529B2 (en) * 2007-01-26 2017-08-01 Wi-Lan Inc. Multiple network access system and method

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4345309A (en) * 1980-01-28 1982-08-17 Digital Equipment Corporation Relating to cached multiprocessor system with pipeline timing
US6584549B2 (en) * 2000-12-29 2003-06-24 Intel Corporation System and method for prefetching data into a cache based on miss distance
JP2003006175A (ja) * 2001-06-26 2003-01-10 Hitachi Ltd プロセス実行時のプログラム動作特性に基づくプロセススケジューリング方法及びこれを用いたプログラム及びデータ処理装置
US7221686B1 (en) 2001-11-30 2007-05-22 Meshnetworks, Inc. System and method for computing the signal propagation time and the clock correction for mobile stations in a wireless network
US20090052608A1 (en) * 2007-08-21 2009-02-26 International Business Machines Corporation Method for dynamically adjusting hardware event counting time-slice windows
US20080025654A1 (en) * 2005-04-11 2008-01-31 Chang-Hsin Kuo Rolling Groove with Combined Curve Profile for Linear Guide Way
JP4088335B1 (ja) 2007-08-10 2008-05-21 ネットクリアスシステムズ株式会社 仮想キュー処理回路およびタスク処理装置
US20090327656A1 (en) * 2008-05-16 2009-12-31 Dan Baum Efficiency-based determination of operational characteristics
US9244732B2 (en) * 2009-08-28 2016-01-26 Vmware, Inc. Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution
US8245234B2 (en) * 2009-08-10 2012-08-14 Avaya Inc. Credit scheduler for ordering the execution of tasks
US8533719B2 (en) 2010-04-05 2013-09-10 Oracle International Corporation Cache-aware thread scheduling in multi-threaded systems
US8381004B2 (en) 2010-05-26 2013-02-19 International Business Machines Corporation Optimizing energy consumption and application performance in a multi-core multi-threaded processor system
US8418184B2 (en) * 2010-09-24 2013-04-09 International Business Machines Corporation Use of constraint-based linear programming to optimize hardware system usage
CN102780555B (zh) 2011-05-13 2017-09-29 中兴通讯股份有限公司 通信系统中的时钟同步方法及装置
DE112011105911T5 (de) 2011-12-01 2014-09-11 Intel Corporation Server mit Switch-Schaltungen
US9471315B2 (en) * 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
US9311149B2 (en) 2012-12-21 2016-04-12 International Business Machines Corporation Processor provisioning by a middleware processing system
KR101730781B1 (ko) * 2013-12-12 2017-04-26 인텔 코포레이션 경쟁 상태를 검출하는 기법
US9841993B2 (en) * 2013-12-27 2017-12-12 Hitachi, Ltd. Realtime hypervisor with priority interrupt support
US9436608B1 (en) * 2015-02-12 2016-09-06 International Business Machines Corporation Memory nest efficiency with cache demand generation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6847905B2 (en) * 2002-02-12 2005-01-25 Tektronix, Inc. Architecture providing increased information display for long acquisitions or constrained memory bandwidth
US20080256542A1 (en) * 2004-09-17 2008-10-16 Kazushi Kurata Processor
KR100656353B1 (ko) * 2005-07-12 2006-12-11 한국전자통신연구원 메모리 전력 소모를 줄이는 방법
US9723529B2 (en) * 2007-01-26 2017-08-01 Wi-Lan Inc. Multiple network access system and method

Also Published As

Publication number Publication date
WO2018130375A1 (en) 2018-07-19
IL265555B (en) 2021-02-28
EP3568762A1 (en) 2019-11-20
JP7023283B2 (ja) 2022-02-21
JP2020504375A (ja) 2020-02-06
WO2018130375A9 (en) 2018-09-07
US20180196727A1 (en) 2018-07-12
TWI663548B (zh) 2019-06-21
RU2727070C1 (ru) 2020-07-17
MX2019012412A (es) 2022-04-11
ZA201905199B (en) 2021-04-28
AU2017392846A1 (en) 2019-06-06
TW201841114A (zh) 2018-11-16
CN110168503A (zh) 2019-08-23
CN110168503B (zh) 2023-07-07
AU2017392846B2 (en) 2020-09-17
KR102238191B1 (ko) 2021-04-09
IL265555A (en) 2019-05-30
US10303575B2 (en) 2019-05-28
CA3037292A1 (en) 2018-07-19

Similar Documents

Publication Publication Date Title
US8601483B2 (en) Forecasting based service for virtual machine reassignment in computing environment
US20150277987A1 (en) Resource allocation in job scheduling environment
US10671506B2 (en) Evaluating fairness in devices under test
KR102238191B1 (ko) 타임-슬라이스-계측 퍼실리티
US20170075728A1 (en) Configuration management for a shared pool of configurable computing resources
US10680908B2 (en) User interface with expected response times of commands
US20180227201A1 (en) System, method and computer program product for test-driven node selection for a distributed system
US10915250B2 (en) Addressing usage of shared SSD resources in volatile and unpredictable operating environments
US10877759B2 (en) Managing the capture of information in applications with prefix instructions
US10394701B2 (en) Using run time and historical customer profiling and analytics to iteratively design, develop, test, tune, and maintain a customer-like test workload
US10353795B2 (en) Standardizing run-time and historical customer and test environments and workloads comparisons using specific sets of key platform data points
US11586510B2 (en) Dynamic checkpointing in a data processing system
US11169904B2 (en) Automatically initiating tracing of program code based on statistical analysis
US10423330B2 (en) Data collection in a multi-threaded processor
US20240020171A1 (en) Resource and workload scheduling
US20220334933A1 (en) Failover management for batch jobs

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