KR20190038883A - 시뮬레이션 자원의 동적 최적화 - Google Patents

시뮬레이션 자원의 동적 최적화 Download PDF

Info

Publication number
KR20190038883A
KR20190038883A KR1020197006622A KR20197006622A KR20190038883A KR 20190038883 A KR20190038883 A KR 20190038883A KR 1020197006622 A KR1020197006622 A KR 1020197006622A KR 20197006622 A KR20197006622 A KR 20197006622A KR 20190038883 A KR20190038883 A KR 20190038883A
Authority
KR
South Korea
Prior art keywords
application
simulation
computing resource
cluster
execution
Prior art date
Application number
KR1020197006622A
Other languages
English (en)
Other versions
KR102451473B1 (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 KR20190038883A publication Critical patent/KR20190038883A/ko
Application granted granted Critical
Publication of KR102451473B1 publication Critical patent/KR102451473B1/ko

Links

Images

Classifications

    • 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/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • 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/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/147Network analysis or design for predicting network behaviour
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은 실행되고 있는 동안 시뮬레이션 작업에 할당되는 컴퓨팅 자원을 동적으로 최적화한다. 이는 애플리케이션 부과 제약을 충족시키고 시뮬레이션 작업을 수행하는 시뮬레이션 애플리케이션이 병렬 처리 또는 다른 HPC 환경에서 시뮬레이션 작업을 실행할 시에 고유한 인터-인스턴스(인터-서버를 포함함) 종속성을 해결할 수 있게 한다. 시뮬레이션 작업의 사용자와 시뮬레이션 작업이 실행되는 하드웨어 제공자 사이의, 중개자 서버 플랫폼은 하드웨어 제공자 플랫폼 상에 컴퓨팅 자원을 프로비저닝하는 클러스터 서비스, 애플리케이션 부과 제약에 따라 시뮬레이션 애플리케이션을 구성하는 애플리케이션 서비스, 재시작 파일뿐만 아니라 컴퓨팅 자원 변화 지시자(컴퓨팅 자원 이용 및 시뮬레이션 애플리케이션에 의해 발생되는 출력 파일로부터 추출되는 애플리케이션 특정 정보를 포함함)를 위해 시뮬레이션 작업의 실행을 모니터링하는 애플리케이션 모니터링 서비스, 및 컴퓨팅 자원의 변화가 보증될 때를 결정하는 컴퓨팅 자원 평가 엔진을 포함한다.

Description

시뮬레이션 자원의 동적 최적화
본 출원은 PCT 국제 특허 출원으로서 2017년 8월 10일에 출원되고 있고 2016년 8월 11일에 출원된 미국 실용신안 특허 출원 일련 번호 제15/235,004호에 대한 우선권을 주장하며, 그의 전체 개시는 전체적으로 참조로 통합된다.
기술분야
본 발명은 일반적으로 병렬 처리 환경에서 컴퓨팅 자원을 관리하는 것에 관한 것이고, 특히 시뮬레이션 또는 다른 고성능 컴퓨팅 작업과 같은, 인터-인스턴스 종속성을 갖는 작업의 실행 동안 컴퓨팅 자원을 동적으로 최적화하는 것에 관한 것이다.
하드웨어 및 소프트웨어 컴퓨팅 자원에 대한 요구가 극적인 속도로 계속 증가함에 따라, 새로운 컴퓨팅 플랫폼은 컴퓨팅 자원에의 액세스 및 컴퓨팅 자원의 관리를 비용 효과적 방식으로 제공하는 개인 및 회사에 부담하는 것을 경감시키기 위해 부분적으로 전개된다. 이러한 플랫폼을 운영하는 "하드웨어 제공자"는 고객이 그의 사용을 통해 다량의 제어를 유지하면서 물리 컴퓨팅 자원 요건을 아웃소싱할 수 있게 한다.
예를 들어, 아마존, 마이크로소프트 및 구글과 같은 회사로부터의 클라우드 컴퓨팅 플랫폼은 고객 액세스를 공유된 물리 컴퓨팅 자원에 제공한다. 이러한 컴퓨팅 자원은 하나 이상의 운영 시스템, 하나 이상의 단일 또는 멀티 코어 CPU, 네트워크 상호연결성 하드웨어(예를 들어, 이더넷 컨트롤러) 및 가변 양의 메모리(예를 들어, RAM 및 비휘발성 메모리)를 가진 서버 및 외부 하드 디스크 및 플래시 어레이를 포함하는 영구 스토리지(예를 들어, 하드 디스크 및 플래시 드라이브)를 포함한다. 각각의 하드웨어 제공자는 전형적으로 플랫폼 상의 애플리케이션의 실행을 위해 여러가지 상이한 서버 "타입"에 컴퓨팅 자원의 상이한 구성을 제공한다.
이들 하드웨어 제공자는 종종 고객이 각각의 고객 요청에 할당되는 한 세트의 가상 컴퓨팅 자원(예를 들어, "가상 머신")을 지정할 수 있게 하기 위해 가상화를 이용한다. 특정 하드웨어 제공자는 유사한 서비스를 제공하지만, 고객이 다른 고객과 공유되지 않는 전용 물리 하드웨어를 지정할 수 있게 한다. 이러한 "베어 메탈" 서비스는 시뮬레이션 및 다른 고성능 컴퓨팅(HPC) 환경에서 발견되는 것과 같은, 특히 CPU 집약적인 작업을 위한 향상된 성능을 제공할 수 있다.
가상 및/또는 베어 메탈 서비스를 제공하든지, 하드웨어 제공자는 고객이 지정된 컴퓨팅 자원을 사용하는 동안의 시간에 대해서만 지불하는 주문형 "페이-퍼-유스(pay-per-use)" 모델을 (정기적 매월 또는 매년 임대 또는 "가입" 모델 대신에 또는 이 모델에 더하여) 자주 제공한다. 이러한 자원의 효율적 사용은 하드웨어 제공자(고객의 베이스에 걸쳐 유한 물리 컴퓨팅 자원을 효율적으로 전개함으로써 값을 최대화함) 및 그의 고객(예를 들어, 지정된 작업을 더 빠르게 완료하는 시간 절약 혜택에 대해 덜 강력한 컴퓨팅 자원을 프로비저닝하는 비용 절약 혜택을 밸런싱함으로써 값을 최적화함) 둘 다에 중요하다.
하드웨어 제공자는 다수의 고객의 중복 요구에 걸쳐 유한 물리 컴퓨팅 자원의 사용법을 할당할 시에 "로드 밸런싱" 문제에 직면한다. 다양한 "동적 프로비저닝" 접근법은 상이한 이용 가능 물리 서버 및 연관된 컴퓨팅 자원(메모리, 스토리지, 네트워크 대역폭 등) 중에 각각의 고객에 의해 지정되는 컴퓨팅 자원을 재할당하기 위해 이용되었다 - 예를 들어, 미국 특허 제9,009,294호를 참조한다. 그러나, 이러한 로드 밸런싱 접근법은, 작업의 컴퓨팅 자원 요건이 동적으로 - 즉, 작업의 실행 동안 변화되는 시나리오를 적절히 처리하지 못한다. 이러한 시나리오에서, 상이한 물리 서버 중에 작업의 컴퓨팅 자원을 재할당하는 것이 충분하지 않을 뿐이다. 다른 메커니즘은 작업의 실행 동안의 다양한 지점에서, 이러한 작업에 컴퓨팅 자원의 준최적 할당에 의해 제기되는 문제를 식별하고 처리하도록 요구된다.
하드웨어 제공자가 컴퓨팅 자원의 작업의 현재 사용법(예를 들어, CPU, RAM, 스토리지, 네트워크 대역폭 등의 이용 퍼센티지)을 모니터링할 수 있지만, 이러한 "컴퓨팅 자원 이용" 정보는 단독으로 작업의 최적 "장래" 자원 요건을 결정하는 데 불충분하다. 이러한 장래 예측 또는 예상을 하는 것은 애플리케이션이 실행되는 것 및 작업의 특정 기능성이 구현되는 것에 관한 내부 "애플리케이션 특정" 정보에의 액세스를 요구할 것이다.
이러한 문제에 대한 하나의 현재 접근법은 아마존의 "EC2 오토 스케일링" 서비스에 의해 예시되며, 그것은 고객이 현재 요청에 할당되는 "아마존 EC2 인스턴스"(즉, 특정 타입의 가상 서버)의 수를 증가시키고/증가시키거나 감소시킬 때를 동적으로 결정하는 조건을 정의할 수 있게 한다. 병렬 처리 환경에서 별개의 CPU 코어 상에 실행하는 애플리케이션의 다수의 "인스턴스"와 혼동되지 않기 위해, 아마존 EC2 인스턴스는 컴퓨팅 자원(CPU 코어, 메모리, 스토리지, 네트워크 대역폭 등)의 지정된 구성을 갖는 가상 머신 또는 가상 서버이다. 고객 지정 조건이 충족될 때, EC2 인스턴스의 수는 고객 지정 양만큼 증가되거나 감소된다.
예를 들어, 외부 클라이언트 웹 브라우저로부터의 다수의 HTTP 요청을 시간에 따라 처리하는 웹 서버 애플리케이션을 고려한다. 아마존의 고객(예를 들어, 웹사이트의 소유자)은 아마존이 4개의 EC2 인스턴스를 프로비저닝하는 것을 초기에 요청할 수 있으며, 각각의 EC2 인스턴스는 8 코어 CPU, 32GB의 RAM, 160GB의 스토리지 및 10GB 이더넷 연결을 가진 가상 서버이다. 웹 서버 애플리케이션의 인스턴스는 32 코어 각각 상에 실행될 수 있고, 각각의 코어는 다양한 웹 브라우저로부터의 수백 또는 수천의 외부 HTTP 요청을 매초 취급할 수 있다.
외부 클라이언트 웹 브라우저 요청의 수가 증가하거나 감소함에 따라, 고객은 EC2 인스턴스의 수를 적절히 증가시키거나 감소시키는 것을 원할 수 있으며, "최적의" 양의 컴퓨팅 자원을 시간에 따라 프로비저닝하려고 시도한다. 예를 들어, 고객은 모든 현재 EC2 인스턴스에 걸친 초 당 외부 HTTP 요청의 수가 미리 정의된 임계치를 초과할 때 8개의 부가 EC2 인스턴스의 프로비저닝을 트리거링하는 EC2 오토 스케일링 조건을 지정할 수 있다. 역으로, 다른 조건은 HTTP 요청의 수가 더 낮은 미리 결정된 임계치를 하회할 때 기존 EC2 인스턴스의 종결을 트리거링할 수 있다.
EC2 인스턴스가 제거될 때, 이러한 EC2 인스턴스의 각각의 CPU 코어를 실행하는 애플리케이션 인스턴스가 종결된다는 점이 주목되어야 한다. 유사하게, EC2 인스턴스가 추가될 때, 새로운 애플리케이션 인스턴스는 이러한 추가된 EC2 인스턴스 각각의 각각의 CPU 코어 상에 설치되고 실행된다. 그럼에도 불구하고, 이들 변화는 자동적으로, 고객의 개입 없이, 그리고 모든 작업의 현재 진행을 완전히 "다시 시작"하고 상실하는 것 없이 발생하기 때문에 "애플리케이션이 실행되고 있는 동안" 발생한다고 할 수 있다.
외부 HTTP 요청이 일반적으로 서로 독립적이기 때문에, HTTP 프로토콜의 무상태 본질로 인해, 웹 서버 애플리케이션에 의해 수행되는 작업은 다수의 CPU 코어 각각 상에 유사한 독립적 "하위 작업"(예를 들어, 외부 HTTP 요청)을 동시에 실행함으로써 병렬 처리로부터 혜택을 얻는다. 더욱이, 장래 하위 작업 계산이 일반적으로 이러한 계산 전에 의존하지 않기 때문에(또한 HTTP 프로토콜의 무상태 본질로 인해), 웹 서버 애플리케이션은 또한 컴퓨팅 자원의 동적 변화(예를 들어, EC2 인스턴스의 추가 또는 제거)로부터 상대적으로 면제되어, 웹 서버 애플리케이션을 아마존의 EC2 오토 스케일링 서비스에 대한 이상적 후보로 한다.
그러나, 이러한 종속성이 존재하는 정도까지, 고객은 그것을 식별하고 처리해야 한다. 어떤 이러한 메커니즘도 애플리케이션이 실행되는 것 및 작업의 특정 기능성이 구현되는 것에 관한 내부 애플리케이션 특정 정보에 대한 지식을 갖지 않으므로, 아마존의 EC2 오토 스케일링 서비스에 의해 제공되지 않는다.
예를 들어, 웹 서버 애플리케이션이 다수의 관련 형태를 포함하는 웹페이지 내에서 다수의 외부 HTTP 요청을 취급하면, 이들 관련 형태에 관한 특정 후속 하위 작업 계산은 이전 계산에 의존할 수 있다(예를 들어, 하나의 형태에서의 필드의 값은 다른 형태에서의 필드의 값에 의존함). 따라서, EC2 인스턴스의 종결의 경우에, 고객은 - 예를 들어, 이러한 결과에 의존하는 후속 계산을 수행하는 다른 EC2 인스턴스에 의한 사용을 위한 관련 이전 계산의 결과를 저장함으로써 이러한 종속성을 검출하고 그것을 처리하도록 요구될 것이다. 유사하게, 추가된 EC2 인스턴스의 경우에, 고객은 새롭게 추가된 EC2 인스턴스에 의해 수행되는 후속 계산이 의존적인 임의의 이전 계산의 결과를 획득하는 것을 인식하는 것을 보장하도록 요구될 것이다.
병렬 처리를 위해 구체적으로 설계되는 애플리케이션은 이러한 종속성을 처리하는 메커니즘을 포함할 수 있지만, 그것은 전형적으로 적어도 서브세트의 프로비저닝된 컴퓨팅 자원의 "지식"(예를 들어, CPU 코어의 수)을 가지고 사전 구성되어야 하여, 애플리케이션이 실행되고 있는 동안 이러한 컴퓨팅 자원을 수정하는 것을 어렵게 한다. 아마존의 EC2 오토 스케일링 서비스는 EC2 인스턴스 간의 통신을 위해 - 예를 들어, 동일하거나 다른 EC2 인스턴스 상에 있든지, 실행 애플리케이션에 부가 CPU 코어가 이용 가능한 것을 통지하기 위해 어떠한 내장 메커니즘도 갖지 않는다.
그 결과, 이러한 EC2 오토 스케일링 접근법에 대한 중요한 제한이 있다. 하나의 문제는 변화의 본질(예를 들어, 조건이 충족되면 추가되거나 제거되는 EC2 인스턴스의 수)뿐만 아니라, 컴퓨팅 자원의 변화가 요구되는 조건을 고객이 지정해야 한다는 것이다. 더욱이, 효과적이기 위해, 이러한 조건은 예측적이고, 단지 반응적이지 않아야 한다. 예를 들어, 외부 HTTP 요청이 임의의 주어진 시간에 미리 정의된 임계치를 초과한다는 사실은 심지어 가까운 장래로, 연속되는 트래픽 패턴을 반영할 수 있거나 반영하지 않을 수 있다.
훨씬 더 중요하게, 고객은 컴퓨팅 자원의 이러한 동적 변화의 중요성을 관리하기 위해 "인터-인스턴스"("인터-서버"를 포함함) 종속성을 처리하도록 남겨진다. 위에 언급된 바와 같이, 많은 애플리케이션은 - 전형적으로 별개의 CPU 코어 상에 애플리케이션의 다수의 인스턴스를 동시에 실행함으로써 중간 계산을 병렬로 수행할 수 있는 독립적 하위 작업의 존재로 인해 병렬 처리로부터 혜택을 얻는 작업을 구현한다. 그러나, 이들 애플리케이션은 종종 하나의 CPU 코어 상의 애플리케이션의 하나의 인스턴스에 의해 수행되는 후속 계산이 이들 중간 계산의 결과에 의존하는 인터-인스턴스 종속성을 나타낸다(동일하거나 다른 CPU 코어 상에, 또는 심지어 물리 또는 가상 서버에 걸쳐, 인터-서버 종속성을 야기함).
이들 인터-인스턴스 종속성의 프레즌스(presence)는 실행되고 있는 동안 작업에 할당되는 컴퓨팅 자원을 수정하도록 시도하는 고객에 상당한 부담을 부과한다. 위에 언급된 바와 같이, 애플리케이션이 병렬 처리를 위해 설계되고, 이러한 인터-인스턴스 종속성을 처리하는 메커니즘을 포함하지만, 고객에게는 실행 애플리케이션에 특정 컴퓨팅 자원이 변화되었던 것 - 예를 들어, 특정 CPU 코어가 추가되거나 제거되었던 것을 통지하는 문제가 여전히 남는다. 이러한 메커니즘도 현재 존재하지 않는다.
시뮬레이션 애플리케이션(다른 HPC 애플리케이션뿐만 아니라)은 전형적으로 제시간에 중복되지만 서로 의존하지 않고 따라서 병렬로 수행될 수 있는 많은 유사한 하위 작업 계산을 수반하기 때문에 병렬 처리 환경으로부터 혜택을 얻는 애플리케이션의 주요 예이다. 또한, 시뮬레이션의 과정 동안의 후속 계산은 종종 이들 이전 중간 하위 작업 계산의 결과에 의존하기 때문에(즉, 인터-인스턴스 종속성의 존재로 인해), 시뮬레이션 애플리케이션은 병렬 처리 환경에서 적절히 기능하기 위해 이들 인터-인스턴스 종속성을 처리해야 한다.
시뮬레이션 애플리케이션은 또한 인터-인스턴스 종속성을 처리하기 위한 메커니즘을 제공하는 동안 - 예를 들어, 이러한 이전 결과에 의존하는 후속 하위 작업을 수행하는 CPU 코어 및 서버 중에 중간 계산의 결과를 통신함으로써 독립적 하위 작업의 병렬 처리를 용이하게 하도록 설계된다. 또한, 이러한 통신을 구현하기 위해, 시뮬레이션 애플리케이션은 최소 양의 RAM 또는 네트워크 대역폭을 가정하는 것, 또는 고객의 시뮬레이션 데이터 "모델"의 특정 특성에 기초하여 특정 수의 CPU 코어로 사전 구성되는 것과 같은, 시뮬레이션 작업에 특정 제약을 부과한다.
다시 말해, 시뮬레이션 애플리케이션은 실행되는 적어도 한 서브세트의 컴퓨팅 자원의 진보 지식을 (사전 구성을 통해) 가정하여, 시뮬레이션 애플리케이션이 실행되고 있는 동안 이러한 컴퓨팅 자원을 수정하려고 시도하는 고객을 위한 도전을 제공한다. 이러한 도전을 더 잘 이해하기 위해, 그것은 시뮬레이션 애플리케이션이 어떻게 특정 인터-인스턴스 종속성을 처리하고 그 자체의 "애플리케이션 부과 제약"의 경계 내에 컴퓨팅 자원을 이용하는지를 이해하는 데 도움이 된다.
시뮬레이션 애플리케이션은 광범위한 과학적 및 엔지니어링 규율 내에 특정 실세계 또는 추상 시스템의 거동을 나타내도록 설계되는 고객 제공 데이터 "모델"을 이용하는 기본 알고리즘을 구현한다. 환경을 포함하는, 모델링되는 시스템은, 전형적으로 별개의 구성요소 또는 "셀"(때때로 시뮬레이션 규율에 따라, "요소", "입자", "분자" 등으로 언급됨)로 분할된다. 이들 구성요소 셀은 다양한 변화를 시간에 따라 겪는 특정 성질(길이, 밀도, 온도, 압력 등)을 갖는다. 심지어 어떠한 실세계 또는 물리 대응물(예를 들어, 롤 플레잉 애플리케이션)도 갖지 않는 시스템은 다양한 추상 성질(예를 들어, 심리적 거동, 감정, 행동 등)을 나타내는 구성요소 셀로 분할될 수 있다.
프런트 범퍼를 설계하는 자동차 제조자는 고체 벽으로 자동차 충돌의 효과를 모델링하기 위해 시뮬레이션 소프트웨어를 이용할 수 있다. 벽에 직접 영향을 주는 프런트 범퍼의 개별 셀의 성질에 관한 영향의 효과는 이러한 계산이 서로 독립적인 정도까지(예를 들어, 다수의 CPU 코어 상에 시뮬레이션 애플리케이션을 동시에 실행함으로써) 병렬로 초기에 계산될 수 있다. 그러나, 시간에 따라 이웃 셀에 영향을 주는 간접 효과는 이들 초기 계산의 결과에 의존하며, 따라서 인터-인스턴스 종속성(인터-서버 종속성을 포함함)을 야기한다.
유사하게, 비행기 설계자는 날개 자체를 나타낼 뿐만 아니라, 비행 동안 날개의 표면을 둘러싸는 공기를 나타내기 위해 다수의 개별 셀을 이용함으로써 비행기 날개 상에 난류의 효과를 시뮬레이션할 수 있다. 시뮬레이션 애플리케이션이 이의 환경에서 비행 시에 비행기의 모델을 "실행"할 때, 모델에 의해 부과되는 규칙 또는 제약에 따라 셀의 성질에 대한 이들 변화를 계산한다.
시뮬레이션의 실행이 진행됨에 따라, 시뮬레이션 애플리케이션(또한 고객의 모델에 따름)은 개별 셀을 다수의 셀로 분할하거나(예를 들어, 구성요소 셀 간에 더 상세한 상호작용을 처리하기 위해), 다수의 셀을 단일 셀로 함께 역으로 조합할 수 있다. 셀의 수의 이러한 수정은 컴퓨팅 자원의 시뮬레이션 애플리케이션의 사용의 효율에 영향을 준다는 점이 주목되어야 한다. 예를 들어, 시뮬레이션의 실행 동안의 임의의 주어진 시점에, 제시간에 - (시간 및 비용과 같은, 여러가지 다른 인자에 대한 "전반적 최적화"뿐만 아니라) 최대 병렬성에 대한 요구와 CPU 코어 간의 인터-인스턴스 통신에 의해 부과되는 오버헤드 간의 밸런스에 기초하여 "코어 당 셀"의 수가 존재할 수 있다. 따라서, 임의의 주어진 시점에 셀의 수의 변화는 제시간에 실제 지정된 컴퓨팅 자원을 더 많거나 더 적게 "최적으로" 할 수 있다.
특히 병렬 처리 및 다른 HPC 환경에서, 요구되는 것은, 고객이 이러한 변화의 본질뿐만 아니라, 이러한 컴퓨팅 자원의 변화를 보증하는 조건을 결정할 책임으로부터 자유로운 동안, 특정 작업에 할당되는 컴퓨팅 자원을 동적으로 최적화하기 위한 메커니즘 및 프로세스이다. 이러한 메커니즘 및 프로세스는 또한 애플리케이션이 이러한 변화에 영향을 받는 인터-서버 및 다른 인터-인스턴스 종속성을 처리할 수 있게 하는 애플리케이션 부과 제약을 자동적으로 고수해야 한다.
본 발명은, 예를 들어 고객이 특정 작업에 대해, 이러한 작업의 실행 동안 제시간에 다양한 시점에 요구되는 최적의 컴퓨팅 자원을 결정하는 것을 제거하는 중개자 서버 플랫폼을 제공함으로써, 위에 언급된 결함을 처리하기 위한 시스템 및 방법의 구현예를 포함한다. 본 발명은 병렬 처리 및 다른 HPC 환경으로부터 혜택을 얻는 다양한 타입의 애플리케이션에 적용될 수 있지만, 본원에 논의되는 구현예는 예시적 목적을 위해 과학적 및 엔지니어링 시뮬레이션의 영역에 집중한다.
그러나, 후속 계산이 이전 하위 작업 계산의 결과에 종속성을 갖는 독립적 하위 작업을 수반하는 임의의 적용은 본 발명의 혜택을 달성할 수 있다. 더욱이, 특정 하드웨어 및 소프트웨어 구현예가 아래에 설명되지만, 본 발명의 다양한 구성요소의 기능성은 본 발명의 사상으로부터 벗어나는 것 없이, 다른 별개의 구성요소로 조합되거나 분할되고, 하드웨어 또는 소프트웨어로 구현될 수 있다.
일 구현예에서, "시뮬레이션 서버 플랫폼"은 모델의 시뮬레이션을 실행하기 원하는 최종 사용자 고객과 특정 시뮬레이션 애플리케이션이 사용자 시뮬레이션을 실행하는 물리 컴퓨팅 자원의 하드웨어 제공자 간의 중개자로서 (예를 들어, 인터넷, 또는 다른 네트워크 연결을 통해) 제공된다. 이러한 구현예에서, 시뮬레이션 서버 플랫폼은 하나 이상의 하드웨어 제공자의 "고객"의 역할을 하는 반면에, 최종 사용자는 시뮬레이션 서버 플랫폼의 "고객"이다. 각각의 시뮬레이션 애플리케이션의 소유자는 직접적으로, 또는 간접적으로 시뮬레이션 서버 플랫폼의 소유자를 통해(또는 심지어 하드웨어 제공자 플랫폼의 소유자를 통해) 사용자에게 그것의 애플리케이션을 허가할 수 있다.
예를 들어, 최종 사용자는 시뮬레이션 서버 플랫폼과 인터넷을 통해 연결을 설정하고, 원하는 시뮬레이션 애플리케이션을 지정하고, 그의 시뮬레이션 데이터 모델 및 다른 관련 입력 파라미터 및 데이터 파일을 제공한다. 일 구현예에서, 사용자는 또한 원하는 초기 세트의 컴퓨팅 자원을 선택하는 반면에, 다른 구현예에서, 시뮬레이션 서버 플랫폼은 사용자에 의해 제공되는 정보의 분석에 기초하여 이러한 초기 결정을 한다.
어느 하나의 경우에, 시뮬레이션 서버 플랫폼은 하나 이상의 하드웨어 제공자와 인터넷을 통해 연결을 설정하고, 초기 세트의 컴퓨팅 자원 - 즉, 각각의 하드웨어 제공자에 의해 제공되는 이용 가능 컴퓨팅 자원 타입 중에서의 물리 또는 가상 서버의 "클러스터"를 프로비저닝한다. 시뮬레이션 서버 플랫폼은 다른 관련 소프트웨어 및 데이터와 함께, 사용자의 시뮬레이션 모델을 포함하는, 프로비저닝된 클러스터(예를 들어, 각각의 CPU 코어 상의 시뮬레이션 애플리케이션의 인스턴스를 포함함) 상에 적절한 시뮬레이션 애플리케이션을 설치하고, 그 다음 시뮬레이션 작업의 실행을 개시한다. 이러한 시뮬레이션이 모델링되거나 시뮬레이션되는 실세계 또는 추상 "시스템"에서 훨씬 더 짧은 기간을 시뮬레이션하는 동안, 몇 시간, 며칠 또는 심지어 몇 주 동안 실행할 수 있다는 점을 주목한다(예를 들어, 15초 자동차 충돌은 시뮬레이션하는 데 3주가 걸릴 수 있음).
아래에 더 상세히 논의되는 바와 같이, 시뮬레이션 서버 플랫폼은 또한 일 구현예에서, 시뮬레이션이 소프트웨어 컴퓨팅 자원뿐만 아니라 특정 프로비저닝된 하드웨어 상에 실행되는 동안, 시간을 모니터링하는 "미터링" 기능을 수행한다. 이는 시뮬레이션 서버 플랫폼의 소유자가 시뮬레이션 애플리케이션의 하드웨어 제공자 및 공급자에 의해 설정되는(및 시뮬레이션 서버 플랫폼의 소유자에게 청구되는) 것으로부터 변경되는 사용자 가격책정 모델을 제공할 수 있게 한다.
예를 들어, 하드웨어 미터링에 대해, 3시간 동안 실행하는 시뮬레이션은 각각 특정 프로비저닝된 하드웨어 자원의 비용에 기초하여 가격책정 계산을 가능하게 할 것이다. 예를 들어, 8 GB의 RAM(및 CPU 코어에 대해 $0.10 및 8 GB의 RAM에 대해 $0.05의 "코어 시간 당 가격")을 가진 16 코어 서버는 CPU 코어 및 RAM만을 고려하여, 3시간 시뮬레이션($4.80의 CPU 가격 및 $2.40의 RAM 가격에 대해 48 코어 시간)에 대해 $7.00의 가격을 초래할 것이다. 하드웨어 제공자가 전형적으로 특정 가상 서버 타입에 대한 가격책정을 제공하지만, 중개자 시뮬레이션 서버 플랫폼의 사용은 선택된 하드웨어 제공자에 의해 제공되는 것 - 예를 들어, 물리 또는 가상 서버 기초에 관한 가격책정과 대조적으로, 개별 컴퓨팅 자원(예를 들어, RAM, 네트워크 대역폭 등)에 대한 상이한 "코어 시간" 또는 다른 가격책정뿐만 아니라, 주문형 또는 낮은 우선순위 가격책정을 모방할 수 있거나 모방하지 않을 수 있는 고객 가격책정 모델의 넓은 변화를 가능하게 한다.
더욱이, 본 발명이 시뮬레이션 작업에 할당되는 지정된 컴퓨팅 자원의 수정을 가능하게 하는 것을 고려하면, 본 발명의 하드웨어 미터링 기능성은 시뮬레이션 작업의 실행 동안 프로비저닝되는 각각의 세트의 컴퓨팅 자원에 할당되는 시간(및 연관된 가격책정)을 모니터링한다.
유사하게, 소프트웨어 미터링에 대해, 시뮬레이션 서버 플랫폼은 특정 시뮬레이션 애플리케이션(및, 일 구현예에서, 그것의 각각의 구성요소)가 실행되는 동안의 시간을 모니터링한다. 일부 시뮬레이션 애플리케이션 공급자가 미터링된 소프트웨어 가격책정 모델을 이용하지만, 다른 것은 가입, 시트당, 동시 사용자, 또는 다른 가격책정 모델을 이용할 수 있다. 어떤 경우에, 본 발명의 소프트웨어 미터링 기능성은 여러가지 상이한 가격책정 모델을 상이한 사용자 또는 사용자의 그룹에 제공할 시에 유연성을 용이하게 한다.
더욱이, 일 구현예에서, 상이한 세트의 컴퓨팅 자원이 시간에 따라 시뮬레이션 작업에 프로비저닝될 때, 상이한 소프트웨어 가격책정 모델이 이용된다. 본 발명의 소프트웨어 미터링 기능성은 단일 시뮬레이션 작업의 실행의 과정 동안 실행하는 상이한 시뮬레이션 애플리케이션(및 그것의 특정 구성요소)에 할당되는 시간의 모니터링을 가능하게 한다.
시뮬레이션 서버 플랫폼은 또한 특정 시뮬레이션 애플리케이션 및 구성요소 특징에 대해 사용자의 인증을 위한 중개자의 역할을 한다. 일 구현예에서, 시뮬레이션 서버 플랫폼은, 예를 들어 사용자, 시뮬레이션 애플리케이션 제공자, 하나 이상의 하드웨어 제공자의 구내, 또는 심지어 시뮬레이션 서버 플랫폼(그 자체가 하드웨어 제공자의 물리 하드웨어 상에 전개될 수 있음) 상에 직접 포함하는, 여러가지 상이한 물리 위치에 전개될 수 있는 소프트웨어 "라이센스 서버"와 통신한다.
개별 시뮬레이션 작업에 할당되는 컴퓨팅 자원의 동적 수정을 용이하게 하기 위해, 시뮬레이션 서버 플랫폼은 일 구현예에서, 사용자의 시뮬레이션 작업(즉, 사용자의 시뮬레이션 데이터 모델을 실행하는 시뮬레이션 애플리케이션)을 실행하기 위한 하드웨어 제공자 플랫폼 상에 컴퓨팅 자원의 클러스터를 프로비저닝하는 "클러스터 서비스"를 포함한다. 일 구현예에서, 클러스터는 CPU 코어, RAM, 스토리지, 네트워크 대역폭 등의 특정 구성을 갖는, 하드웨어 제공자에 의해 제공되는 선택된 타입의 가상 서버의 하나 이상의 가상 서버를 포함한다.
위에 언급된 바와 같이, 시뮬레이션 애플리케이션은 병렬 처리 환경에서 클러스터 상에 실행되도록 설계되며, 시뮬레이션 애플리케이션의 개별 인스턴스는 별개의 CPU 코어 상에 병렬로 실행되고, 독립적 하위 작업 계산을 동시에 수행한다. 더욱이, 시뮬레이션 애플리케이션은 인터-인스턴스(인터-서버를 포함함) 종속성을 처리하며, 시뮬레이션 애플리케이션의 하나의 인스턴스에 의해 수행되는 후속 하위 작업 계산은 동일하거나 다른 인스턴스에 의해 수행되는 이전 하위 작업 계산의 결과(즉, CPU 코어에 걸쳐, 그리고 일부 경우에, 가상 서버에 걸쳐) 의존한다.
시뮬레이션 서버 플랫폼은 또한 일 구현예에서, 다양한 사용자 지정 입력 파라미터, 사용자의 시뮬레이션 모델, 요구된 서브세트의 지정된 컴퓨팅 자원(예를 들어, CPU 코어의 수) 및 다른 관련 소프트웨어, 입력 파라미터 및 데이터 파일을 가진 시뮬레이션 애플리케이션을 구성하는 "시뮬레이션 서비스"를 포함한다. 위에 언급된 바와 같이, 클러스터에 지정되는 컴퓨팅 자원은 시뮬레이션 애플리케이션(예를 들어, 최소 양의 RAM)에 부과되는 임의의 제약을 고수해야 하지만, 지정되도록 요구되지 않는다.
이러한 구현예에서, 시뮬레이션 서비스는 아래에 더 상세히 설명되는 본 발명의 다른 구성요소에 고유한 다른 소프트웨어뿐만 아니라, 각각의 CPU 코어 상의 시뮬레이션 애플리케이션의 인스턴스를 포함하는, 클러스터에 모든 관련 소프트웨어 및 데이터를 설치한다. 최종적으로, 시뮬레이션 서비스는 클러스터에서의 각각의 가상 서버 내에 각각의 CPU 코어 상의 시뮬레이션 애플리케이션의 각각의 인스턴스의 실행을 개시한다.
시뮬레이션 서버 플랫폼은, 일 구현예에서, 클러스터 내의 컴퓨팅 자원의 시뮬레이션 애플리케이션의 사용과 관련되고, 변화가 시뮬레이션 애플리케이션에 할당되는 현재 컴퓨팅 자원에서 보증되는지 및 보증될 때를 결정하기 위해 연속적으로 본 발명에 의해 이용되는 정보뿐만 아니라, 이러한 변화(예를 들어, 충분한 수의 부가 CPU 코어를 가진 상이한 타입의 가상 서버)의 본질을 제공하는 다양한 "자원 변화 지시자"를 시간에 따라 동적으로 모니터링하는 시뮬레이션 모니터링 서비스를 더 포함한다.
아래에 더 상세히 설명되는 바와 같이, 이러한 자원 변화 지시자는, 일 구현예에서, 클러스터 내의 현재 컴퓨팅 자원의 시뮬레이션 애플리케이션의 사용이 특정 미리 정의된 목표를 충족시키는 정도를 반영하고, 시뮬레이션 애플리케이션의 장래 컴퓨팅 자원 요건의 예측을 용이하게 하는 "컴퓨팅 자원 이용" 정보(시뮬레이션 애플리케이션의 인스턴스에 의한 특정 컴퓨팅 자원의 현재 이용의 퍼센티지와 같음) 및 "애플리케이션 특정" 정보(특정 시뮬레이션 애플리케이션 작업이 모니터링되는 것에 관함) 둘 다를 포함한다.
게다가, 일 구현예에서, 시뮬레이션 모니터링 서비스는 아래에 더 상세히 논의되는 바와 같이, 각각의 컴퓨팅 자원에 대해 시간에 따라 컴퓨팅 자원 이용 및 애플리케이션 특정 정보를 모니터링하고 저장하여, 이력 트렌드는 분별될 수 있다. 예를 들어, 주어진 시점에, 제시간에 시뮬레이션 모니터링 서비스는 지정된 클러스터 내에 CPU, RAM, 스토리지 및 네트워크 대역폭 자원의 시뮬레이션 작업의 이용을 모니터링한다. 특정 가상 서버 상의 CPU 코어는 현재 58% CPU 이용을 나타낼 수 있는 반면에, 78%의 이용 가능 RAM은 사용되고 있을 수 있다.
개별적으로 취해지는 이러한 현재 및 이력 정보는 특정 지정된 컴퓨팅 자원의 증가 또는 감소에 대한 요구를 (예를 들어, 미리 정의된 임계치에 기초하여) 제안할 수 있다. 다른 구현예에서, 더 많은 전체(및 심지어 예측) 분석은 컴퓨팅 자원 이용 및 애플리케이션 특정 정보 둘 다를 전체로서 고려하는 규칙 기반 또는 머신 러닝 엔진에 의해 용이하게 된다.
자원 변화 지시자는 또한 특정 시뮬레이션 애플리케이션 작업이 모니터링되는 것에 관한 애플리케이션 특정 정보를 포함한다. 예를 들어, 시뮬레이션이 진행됨에 따라, 시뮬레이션 애플리케이션은 컴퓨팅 자원의 변화가 보증되는지를 추론할 수 있는 정보를 추출하기 위해 시뮬레이션 모니터링 서비스에 의해 파싱되는 "출력 파일"에 다양한 데이터를 기록한다.
이러한 시뮬레이션 애플리케이션은 본 발명에 의해 이용되는 것과 전적으로 상이한 목적을 위해 데이터를 출력 파일에 기록한다는 점이 주목되어야 한다. 이러한 정보는 여러가지 상이한 이유로 사용자에 의한(아마도 분석 도구의 지원에 의한) 수동 분석을 위해 의도된다. 예를 들어, 사용자는 시뮬레이션을 수리하고 출력 파일 내의 정보로부터, 시뮬레이션을 정지시키는 것, 및 아마도 문제가 해결되었다면 장래 시간에 재실행하는 것 - 예를 들어, 시뮬레이션 모델에서 버그를 정정하는 것을 보증하는 에러가 발생했는지를 결정할 수 있다. 다른 시나리오에서, 사용자는 시뮬레이션의 효율을 평가하기 위해 이러한 정보를 분석하고, 아마도 장래 시뮬레이션이 경과된 시간의 더 짧은 양으로 실행하거나, 더 적은 컴퓨팅 자원을 이용하거나, 그렇지 않으면 사용자가 소망하는 어떤 원하는 계약을 충족시키도록 모델 또는 입력 데이터에 대한 변화를 이룰 수 있다.
어떤 경우에, 일 구현예에서, 시뮬레이션 모니터링 서비스는 잠재적 장래 컴퓨팅 자원 요건(장래 컴퓨팅 자원 이용의 예측을 포함함)뿐만 아니라, 현재 컴퓨팅 자원의 시뮬레이션 애플리케이션의 사용의 효율에 대해 귀중한 통찰력을 제공하는 정보에 대한 출력 파일을 파싱한다. 본 발명은 단일 고정 세트의 컴퓨팅 자원이 전체 시뮬레이션 작업의 실행 도처에서 최적인 "사회적 통념"에 도전한다는 점이 강조되어야 한다. 여러가지 상이한 타입의 정보는 컴퓨팅 자원의 변화가 보증될 때뿐만 아니라, 이러한 변화의 본질 및 정도의 이러한 분석 및 결정을 용이하게 하기 위해 출력 파일로부터 추출된다.
예를 들어, 위에 언급된 바와 같이, 시뮬레이션 애플리케이션은 때때로 셀을 다수의 셀로 분할하거나, 다수의 셀을 단일 셀로 조합할 수 있으며, 그에 의해 지정된 코어 당 셀 비율을 변경하고 아마도 더 많거나 더 적은 CPU 코어 - 또는 적어도 셀의 수의 장래 예측으로의 팩토링 또는 다른 관련 인자에 대한 요구를 제안한다. 출력 파일에서 발견되거나 출력 파일로부터 추론되는 다른 정보는 디스크 I/O 동작과 관련된다. 예를 들어, 시간에 따라 디스크 I/O 동작의 증가는 인터-인스턴스 또는 인터-서버 통신의 불균형을 제안하며, 가능하게는 이러한 증가가 특정 비율로 연속되도록 예측되면 CPU 코어 당 더 많은 RAM에 대한 요구를 제안할 수 있다. 다른 시나리오에서, 특정 계산의 결과는 예를 들어, 시뮬레이션의 자원 집약 위상(예를 들어, 연소 사이클)이 시작된 것을 제안할 수 있다.
또한 위에 언급된 바와 같이, 시뮬레이션 애플리케이션 자체는 특정 컴퓨팅 자원 제약을 부과하며, 그것은 또한 시뮬레이션 애플리케이션에 할당되는 컴퓨팅 자원을 수정하기 전에 고려되어야 한다. 이들 "애플리케이션 부과 제약"은 시뮬레이션 애플리케이션이 (예를 들어, 입력 파라미터 또는 구성 파일을 통해) 컴퓨팅 자원 정보의 일부로 사전 구성되는 것을 요구한다. 예를 들어, 시뮬레이션 애플리케이션은 전형적으로 - 예를 들어, CPU 코어 간의 통신을 취급함으로써 애플리케이션의 인스턴스가 정확히 기능하고 관련 인터-인스턴스 종속성을 처리하기 위해 설치되는 특정 수의 CPU 코어를 "인식"해야 한다. 특정 컴퓨팅 자원 사양의 지식 없이, 시뮬레이션 애플리케이션은 CPU 코어에 의해 수행되는 후속 독립적 하위 작업 계산이 다른 CPU 코어에 의해 수행되는 이전 계산으로부터의 결과를 요구할 때, 아마도 다른 물리 또는 가상 서버 상에 발생하는 종속성을 처리할 수 없다.
따라서, 시뮬레이션 애플리케이션은 실행이 시작되기 전에 필요한 컴퓨팅 자원 사양으로 사전 구성된다는 점이 필수적이다. 시뮬레이션 애플리케이션이 실행 동안 재구성될 수 있으면, 컴퓨팅 자원의 변화는 시뮬레이션 작업의 실행을 언제나 중단하는 것 없이 동적으로 성취될 수 있다. 그러나, 시뮬레이션 소프트웨어 설계에서 현재 제한을 고려하면, 본 발명은 일 구현예에서, 컴퓨팅 자원의 변화가 보증될 때 현재 클러스터에서 시뮬레이션 애플리케이션의 실행을 일시적으로 중지하고, 새로운 클러스터 상에 시뮬레이션 작업의 인스턴스를 재시작한다. 또한, 이러한 프로세스는 현재 중간 "시뮬레이션 상태"(즉, 모든 변수의 정확한 상태)의 지식을 요구한다.
그래서, 자원 변화 지시자를 모니터링하는 것에 더하여, 시뮬레이션 서비스는 또한, 일 구현예에서, 시뮬레이션 애플리케이션에 의해 발생되고 현재 중간 시뮬레이션 상태를 포함하는 "재시작 파일"의 기록을 모니터링한다. 많은 경우에, 시뮬레이션 애플리케이션이 이들 재시작 파일을 디스크에 기록하는 빈도는 시뮬레이션 애플리케이션이 실행되기 전에 구성될 수 있지만; (예를 들어, 전체 시뮬레이션 상태를 저장하도록 요구되는 시간 및 다른 자원으로 인해) 전체 시뮬레이션 상태를 매우 자주 저장하는 것이 금지될 수 있다는 점이 주목되어야 한다.
출력 파일의 경우와 마찬가지로, 이러한 재시작 파일은 본 발명에 의해 이용되는 것과 상이한 목적(고장 허용 범위)을 위해 의도된다. 때때로 "체크포인팅"으로 지칭되는 이러한 프로세스는 애플리케이션의 상태의 디스크에 주기적 기록을 수반하여, 애플리케이션은 장애(예를 들어, 하드웨어 장애, 소프트웨어 충돌 등)의 경우에 이러한 중간 상태로부터 재개될 수 있다.
그러나, 시뮬레이션 서버 플랫폼은 일 구현예에서, 하드웨어 또는 소프트웨어 장애로부터 복구하는 목적을 위한 것이 아니라, 애플리케이션이 실행되고 있는 동안(심지어 변화 자체가 시뮬레이션 애플리케이션의 인스턴스의 실행을 중지하고 재개하는 것을 수반할지라도) 컴퓨팅 자원의 변화를 용이하게 하는 목적을 위해, 이러한 재시작 파일을 이용한다. 다시 말해, 이러한 구현예에서, 시뮬레이션 서버 플랫폼은 하드웨어 제공자의 현재 프로비저닝된 클러스터 상에 실행하는 시뮬레이션을 의도적으로 종결시키고, 새로운 클러스터(동일하거나 상이한 하드웨어 제공자, 또는 다수의 하드웨어 제공자로부터의)에 상이한 컴퓨팅 자원을 프로비저닝하며, 이는 선택된 재시작 파일에 포함되는 저장된 중간 시뮬레이션 상태로부터 재시작될 수 있다.
고장 허용 범위 또는 장애 시나리오와 달리, 시뮬레이션 서버 플랫폼은 적절한 재시작 파일이 존재하는지, 그리고 정확하게 시뮬레이션 작업의 실행을 중단할 때 미리(실시간 모니터링에 기초하여) 인식한다. 더욱이, 일 구현예에서, 예측된 컴퓨팅 자원 사용법에 기초하여, 시뮬레이션 서버 플랫폼은 시뮬레이션 애플리케이션 자체에 의해 부과되는 제약(새로운 세트의 컴퓨팅 자원을 따르도록 재구성됨)뿐만 아니라, 하나 이상의 하드웨어 제공자 플랫폼 상에 이용 가능한 다양한 타입의 컴퓨팅 자원에 의해 부과되는 제약을 준수하는 최적의 새로운 세트의 컴퓨팅 자원을 발생시킬 뿐만 아니라, 이러한 변화를 달성하기 위해 최적의 시간을 결정한다.
시뮬레이션 서버 플랫폼은 일 구현예에서, 컴퓨팅 자원의 변화가 보증될 때를 결정하기 위해 컴퓨팅 자원 변화 지시자 및 기존 재시작 파일을 연속적으로 분석하는 컴퓨팅 자원 평가 모델을 부가적으로 포함한다. 다른 방법으로 보증된 변화는 충분히 최근의 재시작 파일의 결핍에 영향을 받을 수 있다는 점이 주목되어야 한다. 다른 구현예에서, 사용자는 이러한 애플리케이션이 재시작 파일을 발생시키는 빈도를 제어하기 위해 특정 시뮬레이션 애플리케이션을 구성할 수 있다.
아래에 더 상세히 논의되는 바와 같이, 컴퓨팅 자원 평가 모델은 애플리케이션의 장래 컴퓨팅 자원 요건을 예측하도록 설계되는 다양한 기술(미리 정의된 공식 및 트리거, 규칙 기반 분석 및 머신 러닝을 포함함)을 적용한다. 일 구현예에서, 이러한 모니터링된 정보는 컴퓨팅 자원의 변화를 보증하기 위해 하나 이상의 미리 정의된 임계 조건이 충족되었는지를 결정하도록 연속적으로 분석된다. 이러한 분석 프로세스는 사용자 개입에 대한 임의의 요구 없이 실시간으로 자동적으로 수행된다는 점이 강조되어야 한다.
현재 세트의 프로비저닝된 컴퓨팅 자원의 변화가 보증되는 경우에, 시뮬레이션 서버 플랫폼은 일 구현예에서, 컴퓨팅 자원 평가 모듈에 의해 수행되는 것과 유사한 기술을 적용하지만, 하나 이상의 하드웨어 제공자 플랫폼 상에 이용 가능한 컴퓨팅 자원의 타입에 의해 부과되는 부가 제약을 고려하는 컴퓨팅 자원 계산 모듈을 더 포함한다. 예를 들어, 변화가 보증되는 것을 결정할 시에, 컴퓨팅 자원 계산 모듈은 부가 16 CPU 코어가 최적으로 요구되지만, 32 GB 더 적은 RAM이 요구되는 것을 결정할 수 있으며, 하나 이상의 하드웨어 제공자(아마도 심지어 시뮬레이션 애플리케이션이 현재 실행되고 있는 것과 상이한 하드웨어 제공자)에 의해 제공되는 상이한 타입의 가상 서버의 선택을 잠재적으로 야기한다.
컴퓨팅 자원 계산 모듈이 수정된 컴퓨팅 자원의 원하는 새로운 클러스터의 사양을 발생시키면, 현재 클러스터는 대체되어야 한다. 시뮬레이션 서버 플랫폼은 일 구현예에서, 선택된 하드웨어 제공자 플랫폼 상에 수정된 컴퓨팅 자원의 새로운 클러스터를 프로비저닝하도록, 그리고 시뮬레이션 애플리케이션이 현재 실행되고 있는 현재 클러스터를 종결시키도록(새로운 클러스터에 의해 요구될 수 있는 관련 데이터를 저장한 후에) 클러스터 서비스에 명령하는 시뮬레이션 자원 매니저를 포함한다.
이어서, 그것은 시뮬레이션 애플리케이션이 실행을 재개할 수 있는 중간 시뮬레이션 상태를 포함하는 선택된 재시작 파일의 위치뿐만 아니라, 요구된 서브세트의 수정된 컴퓨팅 자원의 사양을 가진 시뮬레이션 애플리케이션을 재구성하도록 시뮬레이션 서비스에 명령한다.
그 다음, 시뮬레이션 서비스는 아래에 더 상세히 설명되는 본 발명의 다른 구성요소에 고유한 다른 소프트웨어뿐만 아니라, 각각의 CPU 코어 상의 시뮬레이션 애플리케이션의 인스턴스를 포함하는, 새로운 클러스터에 모든 관련 소프트웨어 및 데이터를 설치한다. 최종적으로, 시뮬레이션 서비스는 새로운 클러스터에서의 각각의 가상 서버 내에 각각의 CPU 코어 상의 시뮬레이션 애플리케이션의 각각의 인스턴스의 실행을 개시한다(즉, 저장된 중간 시뮬레이션 상태로부터 실행을 "재개"함).
일 구현예에서, 사용자는 이러한 목표 중 하나 이상을 밸런싱하는 최적화 기능을 포함하는, 가장 짧은 전체 실행 시간, 가장 저렴한 컴퓨팅 자원 수수료 또는 여러가지 다른 목표를 최적화하는 것과 같은, 하나 이상의 미리 정의된 전반적인 최적화 목표를 지정한다. 이러한 구현예에서, 시뮬레이션 서버 플랫폼은 사용자의 지정된 목표를 최적화하기 위해, 현재 컴퓨팅 자원을 수정할 때 및 어느 정도까지 수정하는지의 결정에서 이러한 목표를 수용한다. 특히, 시뮬레이션 서버 플랫폼은 자원 변화 지시자 및 애플리케이션 특정 정보 둘 다를 모니터링하고, 현재 컴퓨팅 자원의 시뮬레이션 애플리케이션의 사용이 이러한 미리 정의된 목표를 충족시키는 정도를 평가한다.
대안 구현예에서, 시뮬레이션 서버 플랫폼은 시뮬레이션 단계를 실시간으로 동적으로 결정하는 것과 대조적으로, "시뮬레이션 단계" 및 연관된 세트의 컴퓨팅 자원의 수를 (예를 들어, 이전 시뮬레이션으로부터의 사용자 제공 정보에 기초하여) 미리 결정한다. 이러한 구현예에서, 시뮬레이션 서버 플랫폼은 하나의 미리 정의된 시뮬레이션 단계로부터 다른 단계로의 전이를 성취할 때만을 결정할 필요가 있다.
본 발명의 다른 대안 구현예에서, 시뮬레이션 서버 플랫폼은, 예를 들어 이전 시뮬레이션 작업 및 다른 사용자 제공 정보의 분석에 기초하여 (컴퓨팅 자원의 자동 변화를 달성하는 것보다는 오히려) 사용자에게 컴퓨팅 자원의 권고를 제공한다. 다른 대안 구현예에서, 시뮬레이션 서버 플랫폼은 시뮬레이션 작업의 장래 "완료" 실행을 위한 컴퓨팅 자원 요건을 예측하는 목적을 위해 시뮬레이션 애플리케이션의 일부를 "사전 실행"한다(예를 들어, 하나는 주요 루프 또는 기간을 통과함).
이하의 도면에 예시된 본 발명의 구현예의 상세한 설명을 참조하기 전에, 본 발명은 시뮬레이션 작업이 실행될 단일 고정 세트의 컴퓨팅 자원을 현재 선택해야 하는 사용자에게 상당한 혜택을 제공한다는 점이 주목되어야 한다. 예를 들어, 컴퓨팅 자원의 클러스터를 "초과 지정"하는 사용자는 궁극적으로 그의 시뮬레이션 작업을 위해 초과 지급하는 반면에, 컴퓨팅 자원의 클러스터를 "미만 지정"하는 사용자는 시뮬레이션 작업이 너무 느리게 실행되거나 아마 전적으로 실패되는 것을 발견할 수 있다.
도 1은 본 발명의 시뮬레이션 서버 플랫폼의 핵심 구성요소의 일 구현예의 아키텍처 블록도이다.
도 2는 본 발명의 시뮬레이션 서버 플랫폼의 핵심 구성요소의 동적 상호작용의 일 구현예를 예시하는 아키텍처 도해이다.
도 3은 본 발명의 시뮬레이션 서버 플랫폼 상의 하드웨어 미터링 모듈에 의해 수행되는 프로세스의 일 구현예를 예시하는 흐름도이다.
도 4는 본 발명의 시뮬레이션 서버 플랫폼 상의 소프트웨어 미터링 모듈에 의해 수행되는 프로세스의 일 구현예를 예시하는 흐름도이다.
도 5는 본 발명의 시뮬레이션 서버 플랫폼에 의해 하드웨어 제공자 플랫폼 상에 프로비저닝되는 클러스터의 핵심 구성요소의 일 구현예를 예시하는 아키텍처 블록도이다.
도 6은 본 발명의 시뮬레이션 서버 플랫폼 상의 시뮬레이션 자원 매니저의 핵심 구성요소의 일 구현예를 예시하는 아키텍처 블록도이다.
도 7은 본 발명의 시뮬레이션 서버 플랫폼 상의 시뮬레이션 자원 매니저의 동적 동작의 일 구현예를 예시하는 흐름도이다.
본 발명의 시스템 및 방법의 상세한 구현예는 첨부 도면에 예시되고 아래에 설명된다. 본 발명은 도면을 참조하여 아래에 논의되는 특정 구현예에 제한되지 않는다는 점이 처음에 주목되어야 한다. 예를 들어, 본 발명은, 본 발명의 사상으로부터 벗어나는 것 없이, 더 적거나 더 많은 상이한 개념 모듈(하드웨어 또는 소프트웨어로 구현됨)중에 재할당되는 기능성을 가진 별개의 서버 플랫폼으로 통합될 수 있어, 상이한 엔지니어링 트레이드오프를 반영한다. 본 발명의 시스템 및 방법의 부가 구현예는 당업자에게 분명할 것이다.
도 1을 참조하면, 본 발명의 시스템(100)은 사용자가 사용자 디바이스(140)(데스크톱 및 랩톱 컴퓨터, 스마트폰 등)를 통해, 다양한 하드웨어 제공자 플랫폼(130)의 물리 하드웨어 상에 시뮬레이션을 실행할 수 있게 한다. 시뮬레이션 서버 플랫폼(101)은 (인터넷(125)을 통해) 사용자 디바이스(140)와 하드웨어 제공자 플랫폼(130) 사이의 중개자의 역할을 하여, 시뮬레이션 프로세스를 향상시키고 단순화하도록 설계되는 다양한 특징을 사용자에게 제공한다.
예를 들어, 사용자는 다수의 상이한 하드웨어 제공자를 식별 및 접촉하고, 원하는 시뮬레이션 애플리케이션을 설치 및 구성하고, 연관된 라이센스 서버 전개 및 인증 프로세스를 관리할 필요가 없다. 대신에, 사용자에게는 하드웨어 및 소프트웨어 사용법 및 통합되고 유연한 과금 시스템의 자동화된 미터링과 함께, 실행 시뮬레이션에 맞추어지는 사용자 친화적 인터페이스가 제공된다.
훨씬 더 중요하게, 아래에 더 상세히 설명되는 바와 같이, 사용자는 단일 고정 세트의 컴퓨팅 자원에 더 이상 제한되지 않는다. 대신에, 시뮬레이션 서버 플랫폼(101)은 사용자의 시뮬레이션 작업이 실행되고 있는 동안, "최적의" 새로운 세트의 컴퓨팅 자원뿐만 아니라, 컴퓨팅 자원의 변화가 보증되는 "최적의" 지점을 동적으로 결정한다. 더욱이, 시뮬레이션 서버(101)는 사용자 개입 없이 인터-인스턴스(인터-서버를 포함함) 종속성을 처리하기 위해 선택된 시뮬레이션 애플리케이션의 능력을 보존하는 동안, 하나 이상의 하드웨어 제공자 플랫폼(130)에 걸쳐 컴퓨터 자원의 이러한 변화를 자동적으로 구현한다.
일 구현예에서, 사용자는 인터넷(125)을 통해 시뮬레이션 서버 플랫폼(101)과 통신하기 위해 STD HW/SW(142)(표준 CPU, 디스플레이, I/O 디바이스, 메모리 등을 포함함)를 이용한다. 이러한 구현예에서 맞춤형 클라이언트 애플리케이션을 필요로 하는 대신, 표준 웹 브라우저는 사용자가 시뮬레이션 서버 플랫폼(101)과 통신하는 사용자 인터페이스(141)를 제공하기 위해 이용된다. 따라서, 각각의 사용자 디바이스(140)에 의해 수행되는 기능성은 메모리에 저장되는 명령어를 실행하는 표준 CPU에 의해 구현된다. 다른 구현예에서, 맞춤형 하드웨어 및 소프트웨어는 본 발명의 사상으로부터 벗어나는 것 없이 이용될 수 있다.
유사하게, 하드웨어 제공자 플랫폼(130)은 메모리에 저장되는 명령어를 실행하는 CPU를 통해 그의 기능성을 구현하는 물리 HW/SW(132)를 포함한다. 위에 언급된 바와 같이, 하드웨어 제공자는 또한 본 기술분야에 널리 공지되어 있는 바와 같이, 동시에 실행하는 다수의 사용자 애플리케이션 중에 물리 HW/SW(132)를 공유하도록 설계되는 다양한 가상화 하드웨어 및 소프트웨어 메커니즘을 빈번히 포함한다. 시뮬레이션 서버 플랫폼(101)은 또한 메모리에 저장되는 명령어를 실행하는 CPU를 통해 그의 기능성을 구현하기 위해 서버 HW/SW(102)를 포함한다. 일 구현예에서, 시뮬레이션 서버 플랫폼(101)의 많은 기능성은 하드웨어 제공자 플랫폼(130) 중 하나 이상 상에 상주하여, 시뮬레이션 서버 플랫폼(101)의 소유자/운영자가 그것의 사용자를 서비스하기 위해 그 자체의 표준 물리 하드웨어 및 소프트웨어 구성요소를 제공하는 것을 제거한다. 서버 HW/SW(102)의 일부 표준 구성요소는 시뮬레이션 서버 플랫폼(101)의 기능성에의 원격 관리 액세스를 가능하게 하기 위해 시뮬레이션 서버 플랫폼(101)의 소유자/운영자의 구내 상에 여전히 상주한다.
사용자가 시뮬레이션 작업을 개시할 때, 시뮬레이션 서버 플랫폼(101)은 사용자의 시뮬레이션 작업을 구현하기 위해 하나 이상의 하드웨어 제공자 플랫폼(130) 상에 클러스터(131)를 전개한다. 각각의 클러스터(131)의 다양한 핵심 구성요소가 아래에 더 상세히(특히 도 5를 참조하여) 논의되지만, 사용자에 의해 개시되는 각각의 시뮬레이션 작업에 대해, 시뮬레이션 서버 플랫폼(101)의 특정 구성요소는 이러한 작업에 대한 시뮬레이션 프로세스를 관리하기 위해 하나 이상의 하드웨어 제공자 플랫폼(130)의 클러스터(131)에 복제되고 클러스터 상에 전개된다는 점이 주목되어야 한다. 개요 레벨에서, 시뮬레이션 실행기(133)는 사용자의 시뮬레이션 작업의 동작을 관리하며, 그것은 시뮬레이션 애플리케이션 인스턴스(139) 자체 - 즉, 전형적으로 다수의 CPU 코어에 걸쳐 병렬로 실행되는 사용자에 의해 선택되는 시뮬레이션 애플리케이션의 인스턴스에 의해 구현된다.
시뮬레이션 서버 플랫폼(101)의 핵심 구성요소를 참조하면, 서버 DB(데이터베이스)(105)는 시뮬레이션 서버 플랫폼(101)의 특정 구성요소(각각의 구성요소의 동작에 대해 아래에 더 상세히 논의됨)에 관한 데이터뿐만 아니라, 사용자, 하드웨어 제공자 및 시뮬레이션 애플리케이션 제공자에 관한 관리 과금, 프로필 및 다른 데이터를 포함하는, 여러가지 상이한 타입의 현재 및 이력 데이터를 저장하기 위해 이용된다. 그러나, 서버 DB(105)에 저장되는 정보는 또한 아래에 더 상세히 논의되는, 각각의 사용자의 시뮬레이션 작업을 위해 프로비저닝되는 클러스터(131) 상에 저장되는 정보로부터 구별되어야 한다. 다른 구현예에서, 서버 DB(105)의 저장 요건은 본 발명의 사상으로부터 벗어나는 것 없이, 다른 단기 및 장기 파일 저장 메커니즘 및 물리 디바이스뿐만 아니라, 다수의 별개의 데이터베이스에 의해 충족될 수 있다. 예를 들어, 일 구현예에서, 시뮬레이션 작업에 관한 사용자 데이터 및 다른 정보는 보안 저장 디바이스에서 암호화되고 분리되고, 다양한 표준 하드웨어 및 소프트웨어 보안 프로토콜에 의해 보호된다.
시뮬레이션 서버 플랫폼(101)은 사용자가 시스템에 우선 액세스할 때, 표준 인증 프로세스의 일부로서 사용자를 인증한다. 그러나, 사용자가 시뮬레이션 작업을 개시할 수 있기 전에, 사용자는 사용자의 모델에 의해 나타내는 거동을 시뮬레이션하기 위해 사용자에 의해 선택되는 특정 시뮬레이션 애플리케이션의 사용을 위해 우선 인증되어야 한다. 다른 구현예에서, 특정 시뮬레이션 애플리케이션은 또한 사용자가 시뮬레이션 애플리케이션의 개별 구성요소의 사용을 위해 인증되는 것을 요구한다. 이러한 인증은 시뮬레이션 작업이 개시되기 전에, 또는 다른 구현예에서 시뮬레이션의 실행 동안 - 예를 들어, 개별 구성요소가 액세스되는 시간에 발생할 수 있다.
이러한 인증 프로세스는 제3자 라이센스 서버 공급자에 의해 제공될 뿐만 아니라, 개별 시뮬레이션 애플리케이션의 소유자에 의해 제공되는 라이센스 서버(112)를 통해 구현된다. 라이센스 서버(112)는 표준 서버 하드웨어 상에 실행하는 소프트웨어로 구성될 수 있거나, 맞춤형 서버 하드웨어 디바이스에 구체화될 수 있다. 더욱이, 라이센스 서버(112)는 사용자, 시뮬레이션 애플리케이션 제공자의 구내 상에, 또는 다른 위치(시뮬레이션 서버 플랫폼(101)의 구내를 포함함) 내에 전개될 수 있다. 어떤 경우에, 라이센스 서버(112)와의 전체 통신뿐만 아니라, 인증 프로세스는 소프트웨어 미터링 모듈(113)에 의해 수행되는 소프트웨어 미터링 프로세스의 일부로서, 라이센스 서비스(113a)에 의해 관리된다.
도 4를 참조하여 아래에 더 상세히 설명되는 바와 같이, 소프트웨어 미터링 모듈(113)은 시뮬레이션 애플리케이션(또는 그의 구성요소)이 사용자의 시뮬레이션 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링한다. 유사하게, 하드웨어 미터링 모듈(114)(도 3에 대해 아래에 더 상세히 논의됨)은 하드웨어 컴퓨팅 자원이 사용자의 시뮬레이션 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링한다. 다수의 상이한 세트의 컴퓨팅 자원이 사용자의 시뮬레이션 작업의 실행 동안 전개되는 경우에, 하드웨어 미터링 모듈(114)은 각각의 세트의 컴퓨팅 자원이 사용되고 있는 동안 전체 시간을 모니터링한다는 점이 주목되어야 한다. 다른 구현예에서, 하드웨어 미터링 모듈(114)은 다수의 하드웨어 제공자 플랫폼(130)에 걸친 개별 사용자의 작업에 대해 컴퓨팅 자원의 사용을 모니터링한다(그리고 또 다른 구현예에서 개별 하드웨어 자원은 개별적으로 모니터링됨),
동시에, 소프트웨어 미터링 모듈(113) 및 하드웨어 미터링 모듈(114)은 사용자가 이러한 시뮬레이션 작업이 하나 이상의 시뮬레이션 애플리케이션, 하나 이상의 하드웨어 제공자 플랫폼, 및 하나 이상의 상이한 세트의 컴퓨팅 자원(아래에 더 상세히 논의되는 바와 같음)을 수반하든지, 사용자의 개별 시뮬레이션 작업의 비용, 시간 및 다른 원하는 특성을 최적화할 수 있게 하는 유연한 "페이-퍼-유스" 과금 모델을 용이하게 한다.
사용자가 시뮬레이션 작업을 개시하면, 클러스터 서비스(104)는 이용 가능 하드웨어 제공자 플랫폼(130) 중 하나 이상으로부터 컴퓨팅 자원의 클러스터를 프로비저닝한다. 일 구현예에서, 사용자는 시뮬레이션 서버 플랫폼(101)에 의해 제공되는 다양한 이용 가능 선택권 중에서 선택되는 초기 세트의 컴퓨팅 자원을 결정한다. 다른 구현예에서, 시뮬레이션 서버 플랫폼(101)은 사용자의 시뮬레이션 작업이 실행되고 있는 동안 후속 세트의 컴퓨팅 자원을 결정하기 위해 아래에 설명되는 기술을 이용하여, 이러한 초기 세트의 컴퓨팅 자원을 결정한다.
가용성 모니터(104a)는 현재 이용 가능 용량 및 연관된 가격책정을 포함하는, 하드웨어 제공자 플랫폼(130)에 의해 제공되는 다양한 가상 서버 타입의 가용성에 관한 정보를 유지한다. 임의의 주어진 시간에, 각각의 사용자의 시뮬레이션 작업은 하나 이상의 하드웨어 제공자 플랫폼(130)으로부터 프로비저닝되는 가상 서버의 클러스터와 연관될 것이다. 그러나, 하드웨어 제공자 플랫폼(130) 각각에 의해 제공되는 가상 서버의 다양한 타입(가격책정뿐만 아니라, 각각의 타입의 용량)은 시간에 따라 변화될 수 있다.
위에 언급된 바와 같이, 하드웨어 제공자의 관점에서, 시뮬레이션 서버 플랫폼(101)은 개별 사용자의 시뮬레이션 작업과 연관되는 하나 이상의 가상 서버의 클러스터를 프로비저닝하는 고객이다. 또한, 시뮬레이션 서버 플랫폼(101)의 관점에서, 각각의 사용자는 시뮬레이션 작업이 가변 컴퓨팅 자원 요건(가상 서버의 클러스터로서 초기에 카테고리화될 수 있거나 카테고리화되지 않을 수 있음)을 갖는 고객이다. 아래에 더 상세히 설명되는 바와 같이, 이들 컴퓨팅 자원 요건(시뮬레이션 작업이 개시되기 전 초기에, 또는 시뮬레이션 작업이 실행되고 있는 동안 여러가지 상이한 시점에서 나중에 설정되었는지)은 제시간에 하나 이상의 하드웨어 제공자 플랫폼(130)에 의해 현재 이용 가능하게 되는 가상 서버의(하나 이상의 특정 가상 서버 타입의) 클러스터로 효과적으로 "변환"된다.
어떤 경우에, 시뮬레이션 서버 플랫폼(101)과 하드웨어 제공자 플랫폼(130) 각각 사이의 연결은 인터넷(125)을 통해 하드웨어 제공자 어댑터(104b) - 즉, 정보의 양방향 통신 및 교환을 가능하게 하는 맞춤형 API를 경유하여 유지된다. 예를 들어, 하드웨어 제공자 어댑터(104b)는 사용자의 시뮬레이션 작업에 관한 상태 정보를 획득할 뿐만 아니라, 하드웨어 제공자 플랫폼(130)으로부터 가상 서버의 클러스터를 프로비저닝(종결뿐만 아니라)하기 위해 시뮬레이션 서버 플랫폼(101)에 의해 이용된다. 아래에 더 상세히 설명되는 바와 같이, 이러한 상태 정보는 미터링 목적(예를 들어, 하드웨어 미터링 모듈(114) 및 소프트웨어 미터링 모듈(113)에 의해 사용)을 위할 뿐만 아니라 각각의 사용자의 시뮬레이션 작업의 실행에 관한 데이터 - 예를 들어, 각각의 컴퓨팅 자원에 대해 시간에 따라 모니터링되는 컴퓨팅 자원 이용 및 애플리케이션 특정 정보를 모니터링하기 위해 이용된다.
클러스터 서비스(104)가 사용자의 시뮬레이션 작업의 실행을 위한 클러스터를 프로비저닝하면, 시뮬레이션 서비스(103)는 사용자의 시뮬레이션 데이터 모델 및 요구된 서브세트의 지정된 컴퓨팅 자원과 함께, 다양한 사용자 지정 입력 파라미터를 가진 사용자의 선택된 시뮬레이션 애플리케이션(또는 다른 구현예에서, 다수의 상이한 시뮬레이션 애플리케이션)을 구성한다. 위에 언급된 바와 같이, 이들 지정된 컴퓨팅 자원 및 다른 애플리케이션 부과 제약은 사용자의 모델을 적절히 시뮬레이션하고 임의의 인터-인스턴스(및 인터-서버) 종속성을 처리하기 위해 시뮬레이션 애플리케이션에 의해 요구된다.
시뮬레이션 서비스(103)는 또한 프로비저닝된 클러스터에 모든 관련 소프트웨어 및 데이터를 설치한다. 예를 들어, 클러스터 내의 각각의 가상 서버 상에 시뮬레이션 애플리케이션을 구성하는 것에 더하여, 이러한 시뮬레이션 애플리케이션의 인스턴스는 각각의 이러한 가상 서버 상의 각각의 CPU 코어에 의한 실행을 위해 설치되어야 한다. 각각의 클러스터 상에 설치되는 부가 소프트웨어 및 데이터 구성요소는 도 5를 참조하여 아래에 더 상세히 논의될 것이다. 모든 관련 소프트웨어 및 데이터가 구성되고 설치되었다면, 시뮬레이션 서비스(103)는 클러스터에서 각각의 가상 서버 내에서 각각의 CPU 코어 상의 시뮬레이션 애플리케이션의 각각의 인스턴스의 실행을 개시한다.
최종적으로, 시뮬레이션 자원 매니저(110)는, 일 구현예에서, 실행되고 있는 동안 사용자의 시뮬레이션 작업에 할당되는 컴퓨팅 자원을 수정하는 동적 프로세스를 관리할 책임이 있다. 도 6 및 도 7을 참조하여 아래에 더 상세히 논의되는 바와 같이, 시뮬레이션 자원 매니저(110)는 그것의 프로비저닝된 클러스터에서 실행되고 있음에 따라 각각의 사용자의 시뮬레이션 작업의 실행을 연속적으로 모니터링하여, 이러한 프로비저닝된 클러스터와 연관되는 현재 컴퓨팅 자원을 수정할 필요를 입증하는 다양한 "자원 변화 지시자"를 검색한다. 이들 자원 변화 지시자는 사용자의 시뮬레이션 작업에 관한 애플리케이션 특정 정보(예를 들어, 시뮬레이션 애플리케이션에 의해 동적으로 기록되는 출력 파일로부터 추출되는, 사용자의 모델 내의 셀의 현재 수)뿐만 아니라, "컴퓨팅 자원 이용" 정보(각각의 CPU 코어 및 다른 컴퓨팅 자원, 예컨대 RAM, 스토리지, 네트워크 대역폭 등의 퍼센티지 이용과 같음)를 포함한다.
시뮬레이션 애플리케이션에 의해 발생되는 간헐적 재시작 파일과 함께, 이들 자원 변화 지시자를 추출할 시에, 시뮬레이션 자원 매니저(110)는 컴퓨팅 자원의 변화가 보증되는 최적의 지점(필요하다면)을 결정하기 위해 이러한 정보를 연속적으로 분석한다. 이러한 변화가 보증되면, 시뮬레이션 자원 매니저(110)는 또한 최적의 새로운 세트의 컴퓨팅 자원(예를 들어, 16 부가 CPU 코어, 8 GB 더 적은 RAM 등)을 결정하며, 그것은 이때 하나 이상의 하드웨어 제공자 플랫폼(130) 상의 가상 서버의 이용 가능 클러스터로 "변환"된다(이는 일부 경우에, 예를 들어 그때에 적절한 가상 서버 타입의 결핍으로 인해 현재 클러스터를 위해 이용된 것과 상이한 하드웨어 제공자 플랫폼(130) 상에 있을 수 있음).
아래에 더 상세히 설명되는 바와 같이, 이러한 분석은 미리 정의된 조건 및 임계치의 상대적으로 간단한 계산에서 더 복잡한 규칙 기반 분석 및 일 구현예에서, 장래 컴퓨팅 자원 요건의 평가를 수반하는 예측 머신 러닝 접근법까지의 범위에 도달할 수 있다. 어떤 경우에, 이러한 분석이 컴퓨팅 자원의 변화를 트리거링하면, 시뮬레이션 자원 매니저(110)는 새로운 클러스터를 프로비저닝하고, 현재 클러스터를 종결시키고, 새로운 클러스터 상에 사용자의 시뮬레이션 작업의 실행을 "재개"하기 위해 클러스터 서비스(104)를 호출한다.
위에 언급된 바와 같이, 시뮬레이션 애플리케이션이 실행을 (예를 들어, 선택된 재시작 파일에 포함되는 중간 시뮬레이션 상태로부터) 재개할 수 있는 것을 보장하기 위해, 시뮬레이션 자원 매니저(110)는 실행을 개시(재개)하기 전에 요구된 애플리케이션 부과 제약(예를 들어, 새로운 클러스터 내의 CPU 코어의 수)을 가진 새로운 클러스터에 시뮬레이션 애플리케이션을 구성한다.
시뮬레이션 서버 플랫폼(101)의 구성요소는 일 구현예에서, 그것이 관리 및 관련 목적을 위해 임의의 컴퓨터로부터 웹 브라우저 인터페이스 및 적절한 인증 인증서를 통해 액세스되는, 하드웨어 제공자 플랫폼(130) 중 하나 이상의 별개의 클러스터 상에 자체 설치된다. 그럼에도 불구하고, 시뮬레이션 서버 플랫폼(101)의 특정 구성요소(예를 들어, 시뮬레이션 실행기(133))는 아래에 더 상세히 논의되는 바와 같이, 사용자의 시뮬레이션 작업에 대응하는 각각의 클러스터(131)에 설치된다.
도 2를 참조하면, 도해(200)는 상기 논의된 시뮬레이션 서버 플랫폼(101)의 핵심 구성요소의 동적 상호작용의 일 구현예를 예시한다. 예를 들어, 사용자가 시뮬레이션 작업을 개시할 때, 시뮬레이션 서비스(203)는 "런치 클러스터(Launch Cluster)" 요청(클러스터를 정의하는 컴퓨팅 자원의 사양을 포함함)에 의해 클러스터 서비스(204)를 호출하여, 클러스터 서비스(204)로 하여금 하나 이상의 하드웨어 제공자 플랫폼(130) 상에 클러스터를 프로비저닝하게 하고 그것이 시뮬레이션 서비스(203)에 제공하는 "시뮬레이션 클러스터 ID"를 획득하게 한다. 이러한 시뮬레이션 클러스터 ID는 특정 사용자의 시뮬레이션 작업과 연관되는 각각의 특정 클러스터를 고유하게 식별함에 따라, 클러스터 서비스(204)를 통해 하드웨어 제공자 플랫폼(130)과의 장래 통신을 용이하게 한다. 이러한 통신은 사용자의 시뮬레이션 작업이 실행되고 있는 동안 상태 정보를 획득할 뿐만 아니라, 클러스터를 종결시키는 것을 포함한다.
시뮬레이션 서비스(203)는 이러한 클러스터에 관한 통신을 용이하게 하기 위해 시뮬레이션 자원 매니저(210)에 제공하는 각각의 특정 클러스터에 관한 클러스터 메타데이터(일 구현예에서, 호스트명/사용자 쌍)를 발생시킨다. 예를 들어, 시뮬레이션 자원 매니저(210)는 컴퓨팅 자원의 변화가 사용자의 시뮬레이션 작업에 대해 보증되는 것을 결정할 때, 그것은 새로운 클러스터에 관한 관련 정보(예를 들어, 원하는 하드웨어 제공자, 특정 타입의 가상 서버의 수 등을 식별함)와 함께, "시뮬레이션 자원 변화 요청"을 시뮬레이션 서비스(203)에 제공한다. 클러스터 메타데이터는 또한 이러한 구현예에서 하드웨어 및 소프트웨어 미터링을 위해(사용자의 시뮬레이션 작업을 다시 고유하게 식별하기 위해) 이용된다.
클러스터가 클러스터 서비스(204)에 의해 프로비저닝되면, 시뮬레이션 서비스(203)는 시뮬레이션 실행기(233)를 포함하는, 클러스터 상에 관련 소프트웨어 및 데이터를 설치하고 구성하며, 이와 함께 그것은 이때 사용자의 시뮬레이션 작업의 실행을 개시하고, 특정 "명령어"를 수행(예를 들어, 출력 파일을 업로드)할 뿐만 아니라 이러한 작업이 실행되고 있는 동안 상태 정보를 교환하기 위해 통신한다. 시뮬레이션 서비스(203)에 의해 제공되는 설치 및 구성 정보는 시뮬레이션 애플리케이션을 시작하기 위한 사용자의 모델, 입력 구성 파라미터 및 파일(예를 들어, 특정 프로비저닝된 컴퓨팅 자원에 관한 애플리케이션 부과 제약을 포함함) 및 임의의 다른 관련 입력 데이터(예를 들어, 시뮬레이션이 그것의 초기 상태에서 시작하는 것보다는 오히려 실행을 "재개"하고 있으면 선택된 재시작 파일로부터의 중간 시뮬레이션 상태 정보)를 포함한다.
시뮬레이션 서비스(203)는 관련 소프트웨어 및 데이터를 설치하고 시뮬레이션의 실행을 개시하도록 시뮬레이션 실행기(233)에 명령하면, 시뮬레이션 실행기(233)는 아래에 더 상세히 설명되는 바와 같이, "SIM APP 인스턴스"(239)(즉, 별개의 CPU 코어에 의해 실행되는 시뮬레이션 애플리케이션의 각각의 인스턴스) 각각의 실행을 개시함으로써 시뮬레이션을 시작한다. 시뮬레이션 서비스(203)는 또한 예를 들어, 클러스터를 "핑잉(ping)"하여 그것이 여전히 "얼라이브(alive)"인 것을 보장하고 시뮬레이션이 완료되었을 때(또는 초기 종결이 예를 들어, 소프트웨어 또는 하드웨어 장애로 인해 보증될 때) 클러스터를 정지시키기 위해 시뮬레이션 실행기(233)와의 주기적 통신을 유지한다. 많은 시뮬레이션 애플리케이션은 인터-노드 통신을 용이하게 하는 표준 "메시지 전달 인터페이스"(MPI)를 구현한다. 일 구현예에서, 시뮬레이션 실행기(233)는 또한 그 자체의 통신을 위한 MPI를 구현한다.
일 구현예에서, 시뮬레이션 작업의 실행을 개시할 시에, 시뮬레이션 애플리케이션의 SIM APP 인스턴스(239) 각각은 라이센스 서버(212)와 통신하여 사용자를 인증하고 사용자가 시뮬레이션 애플리케이션, 또는 시뮬레이션 애플리케이션의 특정 구성요소 특징에 "체크 아웃" 및 "체크 인"하는 것을 허용한다. 라이센스 서버(212)는 시뮬레이션 작업이 인증 프로세스를 용이하게 하기 위해 실행되고 있는 사용자를 고유하게 식별하기 위해 호스트명/사용자 쌍(위에 언급된 시뮬레이션 서비스(203)에 의해 발생됨)을 이용한다. 다른 구현예에서, 클러스터 내의 "헤드 노드"에서의 "마스터" 인스턴스(도 5를 참조하여 아래에 논의됨)는 다른 노드를 대신하여 인증 기능을 수행한다.
시뮬레이션 작업이 실행되고 있음에 따라, 시뮬레이션 실행기(233)는 아래에 더 상세히 논의되는 바와 같이, 다양한 타입의 사용법 데이터(추출된 자원 변화 지시자를 포함함)를 획득하고, 분석을 위해 이러한 데이터를 시뮬레이션 자원 매니저(210)에 제공한다. 게다가, 시뮬레이션 서버 플랫폼(101)은 아래의 도 3에 예시된 바와 같이, 하드웨어 및 소프트웨어 컴퓨팅 자원 둘 다의 각각의 시뮬레이션 작업에 의한 사용을 연속적으로 미터링한다.
도 3에서의 흐름도(300)는 사용자의 시뮬레이션 작업과 연관되는 프로비저닝된 클러스터의 하드웨어 자원이 (예를 들어, "시작" 및 "종료" 시간에 기초하여) 사용되고 있는 시간을 모니터링하기 위해 하드웨어 미터링 모듈(114)에 의해 수행되는 미터링 프로세스의 일 구현예를 예시한다. 이러한 프로세스는 특정 하드웨어 자원에 대한 가격책정에 모니터링된 사용 시간을 곱함으로써 사용자가 "페이-퍼-유스" 기초로 과금될 수 있게 한다.
하드웨어 제공자는 전형적으로 다수의 가상 서버의 클러스터와 대조적으로 "가상 서버"(또는 "가상 머신")의 입도의 레벨로 운영한다는 점이 주목되어야 한다. 다시 말해, 시뮬레이션 서버 플랫폼(101)의 관점에서, 사용자의 시뮬레이션 작업은 다수의 가상 서버를 (일 구현예에서 다수의 하드웨어 제공자에 걸쳐) 포함할 수 있는 단일 클러스터와 연관된다. 또한, 하드웨어 제공자의 관점에서, 각각의 가상 서버는 다수의 가상 서버가 단일 시뮬레이션 작업과 연관되는 것을 하드웨어 제공자가 인식할 필요가 없음에 따라, 별개의 "과금 가능 작업"으로 간주될 수 있다. 더욱이, 다른 구현예에서, 시뮬레이션 작업은 가상 서버뿐만 아니라 베어 메탈의 제공자를 포함하는, 상이한 하드웨어 제공자에 걸쳐 동시에 실행되고 있을 수 있다.
또한 다수의 사용자가 다양한 시뮬레이션 작업을 동시에(잠재적으로 다수의 상이한 하드웨어 제공자 플랫폼(130)에 걸쳐) 실행하는 것을 취급하는 것에 더하여, 흐름도(300)에 설명되는 프로세스는 또한 시뮬레이션 작업이 실행되고 있는 동안(예를 들어, 시뮬레이션 작업의 실행 동안 다양한 지점에서 요구되는 바와 같이 더 많거나 더 적은 하드웨어 자원을 프로비저닝하기 위해) 사용자의 개별 시뮬레이션 작업에 할당되는 하드웨어 자원이 수정되는 시나리오(아래에 더 상세히 설명됨)를 처리한다는 점이 주목되어야 한다. 이러한 시나리오에서, 제1 클러스터 상의 시뮬레이션 작업의 실행은 정지되고 제2 클러스터 상에(아마도 다수 회) 재개되고; 이들 클러스터 각각(및 각각의 클러스터 내의 각각의 가상 서버) 상의 하드웨어 자원의 사용은 각각의 클러스터(또는 개별 가상 서버)와 연관되는 다른 가격으로 미터링되며, 그에 의해 시뮬레이션 작업의 사용자에게 "최적의" 양의 하드웨어 자원을 위탁한다.
어떤 경우에, 흐름도(300)에 예시된 하드웨어 미터링 프로세스의 이하의 논의는 하드웨어 제공자가 개별 시뮬레이션 작업 및 하드웨어 자원의 연관된 클러스터(하나 이상의 가상 머신 및/또는 베어 메탈 서버를 포함함)의 입도의 레벨에서, 또는 각각의 개별 가상 또는 베어 메탈 서버(별개의 시작 및 종료 시간을 가짐)의 입도의 레벨에서 하드웨어 자원의 사용법을 모니터링하는지를 동등하게 적용하여, 시뮬레이션 작업이 (연속적으로 또는 동시에) 다수의 이러한 서버와 연관되고 이 서버 상에 실행되고 있는 것을 인식하지 못한다는 점이 강조되어야 한다. 당업자는 (상이한 가격책정이 개별 가상 또는 베어 메탈 서버에 대해 존재할 때에도) 시뮬레이션 작업을 위한 전체 하드웨어 수수료를 발생시키기 위해 개별 시작 및 종료 시간을 다수의 가상 또는 베어 메탈 서버에 걸쳐(또는 심지어 다수의 하드웨어 제공자에 걸쳐) 어떻게 조합하는지를 이해하도록 흐름도(300)로부터 용이하게 추정할 수 있다.
흐름도(300)에 예시된 연속 미터링 프로세스는 하드웨어 미터링 모듈(114)이 서버 DB(105)로부터 다음 "활성" 시뮬레이션 작업 레코드를 검색하는 단계(310)에서 시작된다. 모든 상세가 흐름도(300)에 제시되지 않지만, 그것은 시뮬레이션 작업에 관한 데이터베이스 레코드가 하드웨어 제공자 플랫폼(130) 및 시뮬레이션 서버 플랫폼(101) 둘 다에 의해 어떻게 발생되고 유지되는지를 이해하는 데 도움이 된다.
시뮬레이션 서버 플랫폼(101)이 하드웨어 제공자 플랫폼(130)으로부터 클러스터(개별 시뮬레이션 작업과 연관됨)를 프로비저닝할 때, 하드웨어 제공자 플랫폼(130)은 클러스터 서비스(104) 내의 하드웨어 제공자 어댑터(104b)에 의해 이용되는 것과 같은, API를 통해 액세스 가능한 "하드웨어 제공자" 데이터베이스 레코드를 유지한다. 이러한 레코드는 전형적으로 연관된 메트릭과 함께, 시뮬레이션 작업(상이한 하드웨어 제공자 간에 변화될 수 있음)에 의해 또는 이 작업에 대해 수행되는 다양한 활동의 타임스탬프를 포함하는, 프로비저닝된 시뮬레이션 작업의 식별(즉, "클러스터 ID" 또는, 위에 언급된 바와 같이, 개별 "가상 서버" ID)을 포함한다. 이러한 ID는 전형적으로 특정 프로세스가 클러스터 상에(또는 별개의 가상 또는 베어 메탈 서버 상에) 실행되고 있는지를 표시한다. 시뮬레이션 작업의 실행이 그의 전체에서 중지될 때(시뮬레이션의 정상 완료로 인한 것인지 또는 하드웨어 또는 소프트웨어 장애로 인한 것인지), 레코드는 하드웨어 제공자의 데이터베이스에서 "활성"으로서 더 이상 지정되지 않는다.
시뮬레이션 서버 플랫폼(101)은 서버 DB(105)에서 유사한 대응 데이터베이스 레코드를 유지한다. 흐름도(300)에 관해 아래의 논의로부터 분명해지는 바와 같이, 하드웨어 미터링 모듈(114)은 그의 미터링 기능을 수행하고 서버 DB(105)에 시뮬레이션 작업 레코드를 유지하기 위해 하드웨어 제공자 플랫폼(130)에 의해 유지되는 정보에 의존한다. 또한, 서버 DB(105)에 유지되는 시뮬레이션 작업 ID는 하나 이상의 하드웨어 제공자 플랫폼(130)에 걸친 다수의 상이한 베어 메탈 또는 가상 서버와 연관될 수 있다는 점이 주목되어야 한다(위에 시사된 바와 같음).
흐름도(300)로 돌아가면, 서버 DB(105) 내의 데이터베이스 레코드에서의 시뮬레이션 작업 ID(단계(310)에서 검색됨)는 시뮬레이션 작업과 연관되는 관련 하드웨어 제공자를 (서버, 또는 개별 베어 메탈 또는 가상 서버의 클러스터의 입도의 레벨에 있든지) 식별한다. 하드웨어 미터링 모듈(114)은 단계(312)에서 이러한 시뮬레이션 작업과 연관되는 매칭 활성 "하드웨어 제공자" 레코드를 위해 관련 하드웨어 제공자의 API를 (하드웨어 제공자 어댑터(104b)를 통해) 질의하기 위해 이러한 정보를 이용한다.
단계(315)에서, 질의에 대한 응답이 이러한 활성 하드웨어 제공자 레코드의 존재를 표시하면, 하드웨어 미터링 모듈(114)은 단계(320)에서, 이러한 하드웨어 제공자 레코드로부터 추출되는 시작 타임스탬프에 의해 시뮬레이션 작업 데이터베이스 레코드(서버 DB(105)로부터의)를 갱신한다. 일부 양의 시간은 하드웨어 제공자가 클러스터를 프로비저닝하는 요청을 수신하는 시간 및 이러한 클러스터의 실제 프로비저닝 및 "하드웨어 제공자" 레코드의 생성으로부터 경과한다는 점이 주목되어야 한다. 이러한 구현예에서, 하드웨어 제공자 레코드의 존재는 - 이것이, 하드와이어 제공자가 그것의 "고객" - 즉, 시뮬레이션 서버 플랫폼(101)에 과금하기 위해 사용하는 타임스탬프이므로 - 종료 타임스탬프가 결정되면(아래에 논의되는 바와 같음) 정확한 시작 타임스탬프의 프레즌스를 표시한다.
그 다음, 단계(322)에서, 하드웨어 미터링 모듈(114)은 현재 시간에 기초하여 일시적 종료 타임스탬프에 의해 시뮬레이션 작업 데이터베이스 레코드를 갱신한다. 다시 말해, 시뮬레이션 작업이 하드웨어 제공자의 관점에서 여전히 "활성"이기 때문에, 그것은 아직 종료되지 않았다. 그러나, 아래에 논의되는 바와 같이, 이러한 일시적 종료 타임스탬프는 실제 종료 타임스탬프가 추론될 수 있는 유용한 데이터의 역할을 할 수 있다(예를 들어, 하드웨어 또는 소프트웨어 장애로 인한 시뮬레이션 작업의 비정상 종결의 경우에).
그 다음, 단계(330)에서, 하드웨어 미터링 모듈(114)은 이러한 갱신된 시뮬레이션 작업 데이터베이스 레코드를 서버 DB(105)에 저장하고, 단계(370)에서, 일시적 "현재" 하드웨어 수수료 - 즉, 사용 시간을, 프로비저닝된 하드웨어 자원에 대한 하드웨어 제공자의 가격책정에 곱해지는 시작 및 일시적 종료 타임스탬프에 기초하여 계산한다. 결국, 시뮬레이션 작업은 (정상적으로 또는 비정상적으로) 종결될 것이고, 활성 하드웨어 제공자 레코드는 단계(312)에서 질의에 의해 더 이상 발견되지 않을 것이다.
따라서, 단계(315)에서, 단계(312)에서의 질의에 대한 응답은 어떤 이러한 활성 하드웨어 제공자 레코드가 존재하지 않는 것을 표시하면(이러한 레코드가 더 발견되었는지에 관계없이), 하드웨어 제공자는 (단계(315)에서) 시뮬레이션 작업에 관한 활성 레코드를 갖지 않고, 그 다음 하드웨어 미터링 모듈(114)은 단계(325)에서 서버 DB(105) 내의 시작 타임스탬프를 검색한다. 어떠한 시작 타임스탬프도 발견되지 않으면(즉, 시뮬레이션이 매우 빠르게 완료되거나, 비정상적으로 실패할 가능성이 많은 것을 표시함), 하드웨어 미터링 모듈(114)은 단계(338)에서, "내부" 시작 타임스탬프를 데이터베이스 레코드를 갱신하는 대비책으로서 사용한다. 다시 말해, 그것은 (어떠한 시작 타임스탬프도 하드웨어 제공자로부터 이용 가능하지 않으므로) 클러스터 서비스(104)가 클러스터의 프로비저닝을 요청한 시간을 사용한다.
단계(325)의 결과에 관계없이, 하드웨어 미터링 모듈(114)은 이제 시작 타임스탬프를 가진 갱신된 데이터베이스 레코드를 갖고, 시뮬레이션이 종료되었지만, 종료 타임스탬프를 아직 갖지 않는 것을 인식한다. 그래서, 단계(340)에서, 하드웨어 미터링 모듈(114)은 시뮬레이션 작업에 관한 이력 메트릭에 대해 관련 하드웨어 제공자의 API에 (다시 하드웨어 제공자 어댑터(104b)를 통해) 질의한다. 다시 말해, 어떠한 활성 하드웨어 제공자 레코드도 존재하지 않지만, 이력 메트릭은 하드웨어 제공자에 의해 여전히 유지된다.
이들 메트릭은 단계(342)에서, 종료 타임스탬프를 추론하기 위해 이용된다. 예를 들어, 그것은 시뮬레이션 작업이 하드웨어 또는 소프트웨어 장애로 인해 비정상적으로 종결된 타임스탬프를 제공할 수 있다. 대안적으로, 그것은 정상 종결을 표시하고 실제 종료 타임스탬프를 제공할 수 있다. 다른 경우에, 그것은 실제 종료 타임스탬프를 제공할 수 있는 것이 아니라, 종료 타임스탬프가 추론될 수 있는 활동의 증거를 제공할 수 있다.
시뮬레이션 서버(101)는 또한 그 자체의 모니터링 프로세스를 통해 시뮬레이션 작업의 정상 또는 비정상 종결의 증거를 검출할 수 있다(아래에 더 상세히 설명되는 바와 같음). 일 구현예에서, 어떠한 실제 종료 시간도 이러한 이용 가능 "증거"로부터 추출될 수 없으면, 최근 활동의 타임스탬프는 추론된 종료 시간으로서 이용된다. 다른 구현예에서, 주기적 폴링(polling)은 시뮬레이션 작업이 종료되었을 때(즉, 그것이 폴링 이벤트에 더 이상 응답하지 않을 때)를 결정하기 위해 (활동의 "심박"에 대해, 또는 특정 하드웨어 메트릭, 예컨대 CPU 사용법에 대해) 이용된다.
어떤 경우에, 하드웨어 미터링 모듈(114)은 이제 시작 및 종료 타임스탬프 둘 다를 가진 갱신된 시뮬레이션 작업 데이터베이스 레코드를 갖고, 단계(360)에서, 이러한 갱신된 레코드를 서버 DB(105)에 저장한다. 이어서, 그것은 단계(370)로 진행되고, 위에 설명되는 하드웨어 수수료를 계산한다(이전에 계산된 임의의 일시적 하드웨어 수수료를 갱신함). 흐름도(300)에 도시되지 않지만, 이러한 "최종" 하드웨어 수수료 계산의 결과는 (일 구현예에서, 그것을 동일한 시뮬레이션 작업과 연관되는, 다른 베어 메탈 또는 가상 서버에 대해, 아마도 다수의 하드웨어 제공자에 걸쳐 계산되는 유사한 수수료와 조합함으로써) 과금 목적을 위해 이용된다. 그 다음, 일 구현예에서, (조직 내의 다수의 사용자뿐만 아니라) 다수의 시뮬레이션 작업에 걸친 하드웨어 수수료는 조직 및 그의 개별 사용자 각각에 대한 한 달 하드웨어 수수료를 발생시키기 위해 조합된다.
단계(375)에서, 하드웨어 미터링 모듈(114)은 다른 활성 시뮬레이션 작업을 모니터링하도록 서버 DB(105)를 연속적으로(또는, 다른 구현예에서, 주기적으로) 검색한다. 다른 활성 시뮬레이션 작업이 발견되면, 하드웨어 미터링 모듈(114)은 그의 연관된 활성 시뮬레이션 작업 데이터베이스 레코드를 검색하고, 이러한 연속 하드웨어 미터링 프로세스를 반복하기 위해 단계(310)로 돌아간다.
도 4를 참조하면, 흐름도(400)는 사용자의 시뮬레이션 작업과 연관되는 프로비저닝된 클러스터의 소프트웨어 자원이 사용되고 있는 시간을 모니터링하기 위해 소프트웨어 미터링 모듈(113)에 의해 수행되는 미터링 프로세스의 일 구현예를 예시한다. 도 3에 대해 위에 설명되는(하드웨어 자원의 사용법에 관한 시작 및 종료 시간을 모니터링하는) 하드웨어 미터링 프로세스와 대조적으로, 흐름도(400)는 소프트웨어 자원의 사용법에 관한 "checkOUT" 및 "checkIN" 이벤트 - 즉, 시뮬레이션 애플리케이션(및, 일 구현예에서, 그것의 특정 구성요소 특징)을 모니터링한다.
다시 말해, 소프트웨어 미터링은 클러스터의 하드웨어 자원이 프로비저닝될 때 시작되는 것이 아니고, 시뮬레이션 작업이 개시될 때 심지어 필연적으로 시작되는 것이 아니라, 특정 시뮬레이션 애플리케이션(또는 애플리케이션의 특정 구성요소 특징)의 사용자가 인증되고 애플리케이션 또는 구성요소 특징이 런칭될 때 시작된다. 이러한 checkOUT 이벤트는 소프트웨어 미터링 프로세스의 시작을 마킹하는 반면에, 후속 checkIN 이벤트는 특정 시뮬레이션 애플리케이션 또는 구성요소 특징의 사용법에 대해 프로세스의 종료를 마킹한다.
위에 논의된 바와 같이, 시뮬레이션 애플리케이션은 사용자가 액세스하는 것을 허용하기 전에 사용자를 인증하기 위해 라이센스 서버(112)를 이용한다. 사용자가 시뮬레이션 애플리케이션 또는 구성요소 특징에 액세스하려고 - 예를 들어, 시뮬레이션 작업, 또는 이러한 작업의 중간 부분을 개시하려고 시도할 때 - 시뮬레이션 애플리케이션은 그의 연관된 라이센스 서버(112)와 통신하며, 이 서버는 사용자를 인증하고 이러한 액세스를 허용하거나 거부한다. 인증 후에, 시뮬레이션 애플리케이션 또는 특징이 런칭될 때, 라이센스 서버(112)는 checkOUT 이벤트를 발생시킨 다음, 시뮬레이션 애플리케이션 또는 특징이 더 이상 사용되고 있지 않을 때 결국 checkIN 이벤트를 발생시킨다.
라이센스 서버(112)는 계약 상, 과금 또는 다른 목적을 위해 이벤트에 대한 레코드를 유지하기 위해 "라이센스 로그 파일"에 이들 checkOUT 및 checkIN 이벤트를 문서화한다. 이들 로깅된 이벤트는 전형적으로 이벤트가 발생한 때를 표시하는 "타임스탬프"뿐만 아니라, 시뮬레이션 애플리케이션 및 사용자를 식별하는 정보를 포함한다. 일부 경우에, 타임스탬프는 이벤트의 날짜 및 시간 둘 다를 식별하는 반면에, 다른 경우에 시간만이 포함되고, 개별 "DateStamp" 이벤트는 (예를 들어, 각각의 역일의 시작 또는 끝에) 발생되며 그것으로부터 이전 및 후속 타임스탬프의 날짜가 추론될 수 있다.
소프트웨어 미터링 모듈(113)은 라이센스 로그 파일로부터 checkOUT 및 checkIN 타임스탬프를 추출함으로써 시뮬레이션 애플리케이션의 사용법을 모니터링할 수 있도록 라이센스 서버(112)와의 통신을 관리하기 위해 라이센스 서비스(113a)를 포함한다. 단계(410)로 시작되면, 소프트웨어 미터링 모듈(113)의 라이센스 서비스(113a)는 시뮬레이션 플랫폼(101)에 의해 설치되는 시뮬레이션 애플리케이션의 사용자를 인증할 책임이 있는 다양한 라이센스 서버(112) 각각과의 연결을 설정한다.
일 구현예에서, 단계(410)에서, 소프트웨어 미터링 모듈(113)은 새로운 엔트리를 위해 라이센스 서버(112)를 주기적으로 폴링한다. 이러한 구현예에서, 소프트웨어 미터링 모듈(113)은 (라이센스 서비스(113a)에 의해 설정되는 연결을 통해) 라이센스 로그 파일에 액세스하지만, 단계(415)에서, 새로운 엔트리가 마지막에 체크되었으므로 실제 추가되었는지(예를 들어, 라이센스 로그 파일의 끝에서의 새로운 라인)를 결정해야 한다. 다른 구현예에서, 인터럽트 메커니즘은 새로운 엔트리를 검출하고 소프트웨어 미터링 모듈(113)에 통지하기 위해 이용되지만, 이러한 메커니즘은 다양한 라이센스 서버(112)와의 더 광범위한 통합(일부 경우에 다양한 하드웨어 제공자 플랫폼(130)에 의해 제공됨)을 필요로 한다.
일 구현예에서, 단계(415)는 새로운 엔트리가 검출될 때까지 모두 연결된 라이센스 서버(112)에 의해 발생되는 라이센스 로그 파일에 걸쳐 반복되는 소프트웨어 미터링 모듈(113)에 의해 수행되는 연속 프로세스이다. 소프트웨어 미터링 모듈(113)이 라이센스 로그 파일 중 하나에서 새로운 엔트리를 검출하면, 그것은 흐름도(400)의 나머지 단계에서 이러한 엔트리를 처리하며(단계(420)로 시작됨), 그 후에 그것은 단계(415)에서 새로운 엔트리에 대한 검색을 재개한다.
개별 프로세스(흐름도(400)에 도시되지 않음)에서, 소프트웨어 미터링 모듈(113)은 checkOUT 레코드(즉, checkOUT 및 checkIN 이벤트 시간 사이의 차이)와 연관되는 사용 시간을 결정하기 위해 각각의 checkOUT 레코드(특정 사용자의 시뮬레이션 작업 또는 구성요소 특징과 연관되는 대응하는 checkOUT 및 checkIN 이벤트의 "매칭 쌍"을 포함함)를 분석한다. 이어서, 그것은 이들 사용 시간을 (시뮬레이션 작업, 사용자, 사용자의 조직, 및 시뮬레이션 애플리케이션에 걸쳐) 축적하고 관련 있는 연관된 가격책정 구조를 적용하여 과금 목적을 위해 소프트웨어 미터링 수수료를 계산한다. 그 결과, 시뮬레이션 서버 플랫폼(101)은 시뮬레이션 서버 플랫폼(101)의 사용자에 의한 소프트웨어 지원의 사용법을 상세히 열거하는 주기적(예를 들어, 한 달) 수수료 및 사용법 보고서(시뮬레이션 애플리케이션의 사용자, 조직 및 라이센서에 대한)를 발생시킬 수 있다.
일 구현예(또한 흐름도(400)에 도시되지 않음)에서, 어떠한 매칭 checkIN 이벤트도 라이센스 로그 파일에 발생되지 않고 기록되지 않으면(예를 들어, 시뮬레이션 애플리케이션이 그의 라이센스 서버(112)에 비정상적으로 알려져 있지 않고 종결되면), 소프트웨어 미터링 모듈(113)은 인위적인 checkIN 이벤트를 생성하고 다른 모니터링된 정보로부터 그의 날짜 및 시간을 추론한다. 이러한 정보는 도 5를 참조하여 아래에 더 상세히 논의되는 바와 같이, 클러스터 자체 내에서 분별되는 정보뿐만 아니라, 클러스터가 실행되고 있는 하드웨어 제공자 플랫폼(130)으로부터의 통지를 포함할 수 있다.
흐름도(400)로 돌아가면, 소프트웨어 미터링 모듈(113)은 단계(415)에서 라이센스 로그 파일 중 하나로 새로운 엔트리를 검출하면, 타입을 결정할 수 있도록 단계(420)에서 이러한 새로운 엔트리를 파싱한다. 단계(425)에서, 새로운 엔트리가 checkOUT 이벤트인지를 결정한다. 그렇지 않으면, 이때 단계(435)에서, 새로운 엔트리가 checkIN 이벤트인 것을 결정한다. 그렇지 않으면, 이때 단계(445)에서, 새로운 엔트리가 DateStamp 엔트리인 것을 결정한다. 그렇지 않으면, 이때 단계(492)에서, 새로운 엔트리가 그에 따라 무시(및 그 다음 단계(415)에서 새로운 엔트리에 대한 검색을 재개)할 수 있는 "미지의 로그 엔트리"이라고 결론을 내린다. 다른 구현예에서. 라이센스 서버(112)는 부가 타입의 이벤트를 발생시킬 수 있으며, 이 이벤트는 본 발명의 사상으로부터 벗어나는 것 없이 유사한 방식으로 처리될 수 있다.
새로운 엔트리가 단계(425)에서 checkOUT 이벤트인 것으로 결정되면, 소프트웨어 미터링 모듈(113)은 단계(450)에서, checkOUT "DateTime" 엔트리를 발생시키고, 단계(460)에서, checkOUT DateTime 엔트리 및 "개방" checkIN 엔트리를 포함하는 새로운 checkOUT 레코드를 생성한다(시뮬레이션 애플리케이션 또는 구성요소 특징이 아직 "다시 체크인"되어야 함에 따라). 이어서, 그것은 서버 DB(105)에 이러한 새로운 checkOUT 레코드를 저장한다. 다시 말해, 소프트웨어 미터링 모듈(113)은 이벤트를, 대응하는 시뮬레이션 애플리케이션 및 사용자의 시뮬레이션 작업과 연관시키는 관련 정보뿐만 아니라, checkOUT 이벤트의 날짜 및 시간을 저장한다. 위에 언급된 바와 같이, 날짜가 포함되지 않으면, 소프트웨어 미터링 모듈(113)은 라이센스 로그 파일 내의 가장 최근 이전 DateStamp 엔트리로부터 날짜를 추론할 수 있다.
아래에 논의되는 바와 같이, 이러한 정보는 관련 시뮬레이션 작업에 의해 전체 사용법을 결정하기 위해 이러한 이벤트를 장래 대응하는 checkIN 이벤트와 매칭시키도록 소프트웨어 미터링 모듈(113)에 의해 나중에 이용되며, 이로부터 위에 언급된 바와 같은 소프트웨어 미터링 수수료를 계산한다. 그러나, 이러한 지점에서, 이러한 checkOUT 이벤트의 처리를 완료했으면, 소프트웨어 미터링 모듈(113)은 새로운 엔트리에 대한 라이센스 로그 파일을 검색하는 것을 재개하기 위해 단계(415)로 돌아간다.
다른 한편, 새로운 엔트리가 단계(435)에서 checkIN 이벤트인 것으로 결정되면, 소프트웨어 미터링 모듈(113)은 단계(470)에서, checkIN "DateTime" 엔트리를 발생시킨다. 그것은 이전에 대응하는 checkOUT 엔트리가 존재해야 하는 것을 인식하기 때문에, 단계(480)에서, 서버 DB(105)를 단계(460)에서 생성되고 다시 저장되는, 대응하는 checkOUT 레코드에 대해 검색한다(checkOUT 이벤트를 대응하는 시뮬레이션 애플리케이션 및 사용자의 시뮬레이션 작업과 연관시키는 위에 논의된 관련 정보를 이용함). 그 다음, 소프트웨어 미터링 모듈(113)은 checkIN DateTime 엔트리에 의해 이러한 checkOUT 레코드를 갱신하고, 서버 DB(105)에 갱신된 checkOUT 레코드를 저장한다. checkOUT 이벤트에 있는 경우이지만, 소프트웨어 미터링 모듈(113)은 라이센스 로그 파일 내의 가장 최근 이전 DateStamp 엔트리로부터 이러한 checkIN 이벤트의 날짜를(그것이 새로운 엔트리에 포함되지 않으면) 추론할 수 있다.
그 다음, 소프트웨어 미터링 모듈(113)은 단계(490)에서, 특정 라이센스 서버(112)가 라이센스 로그 파일에 추가하는 각각의 checkIN 및 checkOUT 엔트리에 시간만(그러나 날짜는 아님)을 포함한다는 사실(위에 언급됨)로 인해 checkIN 및 checkOUT의 매칭을 용이하게 하기 위해 현재 날짜를 서버 DB(105)에 저장한다. 새로운 엔트리가 단계(445)에서 DateStamp 엔트리인 것으로 결정되면, 소프트웨어 미터링 모듈(113)은 단계(490)에서, 이러한 DateStamp 엔트리로부터의 현재 날짜를 서버 DB(105)로 저장한다. 어느 하나의 경우에, 이러한 "현재 날짜" 정보는 단계(480)에서, 대응하는 매칭 checkOUT 레코드에 대한 검색을 용이하게 하며 -- 즉, 날짜가 각각의 checkOUT 엔트리와 연관되는 것을 보장한다. 그 다음, 소프트웨어 미터링 모듈(113)은 새로운 엔트리에 대한 라이센스 로그 파일을 검색하는 것을 재개하기 위해 단계(415)로 돌아간다.
위에 언급된 바와 같이, 흐름도(400)에 예시된 이러한 소프트웨어 미터링 프로세스는 일반적으로 이러한 시뮬레이션 애플리케이션의 개별 구성요소 특징에 뿐만 아니라, 시뮬레이션 애플리케이션에 대한 checkOUT 및 checkIN 이벤트와 매칭하며, 그에 의해 시뮬레이션 애플리케이션의 소유자에 의해 특징별로 이용되는 상이한 인증 및 가격책정 메커니즘을 수용한다.
도 5를 참조하면, 블록도(500)는 클러스터 서비스(104)에 의해 하드웨어 제공자 플랫폼(130) 상에 프로비저닝된 후에 클러스터의 핵심 구성요소의 일 구현예를 예시한다. 위에 언급된 바와 같이, 시뮬레이션 서비스(103)는 시뮬레이션 애플리케이션의 인스턴스를 포함하는 특정 구성요소를 설치하고 구성함으로써 클러스터를 구성한다. 이들 구성요소는 사용자의 시뮬레이션 작업과 연관되는 각각의 클러스터에 상주함에도 불구하고, 개념적으로 시뮬레이션 서버 플랫폼(101)의 기능성의 일부인 점이 주목되어야 한다. 상이한 하드웨어 및 소프트웨어 구성요소 중에 이러한 기능성의 할당은 엔지니어링 및 설계 트레이드오프의 결과이며, 이는 본 발명의 사상으로부터 벗어나는 것 없이 수정될 수 있다.
시뮬레이션 자원 매니저(110)가 컴퓨팅 자원의 사용을 모니터링하고, 보증될 때 그것을 수정하는 프로세스를 어떻게 관리하는지를 더 잘 이해하기 위해(아래의 도 6 및 도 7를 참조하여 더 상세히 설명되는 바와 같음), 그것은 이러한 중요 기능 구성요소가 어떻게 실행 시뮬레이션과 상호작용하고 각각의 클러스터(531)와 시뮬레이션 서버 플랫폼(101) 사이의 통신을 용이하게 하는지를 이해하는 데 도움이 된다.
일 구현예에서, 각각의 시뮬레이션 작업에 대해, 클러스터 서비스(104)는 시뮬레이션 애플리케이션의 각각의 나머지 인스턴스에 대한 부가 노드(노드 H1(531H1), 노드 H2(531H2),... 노드 Hn(531Hn))와 함께, (시뮬레이션 애플리케이션의 인스턴스(539H)를 포함하는), 단일 "헤드 노드 H"(531H)를 포함하는 클러스터(531)를 프로비저닝하고 구성한다. 이러한 구현예에서, 클러스터 서비스(104)에 의해 설치되는, 시뮬레이션 애플리케이션의 각각의 인스턴스(539H, 539H1...539Hn)는 별개의 CPU 코어에 의해 실행된다. CPU 코어는 단일 물리 또는 가상 서버 내의 하나 이상의 CPU 상에 상주하거나 다수의 CPU, 물리 및 가상 서버에 걸쳐 확산될 수 있다. 다른 구현예에서, 각각의 노드는 하드웨어 제공자 플랫폼(130)로부터 프로비저닝되는 가상 서버에 대응하고, 따라서 하나보다 많은 CPU 코어를 포함하므로 시뮬레이션 애플리케이션의 하나보다 많은 인스턴스를 실행할 수 있다.
각각의 노드(헤드 노드 H(531H)를 포함함)는 또한 하드웨어 모니터(538H, 538H1...538Hn)를 포함하며, 그것은 아래에 설명되는 바와 같이, 시뮬레이션 애플리케이션의 대응하는 인스턴스에 의해 컴퓨팅 자원의 사용을 동적으로 모니터링한다. 헤드 노드 H(531H)는 또한 시뮬레이션 작업의 관리에 관한 부가 구성요소(일 구현예에서, 시뮬레이션 실행기(533), 출력 파일 파서(Output File Parser)(534), 재시작 파일 모니터(536) 및 클러스터 DB(535))를 전체로서 포함한다. 이러한 구성요소의 기능성은 클러스터(531) 내의 모든 노드 중에 효과적으로 공유된다.
위에 언급된(그리고 도 6 및 도 7을 참조하여 아래에 더 상세히 설명된) 바와 같이, 시뮬레이션 자원 매니저(110)는 그의 프로비저닝된 클러스터 상에 실행되고 있는 동안 각각의 사용자의 시뮬레이션 작업의 실행을 연속적으로 모니터링하여, 사용자의 시뮬레이션 작업에 관한 애플리케이션 특정 정보뿐만 아니라 컴퓨팅 자원 이용 정보를 포함하는 다양한 자원 변화 지시자를 검색한다. 일 구현예에서, 각각의 노드 내의 하드웨어 모니터(538H, 538H1...538Hn)는 클러스터(531) 내의 각각의 CPU 코어에 의한 퍼센티지 CPU 이용과 같은, 컴퓨팅 자원 이용 정보를 획득할 책임이 있다.
특정 컴퓨팅 자원 이용 정보는 하드웨어 플랫폼 제공자(130)에 의해 제공되는 표준 서비스를 통해 획득될 수 있지만, 하드웨어 모니터(538H, 538H1...538Hn)는 또한 이러한 정보를 보충하며, 일 구현예에서, 가용 RAM, 전체 네트워크 대역폭 이용 등의 양과 같은, 부가 정보는 클러스터(531)가 상주하는 하드웨어 플랫폼 제공자(130)로부터 이용 가능하지 않다. 하드웨어 플랫폼 제공자(130)에 의해 제공되는 서비스를 통해 간접적으로 획득되는 정보를 포함하는 하드웨어 모니터(538H, 538H1...538Hn)에 의해 획득되는 컴퓨팅 자원 이용 정보는 클러스터 DB(535)에 저장되고 유지되고, 시뮬레이션 자원 매니저(110)에 의해 궁극적으로 이용된다(도 6 및 도 7을 참조하여 아래에 더 상세히 설명되는 바와 같음). 일 구현예에서, 클러스터 DB(535)에 저장되는 데이터는 클러스터 DB(535)에의 추가 액세스를 방지하는 클러스터(531) 내의 하드웨어 또는 소프트웨어 장애의 경우에 사용을 위한 서버 DB(105)와 주기적으로 동기화된다.
위에 언급된 바와 같이, 시뮬레이션 실행기(533)는 사용자의 시뮬레이션 작업의 전체 동작을 관리하고, 일 구현예에서, 시뮬레이션 서비스(103)를 통해 시뮬레이션 서버 플랫폼(101)과 통신한다. 시뮬레이션 애플리케이션의 인스턴스(539H, 539H1...539Hn) 각각의 실행을 개시하고 시뮬레이션이 완료(또는 비상적으로 종결)되었을 때 클러스터를 정지시키는 것에 더하여, 시뮬레이션 실행기(533)는 또한 다양한 자원 변화 지시자를 획득하는 동적 프로세스를 관리하며 - 예를 들어, 하드웨어 모니터(538H, 538H1...538Hn)와 통신하여 컴퓨팅 자원 이용 정보를 획득하는 프로세스를 관리한다.
시뮬레이션 실행기(533)는 또한 사용자의 시뮬레이션 작업에 관한 애플리케이션 특정 정보의 추출을 전체로서(즉, 시뮬레이션 애플리케이션의 다수의 인스턴스에 걸쳐) 관리한다. 위에 언급된 바와 같이, 시뮬레이션 애플리케이션은 다양한 타입의 상태 정보를 발생시키고 출력 파일에 기록한다. 도 5에 예시된 구현예에서, 시뮬레이션 애플리케이션은 이들 출력 파일을 헤드 노드 H(531H) 내의 클러스터 DB(535)에 기록하도록 구성된다. 출력 파일 파서(534)는 도 6 및 도 7에 대해 아래에 더 상세히 설명되는 바와 같이, 컴퓨팅 자원의 변화가 보증되는지를 시뮬레이션 자원 매니저(110)가 추론할 수 있는 정보(예를 들어, 잠재적 장래 컴퓨팅 자원 요건의 지시자를 포함하는 컴퓨팅 자원의 시뮬레이션 애플리케이션의 사용의 효율에 관한 정보)를 추출하기 위해 이러한 출력 파일을 파싱한다.
시뮬레이션 애플리케이션은 또한(위에 언급된 바와 같이) 이러한 구현예에서, 또한 클러스터 DB(535)에 기록되는 재시작 파일을 때때로 발생시키고 기록한다. 재시작 파일은 시뮬레이션 애플리케이션이 재시작될 수 있는 현재 중간 시뮬레이션 상태를 포함한다. 위에 언급된 바와 같이, 시뮬레이션 애플리케이션은 전형적으로 그것이 실행되는 CPU 코어의 수(즉, CPU 코어 당 하나의 인스턴스)를 표시하는 사전 구성 정보를 필요로 한다. 예를 들어, 시뮬레이션 애플리케이션의 8 인스턴스는 초기에 8 CPU 코어 상에 실행되고 있을 수 있다. 그러나, 재시작 파일에서 식별되는 중간 시뮬레이션 상태로부터 재시작될 때, 시뮬레이션 애플리케이션은 더 작거나 더 큰 수의 CPU 코어를 위해 구성될 수 있다.
일 구현예에서, 재시작 파일 모니터(536)는 시뮬레이션 애플리케이션에 의해 때때로 기록되는 재시작 파일을 모니터링 및 분석하고, 컴퓨팅 자원의 변화가 보증되는지의 결정에서 시뮬레이션 자원 매니저(110)에 의해 이용되는 정보를 제공한다. 이러한 정보는 재시작 파일이 기록된 시간과 같은, 더 일반적 정보뿐만 아니라, 특정 변수의 캡처된 "스냅샷" 상태를 포함할 수 있다. 예를 들어, 다른 자원 변화 지시자는 컴퓨팅 자원의 변화가 보증되는 것을 다른 방법으로 제안할 수 있지만, 충분히 최근의 재시작 파일의 결핍은 이러한 결정에 대해 밸런스를 줄 수 있다.
도 6을 참조하면, 블록도(600)는 시뮬레이션 자원 매니저(110)의 핵심 구성요소의 일 구현예를 예시하며, 이는 사용자의 시뮬레이션 작업이 실행되고 있는 동안, 시뮬레이션 작업에 현재 프로비저닝되는 컴퓨팅 자원을 수정하는지, 수정할 때 및 어느 정도까지 수정하는지를 동적으로 결정한다. 시뮬레이션 모니터링 서비스(615)는 현재 실행되는 시뮬레이션 작업과 연관되는 각각의 클러스터(531) 내의 시뮬레이션 실행기(533)와의 통신을 관리한다.
위에 언급된 바와 같이, 시뮬레이션 모니터링 서비스(615)에 의해 시뮬레이션 실행기(533)로부터 획득되는 정보는 컴퓨팅 자원 이용 정보를 포함하는 자원 변화 지시자를 포함하며, 이 지시자는 CPU 코어의 퍼센티지 이용, 각각의 물리 또는 가상 서버 상의 이용 가능 메모리 및 디스크 공간, 디스크 판독/기록 정보(예를 들어, 주어진 기간 내의 특정 저장 디바이스로 판독되고 이 디바이스로부터 기록되는 바이트의 수), 및 네트워크 대역폭 이용(예를 들어, 가상 서버에 걸쳐 전송되는 바이트의 수)와 관련된다. 이력 컴퓨팅 자원 이용 정보는 또한 시뮬레이션 작업이 실행되고 있는 동안 시간에 따라 클러스터 DB(535)에 유지되어, 이러한 사용의 효율에 관한 시뮬레이션 자원 매니저(610)에 의한 추론을 가능하게 한다.
시뮬레이션 모니터링 서비스(615)는 또한 (시뮬레이션 실행기(533)로부터) 사용자의 시뮬레이션 작업에 관한 애플리케이션 특정 정보(다른 타입의 자원 변화 지시자)를 획득한다. 위에 언급된 바와 같이, 이러한 정보는 시뮬레이션 애플리케이션에 의해 발생되는 출력 파일로부터 추출되고, 예를 들어 시뮬레이션 애플리케이션이 사용자의 시뮬레이션 모델에 대해 처리하고 있는 현재 수의 셀에 대한 직접적 및 간접적 참조를 포함한다.
예를 들어, 시뮬레이션이 진행됨에 따라, 시뮬레이션 애플리케이션은 모델의 일부 또는 전부 부분에서 셀의 수를 조합하거나 분할할 수 있어, 시뮬레이션 모니터링 서비스(615)가 처리되는 셀의 현재 수를 추론하고, 다른 구현예에서, 장래에 처리될 셀의 수를 예측할 수 있게 한다. 다른 경우에, 셀의 수는 그의 길이(예를 들어, 2 mm) 또는 체적(예를 들어, 1 입방 미터)과 같은, 셀 특징으로부터 추정될 수 있다. 코어 당 셀의 미리 정의된 타겟 수를 고려하면, 시뮬레이션 모니터링 서비스(615)는 CPU 코어의 새로운 타겟 수를 추론하며, 이는 다른 컴퓨팅 자원에 대한 타겟에 영향을 미칠 수 있다(예를 들어, 상대적으로 높은 수의 512 CPU 코어는 10 G 이더넷 또는, 이용 가능한 경우, 가능하게는 40 G 인피니밴드와 같은, 더 높은 네트워크 대역폭으로부터 혜택을 얻을 수 있음),
위에 언급된 바와 같이, 사용자의 시뮬레이션 데이터 모델의 셀은 시스템이 모델링되는 것 및 기능성이 사용자의 시뮬레이션 데이터 모델 상에 시뮬레이션 애플리케이션에 의해 수행되는 것에 의존하여 시간에 따라 변화를 겪는 다양한 성질(예를 들어, 길이, 체적, 밀도, 온도, 압력 등)을 갖는다. 예를 들어, "전산 유체 역학"(CFD) 시뮬레이션에서, 시뮬레이션 애플리케이션은 이륙 시에(또는 주어진 고도에서의 비행 동안, 또는 착륙을 위한 하강 동안 등) 공기를 통해 이동함에 따라 날개 상에 난류의 효과를 시뮬레이션하기 위해 비행기 날개의 사용자의 모델 상에 계산을 수행할 수 있다. 이러한 예에서, 비행기 날개의 셀은 체적, 온도, 압력 등과 특정 초기 성질을 가질 수 있다. 그러나, 날개가 공기를 통해 이동하고, 공기 분자(또한 유사한 성질을 가진 셀로 나타냄)에 직면함에 따라, 날개 상의 특정 셀의 성질은 예를 들어, 표준 난류 및 관련 상황에 기초하여 변화될 수 있다. 이러한 계산의 결과로서, 예를 들어, 압력은 날개의 특정 셀 상에서 증가할 수 있으며, 이는 시뮬레이션이 진행됨에 따라 이들 및 다른 이웃 셀의 성질 등의 변화를 야기할 수 있다.
시간에 따른 이들 계산의 다수의 반복의 과정을 통해, 셀 성질의 변화는 영구화되고, 출력 파일에 때때로 기록되는 상태 정보에 반영된다. 또한 상이한 시뮬레이션 애플리케이션은 상이한 타입의 정보를 출력 파일에 기록한다는 점이 주목되어야 한다. 예를 들어, 일부는 셀을 CPU 코어에 상관시키고, 셀의 수가 미리 결정된 양 또는 퍼센티지만큼 증가 또는 감소함에 따라 데이터를 출력 파일에 기록한다. 다른 것은 사용자의 시뮬레이션 데이터 모델의 사양에 기초하여 RAM의 요구된 양을 결정하고, 시뮬레이션이 실행되고 있는 동안 다양한 시간에 요구되는 RAM의 최소 및 가장 효율적인 양을 출력 파일에 기록한다. 또 다른 것은 디스크에 기록되는 데이터의 양 및 빈도를 표시하는 출력 파일에 기록되는 정보에 기초하여 RAM 요건에 관한 추론을 요구한다.
시뮬레이션 모니터링 서비스(615)는 이들 상이한 타입의 애플리케이션 특정 정보(출력 파일로부터 추출된 후에 시뮬레이션 실행기(533)로부터 획득됨)를 모니터링하고, 시뮬레이션 애플리케이션에 의한 컴퓨팅 자원의 사용에 관한(예를 들어, 셀의 현재 수, 가용 RAM의 양 등에 관한) 추론을 하고 최적의 컴퓨팅 자원 평가 엔진(620)에 의한 평가를 위한 이러한 데이터를 조직 및 포맷한다. 시뮬레이션 모니터링 서비스(615)는 또한 특히 컴퓨팅 자원의 변화가 보증될 때의 분석을 용이하게 하기 위해 최적의 컴퓨팅 자원 평가 엔진(620)에 제공하는, 시뮬레이션 애플리케이션에 의해 시간에 따라 발생되는 재시작 파일을 시뮬레이션 실행기(533)로부터 획득한다.
일 구현예에서, 최적의 컴퓨팅 자원 평가 엔진(620)은 시뮬레이션 모니터링 서비스(615)로부터 이러한 데이터를 평가하고 컴퓨팅 자원의 변화가 보증되는지를 결정하기 위해 한 세트의 "트리거 평가기"를 포함한다. 하드웨어 레벨 트리거 평가기(623)는 컴퓨팅 자원 이용 데이터 - 즉, 각각의 컴퓨팅 자원(CPU, RAM, 스토리지, 네트워크 대역폭 등)의 이용의 현재 및 이력 퍼센티지를 평가하기 위해 이용된다.
시뮬레이션 레벨 트리거 평가기(621)는 사용자의 시뮬레이션 작업에 관한 애플리케이션 특정 데이터(예를 들어, 시뮬레이션 애플리케이션에 의해 발생되는 출력 파일로부터 시뮬레이션 실행기(533)에 의해 추출됨)를 평가하기 위해 이용된다. 일 구현예에서, 개별 트리거는 각각의 컴퓨팅 자원을 위해 이용된다. 셀의 수에 관한 정보는 CPU 코어의 수의 증가 또는 감소를 트리거링할 수 있다. 시간에 따라 "인터-코어" 통신의 증가를 입증하는 정보는 CPU 코어의 수의 감소, 및 아마도 RAM의 양의 증가를 트리거링할 수 있다.
애플리케이션 특정 정보는 또한 시뮬레이션의 더 많거나 더 적은 CPU 집약 위상으로의 전이를 입증할 수 있으며, 그에 의해 CPU 코어의 수의 증가 또는 감소를 트리거링한다. 예를 들어, 시뮬레이션 애플리케이션의 특정 타입의 구성요소(예를 들어, 특정 타입의 계산을 위한 "솔버(solver)")로의 전이는 시뮬레이션의 더 적은 CPU 집약 "위상"을 자주 표시한다. 더욱이, 시뮬레이션이 일련의 또는 계층의 리피팅 "반복 단계"(예를 들어, 기간, 특정 해결법을 향하는 수학적 수렴, 예컨대 평형을 향해 수렴하는 셀 압력을 시뮬레이션하는 반복, 또는 다른 유사한 리피팅된 반복) 중 하나를 완료했다는 증거는 컴퓨팅 자원의 이력 이용이 후속 "반복 단계"에 대해 반복될 가능성이 있는 것을 표시할 수 있다. 이러한 시나리오에서, 하나 이상의 반복 단계 동안 현재 프로비저닝된 컴퓨팅 자원의 사용의 이력 증거는 장래 반복 단계 동안 이러한 사용에 관한 추론을 용이하게 하는 것을 제공하고, 따라서(일 구현예에서) 컴퓨팅 자원의 변화가 보증되는지의 결정에 관한 더 큰 가중을 취한다.
일 구현예에서, 시뮬레이션 레벨 트리거 평가기(621) 및 하드웨어 레벨 트리거 평가기(623)의 트리거가 조합되어, 더 복잡한 기능 또는 규칙을 가능하게 한다. 예를 들어, CPU 코어의 트리거된 증가는 셀의 수 및 CPU 이용의 임계치 증가를 둘 다 요구할 수 있다.
최종적으로, 사용자 레벨 트리거 평가기(622)는 일 구현예에서, 컴퓨팅 자원의 할당에 관한 사용자의 미리 정의된 전체 목표(일 구현예에 선택적임)를 고려하여 최적의 컴퓨팅 자원 평가 엔진(620)에 의한 결정을 용이하게 하기 위해 이용된다. 예를 들어, 하나의 사용자는 최소 비용을 최적화하는 것을 선택할 수 있는 반면에, 다른 사용자는 최소 전체 시뮬레이션 시간을 최적화하는 것을 선택할 수 있다. 다른 구현예에서, 사용자는 최적의 컴퓨팅 자원 평가 엔진(620)의 규칙 기반 구현에 의해 이용되는 규칙 또는 다른 휴리스틱뿐만 아니라, 미리 정의된 임계치를 가진 기능을 포함하는 트리거를 제공할 수 있다.
일 구현예에서, 최적의 컴퓨팅 자원 평가 엔진(620)은 주어진 세트의 프로비저닝된 컴퓨팅 자원 상의 시뮬레이션 애플리케이션의 작용의 예측 모델을 포함하는 러닝 엔진(구성요소 트리거 평가기 중에 분배됨)을 이용한다. 예를 들어, 하나의 이러한 예측 모델은 시뮬레이션의 과정 동안 시간에 따라 사용자의 시뮬레이션 데이터 모델에 존재하는 셀의 수를 (출력 파일로부터 추출되는 애플리케이션 특정 데이터에 기초하여) 예측한다. 이러한 예측 모델은 시뮬레이션이 진행되고 새로운 정보가 시뮬레이션 모니터링 서비스(615)에 의해 획득됨에 따라 연속적으로 정제된다. 셀의 예측된 수가 미리 정의된 임계치를 초과하면, 시뮬레이션-레벨 트리거 평가기(621)는 CPU 코어의 현재 수의 증가에 대한 권고를 "트리거링"한다.
다른 트리거는 예를 들어, CPU 코어(또는 RAM, 스토리지, 네트워크 대역폭 또는 다른 컴퓨팅 자원)의 퍼센티지 이용이 미리 정의된 임계치를 초과할 때, 예를 들어 하드웨어 레벨 트리거 평가기(623)에 의해 발생된다. 이들 트리거는 일 구현예에서, 하나 이상의 컴퓨팅 자원의 변화가 보증되는지에 관한 단일 결정을 발생시키기 위해 조합된다. 예를 들어, 일 구현예에서, 미리 정의된 기능은 다양한 트리거를 조합하고, 미리 정의된 가중치를 각각의 트리거에 적용하기 위해 이용된다. 이러한 구현예에서, 사용자 레벨 트리거 평가기(622)는 미리 결정된 사용자 목표를 고려함으로써 이들 기능에서 트리거의 가중을 수정하기 위해 이용된다. 예를 들어, 최소 전체 시뮬레이션 시간을 최적화하는 사용자 목표는 전체 비용을 최적화하는 사용자 목표보다 더 많이(부가 결과 비용에도 불구하고) 증가된 CPU 코어에 대한 트리거를 가중할 수 있다.
다른 구현예에서, 러닝 엔진 대신, 최적의 컴퓨팅 자원 평가 엔진(620)은 시뮬레이션 작업에 의한 컴퓨팅 자원의 장래 사용을 예측하는 것이 아니라, 대신에 시뮬레이션 모니터링 서비스(615)에 의해 모니터링되는 현재 데이터 및 시간에 따라 모니터링되는 이력 트렌드에 오로지 기초하여 트리거를 발생시키는 미리 정의된 규칙(예를 들어, 지식 기반 전문가 시스템에 의해 이용되는 바와 같음)을 포함한다. 예를 들어, 이러한 구현예에 이용되는 하나의 이러한 규칙 또는 발견법은 CPU 이용의 퍼센티지가 미리 정의된 임계치를 초과하고 셀의 수가 또 다른 임계 기간 동안 다른 미리 정의된 임계치 퍼센티지만큼 증가했을 때 CPU 코어의 증가를 트리거한다. 또 다른 구현예에서, 더 간단한 세트의 미리 정의된 기능은 임의의 지식 베이스 또는 전문가 시스템 없이 이용된다.
최적의 컴퓨팅 자원 평가 엔진(620)은 이용되는 엔진의 형태에 관계없이, 개별 컴퓨팅 자원의 변화가 보증되는지를 연속적으로 결정한다. 일 구현예에서, 이러한 결정에 도달하기 전에, 최적의 컴퓨팅 자원 평가 엔진(620)은 충분히 최근의 재시작 파일이 이용 가능한지를 결정하기 위해 재시작 파일을 분석한다. 예를 들어, 가장 최근 재시작 파일 내의 특정 정보의 상태가 이러한 정보의 현재 버전과 상이한 결론을 초래하면, 최적의 컴퓨팅 자원 평가 엔진(620)은 일 구현예에서, 프로비저닝된 컴퓨팅 자원에 대한 어떠한 변화도 보증되지 않는 것을 결정한다. 다른 구현예에서, 그것은 이러한 정보의 버전 간의 차이의 정도에 기초하여, 하나 이상의 트리거의 미리 정의된 가중을 조정한다.
최적의 컴퓨팅 자원 평가 엔진(620)은 컴퓨팅 자원의 변화가 보증되는 것을 결정하는 경우에, 최적의 컴퓨팅 자원 계산기(630)는 사용자의 시뮬레이션 작업에 할당되는 최적의 양의 각각의 컴퓨팅 자원을 결정하고, 이러한 최적의 세트의 컴퓨팅 자원을 하나 이상의 하드웨어 제공자 플랫폼(130)으로부터 프로비저닝되는 실제 물리 또는 가상 서버로 변환하기 위해 이용된다. 예를 들어, 최적의 컴퓨팅 자원 평가 엔진(620) 내의 다양한 트리거에 의해 제공되는 결과에 기초하여, 최적의 컴퓨팅 자원 계산기(630)는 CPU 코어의 증가가 보증되는 반면에, RAM의 양이 감소되어야 하는 것을 결정할 수 있다. 그러나, CPU 코어의 정확한 수 및 RAM의 양은 일 구현예에서, 가장 최근 재시작 파일에 이용 가능한 시뮬레이션 상태에 의해 부과되는 제약뿐만 아니라, 이력 트렌드 및 예상된 장래 컴퓨팅 자원 요건 둘 다를 고려하여, 다양한 트리거에 의해 수행되는 평가로부터 추정됨으로써 결정된다.
예를 들어, CPU 코어에 대해, 요구된 CPU 코어의 예상된 수는 이력 트렌드 또는 예측 러닝 엔진에 기초할 수 있다. 어떤 경우에, 셀의 수는 코어 당 셀의 미리 정의된 최적의 수를 고려하여, 시뮬레이션 작업의 나머지에 대해 요구된 CPU 코어의 원하는 수를 초래하는 특정 속도로(또는 적어도 다른 변화가 실제 사용법 데이터에 기초하여 보증될 때까지) 증가하는 것으로 예상될 수 있다. 이러한 원하는 수는 예를 들어, 가장 최근 재시작 파일이 발생된 시간으로부터의 지난 결과가 고려되면 약간 감소될 수 있다.
일 구현예에서, 간단한 평균이 이용되며 - 예를 들어, 예상된 요구가 시뮬레이션의 나머지(가장 최근 재시작 파일에서 이용 가능한 중간 상태로부터)에 대해 14에서 46 코어까지의 범위에 이르는 경우, 30 CPU 코어를 선택한다. 다른 구현예에서, 미리 정의된 기능은 - 예를 들어, 최소 비용 또는 최소 전체 시뮬레이션 시간, 또는 일부 다른 원하는 목표를 최적화하기 위해 사용자의 요구를 고려하여, 상이한 결과를 초래할 수 있다.
유사한 계산은 다른 컴퓨팅 자원(RAM, 스토리지, 네트워크 대역폭 등)에 대해 수행되며, 이의 각각은 각각의 특정 타입의 컴퓨팅 자원에 대한 시뮬레이션 모니터링 서비스(615)에 의해 추출되고 모니터링되는 데이터에 기초한다. 각각의 경우에, 계산은 이러한 특정 컴퓨팅 자원의 예상된 이용에 기초한다.
원하는 세트의 컴퓨팅 자원이 (가장 최근 이용 가능 재시작 파일을 고려하여) 결정되면, 이들 양은 실제로 하나 이상의 하드웨어 제공자 플랫폼(130)으로부터 프로비저닝될 수 있는 한 세트의 컴퓨팅 자원으로 효과적으로 변환된다. 예를 들어, 계산은 30 CPU 코어 및 CPU 코어 당 3 GB의 RAM에 대한 요건을 발생시킬 수 있지만, 가장 가까운 매칭 이용 가능 물리 또는 가상 서버는 2 가상 서버일 수 있으며, 이의 각각은 16 CPU 코어 및 64 GB의 RAM을 갖는다.
현재 세트의 구성된 컴퓨팅 자원은 예를 들어, 상이한 타입의 가상 서버(예를 들어, 8 CPU 코어 및 64 GB의 RAM을 가진 것)를 포함할 수 있다는 점을 주목한다. 이것은 본 발명의 일 구현예에서 문제를 제공하지 않는데 - 왜냐하면 새로운 클러스터가 잠재적으로 심지어 새로운 하드웨어 제공자 플랫폼(130)으로부터 프로비저닝되기 때문이다.
최적의 컴퓨팅 자원 계산기(630)는 새로운 클러스터로서 프로비저닝되는 새로운 원하는 세트의 컴퓨팅 자원을 결정하면, 시뮬레이션 자원 매니저(110)는 현재 클러스터를 종결시키고, 새로운 클러스터를 프로비저닝하고 구성하고, 이러한 새로운 클러스터 상에 (가장 최근 재시작 파일에 포함되는 중간 시뮬레이션 상태로부터) 사용자의 시뮬레이션 작업의 실행을 재개하는 프로세스를 편성한다. 이러한 프로세스는 아래의 도 7의 흐름도(700)에 예시되고, 사용자의 시뮬레이션 작업이 실행되고 있는 동안 프로비저닝된 컴퓨팅 자원의 이러한 동적 수정으로부터 혜택을 얻는 시뮬레이션 시나리오의 타입의 예와 함께 설명된다.
도 7을 참조하면, 흐름도(700)는 본 발명의 시뮬레이션 서버 플랫폼(101) 상의 시뮬레이션 자원 매니저(110)의 동적 동작의 일 구현예를 예시한다. 이러한 프로세스는 단계(701)에서(시뮬레이션 자원 매니저(110)가 호출되기 전에) 사용자의 시뮬레이션 작업 요청의 시뮬레이션 서버 플랫폼(101)에 의한 수신으로 시작된다. 위에 언급된 바와 같이, 클러스터 서비스(104)는 단계(702)에서, 사용자의 데이터 모델, 시뮬레이션 애플리케이션의 식별 및 관련 사용자 입력 파라미터를 포함하는 요청된 작업에 관한 사용자 정보를 획득하기 위해 호출된다.
단계(704)에서, 시뮬레이션 자원 매니저(110)는 최적의 컴퓨팅 자원 평가 엔진(620)을 초기화하기 위해 호출된다. 모든 공식, 임계치, 규칙, 및 다른 트리거는 사용자의 시뮬레이션 작업이 실행되고 있는 동안 후속 사용을 위한 미리 결정된 값 - 즉, 현재 프로비저닝된 세트의 컴퓨팅 자원의 시뮬레이션 작업에 의한 사용을 모니터링하는 것, 및 이러한 세트의 프로비저닝된 컴퓨팅 자원을 수정하는지, 수정할 때 및 어느 정도까지 수정하는지를 평가하는 것으로 초기화된다.
일 구현예에서, 이러한 정보는 일반적으로 모든 시뮬레이션 작업에 대해 미리 결정되는 반면에, 다른 구현예에서 그것은 특정 타입의 시뮬레이션 및 시뮬레이션 애플리케이션에 맞추어지며 - 예를 들어, 상이한 시뮬레이션 애플리케이션이 상이한 최적의 코어 당 셀 비율로 더 잘 수행되는 것을 고려한다. 다른 구현예에서, 이러한 정보는 시뮬레이션 서버 플랫폼(101) 또는 사용자에 의해 수행되는 이전 시뮬레이션 실행 또는 다른 분석에 기초한다.
최적의 컴퓨팅 자원 평가 엔진(620)이 초기화되면, 최적의 컴퓨팅 자원 계산기(630)는 단계(710)에서, 사용자의 시뮬레이션 작업에 프로비저닝되는 최적의 세트의 컴퓨팅 자원을 계산하기 위해 호출된다. 일 구현예에서, 단계(710)는 사용자의 시뮬레이션 작업이 실행되고 있는 동안 컴퓨팅 자원의 변화가 보증되는 경우에 후속 세트의 컴퓨팅 자원뿐만 아니라, 사용자의 시뮬레이션 작업이 개시되기 전에 프로비저닝되는 초기 세트의 컴퓨팅 자원을 계산하기 위해 수행된다는 점이 주목되어야 한다. 다른 구현예에서, 사용자는 시뮬레이션 서버 플랫폼(101)에 의해 제공되는 선택권으로부터 초기 세트의 컴퓨팅 자원을 선택하고, 이러한 단계(710)는 변화가 보증될 때에만 수행된다.
초기 세트의 컴퓨팅 자원에 대해, 최적의 컴퓨팅 자원 계산기(630)는 사용자의 시뮬레이션 작업이 아직 개시되지 않았기 때문에, 최적의 컴퓨팅 자원 평가 엔진(620)에 의한 임의의 분석에 액세스를 아직 갖지 않았다. 그러나, 그것은 사용자의 시뮬레이션 데이터 모델, 시뮬레이션 작업에 대한 입력 파라미터 및 임의의 사용자 제공 최적화 목표에 액세스를 갖는다. 더욱이, 서버 DB(105)에 유지되는 이력 데이터는 또한 - 예를 들어, 이전 시뮬레이션 실행의 결과에 관해 이용 가능할 수 있다.
예를 들어, 시뮬레이션 애플리케이션은 사용자의 시뮬레이션 데이터 모델 내의 셀의 초기 수에 기초하여 CPU 코어의 최적의 수를 초래할 수 있는 코어 당 셀의 최적의 수를 권고할 수 있다. 또한, 최적의 컴퓨팅 자원 계산기(630)는 사용자의 시뮬레이션 작업의 유사한 실행으로부터의 이력 데이터의 분석에 기초하여 상이한 수의 초기 CPU 코어를 선택할 수 있다. 일 구현예에서, 초기 시간 단계 반복의 이전 "사전 실행"(시뮬레이션 작업의 실행 동안 여러 번 반복될 것임)은 또한 상이한 수의 CPU 코어 또는 다른 컴퓨팅 자원을 제안할 수 있다.
일부 경우에, 셀의 초기 수는 사용자의 데이터 모델에 명시적으로 정의되는 반면에, 다른 경우에, 최적의 컴퓨팅 자원 계산기(630)는 셀의 수를 - 예를 들어, 입력 파일의 크기로부터, 또는 발생되는 메시의 기하학적 형상 및 특성에 관한 다른 파라미터로부터 추론한다. 예를 들어, 10 mm 셀 크기 및 1 입방 미터의 도메인 크기를 고려하면, 최적의 컴퓨팅 자원 계산기(630)는 1백만 셀의 초기 셀 카운트를 계산하고, 아마도 시뮬레이션 애플리케이션이 코어 당 10,000까지의 셀을 지원할 수 있으면 100 CPU 코어의 초기 수를 추론할 것이다.
더욱이, 코어의 이러한 초기 수는 RAM의 특정 양(예를 들어, 시뮬레이션 애플리케이션에 의해 부과되는 최소 2 GB RAM/코어 요건에 기초함) 또는 이러한 많은 CPU 코어를 수용하도록 요구되는 특정 네트워크 대역폭(예를 들어, 20 G 또는 40 G 인피니밴드)과 같은, 다른 초기 컴퓨팅 자원에 효과적으로 영향을 줄 수 있다. 아래에 논의되는 바와 같이, 최적의 세트의 컴퓨팅 자원은 이용 가능 물리 또는 가상 서버 타입을 고려하여 정제될 필요가 있을 수 있다.
일 구현예에서, 최적의 컴퓨팅 자원 계산기(630)는 상이한 타입의 시뮬레이션 애플리케이션을 수용한다. 예를 들어, 일부 시뮬레이션 애플리케이션이 셀을 CPU 코어에 상관시키지만, 다른 것은 사용자의 시뮬레이션 데이터 모델에 기초하여 최소 또는 원하는 양의 RAM을 지정할 수 있다.
시뮬레이션 작업이 초기 세트의 컴퓨팅 자원에 의해 정의되는 프로비저닝된 클러스터 상에 실행되고 있고, 최적의 컴퓨팅 자원 평가 엔진(620)은 컴퓨팅 자원의 변화가 보증되는 것을 결정할 때, 최적의 컴퓨팅 자원 계산기(630)는 시뮬레이션 상태에 발생했던 변화를 고려하여 새로운 최적의 세트의 컴퓨팅 자원을 결정하기 위해 다시 호출된다. 이러한 시나리오에서, 부가 정보가 이제 이용 가능하다.
예를 들어, 사용자의 시뮬레이션 모델 내의 셀의 수는 상당히 증가 또는 감소했을 수 있다. 일 구현예에서, 최적의 컴퓨팅 자원 평가 엔진(620)은 시뮬레이션 작업의 나머지에 대해 - 또는 적어도 시뮬레이션 작업이 컴퓨팅 자원의 또 다른 변화를 보증하는 다른 "위상"에 진입할 때까지 셀(또는 다른 컴퓨팅 자원)의 수를 예측한다. 더욱이, 위에 시사된 바와 같이, 시뮬레이션 모니터링 서비스(615)에 의해 모니터링되고 최적의 컴퓨팅 자원 평가 엔진(620)에 의해 평가되는 다른 자원 변화 지시자의 평가는 시뮬레이션 작업이 개시되었기 전에 그것의 초기 상태로부터 이러한 새로운 시뮬레이션 상태의 특정 변화를 반영할 수 있다.
예를 들어, 출력 파일로부터 추출되고 시뮬레이션 레벨 트리거 평가기(621)에 의해 평가되는 애플리케이션 특정 정보는 시뮬레이션 애플리케이션이 사용자의 시뮬레이션 모델에 기초하여 메시를 발생하고 있는 초기 "메싱 단계"에 시뮬레이션 작업이 여전이 있는 것을 표시할 수 있다. 또한, 컴퓨팅 자원 이용 정보는 CPU 이용이 예상된 범위 내에 있었던 동안, RAM 이용이 예상된 것보다 상당히 더 높았던 것을 표시할 수 있다. 그 결과, 이러한 예상보다 더 높은 RAM 이용의 정도에 기초하여, 최적의 컴퓨팅 자원 계산기(630)는 일 구현예에서, 코어 요건 당 증가된 RAM에 기초하여 RAM의 양을 재계산하는 동안, CPU 코어의 수를 변경하지 않은 채로 남길 것이다.
다른 시나리오에서, 시뮬레이션 레벨 트리거 평가기(621)로부터의 정보는 시뮬레이션 작업이 시뮬레이션의 더 많은 CPU 집약 위상에 진입했던 것, 및 부가 CPU 코어가 요구된 것(또는 역으로 이러한 위상이 완료되면 더 적은 CPU 코어가 요구되는 것)을 표시할 수 있다. 계산 "공식"은 동일할 수 있지만, CPU 코어의 결과적인 수는 시뮬레이션 작업이 실행되고 있는 동안 발생되는 출력 파일로부터 추출되는 시뮬레이션 상태의 변화로 인해 (현재 클러스터에 프로비저징되는 것보다) 더 높거나 더 낮을 수 있다. 다른 구현예에서, 상이한 공식은 상이한 미리 결정된 시뮬레이션 위상을 위해 이용될 수 있다. 또 다른 구현예에서, 최적의 컴퓨팅 자원 평가 엔진(620)은 내장 러닝 엔진을 통해 이러한 상이한 공식을 발생시킬 수 있다.
또 다른 시나리오에서, 시뮬레이션 레벨 트리거 평가기(621)로부터의 정보는 시뮬레이션 작업이 시뮬레이션의 디스크 집약 위상에 진입했었던 것(예를 들어, CPU 집약 위상의 완료 시에 시뮬레이션 결과를 디스크에 기록한 것), 및 더 적은 CPU 코어가 요구되지만, 부가 저장 공간이 요구되는 것(및 아마도 부가 네트워크 대역폭)을 표시할 수 있다. 상이한 세트의 컴퓨팅 자원을 필요로 하는 여러가지 다른 시나리오는 시뮬레이션 및 다른 HPC 컴퓨팅 환경을 포함하는, 병렬 처리의 당업자에게 분명할 것이다.
최적의 컴퓨팅 자원 계산기(630)는 단계(710)를 완료하고 사용자의 시뮬레이션 작업에 프로비저닝되는 최적의 세트의 컴퓨팅 자원을 계산하면(그의 초기 시뮬레이션 상태에 있든지 또는 후속 중간 시뮬레이션 상태에 있든지), 이때 단계(712)에서, 이러한 세트의 최적의 컴퓨팅 자원을 이용 가능 클러스터로 변환함으로써 이 컴퓨팅 자원을 정제한다. 다시 말해, 그것은 하나 이상의 하드웨어 제공자 플랫폼(130) 상의 물리 또는 가상 서버의 현재 이용 가능 클러스터를 식별하기 위해 클러스터 서비스(104)에서 하드웨어 제공자 어댑터(104b)를 이용한다.
예를 들어, 단계(710)에서 발생되는 컴퓨팅 자원의 특정 할당(예를 들어, 200 CPU 코어, 코어 당 3 GB RAM 및 20 G 인피니밴드)을 정확히 매칭하는 것은 가능하지 않을 수 있다. 최적의 컴퓨팅 자원 계산기(630)는 64 CPU 코어, 256 GB RAM, 및 40 G 인피니밴드를 가진 가상 서버 타입을 발견할 수 있으며, 그것은 이러한 타입의 3개의 가상 서버를 할당함으로써 이들 요건과 밀접히 매칭한다. 그러나, 부가 컴퓨팅 자원은 일부 부가 비용의 트레이드오프를 필요로 할 것이다. 대안적으로, 32 CPU 코어, 128 GB RAM 및 20 GB 인피니밴드를 각각 가진 6개의 가상 서버는 또한 이용 가능할 수 있다. 일 구현예에서, 최적의 컴퓨팅 자원 계산기(630)는 각각의 실제 컴퓨팅 자원이 이용 가능 클러스터 선택권에 얼마나 가까운지에 기초하여 가중된 파라미터를 가진 미리 정의된 기능을 이용함으로써 이러한 결정을 한다. 다른 구현예에서, 사용자의 목표(예를 들어, 더 낮은 전체 시뮬레이션 시간과 대조적으로 더 낮은 비용을 최적화함)는 가중치를 이러한 파라미터에 할당할 시에 고려된다. 또 다른 구현예에서, 규칙 기반 엔진이 이용되며 - 예를 들어, 각각의 컴퓨팅 자원이 단계(710)에서 발생되는 사양과 동일하거나 사양을 초과하는 것을 보장한다.
최적의 컴퓨팅 자원 계산기(630)는 단계(712)를 완료하고 사용자의 시뮬레이션 작업(관련 하드웨어 제공자 플랫폼(130) 및 이러한 플랫폼 상의 각각의 물리 및/또는 가상 서버의 수 및 타입을 포함함)에 할당되는 컴퓨팅 자원의 클러스터를 식별하면, 이때 클러스터 서비스(104)는 단계(720)에서, 이러한 클러스터(위에 논의된 바와 같음)를 프로비저닝하기 위해 호출된다. 그 다음, 시뮬레이션 서비스(103)는 단계(722), 클러스터(도 5를 참조하여 위에 설명된 바와 같음)를 구성하고 이러한 클러스터 상에 시뮬레이션 애플리케이션의 각각의 인스턴스의 실행을 개시하기 위해 호출된다.
그러나, 이러한 클러스터는 시뮬레이션 작업이 개시되었기 전에 초기에 프로비저닝되고 있지 않으면(즉, 시뮬레이션 자원 매니저(610)는 사용자의 시뮬레이션 작업이 실행되고 있는 동안 컴퓨팅 자원의 변화가 보증되는 것을 결정하면), 현재 클러스터는 시뮬레이션 작업의 실행이 새롭게 프로비저닝된 클러스터 상에 재개되기 전에 종결된다는 점을 주목한다.
일 구현예에서, 시뮬레이션 자원 매니저(610)는 단계(752)에서, 새로운 클러스터가 발생되고 프로비저닝된 후에 시뮬레이션 작업의 실행을 재개할 필요가 있는 정보에 의해 서버 DB(105)를 갱신한다. 이러한 정보는 현재 클러스터가 종결되면 다른 방법으로 손실될 것이다. 예를 들어, 시뮬레이션 자원 매니저(610)는 사용자의 시뮬레이션 작업이 실행을 재개하는 (단계(710 및 712)에서) 컴퓨팅 자원 및 새로운 클러스터의 계산을 용이하게 할 수 있는 클러스터 DB(535)로부터의 다른 정보뿐만 아니라 가장 최근 재시작 파일(들)을 저장한다. 일 구현예에서, 클러스터 DB(535)의 전체는 현재 클러스터가 종결되기 전에 서버 DB(105)에 저장된다.
그 다음, 시뮬레이션 자원 매니저(610)는 단계(752)에서, 현재 클러스터를 종결시키거나 "프로비저닝 해재"하기 위해 클러스터 서비스(104)를 호출한다. 그 다음, 최적의 컴퓨팅 자원 계산기(630)는 위에 논의된 바와 같이 단계(710 및 712)를 수행하기 위해 호출된다. 다른 구현예에서, 단계(710 및 712)는 단계(752 및 754) 전에(예를 들어, 그것이 새로운 클러스터를 발생시키도록 실현 가능하지 않은 것으로 결정되고, 시뮬레이션 작업의 실행이 현재 클러스터에 계속되어야 하는 경우에) 수행된다. 이러한 시나리오에서, 시뮬레이션 모니터링 서비스(615)는 아래에 논의되는 바와 같이, 단계(730)에서 사용자의 시뮬레이션 작업의 실행을 계속 모니터링하기 위해 호출된다.
그렇지 않으면, 단계(710 및 712)가 수행된 후에, 주로 위에 논의된 방식으로, 클러스터 서비스(104)는 새로운 클러스터를 프로비저닝하기 위해 호출되고, 시뮬레이션 서비스(103)는 이러한 새로운 클러스터를 구성하기 위해 호출된다. 그러나, 사용자의 시뮬레이션 작업의 실행은 가장 최근 재시작 파일에 포함되는 중간 시뮬레이션 상태로부터 재개되기 때문에, 일부 부가 작업은 단계(722)에서 시뮬레이션 서비스(103)에 의해 수행된다. 예를 들어, 클러스터 DB(535)는 중간 시뮬레이션 상태에 따라 "초기화"된다. 더욱이, 시뮬레이션 애플리케이션은 새로운 클러스터 내의 CPU 코어의 수 또는 새로운 클러스터에 프로비저닝되는 컴퓨팅 자원에 관한 임의의 유사한 제약을 지정하는 것과 같은, 임의의 애플리케이션 부과 제약에 따라 구성된다.
그 다음, 단계(724)에서, 시뮬레이션 서비스(103)는 새로운 클러스터에서의 각각의 물리 또는 가상 서버 내에 각각의 CPU 코어 상의 시뮬레이션 애플리케이션의 각각의 인스턴스의 실행을 개시한다. 그러나, 이러한 시나리오에서, 시뮬레이션 작업의 실행은 그의 중간 시뮬레이션 상태로부터 효과적으로 "재개"된다. 사용자의 시뮬레이션 작업이 처음으로 - 즉, 그것의 초기 시뮬레이션 상태로부터 - 개시되는 시나리오에서 이 때 단계(722 및 724)는 이러한 초기 시뮬레이션 상태에 대해 수행된다.
사용자의 시뮬레이션 작업의 실행이 개시되면(또는 재개되면), 시뮬레이션 모니터링 서비스(615)는 단계(730)에서, 이러한 시뮬레이션 작업의 실행을 모니터링하기 위해 호출된다. 위에 시사된 바와 같이, 이러한 단계는 시뮬레이션 작업이 실행되고 있는 동안 시뮬레이션 애플리케이션이 프로비저닝된 컴퓨팅 자원을 이용하는(그리고, 더 중요하게, 계속 이용하는) 효율을 모니터링하는 것을 효과적으로 수반한다. 다시 말해, 시뮬레이션 모니터링 서비스(615)가 시뮬레이션 작업의 실행을 모니터링하고 다양한 자원 변화 지시자를 추출하므로, 최적의 컴퓨팅 자원 평가 엔진(620)은 컴퓨팅 자원의 변화가 보증되는지 - 즉, 시뮬레이션의 실행이 진행됨에 따라 프로비저닝된 컴퓨팅 자원 중 하나 이상이 수정되어야 하는지를 결정하기 위해 이러한 자원 변화 지시자를 평가한다.
예를 들어, 단계(732)에서, 시뮬레이션 모니터링 서비스(615)는 위에 설명된 바와 같이 컴퓨팅 자원 이용 정보를 획득하며, 그것은 컴퓨팅 자원의 변화가 보증되는지를 평가하기 위해 컴퓨팅 자원 평가 엔진(620)에 의한 후속 평가를 처리한다. 순차적으로 열거되지만, 단계(732, 734 및 736)는 일 구현예에서, 시뮬레이션 작업이 실행되고 있는 동안 병렬로 수행된다. 따라서, 단계(734)에서, 애플리케이션 특정 정보는 출력 파일로부터 추출되는 반면에, 단계(736)에서, 중간 시뮬레이션 상태는 시뮬레이션 애플리케이션에 의해 발생됨에 따라 재시작 파일로부터 획득되고 저장된다.
본질적으로, 시뮬레이션 모니터링 서비스(615)는 사용자의 시뮬레이션 작업의 연속적으로 변화하는 시뮬레이션 상태를 모니터링하고 있다. 시뮬레이션 또는 다른 병렬 처리 작업이 컴퓨팅 자원에 관한 사용법의 공지된 패턴과 함께, 용이하게 예측 가능한 시뮬레이션 단계 또는 위상을 수반했으면, 적절한 세트의 컴퓨팅 자원을 각각의 이러한 공지된 시뮬레이션 위상에 미리 간단히 할당할 수 있다. 그것이 드문 경우이기 때문에, 시뮬레이션 모니터링 서비스(615)는 컴퓨팅 자원 평가 엔진(620)이 장래 사용법 패턴에 관한 추론을 하는 자원 변화 지시자를 추출한다.
예를 들어, 시뮬레이션 애플리케이션에 의해 발생되는 출력 파일은 인터-코어 통신의 정도뿐만 아니라, 시간에 따라 각각의 CPU 코어에 의해 처리되는 셀의 수에 관한 정보를 포함한다. 이러한 정보는 CPU, RAM 및 다른 컴퓨팅 자원 이용 트렌드와 함께, 시뮬레이션이 더 많거나 더 적은 CPU 집약 위상에 진입하고 있는지, 또는 그것이 원래 프로비저닝된 것보다 더 많거나 더 적은 컴퓨팅 자원을 간단히 필요로 하고 있는지에 윈도우를 제공한다. 시뮬레이션 반복 단계를 자주 반복하는 검출은 또한 장래 컴퓨팅 사용법 패턴의 예측을 가능하게 하는 정보를 제공한다.
단계(732, 734 및 736)에서 이러한 정보를 추출하는 것에 더하여, 시뮬레이션 모니터링 서비스(615)는 그것을 컴퓨팅 자원 평가 엔진(620)에 의해 이용될 수 있는 형태로 조직함으로써 이러한 정보를 처리한다. 예를 들어, 일 구현예에서, 단계(732)에서 추출되는 컴퓨팅 자원 이용 정보는 시뮬레이션 시간의 지난 15 분에 걸친 CPU 이용의 퍼센티지 증가와 같은, 개별 컴퓨팅 자원에 관한 시간 기반 질의를 지원하기 위해 클러스터 DB(535)에 포맷된다. 다른 구현예에서, 정보는 코어 당 셀의 현재 수, 디스크에의 기록의 임계 수 또는 심지어 재시작 파일의 프레즌스와 같은, 단순한 시간을 넘는 부가 인자 또는 이벤트를 상관시키는 질의를 용이하게 하기 위해 조직된다. 다시 말해, 시뮬레이션 모니터링 서비스(615)에 의해 추출되는 정보의 조직은 구성요소 트리거 평가기에 영향을 미치는 인자의 컴퓨팅 자원 평가 엔진(620)에 의한 평가를 용이하게 한다.
단계(740)에서의 컴퓨팅 자원 평가 엔진(620)에 의한 자원 변화 지시자의 평가는 또한 일 구현예에서, 순차적으로 열거되지만 병렬로 수행되는 한 세트의 단계(742, 744, 746 및 748)를 수반한다. 예를 들어, 하드웨어 레벨 트리거 평가기(623)에 의해 이용되는 규칙 또는 발견법은 CPU 이용이 90%를 초과할 때 트리거링될 수 있는 반면에, 다른 규칙은 CPU 이용이 90%를 초과하는 경우에만 트리거될 수 있고 출력 파일로부터 추출되는 정보는 시뮬레이션의 현재 CPU 집약 위상이 완료(예를 들어, 시뮬레이션 레벨 트리거 평가기(621)에 의해 검출)되었던 것을 표시한다. 다른 규칙은 CPU 이용이 지정된 임계치를 하회하고 디스크 I/O가 지정된 임계치를 초과할 때 트리거링될 수 있어, 더 큰 네트워크 대역폭을 가진 물리 또는 가상 서버에 대한 요구를 제안한다.
다시 말해, 단계(742)에서, 하드웨어 레벨 트리거 평가기(623)는 컴퓨팅 자원 이용에 관한 트리거 조건 또는 이벤트를 발생시킬 수 있는 반면에, 단계(744)에서, 시뮬레이션 레벨 트리거 평가기(621)는 출력 파일로부터 추출되는 애플리케이션 특정 정보에 관한 조건 또는 이벤트를 발생시킨다. 위에 언급된 바와 같이, 이러한 애플리케이션 레벨 이벤트는 반복 단계의 검출, 예를 들어, 반복된 실세계 이벤트를 시뮬레이션하는 것 예컨대 심박, 밸브의 개방 또는 폐쇄, 자동차 충돌과 같은 시뮬레이션된 이벤트의 초, 또는 심지어 셀 압력, 온도 및 속도를 개별적으로 계산하는 반복 단계의 계층을 포함한다.
특정 시나리오에서, 후속 반복 단계는 상이한 타입의 계산을 수반한다. 예를 들어, 화학 시뮬레이션에서, 초기 단계는 분자와 같은, 객체의 넓은 도메인에 걸쳐 상대적으로 짧은 계산을 수반할 수 있다. 이러한 단계는 많은 CPU 코어에 걸쳐 상대적으로 높은 레벨의 병렬성으로부터 혜택을 얻을 수 있다. 그러나, 후속 계산은 연속적으로 더 복잡하고 완료하는 데 더 긴 시간이 걸리지만, 점점 더 적은 객체에 걸쳐 취할 수 있다(따라서 상대적으로 더 적은 병렬성 및 더 적은 CPU 코어로부터 혜택을 얻음). 시뮬레이션 레벨 트리거 평가기(621)에 의한 이러한 위상의 검출은 장래 CPU 사용법의 예측을 용이하게 한다. 일 구현예에서, 시뮬레이션 레벨 트리거 평가기(621)는 CPU 코어의 수의 변화만을 트리거하지 않을 수 있는 조건 또는 이벤트를 발생시키지만, 이러한 시나리오에서, 새로운 클러스터에 프로비저닝되는 최적의 수의 CPU 코어의 최적의 컴퓨팅 자원 계산기(630)에 의한 계산을 용이하게 할 것이다.
유사하게, 단계(746)에서, 사용자 레벨 트리거 평가기(622)는 사용자 부과 목표에 따라 조건 또는 이벤트를 발생시킨다. 일 구현예에서, 이러한 목표는 다른 트리거 평가기로부터 규칙의 파라미터를 가중함으로써 - 예를 들어, 부가 CPU 코어가 부가 비용으로 사용자에게 추가되기 전에 CPU 이용의 임계치가 95%까지 상승되게 함으로써 구현된다. 역으로, CPU 이용의 더 낮은 임계치는 CPU 코어가 감소되기 전에 40%에서 45%까지 상승될 수 있으며, 그에 의해 사용자 돈을 절약한다. 일 구현예에서, 특정 인자의 지나친 가중(예를 들어, 가용 RAM의 더 낮은 임계치)은 RAM을 다 써버리는 것으로 인해 시뮬레이션을 충돌시키는 것과 같은, 잠재적 돌발 이벤트를 회피하기 위해 이용된다.
단계(748)에서, 시뮬레이션 레벨 트리거 평가기(621)는 시뮬레이션 애플리케이션에 의해 발생되는 재시작 파일에 관한 조건 또는 이벤트를 생성한다. 일 구현예에서, 임계 기간 내의 재시작 파일의 프레즌스는 이러한 조건을 트리거링한다. 다른 구현예에서, 조건은 시뮬레이션 애플리케이션의 구성요소 솔버의 호출과 같은, 재시작 파일의 콘텐츠로부터 추출되거나 추론되는 특정 이벤트에 기초하여 트리거링될 수 있다(예를 들어, 시뮬레이션의 더 많은 CPU 집약적이지만, 더 적은 디스크 집약적 위상으로의 엔트리를 입증함).
위에 언급된 바와 같이, 컴퓨팅 자원 평가 엔진(620)은 일 구현예에서, 시간에 따라 모니터링된 이력 정보에 기초하여 컴퓨팅 자원의 장래 사용법을 예측하고, 지식 베이스로부터의 미리 정의된 규칙보다는 오히려 동적으로 발생된 트리거를 이용하는 러닝 엔진으로서 구현된다. 다른 구현예에서, 발견적 규칙은 연속적으로 확장되는 지식 베이스로부터 동적으로 발생되는 반면에, 또 다른 구현예에서, 미리 정의된 "정적" 공식 및 임계치가 이용된다.
이하의 시나리오는 단계(750)에서, 컴퓨팅 자원의 변화가 보증되는지에 관해, 결정을 할 시에 컴퓨팅 자원 평가 엔진(620)의 동작(특히 단계(742, 744, 746 및 748)의 수행)을 예시한다. 이러한 변화가 보증되면, 시뮬레이션 자원 매니저(610)는 단계(752)에서, 위에 설명된 바와 같이(새로운 클러스터가 발생되고 프로비저닝된 후에 시뮬레이션 작업의 실행을 재개할 필요가 있는 정보를 가진 서버 DB(105)를 갱신하기 위해) 호출된다. 그렇지 않으면, 시뮬레이션 모니터링 서비스(615)는 단계(730)에서 사용자의 시뮬레이션 작업의 실행을 계속 모니터링하기 위해 호출된다.
하나의 시나리오에서, 사용자의 시뮬레이션 작업은 전산 유체 역학(CFD) 애플리케이션의 연소 모델 - 예를 들어, 자동차 엔진의 연소를 시뮬레이션하는 것을 수반한다. 이러한 시나리오에서, 연소 이벤트가 발생할 때, 시뮬레이션은 셀 크기가 감소하고 셀의 수가 상당히 증가하는 CPU 집약 위상에 진입한다. 다시 말해, 시뮬레이션 애플리케이션은 각각의 셀을 다수의(예를 들어, 8) 셀로 분할한다. 이러한 시뮬레이션 애플리케이션은 전형적으로 발생할 수 있는 분할의 수(또는 역으로 다수의 셀이 단일 셀로 조합되는 횟수)를 제한하도록 구성될 수 있지만, 연소 또는 유사한 이벤트의 발생은 미리 용이하게 예측될 수 없다.
이러한 시나리오에서, 시뮬레이션 애플리케이션은 사용자의 시뮬레이션 모델 내의 셀의 현재 수에 관한 정보를 포함하는 출력 파일을 때때로 발생시킨다. 위에 언급된 바와 같이, 이들 출력 파일은 사용자가 모델에서 버그를 수동으로 검출할 수 있게 하기 위해 발생된다 - 즉, 시뮬레이션을 정지시키는 것 및 버그가 고정되면 시작으로부터 이를 다시 실행하는 것을 보장하는 매우 드문 상황. 그러나, 본 발명에서, 시뮬레이션 레벨 트리거 평가기(621)는 단계(744)에서, 연소 이벤트가 출력 파일로부터 추출되는 정보에 기초하여, 시작되었던 것을 검출한다. 예를 들어, 이러한 정보는 셀의 수의 급격한 증가, 또는 명시적 "분할" 이벤트를 표시할 수 있다. 일부 경우에, 이러한 이벤트는 연소 이벤트를 취급하도록 설계되는 특정 솔버의 호출과 같은, 출력 파일 내의 다른 정보에 의해 확인될 수 있다.
시뮬레이션 레벨 트리거 평가기(621)는 또한 단계(748)에서, 시뮬레이션이 연소 위상에 진입하기 전에 재시작 파일이 상대적으로 최근에 발생된 것을 검출할 수 있어, 궁극적으로 컴퓨팅 자원 평가 엔진(620)으로 하여금 CPU 코어의 수를 증가시키게 한다. 다른 컴퓨팅 자원은 또한 영향을 받을 수 있다. 예를 들어, 하드웨어 레벨 트리거 평가기(623)는 단계(742)에서 하나 이상의 조건을 트리거했을 수 있어, 기존 수의 CPU 코어에 증가된 요구 - 예를 들어, 디스크에의 기록의 증가 및 이용 가능 RAM의 상당한 감소를 초래한다.
그러나, 이러한 구현예에서, 컴퓨팅 자원 평가 엔진(620)은 CPU 코어의(예를 들어, 64 내지 128)의 장래 증가가 이러한 다른 컴퓨팅 자원의 이용에 어떻게 영향을 미치는지를 예측한다. 예를 들어, CPU 코어 당 RAM의 현재 양은 부가 계산의 부하가 더 큰 수의 CPU 코어에 걸쳐 확산되면(각각의 물리 또는 가상 서버 상의 부하를 완화하면) 충분할 수 있는 반면에, 네트워크 대역폭은 인터-코어 및 인터-서버 통신의 증가로 인해 증가될 필요가 있을 수 있다.
따라서, 그 결과, 최적의 컴퓨팅 자원 계산기(630)는 단계(710)에서, 컴퓨팅 자원의 이러한 변화를 계산하기 위해 호출되고, 새로운 클러스터는 단계(720)에서 프로비저닝되고 단계(722)에서 구성된다. 이러한 새로운 클러스터는 더 많은 CPU 코어, 동일한 양의 RAM 및 더 큰 네트워크 대역폭으로 구성되기 때문에, 상이한 타입의 물리 또는 가상 서버를, 아마도 상이한 하드웨어 제공자 플랫폼(130) 상에(예를 들어, 현재 가용성으로 인해) 요구할 수 있다.
상대적으로 최근의 재시작 파일의 존재로 인해, 시뮬레이션 작업은 단계(724)에서, 시뮬레이션의 연소 위상의 시작 전에, 새로운 클러스터 상에 실행을 재개할 수 있다(따라서 너무 적은 CPU 코어를 갖고 RAM의 불충분한 양으로 인해 잠재적으로 충돌하는 비효율을 회피함). 더욱이, 이러한 연소 위상의 종료를 유사한 방식으로 나중에 검출할 시에, 시뮬레이션 자원 매니저(610)는 컴퓨팅 자원을 다시 수정하고(예를 들어, 다른 컴퓨팅 자원을 적절히 수정하는 것뿐만 아니라, CPU 코어의 수를 감소시킴) 또 다른 클러스터를 프로비저닝하여 시뮬레이션 작업의 실행을 재개할 것이다,
따라서, 이러한 연소 시나리오에서, 3개의 상이한 클러스터는 실행 동안의 상이한 지점에서 시뮬레이션 작업에 컴퓨팅 자원의 최적의 할당에 각각 기초하여, 시뮬레이션 작업이 실행되고 있는 동안 프로비저닝되며 - 자원 변화 지시자를 모니터링 및 추출하고, 장래 사용법 패턴을 예측하고 상이한 세트의 컴퓨팅 자원에 의해 새로운 클러스터를 발생시켜 이러한 장래 사용법 패턴을 수용함으로써 결정됨.
다른 시나리오에서, 새로운 클러스터는 시뮬레이션 작업의 실행 동안 다수의 상이한 지점에 프로비저닝될 수 있다. 위에 언급된 바와 같이, 종종 컴퓨팅 자원의 변화가 보증될 수 있는 시뮬레이션 동안의 얼마나 많은 상이한 시간뿐만 아니라, 이러한 지점이 발생할 때(심지어 위의 연소 예에서 이벤트의 발생이 알려질 때)를 미리 예측하는 것은 어렵다. 예를 들어, 각각의 단계 동안 수행되는 계산이 시간, 복잡성 또는 다른 점에서(임의적이든지, 점차 증가 또는 감소하든지, 다른 방식이든지) 완전히 다를 수 있는 "가변" 반복 단계를 수반하는 시뮬레이션의 경우에, 각각의 반복 단계가 발생할 때, 훨씬 적은 어느 세트의 컴퓨팅 자원을 각각의 특정 단계에 할당하는지를 미리 예측하는 것은 사실상 불가능하다.
그러나, 시뮬레이션 작업이 실행되고 있는 시뮬레이션 상태를 모니터링하고, 자원 변화 지시자(시뮬레이션 애플리케이션에 의해 발생되는 출력 파일로부터의 애플리케이션 특정 정보뿐만 아니라 컴퓨팅 자원 이용 정보를 포함함)를 추출함으로써, 본 발명은 장래 컴퓨팅 자원 사용법 패턴(예를 들어, 후속 반복 단계가 각각의 개별 컴퓨팅 자원의 증가 또는 감소를 필요로 하는지를 평가함)을 예측하고 시뮬레이션 작업에 할당되는 최적의 세트의 컴퓨팅 자원(물리 및/또는 가상 서버의 클러스터로 변환됨)을 결정한다. 더욱이, 시뮬레이션 애플리케이션에 의해 발생되는 재시작 파일을 강화함으로써, 본 발명은 기존 클러스터를 종결시키고 새로운 클러스터를 프로비저닝하고(컴퓨팅 자원의 변화가 보증되고 실행가능한 것을 결정할 때), 새롭게 프로비저닝된 클러스터 상에 시뮬레이션 작업의 실행을 재개한다. 이러한 프로세스는 시뮬레이션 작업이 실행되고 있는 동안 보증되는 만큼 여러 번 반복될 수 있다.
컴퓨팅 자원은 새로운 클러스터를 종결시키고 프로비저닝하는 오버헤드가 컴퓨팅 자원의 더 효율적인 할당의 혜택을 정당화하지 않을 수 있음에 따라, 매우 자주 실현 가능하게 변화될 수 없다는 점이 주목되어야 한다. 일 구현예에서, 이러한 트레이드오프는 컴퓨팅 자원의 변화가 실제로 보증되는지를 결정할 시에 (예를 들어, 클러스터 변화 사이의 시간에 기초하여) 시뮬레이션 자원 매니저(610)의 인자로 간주된다.
위에 설명된 본 발명의 시스템 및 방법의 구현예는 상당한 장점을 시뮬레이션 서버 플랫폼(101)의 사용자에게 제공한다. 이러한 사용자는 시뮬레이션 작업의 전체에 할당되는 단일 세트의 컴퓨팅 자원에 의존할 필요가 없다. 더욱이, 사용자는 시뮬레이션 작업이 실행되고 있는 동안(예를 들어, 아마존의 EC2 오토 스케일링 서비스에 의해 요구되는 바와 같이) 컴퓨팅 자원의 변화가 보증되는지, 보증될 때 및 어느 정도까지 보증되는지를 자체로 결정할 필요가 없다. 최종적으로, 사용자는 시뮬레이션 애플리케이션이 시뮬레이션 작업의 실행 동안 발생하는 애플리케이션 부과 제약 및 인터-코어(및 인터-서버) 종속성을 처리하게 하는 혜택을 유지한다.
다른 장점은 자동화된 하드웨어 및 소프트웨어 미터링을 포함하며, 그것은 사용자가 시뮬레이션 작업에 의해 실제로 사용되는 컴퓨팅 자원에 대해서만 지불할 수 있게 하고, 시뮬레이션 작업의 실행 동안의 시간에 요구되지 않는 컴퓨팅 자원에 대한 초과 지급을 방지할 수 있게 한다.

Claims (60)

  1. 인터-인스턴스 종속성을 갖는 작업을 수행하는 애플리케이션의 실행을 위한 컴퓨팅 자원의 프로비저닝을 동적으로 최적화하는 시스템으로서, 상기 애플리케이션은 상기 인터-인스턴스 종속성을 적절히 실행하고 해결하기 위해, 상기 애플리케이션에 할당되는 컴퓨팅 자원 중 적어도 하나의 사전 구성 사양을 필요로 하는 하나 이상의 애플리케이션 부과 제약을 포함하며, 상기 시스템은,
    (a) 상기 애플리케이션을 실행하기 위한 하드웨어 제공자 플랫폼 상에 컴퓨팅 자원의 클러스터를 프로비저닝하는 클러스터 서비스;
    (b) 상기 애플리케이션 부과 제약에 따라 상기 애플리케이션을 구성하고, 상기 프로비저닝된 클러스터 상에 상기 애플리케이션의 실행을 개시하는 애플리케이션 서비스;
    (c) (i) 복수의 컴퓨팅 자원 변화 지시자 및 (ii) 상기 애플리케이션에 의해 발생되는 하나 이상의 재시작 파일을 위해 상기 애플리케이션의 실행을 모니터링하는 애플리케이션 모니터링 서비스; 및
    (d) (i) 상기 현재 컴퓨팅 자원의 수정이 보증되는지를 결정하기 위해 상기 컴퓨팅 자원 변화 지시자 및 재시작 파일을 연속적으로 분석하고, 만일 그렇다면, (ii) 상기 애플리케이션이 실행되고 있는 동안 상기 현재 컴퓨팅 자원의 변화를 구현하는 컴퓨팅 자원 평가 엔진을 포함하는, 시스템.
  2. 제1항에 있어서,
    (a) 상기 클러스터는 제1 CPU 코어 상에 상기 애플리케이션의 제1 인스턴스에 의해 수행되는 제1 하위 작업 계산, 및 제2 CPU 코어 상에 상기 애플리케이션의 제2 인스턴스에 의해 수행되는 제2 하위 작업 계산을 포함하는, 상기 애플리케이션의 독립적 하위 작업 계산을 병렬로 실행하기 위한 복수의 CPU 코어를 포함하고;
    (b) 상기 제1 인스턴스에 의해 수행되는 제3 하위 작업 계산은 상기 제2 인스턴스에 의해 수행되는 제2 하위 작업 계산의 결과에 의존하고, 그에 의해 인터-인스턴스 종속성을 구성하는, 시스템.
  3. 제1항에 있어서, 상기 복수의 컴퓨팅 자원 변화 지시자는,
    (a) 상기 컴퓨팅 자원의 애플리케이션의 현재 사용법의 정도를 반영하는 컴퓨팅 자원 이용 데이터; 및
    (b) 실행 동안 상기 애플리케이션에 의해 발생되는 출력 파일로부터 추출되는 데이터를 포함하며, 상기 컴퓨팅 자원의 애플리케이션의 장래 사용법의 예측을 용이하게 하는, 애플리케이션 특정 데이터를 포함하는, 시스템.
  4. 제1항에 있어서, 상기 컴퓨팅 자원 변화 지시자는 이하, 즉 (a) 상기 애플리케이션에 입력으로서 제공되는 시뮬레이션 데이터 모델 내의 셀의 수의 변화, (b) 상기 애플리케이션에 의해 수행되는 작업 내의 하나 이상의 순환 반복 단계; (c) 상기 애플리케이션에 의해 제시되는 인터-코어 통신의 정도의 변화; 및 (d) 상기 애플리케이션에 의해 수행되는 작업의 더 많거나 더 적은 컴퓨팅 자원 집약 위상에 대한 변화 중 하나 이상의 지시자를 포함하는, 시스템.
  5. 제1항에 있어서, 상기 컴퓨팅 자원 평가 엔진은 상기 컴퓨팅 자원 변화 지시자의 분석에 기초하여, 상기 컴퓨팅 자원의 애플리케이션의 장래 사용법의 정도에 관한 예측을 발생시키는, 시스템.
  6. 제1항에 있어서, 상기 컴퓨팅 자원 평가 엔진은 상기 현재 컴퓨팅 자원의 수정이 시간에 따라 상기 애플리케이션 모니터링 서비스에 의해 모니터링되는 이력 정보에 대해 보증되는지의 결정을 기초로 하는, 시스템.
  7. 제1항에 있어서, 상기 애플리케이션 부과 제약은 상기 프로비저닝된 클러스터 내의 CPU 코어의 수의 사전 구성 사양을 포함하는, 시스템.
  8. 제1항에 있어서, 상기 컴퓨팅 자원의 변화는 하나의 컴퓨팅 자원의 증가 및 다른 컴퓨팅 자원의 감소를 포함하는, 시스템.
  9. 제1항에 있어서, 각각의 재시작 파일은 상기 애플리케이션의 현재 중간 상태를 반영하는 데이터를 포함하며, 그에 의해 상기 애플리케이션이 장래에 재시작되면, 이러한 중간 상태로부터의 실행을 재개할 수 있게 하는, 시스템.
  10. 제1항에 있어서, 상기 컴퓨팅 자원 평가 엔진은,
    (a) 선택된 하드웨어 제공자 플랫폼 상에 컴퓨팅 자원의 새로운 클러스터를 프로비저닝하도록 상기 클러스터 서비스에 명령하고;
    (b) 상기 애플리케이션이 실행되고 있는 현재 클러스터를 종결시키고;
    (c) 상기 애플리케이션 부과 제약에 따라 상기 애플리케이션을 재구성하고, 상기 재시작 파일의 선택된 것 내에 포함되는 중간 상태로부터 상기 프로비저닝된 새로운 클러스터 상에 애플리케이션의 실행을 개시하도록 상기 애플리케이션 서비스에 명령함으로써 상기 애플리케이션이 실행되고 있는 동안 상기 현재 컴퓨팅 자원의 변화를 구현하는, 시스템.
  11. 제1항에 있어서, 사용자가 상기 프로비저닝된 클러스터 상에 상기 애플리케이션의 실행을 개시하는 것을 허용하기 전에 대응하는 라이센스 서버에 의해 상기 애플리케이션의 각각의 사용자를 인증하는 라이센스 서비스를 더 포함하는, 시스템.
  12. 제1항에 있어서, 사용자가 상기 프로비저닝된 클러스터 상에 상기 애플리케이션의 구성요소의 실행을 개시하는 것을 허용하기 전에 상기 애플리케이션의 구성요소의 각각의 사용자를 인증하는 라이센스 서비스를 더 포함하는, 시스템.
  13. 제1항에 있어서,
    (a) 상기 프로비저닝된 컴퓨팅 자원이 상기 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링하는 하드웨어 미터링 모듈; 및
    (b) 상기 애플리케이션이 상기 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링하는 소프트웨어 미터링 모듈을 더 포함하는, 시스템.
  14. 제13항에 있어서, 상기 소프트웨어 미터링 모듈은 상기 애플리케이션의 구성요소가 상기 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링하는, 시스템.
  15. 제13항에 있어서, 상기 애플리케이션은 상기 프로비저닝된 클러스터 상에 종결되고 상이한 컴퓨팅 자원을 갖는 새로운 클러스터 상에 재시작되고, 상기 소프트웨어 미터링 모듈에 의해 모니터링되는 전체 시간은 상기 애플리케이션이 상기 프로비저닝된 클러스터 및 상기 새로운 클러스터 상에 상기 작업의 실행 동안 사용되고 있는 시간의 합을 포함하는, 시스템.
  16. 제13항에 있어서, 상기 소프트웨어 미터링 모듈은 상기 작업을 수행하는 복수의 애플리케이션을 모니터링하는, 시스템.
  17. 인터-인스턴스 종속성을 갖는 작업을 수행하는 애플리케이션의 실행을 위한 컴퓨팅 자원의 프로비저닝을 동적으로 최적화하는 방법으로서, 상기 애플리케이션은 상기 인터-인스턴스 종속성을 적절히 실행하고 해결하기 위해, 상기 애플리케이션에 할당되는 컴퓨팅 자원 중 적어도 하나의 사전 구성 사양을 필요로 하는 하나 이상의 애플리케이션 부과 제약을 포함하며, 상기 방법은 이하의 단계, 즉
    (a) 상기 애플리케이션을 실행하기 위한 하드웨어 제공자 플랫폼 상에 컴퓨팅 자원의 클러스터를 프로비저닝하는 단계;
    (b) 상기 애플리케이션 부과 제약에 따라 상기 애플리케이션을 구성하고, 상기 프로비저닝된 클러스터 상에 상기 애플리케이션의 실행을 개시하는 단계;
    (c) (i) 복수의 컴퓨팅 자원 변화 지시자 및 (ii) 상기 애플리케이션에 의해 발생되는 하나 이상의 재시작 파일을 위해 상기 애플리케이션의 실행을 모니터링하는 단계, 및
    (d) 상기 현재 컴퓨팅 자원의 수정이 보증되는지를 결정하기 위해 상기 컴퓨팅 자원 변화 지시자 및 재시작 파일을 연속적으로 분석하고, 만일 그렇다면, 상기 애플리케이션이 실행되고 있는 동안 상기 현재 컴퓨팅 자원의 변화를 구현하는 단계를 포함하는, 방법.
  18. 제17항에 있어서,
    (a) 상기 클러스터는 제1 CPU 코어 상에 상기 애플리케이션의 제1 인스턴스에 의해 수행되는 제1 하위 작업 계산, 및 제2 CPU 코어 상에 상기 애플리케이션의 제2 인스턴스에 의해 수행되는 제2 하위 작업 계산을 포함하는, 상기 애플리케이션의 독립적 하위 작업 계산을 병렬로 실행하기 위한 복수의 CPU 코어를 포함하고;
    (b) 상기 제1 인스턴스에 의해 수행되는 제3 하위 작업 계산은 상기 제2 인스턴스에 의해 수행되는 제2 하위 작업 계산의 결과에 의존하고, 그에 의해 인터-인스턴스 종속성을 구성하는, 방법.
  19. 제17항에 있어서, 상기 복수의 컴퓨팅 자원 변화 지시자는,
    (a) 상기 컴퓨팅 자원의 애플리케이션의 현재 사용법의 정도를 반영하는 컴퓨팅 자원 이용 데이터; 및
    (b) 실행 동안 상기 애플리케이션에 의해 발생되는 출력 파일로부터 추출되는 데이터를 포함하며, 상기 컴퓨팅 자원의 애플리케이션의 장래 사용법의 예측을 용이하게 하는, 애플리케이션 특정 데이터를 포함하는, 방법.
  20. 제17항에 있어서, 상기 컴퓨팅 자원 변화 지시자는 이하, 즉 (a) 상기 애플리케이션에 입력으로서 제공되는 시뮬레이션 데이터 모델 내의 셀의 수의 변화, (b) 상기 애플리케이션에 의해 수행되는 작업 내의 하나 이상의 순환 반복 단계; (c) 상기 애플리케이션에 의해 제시되는 인터-코어 통신의 정도의 변화; 및 (d) 상기 애플리케이션에 의해 수행되는 작업의 더 많거나 더 적은 컴퓨팅 자원 집약 위상에 대한 변화 중 하나 이상의 지시자를 포함하는, 방법.
  21. 제17항에 있어서, 상기 컴퓨팅 자원 변화 지시자의 분석에 기초하여, 상기 컴퓨팅 자원의 애플리케이션의 장래 사용법의 정도에 관한 예측을 발생시키는 단계를 더 포함하는, 방법.
  22. 제17항에 있어서, 상기 현재 컴퓨팅 자원의 수정이 보증되는지의 결정은 시간에 따라 모니터링되는 이력 정보에 기초하는, 방법.
  23. 제17항에 있어서, 상기 애플리케이션 부과 제약은 상기 프로비저닝된 클러스터 내의 CPU 코어의 수의 사전 구성 사양을 포함하는, 방법.
  24. 제17항에 있어서, 상기 컴퓨팅 자원의 변화는 하나의 컴퓨팅 자원의 증가 및 다른 컴퓨팅 자원의 감소를 포함하는, 방법.
  25. 제17항에 있어서, 각각의 재시작 파일은 상기 애플리케이션의 현재 중간 상태를 반영하는 데이터를 포함하며, 그에 의해 상기 애플리케이션이 장래에 재시작되면, 이러한 중간 상태로부터의 실행을 재개할 수 있게 하는, 방법.
  26. 제17항에 있어서, 상기 애플리케이션이 실행되고 있는 동안 상기 현재 컴퓨팅 자원의 변화의 구현은 이하의 단계, 즉
    (a) 선택된 하드웨어 제공자 플랫폼 상에 컴퓨팅 자원의 새로운 클러스터를 프로비저닝하는 단계;
    (b) 상기 애플리케이션이 실행되고 있는 현재 클러스터를 종결시키는 단계;
    (c) 상기 애플리케이션 부과 제약에 따라 상기 애플리케이션을 재구성하는 단계, 및
    (d) 상기 재시작 파일의 선택된 것 내에 포함되는 중간 상태로부터 상기 프로비저닝된 새로운 클러스터 상에 상기 애플리케이션의 실행을 개시하는 단계를 포함하는, 방법.
  27. 제17항에 있어서, 사용자가 상기 프로비저닝된 클러스터 상에 상기 애플리케이션의 실행을 개시하는 것을 허용하기 전에 대응하는 라이센스 서버에 의해 상기 애플리케이션의 각각의 사용자를 인증하는 단계를 더 포함하는, 방법.
  28. 제17항에 있어서, 사용자가 상기 프로비저닝된 클러스터 상에 상기 애플리케이션의 구성요소의 실행을 개시하는 것을 허용하기 전에 상기 애플리케이션의 구성요소의 각각의 사용자를 인증하는 단계를 더 포함하는, 방법.
  29. 제17항에 있어서,
    (a) 상기 프로비저닝된 컴퓨팅 자원이 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링하는 단계; 및
    (b) 상기 애플리케이션이 상기 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링하는 단계를 더 포함하는, 방법.
  30. 제29항에 있어서, 상기 애플리케이션의 구성요소가 상기 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링하는 단계를 더 포함하는, 방법.
  31. 제29항에 있어서, 상기 애플리케이션은 상기 프로비저닝된 클러스터 상에 종결되고 상이한 컴퓨팅 자원을 갖는 새로운 클러스터 상에 재시작되고, 상기 애플리케이션이 상기 작업의 실행 동안 사용되고 있는 전체 시간은 상기 애플리케이션이 상기 프로비저닝된 클러스터 및 상기 새로운 클러스터 상에 사용되고 있는 시간의 합을 포함하는, 방법.
  32. 제29항에 있어서, 상기 작업을 수행하는 복수의 애플리케이션을 모니터링하는 단계를 더 포함하는, 방법.
  33. 복수의 사용자를 대신하여 복수의 애플리케이션에 의해 수행되는 작업의 하드웨어 및 소프트웨어 미터링을 용이하게 하는 시스템으로서, 상기 시스템은,
    (a) 사용자를 대신하여 애플리케이션을 실행하기 위한 복수의 하드웨어 제공자 플랫폼 중 하나 상에 컴퓨팅 자원의 제1 클러스터를 프로비저닝하고, 상기 애플리케이션이 실행되고 있는 컴퓨팅 자원의 변화가 보증되는 경우에, 컴퓨팅 자원의 제2 클러스터를 프로비저닝하고 상기 제1 클러스터 상에 상기 애플리케이션을 종결시키는 클러스터 서비스;
    (b) 상기 애플리케이션을 구성하고 상기 프로비저닝된 제1 클러스터 상에 상기 애플리케이션의 실행을 개시하고, 상기 제2 클러스터가 상기 클러스터 서비스에 의해 프로비저닝되는 경우에, 상기 애플리케이션을 재구성하고 상기 제2 클러스터 상에 상기 애플리케이션의 실행을 재개하는 애플리케이션 서비스;
    (c) 사용자가 상기 프로비저닝된 제1 및 제2 클러스터 상에 상기 애플리케이션의 실행을 개시하는 것을 허용하기 전에 대응하는 라이센스 서버에 의해 상기 애플리케이션의 각각의 사용자를 인증하는 라이센스 서비스;
    (d) 상기 프로비저닝된 컴퓨팅 자원이 상기 작업의 실행 동안 사용되고 있는 전체 하드웨어 시간을 모니터링하는 하드웨어 미터링 모듈로서, 상기 전체 하드웨어 시간은 상기 프로비저닝된 컴퓨팅 자원이 상기 제1 클러스터 및 상기 제2 클러스터 상에 사용되고 있는 시간의 합을 포함하는 하드웨어 미터링 모듈; 및
    (e) 상기 애플리케이션이 상기 작업의 실행 동안 사용되고 있는 전체 소프트웨어 시간을 모니터링하는 소프트웨어 미터링 모듈로서, 상기 전체 소프트웨어 시간은 상기 애플리케이션이 상기 제1 클러스터 및 상기 제2 클러스터 상에 사용되고 있는 시간의 합을 포함하는 소프트웨어 미터링 모듈을 포함하는, 시스템.
  34. 제33항에 있어서, 상기 라이센스 서비스는 사용자가 상기 프로비저닝된 제1 및 제2 클러스터 상에 상기 애플리케이션의 구성요소의 실행을 개시하는 것을 허용하기 전에 상기 애플리케이션의 구성요소의 각각의 사용자를 인증하는, 시스템.
  35. 제33항에 있어서, 상기 소프트웨어 미터링 모듈은 상기 애플리케이션의 구성요소가 상기 작업의 실행 동안 사용되고 있는 전체 소프트웨어 시간을 모니터링하는, 시스템.
  36. 제33항에 있어서, 상기 소프트웨어 미터링 모듈은 상기 작업을 수행하는 복수의 애플리케이션을 모니터링하는, 시스템.
  37. 제33항에 있어서, 상기 애플리케이션은 인터-인스턴스 종속성을 갖는 작업을 수행하고, 상기 애플리케이션은 상기 인터-인스턴스 종속성을 적절히 실행하고 해결하기 위해, 상기 애플리케이션에 할당되는 컴퓨팅 자원 중 적어도 하나의 사전 구성 사양을 필요로 하는 하나 이상의 애플리케이션 부과 제약을 포함하며, 상기 시스템은,
    (a) (i) 복수의 컴퓨팅 자원 변화 지시자 및 (ii) 상기 애플리케이션에 의해 발생되는 하나 이상의 재시작 파일을 위해 상기 애플리케이션의 실행을 모니터링하는 애플리케이션 모니터링 서비스; 및
    (b) (i) 상기 현재 컴퓨팅 자원의 수정이 보증되는지를 결정하기 위해 상기 컴퓨팅 자원 변화 지시자 및 재시작 파일을 연속적으로 분석하고, 만일 그렇다면, (ii) 상기 애플리케이션이 실행되고 있는 동안 상기 현재 컴퓨팅 자원의 변화를 구현하는 컴퓨팅 자원 평가 엔진을 더 포함하는, 시스템.
  38. 제37항에 있어서,
    (a) 상기 클러스터는 제1 CPU 코어 상에 상기 애플리케이션의 제1 인스턴스에 의해 수행되는 제1 하위 작업 계산, 및 제2 CPU 코어 상에 상기 애플리케이션의 제2 인스턴스에 의해 수행되는 제2 하위 작업 계산을 포함하는, 상기 애플리케이션의 독립적 하위 작업 계산을 병렬로 실행하기 위한 복수의 CPU 코어를 포함하고;
    (b) 상기 제1 인스턴스에 의해 수행되는 제3 하위 작업 계산은 상기 제2 인스턴스에 의해 수행되는 제2 하위 작업 계산의 결과에 의존하고, 그에 의해 인터-인스턴스 종속성을 구성하는, 시스템.
  39. 제37항에 있어서, 상기 복수의 컴퓨팅 자원 변화 지시자는,
    (a) 상기 컴퓨팅 자원의 애플리케이션의 현재 사용법의 정도를 반영하는 컴퓨팅 자원 이용 데이터; 및
    (b) 실행 동안 상기 애플리케이션에 의해 발생되는 출력 파일로부터 추출되는 데이터를 포함하며, 상기 컴퓨팅 자원의 애플리케이션의 장래 사용법의 예측을 용이하게 하는, 애플리케이션 특정 데이터를 포함하는, 시스템.
  40. 제37항에 있어서, 상기 컴퓨팅 자원 변화 지시자는 이하, 즉 (a) 상기 애플리케이션에 입력으로서 제공되는 시뮬레이션 데이터 모델 내의 셀의 수의 변화, (b) 상기 애플리케이션에 의해 수행되는 작업 내의 하나 이상의 순환 반복 단계; (c) 상기 애플리케이션에 의해 제시되는 인터-코어 통신의 정도의 변화; 및 (d) 상기 애플리케이션에 의해 수행되는 작업의 더 많거나 더 적은 컴퓨팅 자원 집약 위상에 대한 변화 중 하나 이상의 지시자를 포함하는, 시스템.
  41. 제37항에 있어서, 상기 컴퓨팅 자원 평가 엔진은 상기 컴퓨팅 자원 변화 지시자의 분석에 기초하여, 상기 컴퓨팅 자원의 애플리케이션의 장래 사용법의 정도에 관한 예측을 발생시키는, 시스템.
  42. 제37항에 있어서, 상기 컴퓨팅 자원 평가 엔진은 상기 현재 컴퓨팅 자원의 수정이 시간에 따라 상기 애플리케이션 모니터링 서비스에 의해 모니터링되는 이력 정보에 대해 보증되는지의 결정을 기초로 하는, 시스템.
  43. 제37항에 있어서, 상기 애플리케이션 부과 제약은 상기 프로비저닝된 제1 및 제2 클러스터 내의 CPU 코어의 수의 사전 구성 사양을 포함하는, 시스템.
  44. 제37항에 있어서, 상기 컴퓨팅 자원의 변화는 하나의 컴퓨팅 자원의 증가 및 다른 컴퓨팅 자원의 감소를 포함하는, 시스템.
  45. 제37항에 있어서, 각각의 재시작 파일은 상기 애플리케이션의 현재 중간 상태를 반영하는 데이터를 포함하며, 그에 의해 상기 애플리케이션이 장래에 재시작되면, 이러한 중간 상태로부터의 실행을 재개할 수 있게 하는, 시스템.
  46. 제37항에 있어서, 상기 컴퓨팅 자원 평가 엔진은,
    (a) 선택된 하드웨어 제공자 플랫폼 상에 상기 컴퓨팅 자원의 제2 클러스터를 프로비저닝하도록 상기 클러스터 서비스에 명령하고;
    (b) 상기 애플리케이션이 실행되고 있는 제1 클러스터를 종결시키고;
    (c) 상기 애플리케이션 부과 제약에 따라 상기 애플리케이션을 재구성하고, 상기 재시작 파일의 선택된 것 내에 포함되는 중간 상태로부터 상기 제2 클러스터 상에 애플리케이션의 실행을 재개함으로써 상기 애플리케이션이 실행되고 있는 동안 상기 현재 컴퓨팅 자원의 변화를 구현하는, 시스템.
  47. 복수의 사용자를 대신하여 복수의 애플리케이션에 의해 수행되는 작업의 하드웨어 및 소프트웨어 미터링을 용이하게 하기 위한 방법으로서, 상기 방법은 이하의 단계, 즉
    (a) 사용자를 대신하여 애플리케이션을 실행하기 위한 복수의 하드웨어 제공자 플랫폼 중 하나 상에 컴퓨팅 자원의 제1 클러스터를 프로비저닝하고, 상기 애플리케이션이 실행되고 있는 동안 컴퓨팅 자원의 변화가 보증되는 경우에, 컴퓨팅 자원의 제2 클러스터를 프로비저닝하고 상기 제1 클러스터 상에 상기 애플리케이션을 종결시키는 단계;
    (b) 상기 애플리케이션을 구성하고 상기 프로비저닝된 제1 클러스터 상에 상기 애플리케이션의 실행을 개시하고, 상기 제2 클러스터가 상기 클러스터 서비스에 의해 프로비저닝되는 경우에, 상기 애플리케이션을 재구성하고 상기 제2 클러스터 상에 상기 애플리케이션의 실행을 재개하는 단계;
    (c) 사용자가 상기 프로비저닝된 제1 및 제2 클러스터 상에 상기 애플리케이션의 실행을 개시하는 것을 허용하기 전에 대응하는 라이센스 서버에 의해 상기 애플리케이션의 각각의 사용자를 인증하는 단계;
    (d) 상기 프로비저닝된 컴퓨팅 자원이 상기 작업의 실행 동안 사용되고 있는 전체 하드웨어 시간을 모니터링하는 단계로서, 상기 전체 하드웨어 시간은 상기 프로비저닝된 컴퓨팅 자원이 상기 제1 클러스터 및 상기 제2 클러스터 상에 사용되고 있는 시간의 합을 포함하는 단계; 및
    (e) 상기 애플리케이션이 상기 작업의 실행 동안 사용되고 있는 전체 시간을 모니터링하는 단계로서, 상기 전체 소프트웨어 시간은 상기 애플리케이션이 상기 제1 클러스터 및 상기 제2 클러스터 상에 사용되고 있는 시간의 합을 포함하는 단계를 포함하는, 방법.
  48. 제47항에 있어서, 사용자가 상기 프로비저닝된 제1 및 제2 클러스터 상에 상기 애플리케이션의 구성요소의 실행을 개시하는 것을 허용하기 전에 상기 애플리케이션의 구성요소의 각각의 사용자를 인증하는 단계를 더 포함하는, 방법.
  49. 제47항에 있어서, 상기 애플리케이션의 구성요소가 상기 작업의 실행 동안 사용되고 있는 전체 소프트웨어 시간을 모니터링하는 단계를 더 포함하는, 방법.
  50. 제47항에 있어서, 상기 작업을 수행하는 복수의 애플리케이션을 모니터링하는 단계를 더 포함하는, 시스템.
  51. 제47항에 있어서, 상기 애플리케이션은 인터-인스턴스 종속성을 갖는 작업을 수행하고, 상기 애플리케이션은 상기 인터-인스턴스 종속성을 적절히 실행하고 해결하기 위해, 상기 애플리케이션에 할당되는 컴퓨팅 자원 중 적어도 하나의 사전 구성 사양을 필요로 하는 하나 이상의 애플리케이션 부과 제약을 포함하며, 상기 방법은 이하의 단계, 즉
    (a) (i) 복수의 컴퓨팅 자원 변화 지시자 및 (ii) 상기 애플리케이션에 의해 발생되는 하나 이상의 재시작 파일을 위해 상기 애플리케이션의 실행을 모니터링하는 단계; 및
    (b) 상기 현재 컴퓨팅 자원의 수정이 보증되는지를 결정하기 위해 상기 컴퓨팅 자원 변화 지시자 및 재시작 파일을 연속적으로 분석하고, 만일 그렇다면, 상기 애플리케이션이 실행되고 있는 동안 상기 현재 컴퓨팅 자원의 변화를 구현하는 단계를 더 포함하는, 방법.
  52. 제51항에 있어서,
    (a) 상기 클러스터는 제1 CPU 코어 상에 상기 애플리케이션의 제1 인스턴스에 의해 수행되는 제1 하위 작업 계산, 및 제2 CPU 코어 상에 상기 애플리케이션의 제2 인스턴스에 의해 수행되는 제2 하위 작업 계산을 포함하는, 상기 애플리케이션의 독립적 하위 작업 계산을 병렬로 실행하기 위한 복수의 CPU 코어를 포함하고;
    (b) 상기 제1 인스턴스에 의해 수행되는 제3 하위 작업 계산은 상기 제2 인스턴스에 의해 수행되는 제2 하위 작업 계산의 결과에 의존하고, 그에 의해 인터-인스턴스 종속성을 구성하는, 방법.
  53. 제51항에 있어서, 상기 복수의 컴퓨팅 자원 변화 지시자는,
    (a) 상기 컴퓨팅 자원의 애플리케이션의 현재 사용법의 정도를 반영하는 컴퓨팅 자원 이용 데이터; 및
    (b) 실행 동안 상기 애플리케이션에 의해 발생되는 출력 파일로부터 추출되는 데이터를 포함하며, 상기 컴퓨팅 자원의 애플리케이션의 장래 사용법의 예측을 용이하게 하는, 애플리케이션 특정 데이터를 포함하는, 방법.
  54. 제51항에 있어서, 상기 컴퓨팅 자원 변화 지시자는 이하, 즉 (a) 상기 애플리케이션에 입력으로서 제공되는 시뮬레이션 데이터 모델 내의 셀의 수의 변화, (b) 상기 애플리케이션에 의해 수행되는 작업 내의 하나 이상의 순환 반복 단계; (c) 상기 애플리케이션에 의해 제시되는 인터-코어 통신의 정도의 변화; 및 (d) 상기 애플리케이션에 의해 수행되는 작업의 더 많거나 더 적은 컴퓨팅 자원 집약 위상에 대한 변화 중 하나 이상의 지시자를 포함하는, 방법.
  55. 제51항에 있어서, 상기 컴퓨팅 자원 변화 지시자의 분석에 기초하여, 상기 컴퓨팅 자원의 애플리케이션의 장래 사용법의 정도에 관한 예측을 발생시키는 단계를 더 포함하는, 방법.
  56. 제51항에 있어서, 상기 현재 컴퓨팅 자원의 수정이 보증되는지의 결정은 시간에 따라 모니터링되는 이력 정보에 기초하는, 방법.
  57. 제51항에 있어서, 상기 애플리케이션 부과 제약은 상기 프로비저닝된 제1 및 제2 클러스터 내의 CPU 코어의 수의 사전 구성 사양을 포함하는, 방법.
  58. 제51항에 있어서, 상기 컴퓨팅 자원의 변화는 하나의 컴퓨팅 자원의 증가 및 다른 컴퓨팅 자원의 감소를 포함하는, 방법.
  59. 제51항에 있어서, 각각의 재시작 파일은 상기 애플리케이션의 현재 중간 상태를 반영하는 데이터를 포함하며, 그에 의해 상기 애플리케이션이 장래에 재시작되면, 이러한 중간 상태로부터의 실행을 재개할 수 있게 하는, 방법.
  60. 제51항에 있어서, 상기 애플리케이션이 실행되고 있는 동안 상기 현재 컴퓨팅 자원의 변화의 구현은 이하의 단계, 즉
    (a) 선택된 하드웨어 제공자 플랫폼 상에 상기 컴퓨팅 자원의 제2 클러스터를 프로비저닝하는 단계;
    (b) 상기 애플리케이션이 실행되고 있는 제1 클러스터를 종결시키는 단계;
    (c) 상기 애플리케이션 부과 제약에 따라 상기 애플리케이션을 재구성하는 단계; 및
    (d) 상기 재시작 파일의 선택된 것 내에 포함되는 중간 상태로부터 상기 제2 클러스터 상에 상기 애플리케이션의 실행을 재개하는 단계를 포함하는, 방법.
KR1020197006622A 2016-08-11 2017-08-10 시뮬레이션 자원의 동적 최적화 KR102451473B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/235,004 2016-08-11
US15/235,004 US10193762B2 (en) 2016-08-11 2016-08-11 Dynamic optimization of simulation resources
PCT/US2017/046323 WO2018031792A1 (en) 2016-08-11 2017-08-10 Dynamic optimization of simulation resources

Publications (2)

Publication Number Publication Date
KR20190038883A true KR20190038883A (ko) 2019-04-09
KR102451473B1 KR102451473B1 (ko) 2022-10-06

Family

ID=59677396

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197006622A KR102451473B1 (ko) 2016-08-11 2017-08-10 시뮬레이션 자원의 동적 최적화

Country Status (5)

Country Link
US (6) US10193762B2 (ko)
EP (1) EP3497566A1 (ko)
JP (1) JP6944992B2 (ko)
KR (1) KR102451473B1 (ko)
WO (1) WO2018031792A1 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US10643010B2 (en) 2016-08-24 2020-05-05 Improbable Worlds Ltd Scalable simulation system with scalable data propagation
US10380282B2 (en) 2016-08-24 2019-08-13 Improbable Worlds Ltd Distributable and customizable load-balancing of data-associated computation via partitions and virtual processes
US10579434B2 (en) 2016-08-24 2020-03-03 Improbable Worlds Ltd Simulation systems and methods using query-based interest
US10289767B2 (en) 2016-08-24 2019-05-14 Improbable Worlds Ltd Communications interface facilitating operations of a persistent spatially-optimized computer-based simulation
US11087047B2 (en) 2016-08-24 2021-08-10 Improbable Worlds Ltd Scalable update propagation via query aggregations and connection migrations
KR20180051987A (ko) * 2016-11-09 2018-05-17 삼성전자주식회사 인공 신경망의 연산 처리 경로 관리 방법
US10491696B2 (en) * 2016-12-13 2019-11-26 The Nielson Company (Us), Llc Methods and apparatus for adjusting model threshold levels
US11334391B2 (en) * 2017-04-17 2022-05-17 Red Hat, Inc. Self-programmable and self-tunable resource scheduler for jobs in cloud computing
US10803411B1 (en) * 2017-04-17 2020-10-13 Microstrategy Incorporated Enterprise platform deployment
US10491499B2 (en) * 2017-05-11 2019-11-26 Accenture Global Solutions Limited Analyzing resource utilization of a cloud computing resource in a cloud computing environment
US10419437B2 (en) * 2017-06-30 2019-09-17 Futurewei Technologies, Inc. Quasi-agentless cloud resource management
US10931517B2 (en) * 2017-07-31 2021-02-23 Vmware, Inc. Methods and systems that synchronize configuration of a clustered application
US11683831B2 (en) * 2017-12-01 2023-06-20 Woven Planet North America, Inc. Systems and methods for providing resource analysis for autonomous mobility on demand
US10554502B1 (en) * 2018-03-16 2020-02-04 Intuit Inc. Scalable web services execution
US11204811B2 (en) * 2018-04-12 2021-12-21 Vmware, Inc. Methods and systems for estimating time remaining and right sizing usable capacities of resources of a distributed computing system
US11188446B2 (en) * 2018-05-03 2021-11-30 Alteros, Inc. System and method for providing audio processing and inventory tracking and management in a cloud environment
US10303576B1 (en) 2018-05-04 2019-05-28 6Fusion Usa, Inc. Systems and methods for IT intelligence and management based on container-level metering
WO2019241171A1 (en) * 2018-06-14 2019-12-19 Rescale, Inc. Integrated multi-provider compute platform
US10705883B2 (en) * 2018-06-19 2020-07-07 Microsoft Technology Licensing, Llc Dynamic hybrid computing environment
US10990450B2 (en) * 2018-07-23 2021-04-27 Vmware, Inc. Automatic cluster consolidation for efficient resource management
US10795732B2 (en) * 2018-08-24 2020-10-06 Sap Se Grid computing system
WO2020058708A1 (en) * 2018-09-18 2020-03-26 Improbable Worlds Ltd. Simulation systems and methods using query-based interest
US10521332B1 (en) * 2018-09-28 2019-12-31 Dspace Digital Signal Processing And Control Engineering Gmbh Parametrization of a simulation model
EP3650970B8 (de) * 2018-11-09 2022-02-09 Siemens Aktiengesellschaft Verfahren und vorrichtung zum computergestützten simulieren eines modularen technischen systems
US10761875B1 (en) * 2018-12-13 2020-09-01 Amazon Technologies, Inc. Large scale compute instance launching
US10868717B2 (en) * 2019-01-31 2020-12-15 Hewlett Packard Enterprise Development Lp Concurrent profile deployments
US11115268B2 (en) * 2019-04-08 2021-09-07 International Business Machines Corporation Assistance in service provision
US11714658B2 (en) 2019-08-30 2023-08-01 Microstrategy Incorporated Automated idle environment shutdown
US11755372B2 (en) 2019-08-30 2023-09-12 Microstrategy Incorporated Environment monitoring and management
TWI723568B (zh) * 2019-10-05 2021-04-01 中華電信股份有限公司 針對運算主機之叢集管理與動態調度系統及方法
JP7134937B2 (ja) * 2019-10-30 2022-09-12 株式会社東芝 情報処理装置、プログラムおよび情報処理システム
EP3816800A1 (en) * 2019-10-31 2021-05-05 ABB Schweiz AG Assignment of tasks between a plurality of devices
JP2022553866A (ja) * 2019-11-06 2022-12-26 オンスケール,インコーポレイテッド シミュレーションの計算コストの推定のための方法およびシステム
CN111212264B (zh) * 2019-12-27 2021-08-17 中移(杭州)信息技术有限公司 基于边缘计算的图像处理方法、装置、及存储介质
CN113127158B (zh) * 2019-12-30 2023-07-14 百度在线网络技术(北京)有限公司 用于执行数据处理任务的方法及装置
US11792257B2 (en) * 2019-12-31 2023-10-17 Advantage Integrated Solutions, Inc. Form engine
US11182716B2 (en) * 2020-01-30 2021-11-23 Coupang Corp. Cost efficiency tracking for configuration management database
US11281607B2 (en) * 2020-01-30 2022-03-22 Red Hat, Inc. Paravirtualized cluster mode for legacy APICs
KR20210108791A (ko) * 2020-02-26 2021-09-03 삼성전자주식회사 가상화된 네트워크 기능을 실행하는 방법 및 장치
US11182807B1 (en) * 2020-05-08 2021-11-23 International Business Machines Corporation Oligopoly detection
WO2021250452A1 (en) * 2020-06-12 2021-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Container orchestration system
US11362906B2 (en) * 2020-09-18 2022-06-14 Accenture Global Solutions Limited Targeted content selection using a federated learning system
US11455191B2 (en) * 2020-10-13 2022-09-27 International Business Machines Corporation Parallel task initialization on dynamic compute resources
CN112328377B (zh) * 2020-11-04 2022-04-19 北京字节跳动网络技术有限公司 基线监控方法、装置、可读介质及电子设备
CN113553140B (zh) * 2021-09-17 2022-03-18 阿里云计算有限公司 资源调度方法、设备及系统
CN114356534B (zh) * 2022-03-16 2022-06-03 苏州云途半导体有限公司 一种处理单元任务调度方法和装置
CN114741133B (zh) * 2022-04-21 2023-10-27 中国航空无线电电子研究所 一种基于模型的综合模块化航电系统资源配置与评估方法
US20230418728A1 (en) * 2022-06-24 2023-12-28 HCL America Inc. Method and system for generating real-time test environment activity view for functional simulations
CN115345998B (zh) * 2022-08-24 2023-08-25 苏州康柏思信息科技有限公司 一种基于互联网的门窗模拟家装平台
US20240069909A1 (en) * 2022-08-30 2024-02-29 Cisco Technology, Inc. Software bill of materials handshake for cloud-based code execution
CN115392063B (zh) * 2022-10-31 2023-01-31 西安羚控电子科技有限公司 一种多速率仿真方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130174146A1 (en) * 2011-12-30 2013-07-04 International Business Machines Corporation Dynamically scaling multi-tier applications in a cloud environment
US8706798B1 (en) * 2013-06-28 2014-04-22 Pepperdata, Inc. Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system
US20140282536A1 (en) * 2013-03-15 2014-09-18 Gravitant, Inc. Method, system and computer readable medium for provisioning cloud resources

Family Cites Families (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1568189B1 (en) * 2002-12-02 2015-06-17 Sap Se Session-return enabling stateful web applications
WO2004114143A2 (de) * 2003-06-18 2004-12-29 Fujitsu Siemens Computers Gmbh Clusteranordnung
US7788671B2 (en) * 2004-11-01 2010-08-31 International Business Machines Corporation On-demand application resource allocation through dynamic reconfiguration of application cluster size and placement
US20070256082A1 (en) * 2006-05-01 2007-11-01 International Business Machines Corporation Monitoring and controlling applications executing in a computing node
US20180262388A1 (en) 2006-09-25 2018-09-13 Weaved, Inc. Remote device deployment
US8108845B2 (en) * 2007-02-14 2012-01-31 The Mathworks, Inc. Parallel programming computing system to dynamically allocate program portions
US20090089078A1 (en) * 2007-09-28 2009-04-02 Great-Circle Technologies, Inc. Bundling of automated work flow
US8782637B2 (en) 2007-11-03 2014-07-15 ATM Shafiqul Khalid Mini-cloud system for enabling user subscription to cloud service in residential environment
US8826077B2 (en) * 2007-12-28 2014-09-02 International Business Machines Corporation Defining a computer recovery process that matches the scope of outage including determining a root cause and performing escalated recovery operations
US8943191B2 (en) * 2008-04-02 2015-01-27 International Business Machines Corporation Detection of an unresponsive application in a high availability system
JP4612710B2 (ja) * 2008-06-02 2011-01-12 株式会社日立製作所 トランザクション並行制御方法、データベース管理システム、およびプログラム
US10411975B2 (en) * 2013-03-15 2019-09-10 Csc Agility Platform, Inc. System and method for a cloud computing abstraction with multi-tier deployment policy
US9910708B2 (en) * 2008-08-28 2018-03-06 Red Hat, Inc. Promotion of calculations to cloud-based computation resources
US8805975B2 (en) * 2008-12-09 2014-08-12 Go Daddy Operating Company, LLC Using routing protocols to optimize resource utilization
US8819106B1 (en) * 2008-12-12 2014-08-26 Amazon Technologies, Inc. Managing distributed execution of programs
US9600344B2 (en) * 2009-01-21 2017-03-21 International Business Machines Corporation Proportional resizing of a logical partition based on a degree of performance difference between threads for high-performance computing on non-dedicated clusters
US9110706B2 (en) * 2009-02-09 2015-08-18 Microsoft Technology Licensing, Llc General purpose distributed data parallel computing using a high level language
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution
EP2414849B1 (en) * 2009-03-31 2019-03-20 Freestyle Technology Limited A communications process and system associated with monitoring and controlling resource consumption
US10191778B1 (en) 2015-11-16 2019-01-29 Turbonomic, Inc. Systems, apparatus and methods for management of software containers
US9971880B2 (en) * 2009-11-30 2018-05-15 Red Hat, Inc. Verifying software license compliance in cloud computing environments
US9274848B2 (en) 2009-12-03 2016-03-01 International Business Machines Corporation Optimizing cloud service delivery within a cloud computing environment
US9009294B2 (en) 2009-12-11 2015-04-14 International Business Machines Corporation Dynamic provisioning of resources within a cloud computing environment
US9613064B1 (en) * 2010-05-03 2017-04-04 Panzura, Inc. Facilitating the recovery of a virtual machine using a distributed filesystem
WO2011159842A2 (en) * 2010-06-15 2011-12-22 Nimbula, Inc. Virtual computing infrastructure
US9367359B2 (en) * 2010-06-30 2016-06-14 International Business Machines Corporation Optimized resource management for map/reduce computing
US9003416B2 (en) * 2010-09-29 2015-04-07 International Business Machines Corporation Predicting resource requirements for a computer application
US8862738B2 (en) * 2010-10-18 2014-10-14 International Business Machines Corporation Reallocating resource capacity among resource pools in a cloud computing environment
US8922564B2 (en) * 2010-12-01 2014-12-30 Microsoft Corporation Controlling runtime execution from a host to conserve resources
US8548790B2 (en) * 2011-01-07 2013-10-01 International Business Machines Corporation Rapidly determining fragmentation in computing environments
US8856335B1 (en) * 2011-01-28 2014-10-07 Netapp, Inc. Managing service level objectives for storage workloads
US10678602B2 (en) * 2011-02-09 2020-06-09 Cisco Technology, Inc. Apparatus, systems and methods for dynamic adaptive metrics based application deployment on distributed infrastructures
US9967318B2 (en) * 2011-02-09 2018-05-08 Cisco Technology, Inc. Apparatus, systems, and methods for cloud agnostic multi-tier application modeling and deployment
EP2492832B1 (de) * 2011-02-22 2021-08-18 Siemens Healthcare GmbH Optimierung einer auf einem client-server-system implementierten softwareapplikation
US9141410B2 (en) * 2011-03-08 2015-09-22 Rackspace Us, Inc. Pluggable allocation in a cloud computing system
US20170293980A1 (en) * 2011-04-04 2017-10-12 Aon Securities, Inc. System and method for managing processing resources of a computing system
US10360122B2 (en) * 2011-05-31 2019-07-23 Red Hat, Inc. Tracking cloud installation information using cloud-aware kernel of operating system
US9251481B2 (en) * 2011-06-13 2016-02-02 Accenture Global Services Limited Distributed metering and monitoring system
US8725875B2 (en) * 2011-06-21 2014-05-13 Intel Corporation Native cloud computing via network segmentation
US8601000B1 (en) * 2011-06-27 2013-12-03 Amazon Technologies, Inc. System and method for conditionally updating an item with attribute granularity
US20130031035A1 (en) * 2011-07-31 2013-01-31 International Business Machines Corporation Learning admission policy for optimizing quality of service of computing resources networks
US8706852B2 (en) * 2011-08-23 2014-04-22 Red Hat, Inc. Automated scaling of an application and its support components
US9781205B2 (en) * 2011-09-12 2017-10-03 Microsoft Technology Licensing, Llc Coordination engine for cloud selection
US9916538B2 (en) 2012-09-15 2018-03-13 Z Advanced Computing, Inc. Method and system for feature detection
WO2013062555A2 (en) 2011-10-27 2013-05-02 Mw Industries, Inc. Coned-disc spring device, spring assembly, and methods of making the same
CA2889387C (en) * 2011-11-22 2020-03-24 Solano Labs, Inc. System of distributed software quality improvement
WO2013082698A1 (en) * 2011-12-05 2013-06-13 Hatch Ltd. System, method and controller for managing and controlling a micro-grid
EP2789137A4 (en) * 2011-12-06 2015-12-02 Seven Networks Inc SYSTEM OF REDUNDANTLY CLUSTERED MACHINES FOR PROVIDING TILTING MECHANISMS IN MOBILE TRAFFIC MANAGEMENT AND NETWORK RESOURCE PRESERVATION
US8725798B2 (en) * 2011-12-15 2014-05-13 Microsoft Corporation Provisioning high performance computing clusters
US10031783B2 (en) * 2012-03-02 2018-07-24 Vmware, Inc. Execution of a distributed deployment plan for a multi-tier application in a cloud infrastructure
JP6085957B2 (ja) * 2012-03-14 2017-03-01 株式会社リコー 情報処理装置、プログラム、情報処理システム及び情報共有方法
CN103377402A (zh) 2012-04-18 2013-10-30 国际商业机器公司 一种多用户分析系统以及相应的装置和方法
US9734280B2 (en) 2012-04-27 2017-08-15 Labthink Instruments Co., Ltd. Plastic packaging materials testing system based on internet of things and cloud technology
CN102857363B (zh) * 2012-05-04 2016-04-20 运软网络科技(上海)有限公司 一种虚拟网络的自主管理系统和方法
US9075788B1 (en) * 2012-06-15 2015-07-07 Amazon Technologies, Inc. Account state simulation service for cloud computing environments
US9979780B1 (en) 2012-06-25 2018-05-22 EMC IP Holding Company LLC Method and apparatus for selection between multiple candidate clouds for job processing
US9411648B2 (en) * 2012-06-28 2016-08-09 Rackspace Us, Inc. Flexible resource configuration management for computing clusters
US10157124B1 (en) * 2012-09-28 2018-12-18 EMC IP Holding Company, LLC Method, apparatus, and system for managing data storage with an application programming interface
US9323628B2 (en) * 2012-10-09 2016-04-26 Dh2I Company Instance level server application monitoring, load balancing, and resource allocation
US8655307B1 (en) * 2012-10-26 2014-02-18 Lookout, Inc. System and method for developing, updating, and using user device behavioral context models to modify user, device, and application state, settings and behavior for enhanced user security
US9210054B2 (en) * 2012-11-14 2015-12-08 International Business Machines Corporation Secure metering and accounting for cloud services
US9503310B1 (en) * 2012-11-27 2016-11-22 Leidos, Inc. Methods and systems of dynamic management of resources in a virtualized environment
CN103873279B (zh) * 2012-12-13 2015-07-15 腾讯科技(深圳)有限公司 一种服务器管理方法,及装置
US9128739B1 (en) 2012-12-31 2015-09-08 Emc Corporation Determining instances to maintain on at least one cloud responsive to an evaluation of performance characteristics
US20140196038A1 (en) 2013-01-08 2014-07-10 Commvault Systems, Inc. Virtual machine management in a data storage system
US9300536B2 (en) * 2013-02-05 2016-03-29 International Busines Machines Corporation Cluster-aware resource provisioning in a networked computing environment
US10552774B2 (en) * 2013-02-11 2020-02-04 Amazon Technologies, Inc. Cost-minimizing task scheduler
US9430280B1 (en) * 2013-02-11 2016-08-30 Amazon Technologies, Inc. Task timeouts based on input data characteristics
US9465630B1 (en) * 2013-02-20 2016-10-11 Ca, Inc. Assigning dynamic weighted variables to cluster resources for virtual machine provisioning
US9904579B2 (en) * 2013-03-15 2018-02-27 Advanced Elemental Technologies, Inc. Methods and systems for purposeful computing
US10204026B2 (en) * 2013-03-15 2019-02-12 Uda, Llc Realtime data stream cluster summarization and labeling system
US9813318B2 (en) * 2013-03-15 2017-11-07 International Business Machines Corporation Assessment of best fit cloud deployment infrastructures
US9569480B2 (en) * 2013-05-02 2017-02-14 Aspen Technology, Inc. Method and system for stateful recovery and self-healing
EP2811405A1 (en) * 2013-06-04 2014-12-10 Fujitsu Limited Process migration method, computer system and intermediate computing resources
CA2915383C (en) * 2013-06-24 2023-05-02 Cylance Inc. Automated system for generative multimodel multiclass classification and similarity analysis using machine learning
RU2643451C2 (ru) * 2013-08-27 2018-02-01 Хуавей Текнолоджиз Ко., Лтд. Система и способ виртуализации функции мобильной сети
US9313133B2 (en) * 2013-09-10 2016-04-12 Robin Systems, Inc. Anticipatory warm-up of cluster resources for jobs processed on multiple cluster nodes
US20150082316A1 (en) * 2013-09-18 2015-03-19 evoleap, LLC System and Method for Efficient Utilization of Simulation Resources
US20160034995A1 (en) 2013-11-19 2016-02-04 Service Labs, Inc. Method and system for automated indentification and engagement of service providers
US10095800B1 (en) 2013-12-16 2018-10-09 Amazon Technologies, Inc. Multi-tenant data store management
US10001389B1 (en) * 2013-12-20 2018-06-19 EMC IP Holding Company LLC Analysis of smart meter data based on frequency content
US10404795B2 (en) * 2014-02-19 2019-09-03 Vmware, Inc. Virtual machine high availability using shared storage during network isolation
US20150256475A1 (en) * 2014-03-05 2015-09-10 Wipro Limited Systems and methods for designing an optimized infrastructure for executing computing processes
US9872195B2 (en) * 2014-04-10 2018-01-16 Samsung Electronics Co., Ltd. Method and system for providing data communication through a cluster head for machine type communication (MTC) based group communication
US20170235605A1 (en) 2014-05-06 2017-08-17 NetSuite Inc. System and method for implementing cloud based asynchronous processors
US9979617B1 (en) * 2014-05-15 2018-05-22 Amazon Technologies, Inc. Techniques for controlling scaling behavior of resources
US10148736B1 (en) * 2014-05-19 2018-12-04 Amazon Technologies, Inc. Executing parallel jobs with message passing on compute clusters
US10659523B1 (en) * 2014-05-23 2020-05-19 Amazon Technologies, Inc. Isolating compute clusters created for a customer
US10496927B2 (en) * 2014-05-23 2019-12-03 DataRobot, Inc. Systems for time-series predictive data analytics, and related methods and apparatus
US9876539B2 (en) * 2014-06-16 2018-01-23 Ntt Docomo, Inc. Method and apparatus for scalable load balancing across wireless heterogeneous MIMO networks
US10129344B2 (en) 2014-06-19 2018-11-13 Microsoft Technology Licensing, Llc Integrated user interface for consuming services across different distributed networks
US10097410B2 (en) * 2014-06-26 2018-10-09 Vmware, Inc. Methods and apparatus to scale application deployments in cloud computing environments
US9712542B1 (en) * 2014-06-27 2017-07-18 Amazon Technologies, Inc. Permissions decisions in a service provider environment
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US10120907B2 (en) * 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
US10467036B2 (en) * 2014-09-30 2019-11-05 International Business Machines Corporation Dynamic metering adjustment for service management of computing platform
US10182103B2 (en) 2014-10-16 2019-01-15 Amazon Technologies, Inc. On-demand delivery of applications to virtual desktops
US10491537B2 (en) * 2014-10-28 2019-11-26 Salesforce.Com, Inc. Facilitating dynamic hierarchical management of queue resources in an on-demand services environment
US10230571B2 (en) 2014-10-30 2019-03-12 Equinix, Inc. Microservice-based application development framework
US9984044B2 (en) * 2014-11-16 2018-05-29 International Business Machines Corporation Predicting performance regression of a computer system with a complex queuing network model
US10007555B1 (en) * 2014-12-05 2018-06-26 Google Llc Dynamic resource management
US9747136B2 (en) * 2014-12-09 2017-08-29 Vmware, Inc. Methods and systems that allocate cost of cluster resources in virtual data centers
US9361140B1 (en) * 2014-12-11 2016-06-07 International Business Machines Corporation Isolating applications in server environment
US9329907B1 (en) * 2014-12-18 2016-05-03 International Business Machines Corporation Automated exploitation of virtual machine resource modifications
US10466754B2 (en) * 2014-12-26 2019-11-05 Intel Corporation Dynamic hierarchical performance balancing of computational resources
US9477533B2 (en) * 2014-12-26 2016-10-25 Intel Corporation Progress meters in parallel computing
US10755006B2 (en) 2015-01-09 2020-08-25 Schlumberger Technology Corporation Cloud-based reservoir simulation environment
US10057186B2 (en) 2015-01-09 2018-08-21 International Business Machines Corporation Service broker for computational offloading and improved resource utilization
US9444764B2 (en) * 2015-01-20 2016-09-13 State Farm Mutual Automobile Insurance Company Scalable and secure interconnectivity in server cluster environments
US10178184B2 (en) * 2015-01-21 2019-01-08 Oracle International Corporation System and method for session handling in a multitenant application server environment
US10110502B1 (en) * 2015-02-02 2018-10-23 Amazon Technologies, Inc. Autonomous host deployment in managed deployment systems
US9569271B2 (en) * 2015-02-03 2017-02-14 Dell Products L.P. Optimization of proprietary workloads
US10038721B2 (en) 2015-02-16 2018-07-31 International Business Machines Corporation Enabling an on-premises resource to be exposed to a public cloud application securely and seamlessly
US10866838B2 (en) * 2015-03-25 2020-12-15 Intel Corporation Cluster computing service assurance apparatus and method
US20160285957A1 (en) * 2015-03-26 2016-09-29 Avaya Inc. Server cluster profile definition in a distributed processing network
WO2016154785A1 (zh) 2015-03-27 2016-10-06 华为技术有限公司 一种云平台、运行应用的方法及接入网单元
US9916233B1 (en) * 2015-03-27 2018-03-13 Amazon Technologies, Inc. Using containers for update deployment
US10277668B1 (en) * 2015-04-06 2019-04-30 EMC IP Holding Company LLC Beacon-based distributed data processing platform
US10108683B2 (en) 2015-04-24 2018-10-23 International Business Machines Corporation Distributed balanced optimization for an extract, transform, and load (ETL) job
US9871857B2 (en) * 2015-04-29 2018-01-16 Microsoft Technology Licensing, Llc Optimal allocation of dynamic cloud computing platform resources
US9882798B2 (en) * 2015-05-13 2018-01-30 Vmware, Inc. Method and system that analyzes operational characteristics of multi-tier applications
US10051082B2 (en) * 2015-06-05 2018-08-14 International Business Machines Corporation Cost determination to provide software as a service
CA3128629A1 (en) * 2015-06-05 2016-07-28 C3.Ai, Inc. Systems and methods for data processing and enterprise ai applications
US9612865B2 (en) * 2015-06-15 2017-04-04 International Business Machines Corporation Managed services coordinator
US9851953B2 (en) 2015-06-29 2017-12-26 Oracle International Corporation Cloud based editor for generation of interpreted artifacts for mobile runtime
US10075442B2 (en) * 2015-06-30 2018-09-11 Vmware, Inc. Methods and apparatus to grant access to cloud computing resources
US10644940B2 (en) * 2015-07-08 2020-05-05 Convida Wireless, Llc M2M clustering management
US10140163B2 (en) 2015-07-10 2018-11-27 International Business Machines Corporation Intelligent framework for shared services orchestration
US10387605B2 (en) * 2015-07-23 2019-08-20 Synopsys, Inc. System and method for managing and composing verification engines
US10230529B2 (en) 2015-07-31 2019-03-12 Microsft Technology Licensing, LLC Techniques to secure computation data in a computing environment
US10305814B2 (en) 2015-08-05 2019-05-28 International Business Machines Corporation Sizing SAN storage migrations
US10073880B2 (en) 2015-08-06 2018-09-11 International Business Machines Corporation Vertical tuning of distributed analytics clusters
US9733970B2 (en) * 2015-08-21 2017-08-15 International Business Machines Corporation Placement of virtual machines on preferred physical hosts
US10198281B2 (en) 2015-08-28 2019-02-05 Vmware, Inc. Hybrid infrastructure provisioning framework tethering remote datacenters
US20170060609A1 (en) * 2015-08-28 2017-03-02 International Business Machines Corporation Managing a shared pool of configurable computing resources which has a set of containers
US10042903B2 (en) 2015-09-02 2018-08-07 International Business Machines Corporation Automating extract, transform, and load job testing
US10146592B2 (en) * 2015-09-18 2018-12-04 Salesforce.Com, Inc. Managing resource allocation in a stream processing framework
US20170090970A1 (en) * 2015-09-30 2017-03-30 Yokogawa Electric Corporation Method, system and computer program for cloud based computing clusters for simulated operator training systems
US10162684B2 (en) * 2015-10-15 2018-12-25 International Business Machines Corporation CPU resource management in computer cluster
US10708387B2 (en) * 2015-10-30 2020-07-07 Novell, Inc. Service usage metering techniques
US10361919B2 (en) * 2015-11-09 2019-07-23 At&T Intellectual Property I, L.P. Self-healing and dynamic optimization of VM server cluster management in multi-cloud platform
US10031781B2 (en) * 2015-11-24 2018-07-24 International Business Machines Corporation Estimating job start times on workload management systems
US10063634B2 (en) * 2015-11-24 2018-08-28 International Business Machines Corporation Deployment of multi-task analytics applications in multi-clouds
US10395195B2 (en) * 2016-01-08 2019-08-27 International Business Machines Corporation Provisioning virtual machines to optimize application licensing costs
US10455028B2 (en) 2016-01-20 2019-10-22 Hewlett Packard Enterprise Development Lp Allocating edge services with large-scale processing framework clusters
US10162682B2 (en) * 2016-02-16 2018-12-25 Red Hat, Inc. Automatically scaling up physical resources in a computing infrastructure
US10135701B2 (en) * 2016-02-19 2018-11-20 At&T Intellectual Property I, L.P. Context-aware virtualized control decision support system for providing quality of experience assurance for internet protocol streaming video services
US10469390B2 (en) * 2016-03-23 2019-11-05 International Business Machines Corporation Load balancing with software defined network controllers
US10135712B2 (en) * 2016-04-07 2018-11-20 At&T Intellectual Property I, L.P. Auto-scaling software-defined monitoring platform for software-defined networking service assurance
US9967267B2 (en) 2016-04-15 2018-05-08 Sophos Limited Forensic analysis of computing activity
US10417395B2 (en) 2016-04-21 2019-09-17 Servicenow, Inc. Application usage analytics for licensing analysis
US10013289B2 (en) * 2016-04-28 2018-07-03 International Business Machines Corporation Performing automatic map reduce job optimization using a resource supply-demand based approach
US10152357B1 (en) 2016-05-02 2018-12-11 EMC IP Holding Company LLC Monitoring application workloads scheduled on heterogeneous elements of information technology infrastructure
KR102392510B1 (ko) 2016-05-09 2022-04-29 스트롱 포스 아이오티 포트폴리오 2016, 엘엘씨 산업용 사물 인터넷을 위한 방법들 및 시스템들
US20170329879A1 (en) * 2016-05-10 2017-11-16 MultiMechanics, Inc. System and method for material constitutive modeling
US10341410B2 (en) 2016-05-11 2019-07-02 Oracle International Corporation Security tokens for a multi-tenant identity and data security management cloud service
US10346184B2 (en) 2016-05-13 2019-07-09 Sap Se Open data protocol services in applications and interfaces across multiple platforms
US10153941B2 (en) * 2016-05-17 2018-12-11 Microsoft Technology Licensing, Llc Distributed operational control in computing systems
US10158743B2 (en) * 2016-06-12 2018-12-18 International Business Machines Corporation Compute node cluster management
JP6949951B2 (ja) * 2016-06-16 2021-10-13 ヴァーセック システムズ,インコーポレイテッド コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法
US10268512B2 (en) * 2016-06-23 2019-04-23 International Business Machines Corporation Optimizing simultaneous startup or modification of inter-dependent machines with specified priorities
WO2018005613A1 (en) 2016-06-28 2018-01-04 Solano Labs, Inc. Systems and methods for efficient distribution of stored data objects
US10701141B2 (en) 2016-06-30 2020-06-30 International Business Machines Corporation Managing software licenses in a disaggregated environment
US20180018745A1 (en) 2016-07-12 2018-01-18 Salesforce.Com, Inc. Licensing as a service (laas)
US10169130B2 (en) 2016-07-19 2019-01-01 International Business Machines Corporation Tailoring diagnostic information in a multithreaded environment
US20180024964A1 (en) * 2016-07-19 2018-01-25 Pure Storage, Inc. Disaggregated compute resources and storage resources in a storage system
US20180025007A1 (en) * 2016-07-22 2018-01-25 Sap Se Method and system for adaptive processing of resource usage records
US10095539B2 (en) * 2016-07-25 2018-10-09 International Business Machines Corporation Automated data structure-driven orchestration of complex server provisioning tasks
US10089135B2 (en) * 2016-08-09 2018-10-02 International Business Machines Corporation Expediting the provisioning of virtual machines based on cached repeated portions of a template
US10387198B2 (en) 2016-08-11 2019-08-20 Rescale, Inc. Integrated multi-provider compute platform
US10120724B2 (en) * 2016-08-16 2018-11-06 International Business Machines Corporation Optimized resource metering in a multi tenanted distributed file system
US10289767B2 (en) * 2016-08-24 2019-05-14 Improbable Worlds Ltd Communications interface facilitating operations of a persistent spatially-optimized computer-based simulation
US10353965B2 (en) * 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US10649811B2 (en) * 2016-10-15 2020-05-12 International Business Machines Corporation Sunder management for a cluster of disperse nodes
US10303576B1 (en) * 2018-05-04 2019-05-28 6Fusion Usa, Inc. Systems and methods for IT intelligence and management based on container-level metering

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130174146A1 (en) * 2011-12-30 2013-07-04 International Business Machines Corporation Dynamically scaling multi-tier applications in a cloud environment
US20140282536A1 (en) * 2013-03-15 2014-09-18 Gravitant, Inc. Method, system and computer readable medium for provisioning cloud resources
US8706798B1 (en) * 2013-06-28 2014-04-22 Pepperdata, Inc. Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Ro, Cheulwoo. "Modeling of Virtual Switch in Cloud System." Journal of Digital Convergence, vol. 11, no. 12, 한국디지털정책학회, Dec. 2013, pp. 479-485, doi:10.14400/JDPM.2013.11.12.479. *
안윤선."하이브리드 클라우드상의 과학응용을 위한 가상 자원 오토 스케일링 기법".한국정보과학회.제41권제4호.,2014.08.31.,(제158면 내지 제165면) *

Also Published As

Publication number Publication date
US10263853B2 (en) 2019-04-16
JP2019526854A (ja) 2019-09-19
US10659313B2 (en) 2020-05-19
US20180048532A1 (en) 2018-02-15
US20190020552A1 (en) 2019-01-17
US20190260648A1 (en) 2019-08-22
US20200244544A1 (en) 2020-07-30
KR102451473B1 (ko) 2022-10-06
US10333795B2 (en) 2019-06-25
WO2018031792A1 (en) 2018-02-15
US10187265B1 (en) 2019-01-22
JP6944992B2 (ja) 2021-10-06
US11018950B2 (en) 2021-05-25
EP3497566A1 (en) 2019-06-19
US20190014013A1 (en) 2019-01-10
US10193762B2 (en) 2019-01-29
US20190014012A1 (en) 2019-01-10

Similar Documents

Publication Publication Date Title
KR102451473B1 (ko) 시뮬레이션 자원의 동적 최적화
Jo et al. A machine learning approach to live migration modeling
Silva et al. Cloudbench: Experiment automation for cloud environments
US9356883B1 (en) Allocating cloud-hosted application resources using end-user metrics
Huber et al. Model-based self-aware performance and resource management using the descartes modeling language
WO2008134143A1 (en) Resource model training
Stier et al. Model-based energy efficiency analysis of software architectures
US20200153645A1 (en) Increasing processing capacity of processor cores during initial program load processing
US20220147409A1 (en) Identification and/or prediction of failures in a microservice architecture for enabling automatically-repairing solutions
Lebre et al. Putting the next 500 vm placement algorithms to the acid test: The infrastructure provider viewpoint
Ochei et al. Optimal deployment of components of cloud-hosted application for guaranteeing multitenancy isolation
Xu et al. Availability analysis for deployment of in-cloud applications
Willnecker et al. Optimization of deployment topologies for distributed enterprise applications
Roy et al. Keep It Moving: Proactive workload management for reducing SLA violations in large scale SaaS clouds
Vondra et al. Modifying CloudSim to accurately simulate interactive services for cloud autoscaling
Lejeune et al. Towards a generic autonomic model to manage cloud services
Hao et al. Measuring performance degradation of virtual machines based on the Bayesian network with hidden variables
Willnecker et al. Multi-objective optimization of deployment topologies for distributed applications
Willnecker et al. Full-stack performance model evaluation using probabilistic garbage collection simulation
JP7465045B2 (ja) 異常イベントに対する仮想マシンの処理能力の増加
Burroughs Towards predictive runtime modelling of kubernetes microservices
US20210349705A1 (en) Performance sensitive storage system upgrade
WO2021096346A1 (en) A computer-implemented system for management of container logs and its method thereof
Brunnert et al. Evaluating the Prediction Accuracy of Generated Performance Models in Up-and Downscaling Scenarios.
Debbi Modeling and performance analysis of resource provisioning in cloud computing using probabilistic model checking

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right