KR102003872B1 - 컴퓨터 프로세싱을 위한 자원 배정 - Google Patents
컴퓨터 프로세싱을 위한 자원 배정 Download PDFInfo
- Publication number
- KR102003872B1 KR102003872B1 KR1020187020037A KR20187020037A KR102003872B1 KR 102003872 B1 KR102003872 B1 KR 102003872B1 KR 1020187020037 A KR1020187020037 A KR 1020187020037A KR 20187020037 A KR20187020037 A KR 20187020037A KR 102003872 B1 KR102003872 B1 KR 102003872B1
- Authority
- KR
- South Korea
- Prior art keywords
- backlog
- task
- processing resources
- amount
- resources allocated
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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 the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
데이터 스트림을 입력으로서 수신하는 작업(job)이 실행된다. 그 작업에 대해, 제1 시간 기간에 걸친 백로그 증가; 백로그 볼륨; 및 프로세싱 자원들의 양을 조정할지 여부가 반복적으로 결정된다. 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양이 조정된다. 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양이 유지된다.
Description
[0001] 본 출원은 2016년 3월 4일자로 출원된 미국 가출원 일련 번호 제62/303,827호에 대한 우선권의 이익을 주장하며, 이로써 그 가출원의 전체 내용들은 인용에 의해 통합된다.
[0002] 컴퓨터 네트워크는 자원들 및 정보를 공유할 수 있게 하는 통신 채널들에 의해 상호연결된 컴퓨터들과 다른 하드웨어의 집합이다. 통신 프로토콜들은 컴퓨터 네트워크에서 정보를 교환하기 위한 규칙들 및 데이터 포맷들을 정의한다.
[0003] 본 문헌은 병렬 프로세싱 환경에서의 입력의 컴퓨터 프로세싱에 관한 것이다.
[0004] 일 양상에서, 방법은 컴퓨터 시스템에 의해 수행된다. 방법은 다수의 프로세싱 자원들을 포함하는 컴퓨터 시스템에서, 데이터 스트림을 입력으로서 수신하는 작업(job)을 실행하는 단계를 포함하고, 데이터 스트림에서 데이터의 양은 무한적이다. 방법은 작업에 대해: 제1 시간 기간에 걸친 백로그 증가(backlog growth) ― 백로그 증가는 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 증가의 척도(measure)임 ―, 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 척도인 백로그 볼륨, 및 백로그 증가 및 백로그 볼륨에 기반한, 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 결정을 반복적으로 결정하는 단계를 포함한다. 방법은 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계를 포함한다. 방법은 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양을 유지하는 단계를 포함한다.
[0005] 구현들은 다음의 특징들 중 임의의 특징을 포함할 수 있거나, 모든 특징을 포함할 수 있거나, 또는 어떠한 특징도 포함하지 않을 수 있다. 결정의 반복에 대해: 백로그 증가가 제로(zero) 또는 네거티브(negative)인 것으로 결정되고; 백로그 볼륨이 타겟에 일치되는 것으로 결정되며; 방법은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟에 일치되는 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 단계를 포함한다. 결정의 반복에 대해: 백로그 증가가 제로 또는 네거티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만인 것으로 결정되고; 방법은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계를 포함한다. 결정의 반복에 대해: 백로그 증가가 제로 또는 네거티브인 것으로 결정되고; 백로그 볼륨이 타겟 초과인 것으로 결정되며; 방법은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 단계를 포함한다. 결정의 반복에 대해: 백로그 증가가 포지티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만인 것으로 결정되며; 방법은, 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 단계를 포함한다. 결정의 반복에 대해: 백로그 증가가 포지티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되고; 방법은, 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 단계를 포함한다. 백로그 증가는 데이터 사이즈의 척도이다. 데이터 사이즈의 단위들은 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 및 카디널리티(cardinality)로 구성되는 그룹의 적어도 하나이다. 백로그 증가는 프로세싱할 시간의 척도이다. 프로세싱할 시간의 단위들은 마이크로초, 초, 분, 시(hour), 및 날(day)로 구성되는 그룹의 적어도 하나이다. 백로그 볼륨은 데이터 사이즈의 척도이다. 데이터 사이즈의 단위들은 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 및 카디널리티로 구성되는 그룹의 적어도 하나이다. 백로그 볼륨은 프로세싱할 시간의 척도이다. 프로세싱할 시간의 단위들은 마이크로초, 초, 분, 시, 및 날로 구성되는 그룹의 적어도 하나이다. 방법은 작업에 대해 프로세서 활용을 반복적으로 결정하는 단계를 더 포함하고; 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 반복적으로 결정하는 단계는 프로세서 활용에 추가로 기반한다. 결정의 반복에 대해: 프로세서 활용은 값 미만이고; 방법은, 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계를 포함한다. 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계는 작업에 배정되는 자원들의 이산적인 수를 감소시키는 단계를 포함하고, 이산적인 수는 프로세서 활용에 기반한다. 이산적인 수는 컴퓨터 메모리 디스크들의 수이다. 백로그 증가 및 백로그 볼륨에 기반하여, 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 결정하는 단계는 작업에 배정되는 프로세싱 자원들의 양의 변동을 초래하는 결정을 평활화하는(smoothing) 단계를 포함한다. 결정을 평활화하는 단계는 제2 시간 기간 동안 기다리는 단계를 포함한다. 결정을 평활화하는 단계는 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 복수의 결정들을 평균화하는 단계를 포함한다.
[0006] 일 양상에서, 시스템은 컴퓨터 프로그램 명령들을 실행하도록 구성된 하나 또는 그 초과의 프로세서들; 및 하나 또는 그 초과의 프로세서들에 의해서 실행될 때 컴퓨터 디바이스로 하여금 동작들을 수행하게 하는 컴퓨터 프로그램 명령들이 인코딩된 컴퓨터 저장 매체들을 포함한다. 동작들은, 다수의 프로세싱 자원들을 포함하는 컴퓨터 시스템에서, 데이터 스트림을 입력으로서 수신하는 작업을 실행하는 동작을 포함하며, 데이터 스트림에서 데이터의 양은 무한적이다. 동작들은, 작업에 대해: 제1 시간 기간에 걸친 백로그 증가 ― 백로그 증가는 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 증가의 척도임 ―; 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 척도인 백로그 볼륨, 및 백로그 증가 및 백로그 볼륨에 기반한, 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 결정을 반복적으로 결정하는 동작을 포함한다. 동작들은, 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작을 포함한다. 동작들은, 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양을 유지하는 동작을 포함한다.
[0007] 본원에 설명되는 시스템들 및 프로세스들은 다수의 잠재적인 장점들을 제공하기 위해 사용될 수 있다. 자원 배정 레벨들을 결정하기 위한 메트릭으로서 백로그 척도들을 사용함으로써, 과도한 제공 및 불충분한 제공의 결점들이 감소되거나 또는 제거될 수 있다. 과도한 제공은 사용되지 않는 또는 유휴 네트워크 자원들을 유도하여, 비용을 증가시키고, 프로세싱될 수 있는 작업들의 수를 감소시킨다. 작업부하를 이용하여 자원 배정을 단계적으로 낮춤으로써, 사용되지 않는 자원들이 상이한 작업들을 위해 자유로워질 수 있다. 불충분한 제공은 백로그의 증가들을 유도하며, 이는 데이터 손실 및 증가된 레이턴시를 초래할 수 있다. 작업부하를 이용하여 자원 배정을 단계적으로 높임으로써, 입력이 증가될 때 작업은 더 빠르게 프로세싱될 수 있다. 많은 경우들에서, 데이터는 예측가능하지 않게 증가 또는 감소할 수 있는 데이터의 일정한 무한적인 흐름 또는 스트림에서 작업에 입력된다. 이러한 입력에 대한 동적 응답은, 최악-경우 시나리오들에 대한 계획 또는 일괄처리(batch)로서 그것을 처리하는 것 대신 입력에서 큰 스파이크들 또는 딥들에 대한 플렉시블한 응답들을 허용한다.
[0008] 다른 특징들, 양상들 및 잠재적인 장점들은 첨부된 설명 및 도면들로부터 자명할 것이다.
[0009] 도 1은 작업들의 그룹에 대한 자원 배정을 오토튜닝하는 고도의 분산형 컴퓨팅 환경의 블록 다이어그램이다.
[0010] 도 2는 오토튜닝을 이용한 그리고 오토튜닝을 이용하지 않은 자작업들로의 자원 배정을 도시하는 챠트들을 포함한다.
[0011] 도 3은 시간에 걸쳐 신호들을 스트리밍하는 것을 도시하는 챠트들을 포함한다.
[0012] 도 4는 자원 배정을 오토튜닝하기 위한 예시적인 프로세스의 흐름도이다.
[0013] 도 5는 자원 배정이 증가해야 하는지 또는 감소해야 하는지를 결정하기 위한 예시적인 프로세스의 흐름도이다.
[0014] 도 6a, 6b, 및 6c는 태스크들의 셋업, 그들의 사이즈를 다시 정하는 것, 및 그들의 일시 중단을 위한 예시적인 프로세스들의 흐름도들이다.
[0015] 도 7은 컴퓨팅 디바이스의 예를 도시하는 개략도이다.
[0016] 다양한 도면들에서 유사한 참조 부호들은 유사한 엘리먼트들을 표시한다.
[0010] 도 2는 오토튜닝을 이용한 그리고 오토튜닝을 이용하지 않은 자작업들로의 자원 배정을 도시하는 챠트들을 포함한다.
[0011] 도 3은 시간에 걸쳐 신호들을 스트리밍하는 것을 도시하는 챠트들을 포함한다.
[0012] 도 4는 자원 배정을 오토튜닝하기 위한 예시적인 프로세스의 흐름도이다.
[0013] 도 5는 자원 배정이 증가해야 하는지 또는 감소해야 하는지를 결정하기 위한 예시적인 프로세스의 흐름도이다.
[0014] 도 6a, 6b, 및 6c는 태스크들의 셋업, 그들의 사이즈를 다시 정하는 것, 및 그들의 일시 중단을 위한 예시적인 프로세스들의 흐름도들이다.
[0015] 도 7은 컴퓨팅 디바이스의 예를 도시하는 개략도이다.
[0016] 다양한 도면들에서 유사한 참조 부호들은 유사한 엘리먼트들을 표시한다.
[0017] 공유된 병렬 컴퓨팅 환경에서, 컴퓨팅 자원들은 상이한 태스크들, 즉 단일 작업 내의 상이한 병렬 실행 태스크들 및 동시에 프로세싱될 수 있는 상이한 작업들 둘 모두에 배정될 수 있다. 이 자원들이 어떻게 배정되어야 하는지를 결정하기 위해, 작업들에는, 얼마나 많은 입력 백로그가 허가되어야 하는지를 정의하는 백로그 사이즈가 할당될 수 있다. 그런 다음, 자원들은 할당된 백로그 레벨로 또는 그 미만으로 실제 백로그를 유지하기 위해 백로그의 실제 사이즈에 기반하여 동적으로 할당 및 제거된다. 예컨대, 이것은 시간에 걸친 특정 작업의 필요성들과 매칭하는 자원들의 동적 배정을 허가할 수 있다.
[0018] 이러한 동적 배정은 오토스케일링으로 지칭될 수 있다. 이는, 특정 작업에 이용가능한 자원들이 시간에 걸쳐 작업에 공급되는 입력의 프로세싱 요건과 매칭하도록 자동적으로 스케일링되기 때문이다. 입력의 볼륨이 시간에 걸쳐 변하므로, 비프로세싱된 입력의 수용가능하지 않은 누적을 방지하기 위해 더 많은 자원들이 요구된다. 이러한 비프로세싱된 입력은 프로세싱되도록 이용가능하지만 아직 프로세싱되지는 않은 백로그, 본질적으로는 입력을 생성한다.
[0019] 백로그는 데이터 사이즈(예컨대, 바이트들, 메가바이트들), 프로세싱하기 위한 시간(예컨대, 데이터가 이용가능하지만 아직 프로세싱되지는 않은 지속기간, 현재의 백로그 데이터 모두가 현재 또는 고정 양의 자원들을 사용하여 프로세싱될 때까지의 예상되는 시간, 시간에 걸친 데이터의 스루풋의 값), 카운트(예컨대, 파일들 또는 샤드들의 수)로 또는 다른 적합한 디멘션들에 따라 측정될 수 있다.
[0020] 백로그 사이즈는 오토튜닝에 유용한 메트릭 사용인데, 그 이유는 그것이 다른 컴퓨팅 자원들에 또한 영향을 줄 수 있고, 컴퓨터-기반 제품들의 유용성에 영향을 줄 수 있으며, 그리고 인간 사용자들에 의해 용이하게 이해될 수 있는 메트릭이기 때문이다. 예컨대, 컴퓨터 메모리에 저장된 백로그들은 백로그가 증가함에 따라 점점 더 많은 메모리를 필요로 할 것이다. 타겟 사이즈와 동일하게 또는 그보다 작게 백로그를 유지함으로써, 필요한 메모리의 양이 알려지고 계획될 수 있다. 유사하게, 타겟 사이즈 아래로 백로그를 유지함으로써, 서비스 품질이 제공될 수 있다. 소셜 미디어 포스트들을 파싱하는 작업은, 그 포스트들이 공개될 때 만약 그 작업이 포스트들을 파싱하고 있는 경우에만 유용할 수 있다. 비파싱된 포스트들의 백로그를 가령 2분 아래로 유지함으로써, 작업은 자신의 의도된 목적에 유용한 것으로 보장될 수 있다. 인간 사용자에게 이해가능한 디멘션들에서 백로그를 레코딩 및 보고함으로써, 그 사용자들은, 그들의 작업들을 사용할지 및 향후 작업들이 어떻게 이용되고 지불될 수 있는지에 관한 판단들을 행할 수 있다.
[0021] 도 1은 작업들의 그룹에 자원 배정을 오토튜닝하는 고도의 분산형 컴퓨팅 환경(100)의 블록 다이어그램이다. 컴퓨터 네트워크(102), 이를테면 LAN(local area network), WAN(wide area network), 인터넷 또는 이들의 조합은 분산형 프로세싱 시스템(104), 스트리밍 데이터 제공자(106), 및 하나 또는 그 초과의 네트워크 저장 디바이스들(108)을 연결한다. 분산형 프로세싱 시스템(104)은 예컨대 분산형 프로세싱 시스템 관리자(110), 작업자 관리자(112) 및 다수의 데이터 프로세서들(114)을 포함할 수 있다. 네트워크 저장 디바이스들(108)이 분산형 프로세싱 시스템(104)으로부터 분리되어 도시되지만, 이들은 또한 분산형 프로세싱 시스템(104)에 포함될 수 있다.
[0022] 스트리밍 데이터 제공자(106)는 분산형 프로세싱 시스템(104)에 의해 프로세싱하기 위한 데이터를 제공한다. 분산형 프로세싱 시스템(104)은 데이터 레코드들 및 데이터 레코드들에 대한 하나 또는 그 초과의 작업들(111)을 수행하기 위한 명령들을 획득할 수 있다. 예로서, 스트리밍 데이터 제공자(106)는 필터링, 분류 및 다른 분석을 위해 검색 질의 레코드들을 분산형 프로세싱 시스템(104)에 제공할 수 있다. 검색 질의 레코드들은 예컨대 검색 시스템에 제출된 검색 질의들 및 관련된 정보, 이를테면 질의가 수신된 시간을 표시하는 타임스탬프를 포함할 수 있다.
[0023] 스트리밍 데이터 제공자로부터의 데이터는 예컨대 무한하고, 예측가능하지 않은, 고도의 변형, 및/또는 버스티일 수 있다. 무한한 데이터는 유한적인 사이즈를 가지지 않는 연속 업데이팅 데이터 세트인 데이터, 또는 스트리밍 데이터를 포함한다. 연속 업데이팅 데이터 세트의 예는, 생성될 때의 서버 로그들, 또는 프로세싱될 때의 모든 새로운 순서들일 수 있다. 예측가능하지 않은 데이터는 적어도 일부 디멘션에서, 예측하기 어렵거나, 예측될 수 없거나 또는 예측되지 않은 데이터를 포함한다. 예컨대, 사용자가 수신하는 이메일들의 레이트는 예측가능하지 않을 수 있는데, 그 이유는 이것이 고도의 분산형 컴퓨팅 환경(100)이 액세스하지 못하거나 액세스할 수 없는 팩터들에 따를 수 있기 때문이다. 고도의 변형 데이터는 적어도 일 디멘션에서 상당히 변화하는 데이터를 포함한다. 고도의 변형 데이터는 고도로 시즌적이거나 주기적일 수 있다. 소매인 웹사이트로부터의 로그들은 일년 중 시간 및 쇼핑 시준에 따라, 더 빠르거나 더 느리게 업데이트될 수 있다. 버스티 데이터는, 데이터 생성의 인스턴트 레이트가 데이터 생성의 평균 레이트에 거의 근접하지 않는 데이터를 포함한다. 달리 말하면, 버스티 데이터는 종종 높은 데이터 수신 버스트들 및 이후 낮은 데이터 수신 소강 상태들에서 고도의 분산형 컴퓨팅 환경(100)에 의해 수신된다.
[0024] 분산형 프로세싱 시스템 관리자(110)는 예컨대 작업자들(113)에 의해 실행될 작업들(111)을 할당하고, 데이터 프로세서들(114) 중 하나 또는 그 초과를 작업자들(113)에 할당하고, 네트워크 저장 디바이스들(108)의 하나 또는 그 초과의 디스크들을 작업자들(113)에게 할당하고, 오류들 및 백로그들을 식별 및 어드레싱하고, 그리고 일시적인 그리고 장기 저장을 관리함으로써 데이터 프로세싱 시스템(104)에 대한 프로세스 스케줄링 및 자원 관리 서비스들을 수행할 수 있다. 분산형 프로세싱 시스템 관리자(110)로부터 별개로 도시되지만, 작업자 관리자(112)는 일부 구현들에서, 분산형 프로세싱 시스템 관리자(110)의 부분일 수 있다. 작업자 관리자(112)는, 작업부하 백로그들이 생성되는지를 그리고 생성될 때를 결정하기 위해 작업자들(113), 데이터 프로세서들(114), 및 네트워크 저장 디바이스들(108)을 모니터링한다. 작업부하 백로그들이 생성되거나, 또는 자원들(예컨대, 데이터 프로세서들(114) 및/또는 네트워크 저장 디바이스들(108))이 유휴 상태인 동안 작업부하 백로그들이 생성되지 않으면, 작업부하 관리자(112)는 작업들(111)에 할당된 자원들을 오토튜닝할 수 있다.
[0025] 작업들(111)은 스트리밍 데이터 제공자(106)로부터의 데이터를 프로세싱하고 네트워크 저장 디바이스(108)에 저장되거나 또는 다른 목적들에 사용될 수 있는 출력을 생성한다. 일부 구현들에서, 작업들(111)은 다수의 데이터 스트림들로부터 입력 데이터를 수신한다. 예컨대, 작업(11)은 스트리밍 데이터 제공자(106)로부터 소셜 미디어 포스트들의 스트림을 수신하고 상이한(알려지지 않은) 스트리밍 데이터 제공자로부터 기상 데이터의 스트림을 수신할 수 있다. 작업(111)은 입력 데이터의 수신된 스트림들을 프로세싱하기 위해 작업자들(113)에 할당될 수 있다. 각각의 작업자(113)는 예컨대 네트워크 저장 디바이스들(108)의 실제 또는 가상의 하나 또는 그 초과의 디스크들 및 하나 또는 그 초과의 프로세서들(114)을 할당했을 수도 있다. 그런 다음, 특정 작업(111)에 할당된 작업자들(113)은 작업들(111)에 의해 정의된 프로세스들, 및 다른 곳에서 전송될, 네트워크 저장 디바이스들(108)에 저장될 제품 출력에 따라 스트리밍 입력 데이터를 프로세싱할 수 있다.
[0026] 이 예가 작업자들(113)에게 할당되는 자원들(예컨대, 데이터 프로세서들(114) 및 네트워크 저장 디바이스들(108)) 및 작업들(111)에 할당된 작업자들(113)을 설명하지만, 작업들(111)에 자원들을 배정하기 위한 다른 방식들이 가능하다. 예컨대, 데이터 프로세서들(114) 및/또는 네트워크 저장 디바이스들(108)의 디스크들은 분산형 프로세싱 시스템 관리자에 의해 작업들(111)에 직접 할당될 수 있다.
[0027] 일부 경우들에서, 작업들(111)은 프로세스들로 분해될 수 있고, 각각의 프로세스는 하나의 작업자(113)에게 할당된다. 이것은, 예컨대, 작업들(111)이 병렬화가능하면, 예컨대 서로 독립적으로 실행될 수 있는 다수의 활동들로 분해될 수 있으면 유리할 수 있다.
[0028] 도 2는 오토튜닝으로 그리고 오토튜닝 없이 작업들로의 자원 배정을 도시하는 차트들(200, 208 및 216)을 포함한다. 오토튜닝 없이, 자원들은 과도하게 제공되거나 불충분하게 제공될 수 있다. 과도한 제공은 자원들을 소모시킬 수 있지만, 불충분한 제공은 작업부하의 스파이크들 동안 뒤처짐을 초래할 수 있다. 비교에 의해, 작업부하가 증가할 때 제공 작업자들을 오토튜닝하고, 그리고 유사하게 작업부하들이 감소할 때 작업자들의 수를 감소시키는 것은 수요에 따라 자원들을 동적으로 조정할 수 있다.
[0029] 차트(200)에서, 자원들의 과도한 생성이 도시된다. 라인(202)은 이제까지 도달한, 라인(204)에 도시된 작업부하보다 더 큰 일정한 레벨의 제공을 나타낸다. 영역(206)은 배정되었으나 사용되지 않아서 낭비된 자원들을 나타낸다.
[0030] 챠트(208)에서, 자원들의 불충분한 생성이 도시된다. 라인(210)은, 스파이크들 동안, 라인(212)으로 도시된 작업부하보다 작은 제공들의 일정한 레벨을 나타낸다. 영역들(214)은 백로그를 초래하는, 프로세싱될 수 없는 작업부하를 나타낸다.
[0031] 챠트(216)에서, 자원들의 오토튜닝된 배정이 도시된다. 라인(218)은, 라인(220)으로 도시된 작업부하의 변화들에 응답하는 자원 배정의 동적으로 배정된 레벨을 나타낸다. 도시된 바와 같이, 배정된 자원들은 작업부하와 거의 동일하거나 그보다 크다. 또한, 작업부하가 배정된 자원들보다 많아서 증가된 백로그를 생성하는 일부 경우들이 있지만, 자원 배정의 레벨은 신속하게 증가되어 단기간에 더 많은 자원 배정을 초래한다. 따라서, 증가된 백로그는 증가된 자원 배정에 의해 핸들링되고 타겟 레벨로 리턴하도록 프로세싱될 수 있다.
[0032] 예로서, 오토튜닝은 다음과 같은 신호들을 사용하여 그 판단을 내릴 수 있다. CPU 활용: 작업에서 모든 작업자 VM들의 평균 CPU 활용. 스테이지 백로그 증가: 비프로세싱된 데이터의 사이즈. 스테이지 백로그 볼륨: 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 척도. 일부 구현들에서, 백로그 볼륨은 백로그 시간이며, 이는 추가의 입력 도달 없이 현재의 스루풋을 가정하여 백로그를 통해 작업하기 위해 소요될 시간의 척도이다. 다른 신호들도 또한 사용될 수 있다.
[0033] 오토튜닝은 다음과 같은 제약들: 백로그 증가, 백로그 볼륨 및 CPU 활용을 갖는 작업의 모든 스테이지들 사이의 평형을 찾는다. 이러한 제약들의 서브세트는 조정을 위해 사용될 수 있다. 예컨대, 일부 구현들에서, 백로그 증가 및 백로그 볼륨이 사용될 수 있다. 백로그 증가 제약은, 평균적으로 백로그 증가 <= 0이다. 백로그 증가가 포지티브이면, 백로그는 누적되고 작업이 늦어진다. 백로그 볼륨 제약은, 백로그 볼륨 <= 타겟 백로그 볼륨이다. 예컨대, 백로그 볼륨이 백로그 시간일 때, 큰 프로세싱 레이턴시가 존재하지만, 백로그가 증가하지 않는 안정적인 상태를 피하기 위해, 비교적 짧은 백로그 시간이 요구된다. 더 짧은 수용가능한 백로그들이, 더 많은 프로세싱 자원들을 필요로 하면서 더 낮은 레이턴시를 달성한다. 일부 경우들에서, 수용가능한 백로그 레이턴시 시간은 0이거나 0에 근접한다. 일부 경우들에서, 수용가능한 백로그 레이턴시 시간은 더 크다. CPU 제약은 CPU(예컨대, 데이터 프로세서(114)) 활용이 임계치를 초과한다는 것이다. CPU 활용이 낮은 안정적인 상태들은 스트리밍 작업이 더 적은 수의 작업자들을 유지할 가능성이 있을 수 있음을 표시한다. 일부 구현들에서, 백로그 제약들은, 작업에 배정된 자원들의 수를 조정할지 여부를 결정하기 위해 사용되고, 시스템이 자원들의 수를 조정하기로 결정하는 경우 조정될 자원들의 수를 결정하기 위해 CPU 제약이 사용된다.
[0034] 전체 작업 사이즈를 정하는 것은 모든 스테이지들에 대한 백로그 제약들을 충족하기 위해 요구되는 작업자들의 최대 수에 따른다. 백로그 제약들이 모든 스테이지들에 대해 만족되면, CPU 제약은 배정을 얼마나 줄일지를 결정하기 위해 사용된다.
[0035] 일부 구현들에서, 영구 디스크들이 상태를 저장하기 위해 사용된다. 작업은 작업 상태를 저장하는 영구 디스크들의 고정된 번호(일부 경우들에서는 작업을 위한 최대 작업자 수와 같음)를 가질 수 있다. 각각의 디스크는 작업에 의해 프로세싱되는 키 범위에 대응한다. 그 결과로, (범위들 사이에 균등한 데이터 분산을 가정하여) 더 많은 디스크들을 갖는 작업자들이 더 적은 디스크들을 갖는 작업자들보다 더 바쁘다. 일부 경우들에서, 불균일한 디스크 분산들로 작업자들의 수를 스케일링하는 것은, 가장 큰 부하가 걸린 작업자의 레벨에서의 성능을 초래한다. 그 결과로, 오토튜닝은 거의 균일한 디스크 분산을 제공하는 작업자들의 수들을 선택한다(예컨대, 시스템이 작업자당 d개의 디스크들을 타겟으로 하면, 이는 d1개의 디스크들을 갖는 작업자들의 수를 최소화한다).
[0036] 일부 구현들에서, 특정 스테이지에 대한 원하는 작업자들의 수는 현재 입력 레이트(스루풋 + 백로그 증가)를 현재 스루풋으로 나누고 이를 작업자들의 현재 수로 스케일링함으로써 컴퓨팅된다. 예컨대, 스루풋이 1MB/s이고 백로그 증가가 10명의 작업자들에 대해 200K/s라면, 오토튜닝은 1.2 * 10 = 12명의 작업자들을 요청할 것이다. 부가적으로, 가외의 작업자들이 원하는 백로그 시간보다 길기 때문에 부가될 수 있다.
[0037] 일부 구현들에서, 각각의 스테이지는 이 원하는 작업자들의 수를 독립적으로 컴퓨팅한다. 그런 다음, 작업에 대한 풀이 모든 스테이지들에 걸쳐 최대 원하는 작업자들의 수로 스케일링된다.
[0038] 작업에 배정된 자원들의 수를 줄이기 위해, 작업은, 평균 백로그 시간이 임의의 임계치 미만이고, 백로그 증가가 (예컨대, 임계치 거리 내에서, 시간에 대해, 평균적으로) 0인 안정적인 상황에 있을 수 있다. 일부 구현들에서, 시스템은 배정을 얼마나 많이 줄일지를 다음과 같이 결정한다. 균일한 디스크 분산들에 대한 요구를 고려하면, 오토튜닝은 작업이 다음과 같이 작업자들의 다음으로 더 낮은 레벨을 핸들링할 수 있는지 여부의 프록시로서 CPU를 사용한다. 작업자들의 현재 수(w1)는 작업자당 d1(또는 d1-1)개의 디스크들을 갖는다고 가정한다. w2 < w1이고 각각의 작업자가 d2개의 디스크들(또는 d2-1)을 얻기 위해, 작업자당 최소 d2 > d1개의 디스크들 및 최소 w2명의 작업자들이 필요하다는 것이 확인된다. 완벽한 스케일링 및 오버헤드들이 없다고 가정하면, 새로운 작업자들은 현재 CPU 레이트에 w1/w2를 곱한 레이트로 실행할 것이다. 새로운 CPU 레이트가 적절한 임계치(예를 들어, 1.0 미만) 미만이면, 오토튜닝은 배정을 w2로 감소시키려고 시도한다.
[0039] 이전 배정 증가 또는 감소 직후의 신호들은 종종 (예컨대, 빈번한 캐시 미스들 등으로 인해) 정상 상태를 나타내지 않는다. 그 결과로, 오토튜닝은 불필요한 변동을 피하기 위해 판단들의 평활화를 사용하면서, 작업부하의 실제 변화들에 대해 계속해서 반응할 수 있다. 업스케일링 판단들의 평활화는, 1) 작업자가 변경된 후 일정 시간 기간 동안 입력 신호들이 안정화되기를 기다리고, 그리고 2) 윈도우 내의 최소 요청된 작업자 수가 현재 수보다 더 높다고 가정하여, 업스케일링시 시간의 윈도우에 걸쳐 평균 원하는 작업자들을 선택하기 위해 출력 신호들을 평활화함으로써, 일어날 수 있다. 윈도우 전체에 걸쳐 최소치가 올라가기를 기다리는 것은 입력 레이트에서 단기 노이즈에 반응하는 것을 피한다. 예컨대, 작업자들의 현재 수가 10 미만이고 그리고 윈도우가 다음과 같은 원하는 작업자 수들 [11, 12, 10]을 포함한다면, 배정 증가는 (균일한 디스크 분산을 얻기 위해 수를 정규화하기 전에) 작업시킬 작업자들의 수로서 11을 선택할 것이다.
[0040] 다운스케일링의 경우, 일부 구현들에서, 오토튜닝은 소정의 시간 기간에 걸쳐 윈도우의 모든 각각의 값이 작업자들의 현재 수 미만이 될 때까지 기다리고, 그런 다음 (현재, 균일한 디스크 분산들로 항상 작업자들의 다음으로 더 낮은 레벨이 될) 최대치까지 스케일링 다운한다.
[0041] 다음과 같은 신호들은 작업자들에 관련될 수 있으며, 작업자 관리자로부터 수신될 수 있다. Per_stage 신호들. input_size: 프로세싱된 바이트들의 계속 증가하는 합. 스루풋으로서 컴퓨팅된 파생물, 아래 참조. backlog_size: 백로그에서의 바이트들 단위의 현재 사이즈. 백로그 증가로서 컴퓨팅된 파생물, 아래 참조. active_size: 이 스테이지에 의해 현재 프로세싱되고 있는 바이트들. 스테이지의 내재하는 레이턴시를 결정하기 위해 사용됨. system_watermark: 스테이지에 대한 시스템 워터마크. 일부 구현들에서, 1M/s로 증가한다.
[0042] 작업 신호들. active_workers: 활성 작업자들의 현재 수. 스트리밍의 콘텍스트에서, 작업자들은 작업자 프로세스들 및/또는 작업자 스레드들일 수 있다. 일부 구현들에서, 구성 업데이트를 수신한 후 체크인하는 작업자들의 수로서 컴퓨팅됨. 카운트는 작업할 준비가 된 작업자들의 수를 반영할 수 있다(예컨대, 모든 디스크 할당 이후, 스캐닝이 이루어진다). attached_disks: 모든 디스크들이 부착되지 않았는지를 결정하는데 사용되며, 그에 따라 스케일링 판단들은 이루어져서는 안된다. 평균 CPU 활용: 작업에서의 모든 작업자 VM들의 평균 CPU 활용.
[0043] 예컨대, 작업의 각각의 스테이지에 대해, 유도된 신호들. input_size로부터의 (마지막 업데이트 및 지수 평균 이후의) 스루풋. 백로그 사이즈로부터의 (마지막 업데이트 및 지수 평균 이후의) backlog_growth. backlog_time: (backlog_size active_size)/스루풋. 추가의 입력 도달없이(가능하게는, 현재 비행중(in flight)인 것은 무시함(discounting)) 백로그를 완료하는데 걸리게 될 시간. 일부 구현들에서, 시스템이 실시간에 접근함에 따라, 효율성이 떨어질 수 있고, 그에 따라 유효 백로그 시간이 더 길어질 수 있다. min_throughput = throughput + max(0, backlog_growth), 늦어지지 않을 것이 요구되는 최소 스루풋.
[0044] 스테이지마다의 목표는, 다음과 같은 제약들과 평형에 도달하도록 작업자들을 스케일링하는 것이다: 평균적으로 backlog_growth <= 0, 즉 성장하지 않는 안정적인 백로그 길이. backlog_time <= acceptable_backlog_time (구성 파라미터). backlog_time >= max_backlog_to_downscale (구성 파라미터). backlog_time 제약들은, 백로그가 상당히 큰 경우, 안정적인 백로그 상태가 되는 것을 피하기 위해, 레이턴시가 수용가능한 범위 내에 있음을 확인하고자 시도한다. max_backlog_to_downscale 제약은 배정을 감소시키고자 시도하기 위한 신호이다. 시스템이 해당 임계치 미만이라면, 시스템은 자원들을 소모할 가능성이 있고, 더 적은 시스템 작업자들을 필요로 할 수 있다.
[0045] 일부 구현들에서, 업스케일링은, 1) 입력 레이트를 유지하고, 2) 최소 길이로 백로그를 줄이기 위해, 작업자들을 부가하는 것에 기반한다. 일부 경우들에서, 작업자들의 수에 따른 스루풋의 최종 선형 스케일링이 추정될 수 있는데, 즉, 작업자들의 수가 x의 팩터 만큼 증가 또는 감소함에 따라, 스루풋은 x의 팩터 만큼 증가 또는 감소된다. 일부 구현들에서, 요구되는 작업자들의 수는, 작업자 당 스루풋으로 나누어지는 요구되는 스루풋의 최소 레벨인 것으로 계산될 수 있다.
[0046] 남은 백로그는, 증가가 네거티브할 때 시스템이 현재 백로그 증가에 의해 감소되는 것으로 보이지 않는 수용가능한 백로그 초과의 백로그이다. 이는, 백로그 활성 사이즈에서, 백로그의 수용가능한 사이즈를 빼고, 네거티브 백로그 증가와 백로그 복원 시간의 합을 더한 것으로서 계산될 수 있다.
[0047] 작업자들의 추가의 수는, 작업자당 현재 스루풋에 기반하여 백로그 복원 시간 내에 남은 백로그를 처리하도록 선택된다. 추가의 작업자들의 수는, 남은 백로그를 작업자 당 스루풋과 백로그 복원 시간의 합으로 나눈 것으로서 계산될 수 있다. 그런 다음, 새로운 원하는 작업자들의 수가, 스루풋 작업자들의 수 플러스 백로그 작업자들의 수로서 계산된다.
[0048] 디스크들의 총 수가 작업 마다 고정될 수 있기 때문에, 시스템이 스케일링할 때, 시스템은 작업자들 간에 기존의 디스크들을 분산시킬 수 있다. 디스크는 데이터의 소스들/범위들에 대응하며, 그 결과로, (범위들 간에 균일한 데이터 분산을 가정하여) 더 많은 디스크들을 갖는 작업자들은 더 적은 시스템 디스크들을 갖는 작업자들보다 더 바쁘다. 일부 경우들에서, 불균일한 디스크 분산들로 작업자들의 수로 스케일링하는 것은, 가장 큰 부하가 걸린 작업자의 레벨에서의 성능을 초래한다. 그 결과로, 시스템은 균일한 디스크 분산을 제공하는 가장 가까운 수의 작업자들로 스케일링하고자 시도할 수 있다.
[0049] 배정을 줄이기 위해, 시스템은 일부 구현들에서 평균 백로그 시간이 max_backlog_to_downscale 미만이고, 백로그 증가가 평균적으로 0인 안정적인 상황에 있는 것이 요구될 수 있다. 배정을 얼마나 많이 줄일지를 결정하기 위해, 시스템은 시스템이 다음으로 더 낮은 레벨의 작업자들을 핸들링할 수 있는지 여부의 프록시로서 CPU를 사용한다. 한 예시적인 프록시-기반 결정은 다음과 같을 수 있다. 작업자들의 현재 수(w1)는 d1의 작업자당 최대 #disks를 의미한다고 가정한다. 시스템은 각각의 작업자가 최대 d2 > d1개의 디스크들을 갖도록 최대 작업자들 w2 <w1을 컴퓨팅한다. 일부 상황들에서, 새로운 작업자들은 현재 CPU 레이트에 w1/w2를 곱한 레이트로 실행할 것이다. 만약 그 새로운 CPU가 수용가능한 최대(예컨대, 1.0 미만) 미만이라면, 시스템은 배정을 w2로 줄이려고 시도한다.
[0050] 작업 스케일링을 위해, 각각의 스테이지는 독립적으로 원하는 작업자들의 수를 가질 수 있다. 그런 다음, 작업에 대한 풀이 모든 스테이지들에 걸쳐 최대 원하는 작업자들의 수로 스케일링된다.
[0051] 평활화는, 1) 작업자가 변경된 후 일정 시간 기간 동안 입력 신호들이 안정화되길 기다리고, 2) 최소가 현재 수보다 더 높다고 가정하여, 업스케일링시 윈도우에 걸쳐 평균 원하는 작업자들을 선택하기 위해 출력 신호들을 평활화함으로써, 일어날 수 있다. 윈도우 전체에 걸쳐 최소치가 올라가기를 기다리는 것은 min_throughput에서의 단기 스파이크들에 반응하는 것을 피할 수 있다.
[0052] 다운스케일링의 경우, 시스템은 일부 구현들에서, 윈도우의 모든 각각의 값이 작업자들의 현재 수 미만이 될 때까지 기다리고, 그런 다음 (현재, 균일한 디스크 분산들로 항상 작업자들의 시스템 레벨의 다음이 될) 식별된 최대치까지 스케일링 다운할 수 있다.
[0053] 도 3은 시간에 걸쳐 신호들을 스트리밍하는 것을 도시하는 챠트들(400, 402, 406, 408)을 포함한다. 챠트(400)는 활성 작업자들의 수를 도시한다. 이 시리즈에서, 작업자들은 요청된 작업자들이 도시된 최하부 시리즈에서 볼 수 있듯이 15에서부터 8까지 점진적으로 배정이 줄어든다. 요청된 작업자와 활성 작업자 간의 불일치는 일부 작업자들이 사이즈를 다시 정하는 중에 짧은 기간들 동안 활성이 아닐 수 있고, 그들이 실패하고 돌아올 수 있는 것 등을 나타낸다. 활성이고 요청된 작업자 시리즈는 그 순간에 모든 작업자들이 모든 스테이지들에서 일하므로, 각각의 스테이지마다 동일하다는 점에 주목한다.
[0054] 챠트(402)는 이 스테이지에 대한 백로그 시간을 도시한다. 이는 현재 평균 프로세싱 스피드가 주어질 때 백로그를 0으로 줄이는 데 걸릴 추정된 시간이다.
[0055] 챠트(404)는 스트리밍 CPU 활용을 도시한다. 여기서는 모든 가상 기계들에 대한 평균 활용이 도시된다. 그러나 이상치들, 중간값들, 모드들, 최소치들, 최대치들, 또는 값들, 이를테면 이들을 결합하는 메트릭들을 제외한 평균을 포함하여 다른 메트릭들이 사용될 수 있다.
[0056] 챠트(406)는 대략 5MB/s에서 시작하여 6.6MB/s로 증가되고, 그런 다음 4MB/s 미만으로 감소하기 시작하는 입력 레이트를 도시한다. 레이트의 범프들은, 챠트(408)에서 감소들로 도시되는, 사이즈를 다시 정한 포인트들 때문이다. 사이즈를 다시 정하는 것은 파이프라인 스톨들을 야기하며, 이는 결국 백업들 그리고 그런 다음 캐치업 작업들을 야기한다. 따라서, 이러한 트랜션트들(transients)이 도출된 신호에서 나타난다.
[0057] 도 4는 자원 배정을 오토튜닝하기 위한 예시적인 프로세스(500)의 흐름도이다. 프로세스(500)는 예컨대, 고도의 분산형 컴퓨팅 환경(100)의 엘리먼트들에 의해 수행될 수 있다. 따라서, 예로서, 프로세스(500)는 고도의 분산형 컴퓨팅 환경(100)을 참조하여 설명될 것이다. 그러나, 프로세스(500) 또는 다른 유사한 프로세스들을 수행하기 위해 다른 엘리먼트들이 사용될 수 있다.
[0058] 프로세스(500)는 다수의 프로세싱 자원들을 포함하는 컴퓨터 시스템에서, 입력으로서 데이터 스트림을 수신하는 작업을 실행하는 것(502)을 포함하며, 여기서 데이터 스트림 내의 데이터의 양은 무한적이다. 예컨대, 분산형 프로세싱 시스템 관리자(110)는 외부 사용자로부터 작업을 수신할 수 있다. 이 작업은 예컨대, 스트리밍 데이터 제공자(106)로부터의 입력의 하나 또는 그 초과의 소스들이 입력 데이터로서 사용되기 위한 명령들을 포함할 수 있다. 고도의 분산형 컴퓨팅 환경(100)은 하나 또는 그 초과의 작업자들(113)에게 데이터 프로세서들(114) 및/또는 네트워크 저장 디바이스들(108)의 디스크들을 할당하거나 할당하도록 작업자 관리자(112)에게 명령함으로써, 그리고 그러한 하나 또는 그 초과의 작업자들(113)을 작업에 할당함으로써 작업을 실행할 수 있다. 작업들에 대한 이러한 초기 배정은 작업들(111)의 과거 실행들, 이용가능한 시스템 자원들, 또는 다른 팩터들을 포함하는(그러나 이에 제한되지 않음) 임의의 기술적으로 적합한 팩터들에 기반하여 세팅될 수 있다.
[0059] 프로세스(500)는, 작업에 대해 백로그 증가(504), 백로그 볼륨(506) 및 배정을 조정할지 여부(508)를 반복적으로 결정하는 것을 포함한다.
[0060] 작업에 대해, 백로그 증가를 반복적으로 결정(504)하는 것은 제1 시간 기간 동안 백로그 증가를 결정하는 것을 포함하며, 여기서 백로그 증가는 작업에 입력될 수신된 데이터 스트림에서의 비프로세싱된 데이터의 증가의 척도이다. 예컨대, 작업(111)이 실행될 때, 작업(111)은 스트리밍 데이터 제공자(106)로부터 입력을 수신한다. 이 입력은, 작업(111)이 더 많은 데이터를 수용하고 프로세싱할 수 있을 때까지, 큐 또는 버퍼와 같은 적합한 저장 구조에 저장될 수 있다. 이는 만약 작업(111)이 데이터가 수신된 만큼 빨리 데이터를 프로세싱할 수 없다면, 시간이 지남에 따라 백로그 증가를 생성하거나 부가할 수 있다. 만약 작업(111)이 저장 구조에서 데이터가 수신되는 것보다 데이터를 더 빨리 프로세싱할 수 있다면, 이는 백로그 증가의 감소로 이어질 수 있다. 어떤 경우든지, 증가의 변화 또는 비-변화가 모니터링될 수 있다. 이 백로그 증가는 예컨대, 데이터 사이즈(즉, 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 카디널리티)에 대한 변화, 프로세싱할 시간(즉, 마이크로초, 초, 분, 시, 날, MB/s) 또는 다른 것의 측면에서 측정될 수 있다.
[0061] 작업에 대해 백로그 볼륨을 반복적으로 결정(506)하는 것은 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 척도인 백로그 볼륨을 결정하는 것을 포함한다. 설명된 바와 같이, 작업(111)에 의한 프로세싱을 대기하는 데이터는 백로그로 지칭될 수 있다. 이러한 백로그는, 예컨대, 데이터 크기(즉, 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 카디널리티), 프로세스할 시간(즉, 마이크로초, 초, 분, 시, 날) 또는 다른 것의 측면에서 측정될 수 있다.
[0062] 작업에 대해, 배정을 조정할지 여부를 반복적으로 결정(508)하는 것은 백로그 증가 및 백로그 볼륨에 기반하여, 작업에 배정된 프로세싱 자원들의 양을 조정할지 여부를 결정하는 것을 포함한다. 아래의 예시적인 프로세스(600)에서 추가로 설명될 바와 같이, 백로그 증가 및 백로그 볼륨의 상태는 과도한 제공 또는 불충분한 제공의 표시자들로서 사용될 수 있고, 더 적거나 더 많은 자원들의 배정이 가능하거나 원해질 수 있다.
[0063] 작업에 배정된 프로세싱 자원들의 양이 조정될 것으로 결정되는 각각의 반복에 대해, 작업에 배정된 프로세싱 자원들의 양을 조정한다(510). 예컨대, 만약 네트워크 자원들이 작업(111)에 과도하게 제공되면, 이들은 감소될 수 있다. 그리고, 만약 네트워크 자원들이 불충분하게 제공되면, 이들은 증가될 수 있다.
[0064] 작업에 배정된 프로세싱 자원들의 양이 조정되지 않을 것으로 결정되는 각각의 반복에 대해, 작업에 배정된 프로세싱 자원들의 양을 유지한다(512). 예컨대, 만약 네트워크 자원들이 과도하게 제공되지도 않고 불충분하게 제공되지도 않으면, 동일하거나 유사한 레벨의 네트워크 자원들이 작업(111)에 제공될 수 있다. 이는 정확히 동일한 자원들이 계속 제공되는 것을 포함할 수 있거나, 또는 등가가 되는 방식으로 제공되는 상이한 자원들을 포함할 수 있다.
[0065] 다른 예시적인 프로세스들은 엘리먼트들의 상이한 수, 타입 및 순서를 포함할 수 있다. 예컨대, 백로그 증가 및 백로그 볼륨 외에도, 평균 프로세서 활용들이 결정될 수 있다. 이러한 예에서, 작업에 배정된 프로세싱 자원들의 양을 조정할지 여부를 반복적으로 결정하는 것은 프로세서 활용에 추가로 기반한다. 만약 프로세서 활용(예컨대, 사용되는 가상 기계들에 걸친 평균)이 소정 값 미만이면, 시스템은 작업에 배정된 프로세싱 자원들의 그 양이 조정되어야 한다고 결정할 수 있다. 예컨대, 만약 프로세서 활용이 소정 값 미만이면, 시스템은, 프로세서 값이 소정 값 미만으로 결정되는 것에 대한 응답으로, 작업에 배정된 프로세싱 자원들의 양이 조정될 것으로 결정된다고 결정할 수 있다. 그런 다음, 시스템은, 프로세서 값이 소정 값 미만으로 결정되는 것에 대한 응답으로, 작업에 배정된 프로세싱 자원들의 양을 조정할 수 있고, 이는 작업에 배정된 프로세싱 자원들의 양을 감소시키는 것을 포함한다. 예컨대, 만약 많은 작업자들이 낮은 프로세서 활용을 갖는 프로세서들을 가지면, 이는 과도한 제공의 사인으로서 해석될 수 있고, 시스템은 배정된 자원들을 줄임으로써, 배정된 자원들을 오토튜닝할 수 있다.
[0066] 도 5는 자원 배정이 증가해야 하는지 또는 감소해야 하는지를 결정하기 위한 예시적인 프로세스(600)의 흐름도이다. 프로세스(600)는 예컨대, 고도의 분산형 컴퓨팅 환경(100)의 엘리먼트들에 의해 수행될 수 있다. 프로세스(600)는 예컨대, 프로세스(500)를 수행하는 것의 일부로서 수행될 수 있다. 그러나, 다른 엘리먼트들이, 프로세스(500)의 일부로서 또는 프로세스(500)의 일부가 아닌 것으로서, 프로세스(600) 또는 다른 유사한 프로세스들을 수행하기 위해 사용될 수 있다.
[0067] 작업에 배정된 프로세싱 자원들의 양은 유지될 수 있다(606). 예컨대, 만약 백로그 증가가 네거티브 또는 제로(예컨대, 제로, 제로의 임계값 내)로 결정되고 백로그 볼륨이 타겟 값(예컨대, 타겟과 동일, 타겟의 임계값 내)으로 결정되면, 이는, 배정된 자원들이 과도하게 제공됨이 없이 작업이 입력 데이터를 프로세싱하게 할 수 있기에 충분함을 표시할 수 있다.
[0068] 작업에 배정된 프로세싱 자원들의 양은 감소될 수 있다(608). 예컨대, 만약 백로그 증가가 네거티브 또는 제로로 결정되고 백로그 볼륨이 타겟 미만으로 결정되면, 백로그는 아마도, 백로그가 타겟에 접근하거나 도달할 때까지 증가하도록 허가될 수 있다.
[0069] 작업에 배정된 프로세싱 자원들의 양은 증가될 수 있다(610). 예컨대, 만약 백로그 증가가 제로로 결정되고 백로그 볼륨이 타겟인 것으로 결정되면, 아마도 백로그가 타겟에 접근하거나 도달할 때까지 백로그를 감소시키기 위해 부가적인 자원들이 배정될 수 있다.
[0070] 작업에 배정된 프로세싱 자원들의 양은 유지될 수 있다(612). 예컨대, 만약 백로그 증가가 포지티브로 결정되고 백로그 볼륨이 타겟 미만으로 결정되면, 백로그는 아마도 백로그가 타겟에 접근하거나 도달할 때까지 증가하도록 허가될 수 있다.
[0071] 작업에 배정된 프로세싱 자원들의 양은 증가될 수 있다(614). 예컨대, 만약 백로그 증가가 포지티브로 결정되고 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되면, 백로그 증가가 중단되거나 반전될 수 있도록 부가적인 자원들이 작업에 배정될 수 있다.
[0072] 다른 예시적인 프로세스들은 엘리먼트들의 상이한 수, 타입 및 순서를 포함할 수 있다.
[0073] 도 6a, 도 6b 및 도 6c는 셋업, 사이즈를 다시 정하는 것 및 태스크들의 일시 중단을 위한 예시적인 프로세스들의 흐름도들이다.
[0074] 초기 개시(700) 동안에, 스트리밍 부하 균형기는 작업자들이 어떠한 범위들을 소유하는지, 어떠한 디스크들을 장착할지를 작업자들에게 알릴(tell) 뿐만 아니라, 데이터 디스크들을 정확한 작업자들에 부착하도록 조정하는 것을 담당할 수 있다. 사이즈를 다시 정하는 동안에, 부하 균형기는 작업자들에게 특정 범위에 대한 작업을 중단하고, 대응하는 디스크들을 장착해제(unmount)하고, 디스크들을 분리하고, 디스크들을 재부착하고, 모든 작업자들에 대한 새로운 토폴로지 셋업 태스크들을 생성하고, 새로운 시작 컴퓨테이션 태스크들을 생성하도록 명령(tell)할 수 있다.
[0075] 스트리밍 부하 균형기는 작은 단계 실행 경우들을 사용하여 작업자들과 상호작용한다. 이들은, 스트리밍 부하 균형기가 작업자들과의 상호작용을 요구할 때 트리거링된다. 이들 단계들은, 스트리밍 부하 균형기가 론칭(launch)한 단계들이 종료하였다는 것을 알기 위해, 자신이 소비한 특수 디스크 이동 업데이트 결과들을 생성할 시에 종료될 수 있다. 스트리밍 부하 균형기가 디스크 이동 업데이트를 수신한 후에, 스트리밍 부하 균형기는 새로운 셋업 (토폴로지) 태스크들을 새로운 디스크 할당을 갖는 모든 작업자들에게 송출할 수 있다.
[0076] 초기 개시(702). 스트리밍 부하 균형기는 초기에 토폴로지 및 디스크 할당들을 포함하는 태스크 셋업 메시지를 각각의 작업자에게 전송한다. 초기 셋업 태스크는 각각의 작업자에 대한 디스크들을 포함할 수 있지만, 시스템은 초기 셋업 태스크에 대한 디스크 할당들을 전송하지 않기로 판단할 수 있다. 이는 작업자들이 아직 부착하지 않은 디스크들을 그들이 장착하려고 시도하는 것을 막을 수 있다. 작업자들은 이러한 셋업 태스크를 요청할 수 있고, 이것이 자신들의 첫 번째 것일 수 있기 때문에, 작업자들은 디스크들을 장착하려고 시도할 수 있지만, 어떠한 디스크들도 셋업 태스크들에서 보이지 않고, 이는 시스템에서 에러들을 발생시킬 수 있다.
[0077] 그런 다음, 스트리밍 부하 균형기는 디스크 부착(704)을 시작할 수 있다. 제1 단계는 단계 입력에서 토폴로지가 주어진 모든 작업자들에 대해 디스크 부착들을 수행할 수 있다. 일단, 예컨대, 모든 디스크들이 부착되면, 모든 작업자들에게 어떠한 디스크를 부착할지를 알리기 위해 그들에 대한 스트리밍 컴퓨테이션 태스크들을 생성하는 후속적인 컴퓨테이션 시작이 트리거링될 수 있다. 단계는, 모든 이러한 태스크들이 완료(done) 상태에 진입할 때까지 기다릴 수 있다. 작업자들은 이러한 컴퓨테이션 태스크들을 요청하고, 디스크들을 장착하려고 시도하고, 연관된 범위들을 요청하기 시작할 수 있다. 그 때에, 작업자들은 작업을 시작(706)할 수 있다.
[0078] 모든 스트리밍 컴퓨테이션 태스크들이 완료되었다는 것을 시스템이 검출할 때, 디스크 이동 업데이트(708)는 모든 것이 완료되었음을 스트리밍 부하 균형기에 알리기 시작할 수 있다. 스트리밍 부하 균형기는 디스크 이동 업데이트를 관측하고, 모든 기존 셋업 태스크들을 취소하고, 최종 디스크 할당을 포함하는 새로운 셋업 태스크들을 모든 작업자들에게 발송할 수 있다.
[0079] 작업자들은, 태스크 셋업 메시지 리스(lease)(1s)의 자신들의 다음 업데이트에 대해, 셋업 태스크를 드롭하고, 새로운 것을 찾을 수 있다. 그렇지만, 작업자들은, 자신들이 이미 정확한 디스크들을 장착하였다고 가정하면, 그것이 자신들의 첫 번째 디스크가 아니기 때문에, 새로운 셋업 태스크들에서 디스크들에 대해 반드시 작동하지는 않는다.
[0080] 사이즈를 다시 정하기(예컨대, 디스크들을 이동시킴)(710). 적어도 2 개의 경우들, 즉, 업사이징 및 다운사이징이 존재할 수 있다. 그들 둘 모두는 프로토콜에서 동일하거나 유사한 단계들로 핸들링될 수 있고, 이들의 예는 다음과 같다: 새로운 작업자들에 대한 새로운 빈(empty) 셋업 태스크들(다운사이즈에 대해 어떠한 것도 없음)을 발송(712)한다. 이들은 초기에 어떠한 디스크들도 포함하지 않는다. (기존 스트리밍을 너무 일찍 중단하지 않기 위해) 새로운 작업자들이 이들 빈 셋업 태스크들을 요청하기를 기다린다. 다운사이즈에 대해 어떠한 기다림도 필요하지 않을 수 있다. 중단 컴퓨테이션 태스크들(712)이 디스크들을 분실한 모든 작업자들에게 전송되고, 그들 모두가 완료되기를 기다린다. 디스크 분리(714) 단계가 수행된다. 디스크 부착(716) 단계가 수행된다. 디스크들을 획득한 모든 작업자들에게 시작 컴퓨테이션(718) 태스크들이 전송되고, 그들 모두가 완료되기를 기다린다. 모든 기존 셋업 태스크들이 취소되고, 새로운 최종 셋업(720) 태스크들이 모든 작업자들에게 발송된다. 스트리밍 부하 균형기와 위의 미니(mini) 작업 흐름 단계들 간의 조정(orchestration)은 초기 셋업 동안, 즉, 마지막 단계가 완료된 후에와 동일한 방식으로 이루어질 수 있고, 스트리밍 부하 균형기가 최종 새로운 셋업 태스크들을 발송하기 전에 자신이 소비한 디스크 이동 업데이트 결과들이 생성될 수 있다.
[0081] 일시 중단(740). 작업 흐름을 일시 중단하기 위해, 일시 중단 파라미터들이 초기화될 수 있다(742). 작업자들에 의한 컴퓨테이션들에서 일시 중단이 시작될 수 있다(704). 일부 또는 모든 작업자들로부터 디스크들이 분리될 수 있다(706). 디스크 이동 업데이트(708)가 완료될 수 있다.
[0082] 비록 프로세스들(700, 710 및 740)이 동작들의 특정 수, 순서 및 타입들로 설명될지라도, 다른 것들이 가능하다. 예컨대, 다른 프로세스가 아래에서 설명된다. 이러한 프로세스에서, 시스템이 시작 및 중단 컴퓨테이션 태스크들을 발송하는 동시에, 시스템은 새로운 셋업 태스크들을 발송할 수 있고, 이로써 실패들에 대해 작업자들 거동이 멱등(idempotent)이 되게 한다. 각각의 디스크 이동에서, 적어도 3 개의 종류들의 작업자들이 존재할 수 있다: 디스크들을 분실한 작업자들. 디스크들을 획득한 작업자들. 동일한 디스크들을 유지하는 작업자들. 테스팅을 위해, 시스템은 또한 제4 조합, 즉, 디스크들을 획득하고 분실한 작업자들을 지원한다.
[0083] 임의의 디스크들을 분실한 작업자들은 자신들의 태스크들을 획득하고, 자신들이 분실한 디스크들을 더 이상 포함하지 않는 새로운 셋업 태스크들을 동시에 획득할 필요가 있을 수 있다. 게다가, 만약 작업자가 다음 태스크에 대한 디스크를 획득할 수 있다면, 이러한 포인트에서 발송된 셋업 태스크는 자신이 이미 갖지 않은 디스크들을 포함할 수 없다. 따라서, 만약 그들이 충돌하면, 그들은 단지 포기한/포기하였던 디스크들을 반드시 장착하려고 시도하지 않을 수 있고, 그들은 그들이 아직 수신하지 않은 디스크들을 반드시 장착하려고 시도하지 않을 수 있다. 만약 그들이 자신들의 디스크를 성공적으로 장착해제하면, 그들은 원하는 상태에 도달할 수 있다. 그렇지 않다면, 그들은 장착해제를 재요청하고 장착해제를 다시 실행할 수 있고, 장착해제가 이미 이루어졌다면, 이는 조종불능(noop)일 수 있다. 만약 그들이 충돌하고 재시작되면, 그들은 자신들이 이번 라운드에서 (분실하거나 획득하지 않고서) 유지하는 디스크들만을 장착한다.
[0084] 디스크를 얻은 작업자들이 새로운 셋업 태스크를 받는 동시에 이들은 시작 컴퓨테이션 태스크를 받는다. 만약 이들이 충돌한다면, 이들이 시작 컴퓨테이션 태스크를 완료했는지 여부에 관계없이 재시작 시에 새로운 디스크들을 장착할 수 있다. 재차, 이들이 일부 디스크를 이미 장착한 경우에, 재장착은 멱등(idempotent)일 수 있고 문제를 야기하지 않을 수 있다. 동일한 디스크를 유지하는 작업자들에게는 이동 동안 언제든지 새로운 셋업 태스크들이 주어질 수 있다. 시스템은 정지 컴퓨테이션 포인트, 즉 일부 작업자들이 기존 토폴로지를 사용한 작업을 중단해야 하는 제1 포인트에서 이러한 작업자들에 대한 새로운 셋업 태스크들을 생성할 수 있다.
[0085] 초기 시작. 초기 시작 시에, 시스템은 더 이상 초기 셋업 태스크를 발송하지 않고 대신에, 시스템이 디스크들을 부착하고, 그런 다음, 시작 컴퓨테이션 단계의 일부로 모든 최종 셋업 태스크들을 발송한다. 이는, 셋업 태스크들이 포기되고 재청구될 필요가 없기 때문에 레이스를 수정하고 시동 시간을 개선한다.
[0086] 사이즈 다시 정하기(이동). 업사이징할 때, 생산적인 작업자들로부터 디스크들을 이동시키기 전에 시스템은 새로운 가상 기계들이 준비되기를 기다려야 한다. 따라서, 시스템은 여전히, 플래그가 세팅되어 있는 새로운 작업자들에 대한 초기 셋업 태스크들을 발송한다(이들은 할당되지 않은 디스크들이 존재하기 때문에 실제로는 그 포인트에서 어떠한 디스크들도 포함하지 않음). 새로운 작업자들은 초기에 비어있는 셋업 태스크를 받을 수 있지만, 이는 이들이 준비가 될 때까지 대기하도록 허용한다.
[0087] 그 후, 디스크를 손실한 기존 작업자들에 대해, 그의 새로운 셋업 태스크들(및 기존의 셋업 태스크들의 취소)과 함께, 중단 컴퓨테이션 태스크들이 발송된다. 동시에, 시스템은 디스크를 얻지도 손실하지도 않는 작업자들에 대해 모든 셋업 태스크들을 또한 발송할 수 있다. 모든 중단 컴퓨테이션 태스크들이 완료되면, 디스크들은 분리되고 그런 다음 부착된다. 마지막으로, 디스크를 얻은 작업자들에 대해, 새로운 셋업 태스크들(및 기존의 셋업 태스크들의 취소)과 함께, 새로운 시작 컴퓨테이션 태스크들이 발송된다.
[0088] 그런 다음, 새로운 작업자들은 최종 디스크 할당을 갖는 그들의 새로운 셋업 태스크, 또는 시작 컴퓨테이션 태스크를 먼저 확인할 수 있다. 어느 것이든 그들로 하여금, 그들이 그 포인트에 가진 디스크들을 장착하게 할 수 있다. 만약 이들이 그 시간 근처에서 충돌한다면, 그들은 또한 새로운 타겟 상태에 도달할 수 있다.
[0089] 일시 중단. 일시 중단할 때, 시스템은 기존의 셋업 태스크들의 취소 및 어떠한 디스크 할당도 포함하지 않는(따라서, 충돌들의 경우에, 작업자들은 그들이 포기했을 수 있는 디스크들을 장착하려고 시도하지 않음) 새로운 셋업 태스크들과 함께, 중단 컴퓨테이션 태스크들을 모든 가상 기계들에 발송한다. 디스크들은 분리된다.
[0090] 작업자로부터 그의 셋업 태스크에 대한 맵을 컴퓨팅하는 것이 유용할 수 있다. 이 맵은 그 자신의 내포된 트랜잭션을 갖는 중단 및 시작 컴퓨테이션 단계들 동안 수정되기 때문에, 우리는 스트리밍 부하 균형기에서 사전에 행했던 바와 같이 이 맵을 일관되게 유지할 수 없다. 대신, 우리는 이 단계들에서 결과 캐시를 사용하여 필요할 때마다 맵을 컴퓨팅한다. 또한, 이는 모든 중지된 그리고 행해진 태스크들에 대해 구(old) 인보케이션 결과들을 삭제할 기회를 제공한다.
[0091] 이 맵은, 우리가 이 작업자(만약 존재한다면)에 대해 기존의 것을 취소하도록 새로운 셋업 태스크를 발송할 때마다 컴퓨팅 및 컨설팅될 수 있다. 이는 중단 컴퓨테이션 또는 시작 컴퓨테이션 단계들 시에는 물론 다운사이징 또는 일시 중단 후에도 발생한다.
[0092] 게다가, 작업 프로세스들의 통신은 시스템이 이용 가능한 정보 중 일부(전부는 아님)를 사용하여 사용자들에게 통신될 수 있다. 아래는 사용될 수 있는 일부 예시적인 세부사항들이다.
[0093] 도 7은 여기서 설명된 기법들을 구현하는데 사용될 수 있는 컴퓨팅 디바이스(800) 및 모바일 컴퓨팅 디바이스(850)의 예를 도시한다. 컴퓨팅 디바이스(800)는 랩톱들, 데스크톱들, 워크스테이션들, 개인 휴대 정보 단말들, 서버들, 블레이드 서버들, 메인프레임들 및 다른 적합한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들을 나타내도록 의도된다. 모바일 컴퓨팅 디바이스(850)는 개인 휴대 정보 단말들, 셀룰러 전화들, 스마트-폰들 및 다른 유사한 컴퓨팅 디바이스들과 같은 다양한 형태들의 모바일 디바이스들을 나타내도록 의도된다. 여기에 도시된 컴포넌트들, 그의 연결들 및 관계들, 및 그의 기능들은 단지 예들로 의도될 뿐이며 제한적인 것으로 의도되지 않는다.
[0094] 컴퓨팅 디바이스(800)는 프로세서(802), 메모리(804), 저장 디바이스(806), 메모리(804) 및 다수의 고속 확장 포트들(810)에 연결되는 고속 인터페이스(808), 및 저속 확장 포트(814)에 연결되는 저속 인터페이스(812) 및 저장 디바이스(806)를 포함한다. 프로세서(802), 메모리(804), 저장 디바이스(806), 고속 인터페이스(808), 고속 확장 포트들(810) 및 저속 인터페이스(812) 각각은 다양한 버스들을 사용하여 상호연결되고, 공동 마더보드 상에 또는 적절한 다른 방식들로 장착될 수 있다. 프로세서(802)는 고속 인터페이스(808)에 커플링되는 디스플레이(816)와 같이 외부 입력/출력 디바이스 상의 GUI에 대한 그래픽 정보를 디스플레이하도록 메모리(804)에 또는 저장 디바이스(806) 상에 저장된 명령들을 포함해서, 컴퓨팅 디바이스(800) 내의 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현들에서, 다수의 메모리들 및 메모리의 타입들과 함께, 다수의 프로세서들 및/또는 다수의 버스들이 적합하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들이 연결될 수 있으며, 각각의 디바이스는 (예컨대, 서버 뱅크, 블레이드 서버 그룹 또는 다중-프로세서 시스템으로서) 필요한 동작들 중 일부를 제공한다.
[0095] 메모리(804)는 컴퓨팅 디바이스(800) 내에 정보를 저장한다. 일부 구현들에서, 메모리(804)는 휘발성 메모리 유닛 또는 유닛들이다. 일부 구현들에서, 메모리(804)는 비-휘발성 메모리 유닛 또는 유닛들이다. 메모리(804)는 또한 자기 또는 광학 디스크와 같은 다른 형태의 컴퓨터-판독 가능 매체일 수 있다.
[0096] 저장 디바이스(806)는, 컴퓨팅 디바이스(800)에 대한 대용량 저장소를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(806)는, 저장 영역 네트워크 또는 다른 구성들의 디바이스들을 포함하여, 컴퓨터-판독가능 매체, 이를테면, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 디바이스들의 어레이이거나, 또는 이들을 포함할 수 있다. 명령들은 정보 캐리어에 저장될 수 있다. 명령들은, 하나 또는 그 초과의 프로세싱 디바이스들(예컨대, 프로세서(802))에 의해 실행될 때, 하나 또는 그 초과의 방법들, 이를테면, 위에서 설명된 것들을 수행한다. 명령들은 또한, 하나 또는 그 초과의 저장 디바이스들, 이를테면, 컴퓨터-판독가능 매체 또는 기계-판독가능 매체(예컨대, 메모리(804), 저장 디바이스(806), 또는 프로세서(802) 상의 메모리)에 의해 저장될 수 있다.
[0097] 고속 인터페이스(808)가 컴퓨팅 디바이스(800)에 대한 대역폭-집약적 동작들을 관리하는 반면에, 저속 인터페이스(812)는 하위 대역폭-집약적 동작들을 관리한다. 기능들의 그러한 배정은 단지 예이다. 일부 구현들에서, 고속 인터페이스(808)는 메모리(804), 디스플레이(816)(예컨대, 그래픽스 프로세서 또는 가속기를 통해), 그리고 다양한 확장 카드들(미도시)을 수용할 수 있는 고속 확장 포트들(810)에 커플링된다. 구현에서, 저속 인터페이스(812)는 저장 디바이스(806) 및 저속 확장 포트(814)에 커플링된다. 다양한 통신 포트들(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(814)는 하나 또는 그 초과의 입력/출력 디바이스들, 이를테면, 키보드, 포인팅 디바이스, 스캐너, 또는 예컨대 네트워크 어댑터를 통해 네트워킹 디바이스, 이를테면, 스위치 또는 라우터에 커플링될 수 있다.
[0098] 도면에서 도시된 바와 같이, 컴퓨팅 디바이스(800)는 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 컴퓨팅 디바이스(800)는 표준 서버(820)로서, 또는 그러한 서버들의 그룹에서 다수 회 구현될 수 있다. 게다가, 컴퓨팅 디바이스(800)는 개인 컴퓨터, 이를테면, 랩톱 컴퓨터(822)로 구현될 수 있다. 컴퓨팅 디바이스(800)는 또한, 랙(rack) 서버 시스템(824)의 일부로서 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(800)로부터의 컴포넌트들은 모바일 디바이스(미도시), 이를테면, 모바일 컴퓨팅 디바이스(850)의 다른 컴포넌트들과 결합될 수 있다. 그러한 디바이스들 각각은 컴퓨팅 디바이스(800) 및 모바일 컴퓨팅 디바이스(850) 중 하나 또는 그 초과를 포함할 수 있으며, 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들로 구성될 수 있다.
[0099] 모바일 컴퓨팅 디바이스(850)는, 다른 컴포넌트들 중에서, 프로세서(852), 메모리(864), 입력/출력 디바이스, 이를테면, 디스플레이(854), 통신 인터페이스(866), 및 트랜시버(868)를 포함한다. 또한, 부가적인 저장소를 제공하기 위해, 저장 디바이스, 이를테면, 마이크로-드라이브 또는 다른 디바이스가 모바일 컴퓨팅 디바이스(850)에 제공될 수 있다. 프로세서(852), 메모리(864), 디스플레이(854), 통신 인터페이스(866), 및 트랜시버(868) 각각은 다양한 버스들을 사용하여 상호연결되며, 컴포넌트들 중 몇몇은 공통 마더보드 상에 또는 적합한 경우 다른 방식들로 장착될 수 있다.
[00100] 프로세서(852)는 메모리(864)에 저장된 명령들을 포함하는, 모바일 컴퓨팅 디바이스(850) 내의 명령들을 실행할 수 있다. 프로세서(852)는, 별개의 그리고 다수의 아날로그 및 디지털 프로세서들을 포함하는 칩들의 칩셋으로서 구현될 수 있다. 프로세서(852)는, 예컨대, 모바일 컴퓨팅 디바이스(850)의 다른 컴포넌트들의 조정, 이를테면, 사용자 인터페이스들, 모바일 컴퓨팅 디바이스(850)에 의해 실행되는 애플리케이션들, 및 모바일 컴퓨팅 디바이스(850)에 의한 무선 통신의 제어를 제공할 수 있다.
[00101] 프로세서(852)는 디스플레이(854)에 커플링된 디스플레이 인터페이스(856) 및 제어 인터페이스(858)를 통해 사용자와 통신할 수 있다. 디스플레이(854)는, 예컨대, TFT(Thin-Film-Transistor Liquid Crystal Display) 디스플레이 또는 OLED(Organic Light Emitting Diode) 디스플레이, 또는 다른 적합한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(856)는, 그래픽 및 다른 정보를 사용자에게 제시하도록 디스플레이(854)를 구동시키기 위한 적합한 회로를 포함할 수 있다. 제어 인터페이스(858)는, 사용자로부터 커맨드들을 수신하며 프로세서(852)로의 제출을 위해 이 커맨드들을 변환할 수 있다. 게다가, 다른 디바이스들과 모바일 컴퓨팅 디바이스(850)의 근거리 영역 통신을 가능하게 하기 위하여, 외부 인터페이스(862)가 프로세서(852)와의 통신을 제공할 수 있다. 외부 인터페이스(862)는, 예컨대, 일부 구현들에서 유선 통신, 또는 다른 구현들에서 무선 통신을 제공할 수 있으며, 다수의 인터페이스들이 또한 사용될 수 있다.
[00102] 메모리(864)는 모바일 컴퓨팅 디바이스(850) 내에 정보를 저장한다. 메모리(864)는, 컴퓨터-판독가능 매체 또는 매체들, 휘발성 메모리 유닛 또는 유닛들, 또는 비-휘발성 메모리 유닛 또는 유닛들 중 하나 또는 그 초과로서 구현될 수 있다. 확장 메모리(874)는 또한, 예컨대, SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는 확장 인터페이스(872)를 통해 모바일 컴퓨팅 디바이스(850)에 제공 및 연결될 수 있다. 확장 메모리(874)는 모바일 컴퓨팅 디바이스(850)에 대한 가외의 저장 공간을 제공할 수 있거나, 또는 모바일 컴퓨팅 디바이스(850)에 대한 애플리케이션들 또는 다른 정보를 또한 저장할 수 있다. 상세하게, 확장 메모리(874)는, 위에서 설명된 프로세스들을 수행 또는 보완하기 위한 명령들을 포함할 수 있으며, 보안 정보를 또한 포함할 수 있다. 따라서, 예컨대, 확장 메모리(874)는 모바일 컴퓨팅 디바이스(850)에 대한 보안 모듈로서 제공될 수 있으며, 모바일 컴퓨팅 디바이스(850)의 보안 사용을 허가하는 명령들로 프로그래밍될 수 있다. 게다가, 보안 애플리케이션들은, 해킹가능하지 않은 방식으로 SIMM 카드 상에 식별 정보를 배치하는 것과 같이, 부가적인 정보와 함께, SIMM 카드들을 통해 제공될 수 있다.
[00103] 메모리는, 아래에서 논의되는 바와 같이, 예컨대, 플래시 메모리 및/또는 NVRAM 메모리(non-volatile random access memory)를 포함할 수 있다. 일부 구현들에서, 명령들은 정보 캐리어에 저장된다. 하나 또는 그 초과의 프로세싱 디바이스들(예컨대, 프로세서(852))에 의해 실행될 때, 그 명령들은, 위에서 설명된 것들과 같은 하나 또는 그 초과의 방법들을 수행한다. 명령들은 또한, 하나 또는 그 초과의 저장 디바이스들, 이를테면, 하나 또는 그 초과의 컴퓨터- 또는 기계-판독가능 매체들(예컨대, 메모리(864), 확장 메모리(874) 또는 프로세서(852) 상의 메모리)에 의해 저장될 수 있다. 일부 구현들에서, 명령들은, 예컨대, 트랜시버(868) 또는 외부 인터페이스(862)를 통해 전파된 신호에서 수신될 수 있다.
[00104] 모바일 컴퓨팅 디바이스(850)는 통신 인터페이스(866)를 통해 무선으로 통신할 수 있으며, 통신 인터페이스(866)는 필요한 경우 디지털 신호 프로세싱 회로를 포함할 수 있다. 통신 인터페이스(866)는 다양한 모드들 또는 프로토콜들, 그 중에서도, 이를테면, GSM(Global System for Mobile Communication) 음성 콜들, SMS(Short Message Service), EMS(Enhanced Messaging Service), 또는 MMS(Multimedia Messaging Service) 메시징, CDMA(code division multiple access), TDMA(time division multiple access), PDC(Personal Digital Cellular), WCDMA(Wideband Code Division Multiple Access), CDMA2000, 또는 GPRS(General Packet Radio Service) 하에서 통신들을 제공할 수 있다. 그러한 통신은, 예컨대, 라디오 주파수를 사용하는 트랜시버(868)를 통해 발생할 수 있다. 게다가, 이를테면, 블루투스, WiFi 또는 다른 그러한 트랜시버(도시되지 않음)를 사용하여 단거리 통신이 발생할 수 있다. 게다가, GPS(Global Positioning System) 수신기 모듈(870)은 부가적 내비게이션- 및 위치-관련된 무선 데이터를 모바일 컴퓨팅 디바이스(850)에 제공할 수 있고, 그 무선 데이터는 모바일 컴퓨팅 디바이스(850) 상에서 실행하는 애플리케이션들에 의해 적합하게 사용될 수 있다.
[00105] 모바일 컴퓨팅 디바이스(850)는 또한, 오디오 코덱(860)을 사용하여 청취가능하게 통신할 수 있고, 오디오 코덱(860)은 사용자로부터 발화된 정보를 수신하고, 이를 유용한 디지털 정보로 변환할 수 있다. 오디오 코덱(860)은 마찬가지로, 예컨대, 모바일 컴퓨팅 디바이스(850)의 핸드셋에서, 이를테면, 스피커를 통해 사용자에 대한 청취가능한 사운드를 생성할 수 있다. 그러한 사운드는 음성 텔레폰 콜들로부터의 사운드를 포함할 수 있고, 레코딩된 사운드(예컨대, 음성 메시지들, 뮤직 파일들 등)를 포함할 수 있으며, 모바일 컴퓨팅 디바이스(850) 상에서 동작하는 애플리케이션들에 의해 생성된 사운드를 또한 포함할 수 있다.
[00106] 모바일 컴퓨팅 디바이스(850)는 도면에 도시된 바와 같이, 다수의 상이한 형태로 구현될 수 있다. 예컨대, 그것은 셀룰러 전화(880)로서 구현될 수 있다. 그것은 또한, 스마트-폰(882), 개인 휴대 정보 단말, 또는 다른 유사한 모바일 디바이스의 일부로서 구현될 수 있다.
[00107] 여기에 설명된 시스템들 및 기법들의 다양한 구현들은 디지털 전자 회로, 집적 회로, 특별히 설계된 ASIC(application specific integrated circuit)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 그리고 그들에 데이터 및 명령들을 송신하도록 커플링된 특수 목적 또는 범용일 수 있는 적어도 하나의 프로그램가능 프로세서를 포함하는 프로그램가능 시스템 상에서 실행가능하고 그리고/또는 해석가능한 하나 또는 그 초과의 컴퓨터 프로그램들로의 구현을 포함할 수 있다.
[00108] 이러한 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 또한 알려져 있음)은 프로그램가능 프로세서에 대한 기계 명령들을 포함하며, 고-레벨 절차 및/또는 객체-지향 프로그래밍 언어로 그리고/또는 어셈블리/기계 언어로 구현될 수 있다. 본원에서 사용되는 바와 같이, 기계-판독가능 매체 및 컴퓨터-판독가능 매체라는 용어들은, 기계 명령들을 기계-판독가능 신호로서 수신하는 기계-판독가능 매체를 포함해서, 프로그램가능 프로세서에 기계 명령들 및/또는 데이터를 제공하는데 사용되는 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광학 디스크들, 메모리, PLD(Programmable Logic Device)들)를 지칭한다. 기계-판독가능 신호라는 용어는 기계 명령들 및/또는 데이터를 프로그램가능 프로세서에 제공하는데 사용되는 임의의 신호를 지칭한다.
[00109] 사용자와의 상호작용을 제공하기 위해, 여기에 설명된 시스템들 및 기법들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터) 및 사용자가 입력을 컴퓨터에 제공하게 할 수 있는 키보드 및 포인팅 디바이스(예컨대, 마우스 또는 트랙볼)를 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들이 또한 사용자와의 상호작용을 제공하기 위해 사용될 수 있고; 예컨대, 사용자에게 제공되는 피드백은 임의의 형태의 감지 피드백(예컨대, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백))일 수 있고; 그리고 사용자로부터의 입력은 어쿠스틱, 스피치 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
[00110] 여기서 설명된 시스템들 및 기법들은, (예컨대, 데이터 서버로서) 백 엔드 컴포넌트를 포함하거나, 또는 미들웨어 컴포넌트(예컨대, 애플리케이션 서버)를 포함하거나, 또는 프런트 엔드 컴포넌트(예컨대, 그래픽 사용자 인터페이스를 갖는 클라이언트 컴퓨터, 또는 사용자가 여기서 설명된 시스템들 및 기법들의 구현과 상호작용할 수 있게 하는 웹 브라우저), 또는 그러한 백 엔드, 미들웨어 또는 프런트 엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 시스템의 컴포넌트들은 임의의 형태 또는 매체의 디지털 데이터 통신(예컨대, 통신 네트워크)에 의해 상호연결될 수 있다. 통신 네트워크들의 예들은 LAN(local area network), WAN(wide area network) 및 인터넷을 포함한다.
[00111] 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로, 서로 원격이며, 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 개개의 컴퓨터들 상에서 실행하고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다.
[00112] 추가의 구현들이 아래의 예들에서 요약된다:
[00113] 예 1: 컴퓨터 시스템에서 구현되는 방법으로서, 방법은: 다수의 프로세싱 자원들을 포함하는 컴퓨터 시스템에서, 데이터 스트림을 입력으로서 수신하는 작업(job)을 실행하는 단계 ― 데이터 스트림에서 데이터의 양은 무한적임 ―; 작업에 대해: 제1 시간 기간에 걸친 백로그 증가(backlog growth) ― 백로그 증가는 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 증가의 척도(measure)임 ―, 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 척도인 백로그 볼륨, 및 백로그 증가 및 백로그 볼륨에 기반한, 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 결정을 반복적으로 결정하는 단계; 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계; 및 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양을 유지하는 단계를 포함한다.
[00114] 예 2: 예 1의 방법에 있어서, 결정의 반복에 대해: 백로그 증가가 제로(zero) 또는 네거티브(negative)인 것으로 결정되고; 백로그 볼륨이 타겟에 일치되는 것으로 결정되며; 방법은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟에 일치되는 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 단계를 포함한다.
[00115] 예 3: 예 1 또는 예 2의 방법에 있어서, 결정의 반복에 대해: 백로그 증가가 제로 또는 네거티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만인 것으로 결정되고; 방법은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계를 포함한다.
[00116] 예 4: 예 1 내지 예 3 중 일 예의 방법에 있어서, 결정의 반복에 대해: 백로그 증가가 제로 또는 네거티브인 것으로 결정되고; 백로그 볼륨이 타겟 초과인 것으로 결정되며; 방법은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 단계를 포함한다.
[00117] 예 5: 예 1 내지 예 4 중 일 예의 방법에 있어서, 결정의 반복에 대해: 백로그 증가가 포지티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만인 것으로 결정되며; 방법은, 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 단계를 포함한다.
[00118] 예 6: 예 1 내지 예 5의 방법에 있어서, 결정의 반복에 대해: 백로그 증가가 포지티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되고; 방법은, 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 단계를 포함한다.
[00119] 예 7: 예 1 내지 예 6 중 일 예의 방법에 있어서, 백로그 증가는 데이터 사이즈의 척도이다.
[00120] 예 8: 예 7의 방법에 있어서, 데이터 사이즈의 단위들은 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 및 카디널리티(cardinality)로 구성되는 그룹의 적어도 하나이다.
[00121] 예 9: 예 1 내지 예 6 중 일 예의 방법에 있어서, 백로그 증가는 프로세싱할 시간의 척도이다.
[00122] 예 10: 예 9의 방법에 있어서, 프로세싱할 시간의 단위들은 마이크로초, 초, 분, 시(hour), 및 날(day)로 구성되는 그룹의 적어도 하나이다.
[00123] 예 11: 예 1 내지 예 10 중 일 예의 방법에 있어서, 백로그 볼륨은 데이터 사이즈의 척도이다.
[00124] 예 12: 예 11의 방법에 있어서, 데이터 사이즈의 단위들은 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 및 카디널리티로 구성되는 그룹의 적어도 하나이다.
[00125] 예 13: 예 1 내지 예 10 중 일 예의 방법에 있어서, 백로그 볼륨은 프로세싱할 시간의 척도이다.
[00126] 예 14: 예 13의 방법에 있어서, 프로세싱할 시간의 단위들은 마이크로초, 초, 분, 시(hour), 및 날(day)로 구성되는 그룹의 적어도 하나이다.
[00127] 예 15: 예 1 내지 예 14 중 일 예의 방법에 있어서, 방법은 작업에 대해 프로세서 활용을 반복적으로 결정하는 단계를 더 포함하고; 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 반복적으로 결정하는 단계는 프로세서 활용에 추가로 기반한다.
[00128] 예 16: 예 15의 방법에 있어서, 결정의 반복에 대해: 프로세서 활용은 값 미만이고; 방법은, 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계를 포함한다.
[00129] 예 17: 예 16의 방법에 있어서, 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계는 작업에 배정되는 자원들의 이산적인 수를 감소시키는 단계를 포함하고, 이산적인 수는 프로세서 활용에 기반한다.
[00130] 예 18: 예 17의 방법에 있어서, 이산적인 수는 컴퓨터 메모리 디스크들의 수이다.
[00131] 예 19: 예 1 내지 예 18 중 일 예의 방법에 있어서, 백로그 증가 및 백로그 볼륨에 기반하여, 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 결정하는 단계는 작업에 배정되는 프로세싱 자원들의 양의 변동을 초래하는 결정을 평활화하는(smoothing) 단계를 포함한다.
[00132] 예 20: 예 19의 방법에 있어서, 결정을 평활화하는 단계는 제2 시간 기간 동안 기다리는 단계를 포함한다.
[00133] 예 21: 예 19의 방법에 있어서, 결정을 평활화하는 단계는 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 복수의 결정들을 평균화하는 단계를 포함한다.
[00134] 예 22: 시스템으로서, 컴퓨터 프로그램 명령들을 실행하도록 구성된 하나 또는 그 초과의 프로세서들; 및 하나 또는 그 초과의 프로세서들에 의해서 실행될 때 컴퓨터 디바이스로 하여금 동작들을 수행하게 하는 컴퓨터 프로그램 명령들이 인코딩된 컴퓨터 저장 매체들을 포함하고, 동작들은: 다수의 프로세싱 자원들을 포함하는 컴퓨터 시스템에서, 데이터 스트림을 입력으로서 수신하는 작업을 실행하는 동작 ― 데이터 스트림에서 데이터의 양은 무한적임 ―; 작업에 대해: 제1 시간 기간에 걸친 백로그 증가 ― 백로그 증가는 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 증가의 척도임 ―, 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 척도인 백로그 볼륨, 및 백로그 증가 및 백로그 볼륨에 기반한, 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 결정을 반복적으로 결정하는 동작; 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작; 및 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정되는 각각의 반복에 대해, 작업에 배정되는 프로세싱 자원들의 양을 유지하는 동작을 포함한다.
[00135] 예 23: 예 22의 시스템에 있어서, 결정의 반복에 대해: 백로그 증가가 제로 또는 네거티브인 것으로 결정되고; 백로그 볼륨이 타겟에 일치되는 것으로 결정되며; 동작들은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟에 일치되는 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 동작을 포함한다.
[00136] 예 24: 예 22 또는 예 23의 시스템에 있어서, 결정의 반복에 대해: 백로그 증가가 제로 또는 네거티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만인 것으로 결정되고; 동작들은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 동작을 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작은 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 동작을 포함한다.
[00137] 예 25: 예 22 내지 예 24 중 일 예의 시스템에 있어서, 결정의 반복에 대해: 백로그 증가가 제로 또는 네거티브인 것으로 결정되고; 백로그 볼륨이 타겟 초과인 것으로 결정되며; 동작들은, 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 동작을 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작은 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 동작을 포함한다.
[00138] 예 26: 예 22 내지 예 25 중 일 예의 시스템에 있어서, 결정의 반복에 대해: 백로그 증가가 포지티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만인 것으로 결정되고; 동작들은, 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 동작을 포함한다.
[00139] 예 27: 예 22 내지 예 26 중 일 예의 시스템에 있어서, 결정의 반복에 대해: 백로그 증가가 포지티브인 것으로 결정되고; 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되고; 동작들은, 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 동작을 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작은 백로그 증가가 포지티브인 것으로 결정되는 것 및 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 동작을 포함한다.
[00140] 예 28: 예 22 내지 예 27 중 일 예의 시스템에 있어서, 백로그 증가는 데이터 사이즈의 척도이다.
[00141] 예 29: 예 28의 시스템에 있어서, 데이터 사이즈의 단위들은 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 및 카디널리티로 구성되는 그룹의 적어도 하나이다.
[00142] 예 30: 예 22 내지 예 27 중 일 예의 시스템에 있어서, 백로그 증가는 프로세싱할 시간의 척도이다.
[00143] 예 31: 예 30의 시스템에 있어서, 프로세싱할 시간의 단위들은 마이크로초, 초, 분, 시, 및 날로 구성되는 그룹의 적어도 하나이다.
[00144] 예 32: 예 22 내지 예 31 중 일 예의 시스템에 있어서, 백로그 볼륨은 데이터 사이즈의 척도이다.
[00145] 예 33: 예 32의 시스템에 있어서, 데이터 사이즈의 단위들은 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 및 카디널리티로 구성되는 그룹의 적어도 하나이다.
[00146] 예 34: 예 22 내지 예 31 중 일 예의 시스템에 있어서, 백로그 볼륨은 프로세싱할 시간의 척도이다.
[00147] 예 35: 예 34의 시스템에 있어서, 프로세싱할 시간의 단위들은 마이크로초, 초, 분, 시, 및 날로 구성되는 그룹의 적어도 하나이다.
[00148] 예 36: 예 22 내지 예 35 중 일 예의 시스템에 있어서, 동작들은 작업에 대해 프로세서 활용을 반복적으로 결정하는 동작을 더 포함하고; 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 반복적으로 결정하는 동작은 프로세서 활용에 추가로 기반한다.
[00149] 예 37: 예 36의 시스템에 있어서, 결정의 반복에 대해: 프로세서 활용은 값 미만이고; 동작들은, 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 동작을 포함하며; 그리고 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작은 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 동작을 포함한다.
[00150] 예 38: 예 37의 시스템에 있어서, 프로세서 활용이 값 미만인 것으로 결정되는 것에 대한 응답으로, 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 동작은, 작업에 배정되는 자원들의 이산적인 수를 감소시키는 동작을 포함하고, 이산적인 수는 프로세서 활용에 기반한다.
[00151] 예 39: 예 38의 시스템에 있어서, 이산적인 수는 컴퓨터 메모리 디스크들의 수이다.
[00152] 예 40: 예 22 내지 예 39 중 일 예의 시스템에 있어서, 백로그 증가 및 상기 백로그 볼륨에 기반하여, 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 결정하는 동작은, 작업에 배정되는 프로세싱 자원들의 양의 변동을 초래하는 결정을 평활화하는 동작을 포함한다.
[00153] 예 41: 예 40의 시스템에 있어서, 결정을 평활화하는 동작은 제2 시간 기간 동안 기다리는 동작을 포함한다.
[00154] 예 42: 예 40 또는 예 41의 시스템에 있어서, 결정을 평활화하는 동작은 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 복수의 결정들을 평균화하는 동작을 포함한다.
[00155] 몇몇 구현들이 위에서 상세히 설명되었지만, 다른 수정들이 가능하다. 예컨대, 클라이언트 애플리케이션이 델리게이트(delegate)(들)에 액세스하는 것으로 설명되지만, 다른 구현들에서, 델리게이트(들)는 하나 또는 그 초과의 프로세서들에 의해 구현되는 다른 애플리케이션들, 이를테면 하나 또는 그 초과의 서버들 상에서 실행되는 애플리케이션에 의해 이용될 수 있다. 게다가, 도면들에 도시된 로직 흐름들은, 바람직한 결과들을 달성함에 있어, 도시된 특정 순서 또는 순차적인 순서를 요구하지 않는다. 게다가, 설명된 흐름들과 다른 액션들이 제공될 수 있거나 설명된 흐름들로부터 액션들이 제거될 수 있고, 설명된 시스템들에 다른 컴포넌트들이 부가될 수 있거나 그로부터 제거될 수 있다. 따라서, 다른 구현들이 다음의 청구항들의 범위 내에 있다.
Claims (42)
- 컴퓨터 시스템에서 구현되는 방법으로서,
다수의 프로세싱 자원들을 포함하는 컴퓨터 시스템에서, 데이터 스트림을 입력으로서 수신하는 작업(job)을 실행하는 단계 ― 상기 데이터 스트림에서 데이터의 양은 비제한적(unbounded)임 ―;
상기 작업에 대해:
제1 시간 기간에 걸친 백로그 증가(backlog growth) ― 상기 백로그 증가는 상기 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 증가의 척도(measure)이고, 상기 백로그 증가는 데이터 사이즈에 대한 변화의 측면에서 측정됨 ―,
상기 작업에 입력될 상기 수신된 데이터 스트림에서 비프로세싱된 데이터의 척도인 백로그 볼륨 ― 상기 백로그 볼륨은 데이터 사이즈의 측면에서 측정됨 ―, 및
상기 백로그 증가 및 상기 백로그 볼륨에 기반한, 상기 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 결정을
반복적으로 결정하는 단계;
상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정되는 각각의 반복에 대해, 상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계 ― 상기 프로세싱 자원들의 양을 조정하는 단계는 상기 프로세싱 자원들을 감소시킬지 여부를 결정하는 단계 및 상기 프로세싱 자원들을 감소시키기로 결정된 경우 상기 프로세싱 자원들의 배정을 얼마나 감소시킬지 결정하는 단계를 추가로 포함하고, CPU는 상기 컴퓨터 시스템이 배정된 프로세싱 자원들의 다음으로 더 낮은 레벨을 핸들링할 수 있는지 여부의 프록시(proxy)로서 사용됨 ―; 및
상기 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정되는 각각의 반복에 대해, 상기 작업에 배정되는 프로세싱 자원들의 양을 유지하는 단계를 포함하고,
상기 결정의 반복에 대해:
상기 백로그 증가가 제로(zero) 또는 네거티브(negative)인 것으로 결정되고;
상기 백로그 볼륨이 타겟에 일치되는 것으로 결정되며;
상기 방법은, 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟에 일치되는 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 제1 항에 있어서,
상기 결정의 반복에 대해:
상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟 미만인 것으로 결정되고;
상기 방법은, 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고
상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 제1 항에 있어서,
상기 결정의 반복에 대해:
상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟 초과인 것으로 결정되며;
상기 방법은, 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고
상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 제1 항에 있어서,
상기 결정의 반복에 대해:
상기 백로그 증가가 포지티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟 미만인 것으로 결정되며;
상기 방법은, 상기 백로그 증가가 포지티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 제1 항에 있어서,
상기 결정의 반복에 대해:
상기 백로그 증가가 포지티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되고;
상기 방법은, 상기 백로그 증가가 포지티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고
상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 상기 백로그 증가가 포지티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 제1 항에 있어서,
상기 데이터 사이즈의 단위들은 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 및 카디널리티(cardinality)로 구성되는 그룹의 적어도 하나인, 컴퓨터 시스템에서 구현되는 방법. - 제1 항 내지 제6 항 중 어느 한 항에 있어서,
상기 방법은 상기 작업에 대해 프로세서 활용을 반복적으로 결정하는 단계를 더 포함하고;
상기 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 반복적으로 결정하는 단계는 상기 프로세서 활용에 추가로 기반하는, 컴퓨터 시스템에서 구현되는 방법. - 제7 항에 있어서,
상기 결정의 반복에 대해:
상기 프로세서 활용은 소정(predetermined) 값 미만이고;
상기 방법은, 상기 프로세서 활용이 상기 소정 값 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 단계를 포함하며; 그리고
상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 단계는 상기 프로세서 활용이 상기 소정 값 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 제8 항에 있어서,
상기 프로세서 활용이 상기 소정 값 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 단계는 상기 작업에 배정되는 자원들의 이산적인 수를 감소시키는 단계를 포함하고,
상기 이산적인 수는 상기 프로세서 활용에 기반하는, 컴퓨터 시스템에서 구현되는 방법. - 제9 항에 있어서,
상기 이산적인 수는 컴퓨터 메모리 디스크들의 수인, 컴퓨터 시스템에서 구현되는 방법. - 제1 항 내지 제6 항 중 어느 한 항에 있어서,
상기 백로그 증가 및 상기 백로그 볼륨에 기반하여, 상기 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 결정하는 단계는 상기 작업에 배정되는 프로세싱 자원들의 양의 변동을 초래하는 상기 결정을 평활화하는(smoothing) 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 제11 항에 있어서,
상기 결정을 평활화하는 단계는 제2 시간 기간 동안 기다리는 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 제11 항에 있어서,
상기 결정을 평활화하는 단계는 상기 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 복수의 결정들을 평균화하는 단계를 포함하는, 컴퓨터 시스템에서 구현되는 방법. - 시스템으로서,
컴퓨터 프로그램 명령들을 실행하도록 구성된 하나 또는 그 초과의 프로세서들; 및
하나 또는 그 초과의 프로세서들에 의해서 실행될 때 컴퓨터 디바이스로 하여금 동작들을 수행하게 하는 컴퓨터 프로그램 명령들이 인코딩된 컴퓨터 저장 매체들을 포함하고,
상기 동작들은:
다수의 프로세싱 자원들을 포함하는 컴퓨터 시스템에서, 데이터 스트림을 입력으로서 수신하는 작업을 실행하는 동작 ― 상기 데이터 스트림에서 데이터의 양은 비제한적임 ―;
상기 작업에 대해:
제1 시간 기간에 걸친 백로그 증가 ― 상기 백로그 증가는 상기 작업에 입력될 수신된 데이터 스트림에서 비프로세싱된 데이터의 증가의 척도이고, 상기 백로그 증가는 데이터 사이즈에 대한 변화의 측면에서 측정됨 ―,
상기 작업에 입력될 상기 수신된 데이터 스트림에서 비프로세싱된 데이터의 척도인 백로그 볼륨 ― 상기 백로그 볼륨은 데이터 사이즈의 측면에서 측정됨 ―, 및
상기 백로그 증가 및 상기 백로그 볼륨에 기반한, 상기 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 결정을
반복적으로 결정하는 동작;
상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정되는 각각의 반복에 대해, 상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작 ― 상기 프로세싱 자원들의 양을 조정하는 동작은 상기 프로세싱 자원들을 감소시킬지 여부를 결정하는 동작 및 상기 프로세싱 자원들을 감소시키기로 결정된 경우 상기 프로세싱 자원들의 배정을 얼마나 감소시킬지 결정하는 동작을 추가로 포함하고, CPU는 상기 컴퓨터 시스템이 배정된 프로세싱 자원들의 다음으로 더 낮은 레벨을 핸들링할 수 있는지 여부의 프록시로서 사용됨 ―; 및
상기 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정되는 각각의 반복에 대해, 상기 작업에 배정되는 프로세싱 자원들의 양을 유지하는 동작을 포함하고,
상기 결정의 반복에 대해:
상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟에 일치되는 것으로 결정되며;
상기 동작들은, 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟에 일치되는 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 동작을 포함하는, 시스템. - 제14 항에 있어서,
상기 결정의 반복에 대해:
상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟 미만인 것으로 결정되고;
상기 동작들은, 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 동작을 포함하며; 그리고
상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작은 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 동작을 포함하는, 시스템. - 제14 항에 있어서,
상기 결정의 반복에 대해:
상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟 초과인 것으로 결정되며;
상기 동작들은, 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 동작을 포함하며; 그리고
상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작은 상기 백로그 증가가 제로 또는 네거티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 초과인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 동작을 포함하는, 시스템. - 제14 항에 있어서,
상기 결정의 반복에 대해:
상기 백로그 증가가 포지티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟 미만인 것으로 결정되고;
상기 동작들은, 상기 백로그 증가가 포지티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되지 않도록 결정됨을 결정하는 동작을 포함하는, 시스템. - 제14 항에 있어서,
상기 결정의 반복에 대해:
상기 백로그 증가가 포지티브인 것으로 결정되고;
상기 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되고;
상기 동작들은, 상기 백로그 증가가 포지티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만이 아닌 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 동작을 포함하며; 그리고
상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작은 상기 백로그 증가가 포지티브인 것으로 결정되는 것 및 상기 백로그 볼륨이 타겟 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 증가시키는 동작을 포함하는, 시스템. - 제14 항에 있어서,
상기 데이터 사이즈의 단위들은 비트들, 바이트들, 메가바이트들, 기가바이트들, 레코드들, 및 카디널리티로 구성되는 그룹의 적어도 하나인, 시스템. - 제14 항 내지 제19 항 중 어느 한 항에 있어서,
상기 동작들은 상기 작업에 대해 프로세서 활용을 반복적으로 결정하는 동작을 더 포함하고;
상기 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 반복적으로 결정하는 동작은 상기 프로세서 활용에 추가로 기반하는, 시스템. - 제20 항에 있어서,
상기 결정의 반복에 대해:
상기 프로세서 활용은 소정 값 미만이고;
상기 동작들은, 상기 프로세서 활용이 상기 소정 값 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양이 조정되도록 결정됨을 결정하는 동작을 포함하며; 그리고
상기 작업에 배정되는 프로세싱 자원들의 양을 조정하는 동작은 상기 프로세서 활용이 상기 소정 값 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 동작을 포함하는, 시스템. - 제21 항에 있어서,
상기 프로세서 활용이 상기 소정 값 미만인 것으로 결정되는 것에 대한 응답으로 상기 작업에 배정되는 프로세싱 자원들의 양을 감소시키는 동작은 상기 작업에 배정되는 자원들의 이산적인 수를 감소시키는 동작을 포함하고,
상기 이산적인 수는 상기 프로세서 활용에 기반하는, 시스템. - 제22 항에 있어서,
상기 이산적인 수는 컴퓨터 메모리 디스크들의 수인, 시스템. - 제14 항 내지 제19 항 중 어느 한 항에 있어서,
상기 백로그 증가 및 상기 백로그 볼륨에 기반하여, 상기 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부를 결정하는 동작은 상기 작업에 배정되는 프로세싱 자원들의 양의 변동을 초래하는 상기 결정을 평활화하는(smoothing) 동작을 포함하는, 시스템. - 제24 항에 있어서,
상기 결정을 평활화하는 동작은 제2 시간 기간 동안 기다리는 동작을 포함하는, 시스템. - 제24 항에 있어서,
상기 결정을 평활화하는 동작은 상기 작업에 배정되는 프로세싱 자원들의 양을 조정할지 여부에 대한 복수의 결정들을 평균화하는 동작을 포함하는, 시스템. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662303827P | 2016-03-04 | 2016-03-04 | |
US62/303,827 | 2016-03-04 | ||
PCT/US2016/067538 WO2017151209A1 (en) | 2016-03-04 | 2016-12-19 | Resource allocation for computer processing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180085806A KR20180085806A (ko) | 2018-07-27 |
KR102003872B1 true KR102003872B1 (ko) | 2019-10-17 |
Family
ID=57799812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187020037A KR102003872B1 (ko) | 2016-03-04 | 2016-12-19 | 컴퓨터 프로세싱을 위한 자원 배정 |
Country Status (8)
Country | Link |
---|---|
US (2) | US10558501B2 (ko) |
EP (2) | EP3394753A1 (ko) |
JP (2) | JP6637186B2 (ko) |
KR (1) | KR102003872B1 (ko) |
CN (2) | CN114756341A (ko) |
AU (3) | AU2016396079B2 (ko) |
SG (1) | SG11201805281YA (ko) |
WO (1) | WO2017151209A1 (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10331481B2 (en) * | 2017-03-08 | 2019-06-25 | International Business Machines Corporation | Automatic reconfiguration of high performance computing job schedulers based on user behavior, user feedback, and job performance monitoring |
US11334391B2 (en) * | 2017-04-17 | 2022-05-17 | Red Hat, Inc. | Self-programmable and self-tunable resource scheduler for jobs in cloud computing |
US20180332367A1 (en) * | 2017-05-09 | 2018-11-15 | EMC IP Holding Company LLC | Dynamically scaling a number of stream segments that dynamically store streaming data while preserving the order of writes |
CN110019944A (zh) * | 2017-12-21 | 2019-07-16 | 飞狐信息技术(天津)有限公司 | 一种视频的推荐方法及系统 |
EP3640800A1 (fr) * | 2018-10-17 | 2020-04-22 | Bull Sas | Procédé d'amélioration de l'efficacité d'utilisation des ressources d'une infrastructure destinée a exécuter un plan d'ordonnancement |
FR3087556B1 (fr) * | 2018-10-17 | 2022-04-29 | Bull Sas | Procede d'amelioration de l'efficacite d'utlisation des ressources d'une infrastructure destinee a executer un plan d'ordonnancement |
JP7145094B2 (ja) * | 2019-02-05 | 2022-09-30 | Kddi株式会社 | 制御装置、コンピュータプログラム及び情報処理方法 |
US11366697B2 (en) * | 2019-05-01 | 2022-06-21 | EMC IP Holding Company LLC | Adaptive controller for online adaptation of resource allocation policies for iterative workloads using reinforcement learning |
US11025711B2 (en) | 2019-05-02 | 2021-06-01 | EMC IP Holding Company LLC | Data centric resource management for edge cloud systems |
US11586474B2 (en) | 2019-06-28 | 2023-02-21 | EMC IP Holding Company LLC | Adaptation of resource allocation for multiple workloads using interference effect of resource allocation of additional workloads on performance |
US11327801B2 (en) | 2019-08-29 | 2022-05-10 | EMC IP Holding Company LLC | Initialization of resource allocation for a workload characterized using a regression model |
US11113171B2 (en) | 2019-08-29 | 2021-09-07 | EMC IP Holding Company LLC | Early-convergence detection for online resource allocation policies for iterative workloads |
US20210096927A1 (en) * | 2019-09-27 | 2021-04-01 | Citrix Systems, Inc. | Auto-scaling a pool of virtual delivery agents |
US11868810B2 (en) | 2019-11-15 | 2024-01-09 | EMC IP Holding Company LLC | Resource adaptation using nonlinear relationship between system performance metric and resource usage |
CN115175747A (zh) * | 2019-12-20 | 2022-10-11 | 奈安蒂克公司 | 具有可预测查询响应时间的地理定位数据的分片存储 |
JP2021192189A (ja) * | 2020-06-05 | 2021-12-16 | 富士通株式会社 | パイプライン分割位置決定方法及びパイプライン分割位置決定プログラム |
US11650858B2 (en) | 2020-09-24 | 2023-05-16 | International Business Machines Corporation | Maintaining stream processing resource type versions in stream processing |
CN113821336B (zh) * | 2021-03-08 | 2024-04-05 | 北京京东乾石科技有限公司 | 资源分配方法和装置、存储介质、电子设备 |
US11934673B2 (en) | 2022-08-11 | 2024-03-19 | Seagate Technology Llc | Workload amplification metering and management |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254443A1 (en) * | 2011-03-30 | 2012-10-04 | International Business Machines Corporation | Information processing system, information processing apparatus, method of scaling, program, and recording medium |
WO2015165546A1 (en) * | 2014-05-01 | 2015-11-05 | Longsand Limited | Dynamically scaled web service deployments |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6591287B1 (en) * | 1999-09-08 | 2003-07-08 | Lucent Technologies Inc. | Method to increase the efficiency of job sequencing from sequential storage |
JP3884427B2 (ja) * | 2003-12-10 | 2007-02-21 | 東芝ソリューション株式会社 | 計算機システム及び資源割り当てプログラム |
US20050213507A1 (en) * | 2004-03-25 | 2005-09-29 | International Business Machines Corporation | Dynamically provisioning computer system resources |
US7660955B2 (en) * | 2005-12-01 | 2010-02-09 | International Business Machines Corporation | Node polling in consistency group formation |
US8458720B2 (en) * | 2007-08-17 | 2013-06-04 | International Business Machines Corporation | Methods and systems for assigning non-continual jobs to candidate processing nodes in a stream-oriented computer system |
KR20100035394A (ko) * | 2008-09-26 | 2010-04-05 | 삼성전자주식회사 | 멀티 프로세싱에서의 메모리 관리장치 및 그 방법 |
CN101533362A (zh) * | 2009-04-15 | 2009-09-16 | 南京联创科技股份有限公司 | 进程间cpu资源平衡调度方法 |
US8639862B2 (en) * | 2009-07-21 | 2014-01-28 | Applied Micro Circuits Corporation | System-on-chip queue status power management |
JP2011118525A (ja) * | 2009-12-01 | 2011-06-16 | Hitachi Ltd | サーバ管理装置とサーバ管理方法およびサーバ管理プログラム |
US8201820B2 (en) * | 2010-07-27 | 2012-06-19 | Foxlink Image Technology Co., Ltd. | Document feeding mechanism |
US8799916B2 (en) * | 2011-02-02 | 2014-08-05 | Hewlett-Packard Development Company, L. P. | Determining an allocation of resources for a job |
KR20120122136A (ko) * | 2011-04-28 | 2012-11-07 | 삼성전자주식회사 | 데이터 스트림 관리 시스템에서의 부하 경감을 조절하는 방법 및 장치 |
US20120296696A1 (en) * | 2011-05-17 | 2012-11-22 | International Business Machines Corporation | Sustaining engineering and maintenance using sem patterns and the seminal dashboard |
US20130060555A1 (en) * | 2011-06-10 | 2013-03-07 | Qualcomm Incorporated | System and Apparatus Modeling Processor Workloads Using Virtual Pulse Chains |
US9069606B2 (en) * | 2012-05-08 | 2015-06-30 | Adobe Systems Incorporated | Autonomous application-level auto-scaling in a cloud |
CN104023042B (zh) * | 2013-03-01 | 2017-05-24 | 清华大学 | 云平台资源调度方法 |
KR20150062634A (ko) * | 2013-11-29 | 2015-06-08 | 고려대학교 산학협력단 | 클라우드 컴퓨팅 환경 내 오토 스케일링 시스템 및 방법 |
CN104951368B (zh) * | 2014-03-28 | 2019-02-22 | 中国电信股份有限公司 | 资源动态分配装置和方法 |
US9542107B2 (en) * | 2014-06-25 | 2017-01-10 | International Business Machines Corporation | Flash copy relationship management |
US20160306416A1 (en) * | 2015-04-16 | 2016-10-20 | Intel Corporation | Apparatus and Method for Adjusting Processor Power Usage Based On Network Load |
WO2016183028A2 (en) * | 2015-05-10 | 2016-11-17 | Apl Software Inc. | Methods and architecture for enhanced computer performance |
US10044632B2 (en) * | 2016-10-20 | 2018-08-07 | Dell Products Lp | Systems and methods for adaptive credit-based flow |
-
2016
- 2016-12-19 CN CN202210267059.1A patent/CN114756341A/zh active Pending
- 2016-12-19 WO PCT/US2016/067538 patent/WO2017151209A1/en active Application Filing
- 2016-12-19 SG SG11201805281YA patent/SG11201805281YA/en unknown
- 2016-12-19 EP EP16826534.6A patent/EP3394753A1/en not_active Withdrawn
- 2016-12-19 CN CN201680078758.4A patent/CN108885561B/zh active Active
- 2016-12-19 EP EP21206839.9A patent/EP3971719A1/en not_active Withdrawn
- 2016-12-19 AU AU2016396079A patent/AU2016396079B2/en active Active
- 2016-12-19 JP JP2018536462A patent/JP6637186B2/ja active Active
- 2016-12-19 KR KR1020187020037A patent/KR102003872B1/ko active IP Right Grant
- 2016-12-30 US US15/395,225 patent/US10558501B2/en active Active
-
2019
- 2019-12-19 JP JP2019229115A patent/JP6971294B2/ja active Active
-
2020
- 2020-02-04 US US16/781,467 patent/US20200225991A1/en active Pending
- 2020-02-13 AU AU2020201056A patent/AU2020201056B2/en active Active
-
2022
- 2022-02-03 AU AU2022200716A patent/AU2022200716B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254443A1 (en) * | 2011-03-30 | 2012-10-04 | International Business Machines Corporation | Information processing system, information processing apparatus, method of scaling, program, and recording medium |
WO2015165546A1 (en) * | 2014-05-01 | 2015-11-05 | Longsand Limited | Dynamically scaled web service deployments |
Non-Patent Citations (1)
Title |
---|
Microsoft, 'Building Elastic and Resilient Cloud Applications', 2011. |
Also Published As
Publication number | Publication date |
---|---|
US10558501B2 (en) | 2020-02-11 |
EP3971719A1 (en) | 2022-03-23 |
CN108885561A (zh) | 2018-11-23 |
WO2017151209A1 (en) | 2017-09-08 |
JP6637186B2 (ja) | 2020-01-29 |
CN108885561B (zh) | 2022-04-08 |
CN114756341A (zh) | 2022-07-15 |
AU2020201056A1 (en) | 2020-03-05 |
JP2020074101A (ja) | 2020-05-14 |
AU2016396079B2 (en) | 2019-11-21 |
JP2019508795A (ja) | 2019-03-28 |
SG11201805281YA (en) | 2018-07-30 |
JP6971294B2 (ja) | 2021-11-24 |
AU2016396079A1 (en) | 2018-07-26 |
AU2022200716A1 (en) | 2022-02-24 |
AU2020201056B2 (en) | 2021-11-04 |
US20170255491A1 (en) | 2017-09-07 |
KR20180085806A (ko) | 2018-07-27 |
EP3394753A1 (en) | 2018-10-31 |
AU2022200716B2 (en) | 2023-06-01 |
US20200225991A1 (en) | 2020-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102003872B1 (ko) | 컴퓨터 프로세싱을 위한 자원 배정 | |
KR102207050B1 (ko) | 분산 컴퓨터 시스템에 전력 할당의 변화가 있을 때 중단될 수 있고 중단될 수 없는 작업들을 관리하는 방법들 및 장치 | |
US10282229B2 (en) | Asynchronous task management in an on-demand network code execution environment | |
US9952896B2 (en) | Asynchronous task management in an on-demand network code execution environment | |
US10467152B2 (en) | Dynamic cache management for in-memory data analytic platforms | |
US10204175B2 (en) | Dynamic memory tuning for in-memory data analytic platforms | |
US9612878B2 (en) | Resource allocation in job scheduling environment | |
US8972956B2 (en) | Application deployment in heterogeneous environments | |
US10382267B2 (en) | Managing servers with quality of service assurances | |
US9298508B2 (en) | Processor provisioning by a middleware processing system | |
US11150951B2 (en) | Releasable resource based preemptive scheduling | |
JP2012221273A (ja) | 動的にリソースを割り当てる方法、システム及びプログラム | |
US9317332B2 (en) | Resolving deployment conflicts in heterogeneous environments | |
US11586475B2 (en) | Application aware resource allocation for deep learning job scheduling | |
US20230281039A1 (en) | Efficient Scheduling of Build Processes Executing on Parallel Processors | |
WO2023172572A1 (en) | Efficient scheduling of build processes executing on parallel processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) |