KR20150043377A - 클라우드 컴퓨팅 시스템을 튜닝하는 시스템 및 방법 - Google Patents

클라우드 컴퓨팅 시스템을 튜닝하는 시스템 및 방법 Download PDF

Info

Publication number
KR20150043377A
KR20150043377A KR20157005995A KR20157005995A KR20150043377A KR 20150043377 A KR20150043377 A KR 20150043377A KR 20157005995 A KR20157005995 A KR 20157005995A KR 20157005995 A KR20157005995 A KR 20157005995A KR 20150043377 A KR20150043377 A KR 20150043377A
Authority
KR
South Korea
Prior art keywords
node
nodes
workload
cluster
data
Prior art date
Application number
KR20157005995A
Other languages
English (en)
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
Priority claimed from US13/568,463 external-priority patent/US9658895B2/en
Priority claimed from US13/568,432 external-priority patent/US20140047095A1/en
Priority claimed from US13/568,459 external-priority patent/US9152532B2/en
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20150043377A publication Critical patent/KR20150043377A/ko

Links

Images

Classifications

    • 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/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Abstract

본 발명은 클라우드 컴퓨팅 시스템과 같은 컴퓨팅 시스템을 구성하기 위한 방법 및 시스템에 관한 것이다. 방법은 노드들의 클러스터의 복수의 서로 다른 구성 파라미터들의 세트에 근거하여 컴퓨팅 시스템의 노드들의 클러스터 상에서 워크로드의 복수의 실행들을 개시하는 단계를 포함한다. 상기 구성 파라미터들은, 워크로드 컨테이너(workload container)의 동작 파라미터, 적어도 하나의 노드의 부트 시간 파라미터(boot-time parameter) 및 적어도 하나의 노드의 하드웨어 구성 파라미터 중 적어도 하나를 포함한다. 상기 방법은 또한, 워크로드의 각각의 실행 동안 모니터링된 상기 노드들의 클러스터의 적어도 하나의 성능 특성과 상기 노드들의 클러스터의 적어도 하나의 요구되는 성능 특성의 비교에 근거하여, 복수의 서로 다른 구성 파라미터들의 세트들로부터 상기 노드들의 클러스터에 대한 구성 파라미터들의 세트를 선택하는 단계를 포함한다. 상기 방법은 또한, 상기 선택된 구성 파라미터들의 세트로 구성되는 상기 노드들의 클러스터에 의한 실행을 위해 상기 노드들의 클러스터에 상기 워크로드를 제공하는 단계를 포함한다.

Description

클라우드 컴퓨팅 시스템을 튜닝하는 시스템 및 방법{SYSTEM AND METHOD FOR TUNING A CLOUD COMPUTING SYSTEM}
본 발명은 일반적으로, 컴퓨팅 시스템들의 분야에 관한 것이며, 특히 클라우드 컴퓨팅 시스템의 성능 특성들을 구성 및/또는 모니터링하는 방법 및 시스템들에 관한 것이다.
클라우드 컴퓨팅은 예컨대, 인터넷과 같은 네트워크를 통한 호스팅된 서비스들의 배달을 수반한다. 클라우드 컴퓨팅 시스템들은 최종 사용자들에게로의 서비스로서 컴퓨팅 용량 및 저장 용량의 배달을 제공한다. 클라우드 컴퓨팅 시스템들은 분산형 통신 네트워크 상에서 동작하는 복수의 서버들 또는 "노드들"을 포함하며, 각각의 노드는 로컬 프로세싱 능력(capability) 및 메모리를 포함한다. 예를 들어, 클라우드 컴퓨팅 시스템의 각각의 노드는 컴퓨팅 능력을 제공하기 위한 적어도 하나의 프로세싱 디바이스 및 저장 용량을 제공하기 위한 메모리를 포함한다. 어플리케이션을 로컬하게 동작시키거나 또는 데이터를 로컬하게 저장하기 보다는, 사용자는 노드들의 클라우드 또는 "클러스터" 상에서 원격으로, 어플리케이션을 동작시키거나 또는 데이터를 저장할 수 있다. 최종 사용자들은 예컨대, 로컬 컴퓨터 상에서 웹 브라우져 또는 어떤 다른 소프트웨어 어플리케이션을 통해 클라우드 기반의(cloud-based) 어플리케이션들에 액세스할 수 있고, 소프트웨어 어플리케이션 및/또는 상기 소프트웨어 어플리케이션과 관계된 데이터는 원격 위치에 있는 클라우드 노드들 상에 저장 및/또는 실행된다. 클라우드 컴퓨팅 리소스들은 전형적으로, 요구 시(on demand) 최종 사용자에게 할당되며, 클라우드 컴퓨팅 시스템 비용은 최종 사용자에 의해 이용되는 리소스들의 실제량에 대응한다.
컴퓨팅 태스크들은 워크로드(workload)의 형태로 클라우드 컴퓨팅 시스템의 복수의 노드들에 걸쳐 분산된다. 노드들은 워크로드의 프로세싱을 공유하도록 동작한다. ("커널"로도 지칭되는) 워크로드는 노드들의 클라우드 상에서 수행 및 실행되는 컴퓨팅 잡(job) 또는 태스크를 포함한다. 소프트웨어 또는 펌웨어 코드의 컬렉션(collection) 또는 어떤 필수 데이터를 포함하는 워크로드는 노드들의 클러스터 상에서 실행되는 어떤 어플리케이션 또는 프로그램, 또는 어플리케이션이나 프로그램의 일부를 포함한다. 예를 들어, 일 예시적인 워크로드는 하나 이상의 알고리즘들을 구현하는 어플리케이션이다. 예시적인 알고리즘들은 예컨대, 데이터세트를 클러스터링, 저장, 분류 또는 필터링하는 것을 포함한다. 다른 예시적인 워크로드들은 최종 사용자에게 컴퓨팅 서비스를 제공하도록 실행되는 서비스-지향(service-oriented) 어플리케이션들을 포함한다. 다른 실시예들에서, 워크로드는 복수의 노드들 상에서 동시에 복제(clone) 및 실행되는 단일 어플리케이션을 포함한다. 로드 밸런서(load balancer)가 노드들이 워크로드와 관련된 프로세싱 로드를 공유하도록 노드들의 클러스터에 걸쳐 워크로드로 실행될 요청들을 분산시킨다. 노드들의 클러스터는 최종 결과를 생성하도록 워크로드의 실행의 결과들을 콜라보레이션(collaboration)한다.
워크로드 컨테이너(workload container) - 상기 워크로드 컨테이너는 워크로드 컨테이너 모듈(예컨대, 소프트웨어 또는 펌웨어 코드)을 실행하는 노드의 하나 이상의 프로세서들을 포함함 - 가 각각의 노드 상에서 동작한다. 워크로드 컨테이너는 노드들의 클러스터 상에서 워크로드들의 실행을 개시하고 편성(orchestrate)하는 소프트웨어 환경을 제공하기 위한 워크로드들에 대한 실행 프레임워크(execution framework)이다. 워크로드 컨테이너들은 전형적으로, 노드들의 클러스터 상에서 작업노드들의 특별한 클래스에 대한 실행 프레임워크를 제공한다. 워크로드 컨테이너는 노드가 워크로드를 실행하고, 상기 클라우드의 다른 노드들과 워크로드 실행의 결과들을 공유하며, 상기 노드의 다른 노드들과 콜라보레이션하고 통신하도록 하는 클라우드의 노드로서 동작하게끔 관련 노드를 구성한다. 일 실시예에서, 워크로드 컨테이너는 다른 노드들뿐만 아니라 관련 노드의 다른 어플리케이션들 및 하드웨어와 인터페이싱하기 위한 어플리케이션 프로그램 인터페이스들(API들) 또는 XML-기반 인터페이스들을 포함한다.
일 예시적인 워크로드 컨테이너는 자바 기반의 Apache Hadoop이며, 맵-감소(map-reduce) 워크로드들을 위한 맵-감소 프레임워크 및 분산형 파일 시스템(HDFS)을 제공한다. Hadoop 워크로드 컨테이너로 동작하는 노드들의 클러스터는 전형적으로, 마스터 노드뿐만 아니라 복수의 작업자(worker) 노드들을 포함한다. Hadoop 워크로드 컨테이너는 각각의 노드에 마스터 또는 작업자 상태들의 할당을 조정하고, 각각의 노드에게 이것이 클라우드에서 동작하고 있음을 알려준다. 마스터 노드는 잡(즉, 워크로드) 개시 및 완료뿐만 아니라 파일 시스템 메타데이터를 트랙킹한다. 맵-감소 프레임워크의 "맵" 페이즈에서, 태스크 또는 워크로드는 복수의 부분들(즉, 하나 이상의 프로세싱 스레드들의 복수의 그룹들)로 파티션(partition)되고, 워크로드의 부분들은 스레드들 및 관련 입력 데이터를 프로세스하는 작업자 노드들에 분산된다. "감소" 페이즈에서, 각각의 작업자 노드로부터의 출력이 수집되고 최종 결과 또는 답(answer)을 생성하기 위해 결합된다. Hadoop의 분산형 파일 시스템(HDFS)은 데이터를 저장하고 작업자 노드들 사이에 데이터를 통신하기 위해 활용된다. HDFS 파일 시스템은 데이터 및 파일들의 복수의 복사본들을 저장함으로써 데이터 신뢰성의 가능성(likelihood)을 증가시키기 위해 데이터 복제(replication)를 지원한다.
선행 기술의 클라우드 컴퓨팅 플랫폼들에서 노드들의 클러스터를 셋업하거나 구성하는 것은 가파른 학습 곡선(steep learning curve)을 요하는 복합 프로세스이다. 클라우드 소프트웨어 및 워크로드들은 각각의 노드에 개별적으로 배치(deploy)되어야 하며, 어떤 구성 변경들이 또한 각각의 노드에 개별적으로 배치되어야 한다. 노드들의 클러스터의 성능을 분석하는 것 및 클라우드 셋업을 최적화하는 것은 복수의 독립 변수들을 수반하며, 종종 시간 소모적이며, 특별한 어플리케이션들을 모니터링하고 분석하기 위해 적응되는 애드-혹(ad-hoc)인터페이스들을 요한다. 특히, 클라우드 운영자(operator) 또는 엔지니어는 작업노드가 어떻게 실행(running)되는지에 관한 데이터를 획득하기 위할뿐만 아니라 워크로드의 실제 결과들을 획득하기 위한 커멘드들을 생성해야한다. 추가적으로, 이러한 데이터는 가까이에 있는 시스템 구성에 특정한 포맷이며, 클라우드 운영자 또는 엔지니어에 의해, 성능 분석을 위해 적절한 형태로 통합되어야 한다. 클라우드 운영자 또는 엔지니어는 클라우드 메커니즘, 어떤 네트워킹 문제들, 시스템 관리자 관련 태스크들뿐만 아니라 이용가능한 성능 분석 툴들의 배치 및 데이터 포맷들의 특정 세부사항을 학습하도록 요구된다. 또한, 노드들의 클러스터 상의 워크로드들의 성능을 모니터링하고 분석하는 것은 복잡하고, 시간 소모적이며, 특별한 클라우드 구성에 의존적이다. 클라우드 운영자 또는 엔지니어는 특별한 클라우드 시스템에 대한 구성 및 하드웨어 정보 모두에 대해 항상 내통하는(privy) 것은 아니어서, 정확한 성능 분석이 어려워진다.
예컨대, AWS(Amazon Web Services) 및 OpenStack을 포함하여, 여러 클라우드 컴퓨팅 플랫폼들이 오늘날 이용가능하다. EC2(Elastic Compute Cloud)를 포함하는 아마존의 AWS는 노드들(서버들)의 클러스터를 클라우드 컴퓨팅 시스템으로서의 사용하기 위해 최종 사용자에게 빌려(rent)준다. AWS는 사용자로 하여금 노드들의 클러스터를 할당하고, 노드들의 클러스터 상에서 워크로드를 실행할 수 있게 한다. AWS는 사용자가 특정 하드웨어 구성들 및 소프트웨어 구성들을 요하는 것과 같은 다양한 제약들로 아마존이 제공하는 서버 하드웨어 상에서만 워크로드들을 실행하도록 제한한다. OpenStack은 사용자로 하여금 사용자가 제공한 하드웨어 상에서 노드들의 클러스터를 구축하고 관리할 수 있게 한다. AWS 및 OpenStack은, 각각의 노드에 워크로드 및 워크로드 컨테이너 소프트웨어를 빠르게 구성 및 배치하기 위한, 네트워크 파라미터들을 수정하기 위한 그리고 클러스터의 모든 노드들로부터 성능 데이터를 취합(aggregating)하기 위한 메커니즘이 결여되어 있다.
특별한 로컬 프로세서의 성능을 테스트하는 알려진 방법은 로컬 프로세서에 의해 실행될 수 있는 사용자 특정형(user-specified) 파라미터들에 근거하여 합성(synthetic) 바이너리 코드를 생성하는 것을 포함한다. 그러나, 바이너리 합성 코드의 생성은 사용자가 사용자 특정 파라미터들을 하드코딩(hard-code)하도록 요하며, 이는 상당한 개발 시간 및 타겟 프로세서의 아키텍쳐의 선행 지식을 요한다. 이러한 하드코딩된 합성 코드는 특별한 명령 세트 아키텍쳐(ISA)(예컨대, x86) 및 특별한 타겟화된 프로세서의 마이크로아키텍쳐를 타겟화하도록 기록(written)되어야 한다. 명령 세트 아키텍쳐는 데이터 타입들/포맷들, 명령들, 데이터 블록 사이즈, 프로세싱 레지스터들, 메모리 어드레싱 모드들, 메모리 아키텍쳐, 인터럽트 및 예외 취급(handling), I/O, 기타 등등을 식별하는 컴퓨터 아키텍쳐의 컴포넌트를 나타낸다. 마이크로아키텍쳐는 데이터 경로들, 데이터 프로세싱 요소들(예컨대, 로직 게이트들, 산술 로직 유닛(ALU)들, 기타 등등), 데이터 저장 요소들(예컨대, 레지스터들, 캐시, 기타 등등), 기타 등등 및 프로세서가 명령 세트 아키텍쳐를 어떻게 구현하는지를 식별하는 컴퓨터 아키텍쳐의 컴포넌트를 나타낸다. 따라서, 합성 코드는 명령 세트 아키텍쳐의 변형들 및 다른 프로세서(들)의 다른 마이크로아키텍쳐들을 실행하기 위해 수정된 또는 새로운 하드코딩된 파라미터들 및 명령들로 리앤지니어링(re-engineer)되어야 한다. 따라서, 이러한 하드코딩된 합성 코드는 클라우드 컴퓨팅 시스템의 복수의 노드들을 테스트하기에 적합하지 않다.
로컬 프로세서의 성능을 테스트하기 위한 다른 방법은, 성능 벤치마크(benchmark)와 프로세서의 성능을 비교하기 위해 표준 성능 평가 기관(SPEC)에 의해 제공된 워크로드와 같은 산업 표준 워크로드 또는 트레이스를 실행하는 것이다. 그러나, 전체 산업 표준 워크로드를 실행하는 것은 종종 엄청난 양의 시뮬레이션 시간을 요한다. 프로세서에 의한 실행을 위해 워크로드로부터 관련된 더 작은 트레이스들을 추출하는 것은 시뮬레이션 시간을 감소시킬 수 있지만, 또한 관련 트레이스들을 식별하고 추출하기 위핸 추가의 엔지니어링 노력을 요한다. 또한, 산업 표준 워크로드의 선택 또는 워크로드로부터의 더 작은 트레이스들의 추출은 프로세서(들)의 특이한(distnct) 아케텍쳐 구성들에 대해 반복되어야 한다.
최종 사용자들에게 컴퓨팅 용량 및 저장 용량을 서비스로서 배달하는 현재의 클라우드 시스템들에는 클라우드 시스템의 노드들의 클러스터의 각각의 노드의 부트 시간 구성을 변경하기 위한 메커니즘이 결여되어 있다. 예를 들어, 부트 시간 구성은 노드들의 부트 시간 파라미터들을 수정하기 위해 엔지니어 또는 프로그래머에 의해 클라우드의 각각의 노드 상으로 하드코딩되어야 하며, 이는 상당한 시간을 요하고 성가신 일(cumbersome)이다. 또한, 엔지니어는 구성 코드를 기록하기 전에 노드의 클러스터의 하드웨어 및 컴퓨터 아키텍쳐의 상세한 지식을 갖추어야 한다.
최종 사용자들에게 컴퓨팅 용량 및 저장 용량을 서비스로서 배달하는 전형적인 클라우드 시스템들에는 사용자로 하여금 할당된 노드들의 클러스터의 네트워크 구성을 특정하고 수정하도록 하는 메커니즘이 결여되어 있다. 많은 클라우드 시스템들에서, 사용자들은 오직 일반적인 타입의 노드들을 요청하고 네트워크 토폴로지 즉, 노드들의 물리적 그리고 로직적 네트워크 연결성 및 요청된 노드들의 네트워크 성능 특성들에 대한 직접적인 제어를 거의 가지지 않거나 또는 전혀 가지지 않을 수 있다. 아마존 AWS는 예컨대, 사용자들로 하여금 국가 또는 세계(예컨대, 동부 또는 서부 미국, 유럽 등)의 동일한 일반적인 지역에 물리적으로 위치된 노드들을 선택하게 할 수 있지만, 노드들의 네트워크 연결성 및 노드들의 네트워크 성능 특성은 선택가능하거나 수정가능하지 않다. 또한, 선택된 노드들 중 일부는, 국가의 동일한 일반적인 지역에 있거나 심지어는 동일한 데이터 센터에 있더라도, 다른 선택된 노드들로부터 멀리 떨어져 물리적으로 위치될 수 있다. 예를 들어, 클라우드 시스템에 의해 할당된 노드들은 분산형 데이터 센터에서 물리적으로 멀리 떨어진 별개의 랙(rack)들 상에 위치될 수 있으며, 이는 결과적으로, 노드들 사이의 네트워크 성능이 감소되거나 또는 불일치하게 한다.
유사하게, 전형적인 클라우드 시스템들에서, 최종 사용자는 노드 클러스터의 실제 하드웨어 리소스들에 대한 제한된 제어를 가지거나 또는 어떤 제어도 가지지 않는다. 예를 들어, 노드들을 할당할 때, 사용자는 오직, 일반적인 타입의 노드들을 요청할 수 있다. 각각의 이용가능한 타입의 노드는 노드의 CPU(들)의 수, 이용가능한 메모리, 이용가능한 디스크 공간 및 국가 또는 세계에서 노드가 위치된 일반적인 지역에 의해 분류될 수 있다. 그러나, 할당된 노드는 선택된 노드 타입으로서 정확한 하드웨어 특성들을 가지지 않을 수 있다. 선택가능한 노드 타입들은 대략적인(coarse) 분류들이다. 예를 들어, 노드 타입들은 시스템 메모리 및 디스크 공간의 양뿐만 아니라 노드의 프로세싱 코어들의 수에 대응하는 스몰(small), 미디움(medium), 라지(large) 및 엑스트라 라지(extra large)를 포함할 수 있다. 그러나, 심지어 선택된 노드들이 동일한 일반적인 타입을 가지는 경우에도, 시스템에 의해 할당된 노드들의 실제 컴퓨팅 용량 및 저장 용량은 다양할 수 있다. 예를 들어, 이용가능한 메모리 및 디스크 공간뿐만 아니라, 동작 주파수 및 다른 특성들은 다양하거나 또는 다양한(a range of) 값들에 속할 수 있다. 예를 들어, "미디움" 노드는 1500 MB 내지 5000 MB의 시스템 메모리 및 200 GB 내지 400 GB의 저장 용량을 가지는 어떤 노드를 포함할 수 있다. 따라서, 사용자는 할당된 노드들의 실제 하드웨어 구성에 항상 내통하는 것은 아니다. 또한, 심지어 동일한 수의 프로세서들 및 메모리/디스크 공간을 가지는 노드들 중에서도, 이들 노드들의 다른 하드웨어 특성들은 다양할 수 있다. 예를 들어, 유사한 노드들은 노드들의 동작 주파수, 캐시의 사이즈, 32-비트 아키텍쳐 대 64-비트 아키텍쳐, 노드들의 제조사, 명령 세트 아키텍쳐 기타 등등에 근거하여 다양하며, 사용자는 선택된 노드들의 이 특성들에 대한 어떤 제어도 가지지 않는다.
종종, 사용자는 자신의 어플리케이션 또는 워크로드에 의해 요구되는 특정 하드웨어 리소스들을 분명하게 이해하지 못한다. 워크로드를 실행하기 위해 노드 클러스터를 셋업하는 어려움은 결과적으로, 사용자가 서로 다른 하드웨어 구성들을 트라이(try)해 볼 기회를 제한한다. 할당된 노드들의 실제 하드웨어 리소스들에 관한 사용자의 지식의 결여와 결합하여, 이는 종종 결과적으로, 활용되지 않는(under-utilized) 하드웨어 리소스들에 대한 불필요한 사용자 비용들을 초래한다. CPU, 메모리 및 디스크 및 단일 물리 프로세싱 머신의 네트워크 활용을 측정할 수 있는 다양한 모니터링 툴들이 이용가능하다. 그러나, 현재의 클라우드 시스템들은 사용자로 하여금 하드웨어 사용을 모니터링하기 위해 클러스터의 노드들에 이 모니터링 툴들을 배치할 수 있게 하는 메커니즘을 제공하지 못한다. 따라서, 워크로드 실행 동안의 실제 하드웨어 활용은 사용자에게 알려지지 않는다. 대부분의 공중 클라우드 서비스들은 워크로드를 실행하는 동안 사용자에 의해 사용되는 요청된 하드웨어 리소스들의 비용에 관한 기본 정보를 제공할 수 있는 회계 메커니즘을 제공한다. 그러나, 이러한 메커니즘들은 오직, 요청된 하드웨어 리소스들의 비용들에 관한 기본 정보만을 제공하며, 워크로드 실행 동안 사용되는 실제 하드웨어 리소스들을 식별하지 못한다.
많은 클라우드 시스템들에서, 제한된 수의 구성 파라미터들이 노드 클러스터의 구성을 조정 및 개선하기 위해 사용자에게 이용가능하다. 예를 들어, 사용자는 오직, 클라우드 구성을 바꾸기 위해 서로 다른 일반적인 노드 타입들을 가지는 서로 다른 노드들을 선택할 수 있다. 또한, 각각의 구성 변경은, 노드 클러스터에 대해 서로 다른 노드들을 선택하고 서로 다른 노드들로 워크로드를 시작함으로써 사용자에 의해 수동으로(manually) 구현되어야 한다. 구성 변경들을 적용하고 결과들을 테스트하기 위한 이러한 수동 노력은 비용이 많이 들며 시간 소모적이다. 또한, 노드 성능을 테스트하기 위해 이용가능한 다양한 성능 모니터링 툴들은 전형적으로, 단일 물리 프로세싱 머신에 적응되며, 현재의 클라우드 시스템들에는 사용자로 하여금 서로 다른 구성들을 갖는 노드 클러스터의 성능을 테스트하기 위해 클러스터의 노드들에 이 모니터링 툴들을 배치하게 할 수 있는 메커니즘이 결여되어 있다.
그러므로, 임이의(arbitrary) 사이즈의 노드 클러스터 상에서 워크로드들의 생성, 배치, 준비, 실행 및 데이터 취합을 자동화하기 위한 방법들 및 시스템들이 필요하다. 또한, 각각의 노드에 워크로드 및 워크로드 컨테이너 소프트웨어를 빠르게 구성 및 배치하고, 클러스터의 모든 노드들로부터 워크로드 성능 데이터를 취합 및 분석하기 위한 방법들 및 시스템들이 필요하다. 또한, 클라우드 컴퓨팅 시스템의 복수의 노드들의 성능을 테스트하고, 모니터링된 성능에 근거하여 클라우드 컴퓨팅 시스템의 자동화된 구성 튜닝(tuning)을 제공하기 위한 방법들 및 시스템들이 필요하다. 또한, 다양한 컴퓨터 아키텍쳐들을 가지는 노드 프로세서들을 테스트하기 위해 클라우드 컴퓨팅 시스템 상에서 실행하기 위한 재타겟화가능 합성 테스트 워크로드들을 생성하기 위한 방법들 및 시스템들이 필요하다. 또한, 클라우드 컴퓨팅 시스템의 노드들의 부트 시간 구성의 수정을 제공하는 방법들 및 시스템들이 필요하다. 또한, 클라우드 시스템의 노드들의 클러스터의 네트워크 구성의 수정을 지원하는(facilitate) 방법들 및 시스템들이 필요하다. 또한, 클라우드 시스템의 요구되는 네트워크 토폴로지, 요구되는 네트워크 성능 및/또는 요구되는 하드웨어 성능에 근거하여 노드들의 클러스터에 대한 적절한 노드들의 자동화된 선택을 할 수 있게 하는 방법들 및 시스템들이 필요하다. 또한, 워크로드 실행 동안 노드 클러스터의 하드웨어 리소스들의 사용을 측정하고, 하드웨어 리소스들의 모니터링된 사용에 근거하여 사용자에게 하드웨어 사용 피드백을 제공하며 그리고/또는 노드 클러스터 구성을 자동으로 수정하기 위한 방법들 및 시스템들이 필요하다.
본 발명의 예시적인 실시예에서, 하나 이상의 디바이스들에 의해 수행되는 컴퓨팅 시스템을 구성하는 방법이 제공된다. 상기 방법은 노드들의 클러스터의 복수의 서로 다른 구성 파라미터들의 세트에 근거하여 컴퓨팅 시스템의 노드들의 클러스터 상에서 워크로드의 복수의 실행들을 개시하는 단계를 포함한다. 일 실시예에서, 상기 구성 파라미터들은, 워크로드 컨테이너(workload container)의 동작 파라미터, 적어도 하나의 노드의 부트 시간 파라미터(boot-time parameter) 및 적어도 하나의 노드의 하드웨어 구성 파라미터 중 적어도 하나를 포함한다. 상기 워크로드 컨테이너는 상기 노드들의 클러스터 상에서 상기 워크로드의 프로세싱을 조정하도록 동작가능하다. 상기 방법은 또한, 상기 하나 이상의 컴퓨팅 디바이스들에 의한, 워크로드의 각각의 실행 동안 모니터링된 상기 노드들의 클러스터의 적어도 하나의 성능 특성과 상기 노드들의 클러스터의 적어도 하나의 요구되는 성능 특성의 비교에 근거하여, 복수의 서로 다른 구성 파라미터들의 세트들로부터 상기 노드들의 클러스터에 대한 구성 파라미터들의 세트를 선택하는 단계를 포함한다. 상기 방법은 또한, 상기 선택된 구성 파라미터들의 세트로 구성되는 상기 노드들의 클러스터에 의해 공유되는 실행을 위해 상기 노드들의 클러스터에 상기 워크로드를 제공하는 단계를 포함한다.
다른 장점들 중에서도 특히, 일부 실시예들은 사용자 인터페이스를 통한 노드들의 클러스터, 워크로드, 워크로드 컨테이너 및 네트워크 구성의 선택, 구성 및 디플로이먼트를 할 수 있게 한다. 추가적으로, 일부 실시예들은 클라우드 구성 파라미터들의 제어 및 조정을 할 수 있게 하고 그럼으로써, 노드 하드웨어, 네트워ㅋ, 워크로드 컨테이너 및/또는 워크로드의 다양한 특성들 하에서 성능 분석들을 가능하게 하고, 성능 분석에 근거하여 자동화된 시스템 튜닝을 가능하게 한다. 다른 장점들이 이 기술 분야의 숙련자들에게 인지될 것이다.
본 발명의 다른 예시적인 실시예에서, 배치 프로세서, 노드 구성기 및 워크로드 구성기를 포함하는 컴퓨팅 구성 시스템이 제공된다. 상기 배치 프로세서는 상기 노드들의 클러스터의 복수의 서로 다른 구성 파라미터들의 세트들에 근거하여 컴퓨팅 시스템의 상기 노드들의 클러스터 상에서 상기 워크로드의 복수의 실행들을 개시하도록 동작가능하다. 일 실시예에서, 상기 구성 파라미터들은 워크로드 컨테이너의 동작 파라미터, 적어도 하나의 노드의 부트 시간 파라미터, 및 적어도 하나의 노드의 하드웨어 구성 파라미터 중 적어도 하나를 포함한다. 상기 워크로드 컨테이너는 상기 노드들의 클러스터 상에서 상기 워크로드의 프로세싱을 조정하도록 동작가능하다. 상기 노드 구성기는, 상기 노드 구성기에 의한, 상기 워크로드의 각각의 실행 동안 모니터링되는 노드들의 클러스터의 적어도 하나의 성능 특성과 노드들의 클러스터의 적어도 하나의 요구되는 성능 특성의 비교에 근거하여, 복수의 서로 다른 구성 파라미터들의 세트들로부터 노드들의 클러스터에 대한 구성 파라미터들의 세트를 선택하도록 동작가능하다. 워크로드 구성기는 선택된 구성 파라미터들의 세트로 구성되는 노드들의 클러스터에 의해 공유되는 실행을 위해 노드들의 클러스터에 상기 워크로드르 제공하도록 동작가능하다.
본 발명의 또다른 예시적인 실시예에서, 실행가능한 명령들을 포함하는 비 일시적 컴퓨터 판독가능 매체가 제공된다. 상기 실행가능한 명령들은 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 상기 노드들의 클러스터의 복수의 서로 다른 구성 파라미터들의 세트들에 근거하여 컴퓨팅 시스템의 상기 노드들의 클러스터 상에서 상기 워크로드의 복수의 실행들을 개시하도록 한다. 일 실시예에서, 상기 구성 파라미터들은 워크로드 컨테이너의 동작 파라미터, 적어도 하나의 노드의 부트 시간 파라미터, 및 적어도 하나의 노드의 하드웨어 구성 파라미터 중 적어도 하나를 포함한다. 상기 워크로드 컨테이너는 상기 노드들의 클러스터 상에서 상기 워크로드의 프로세싱을 조정하도록 동작가능하다. 상기 실행가능한 명령들의 실행은 또한, 적어도 하나의 프로세서로 하여금 복수의 서로 다른 구성 파라미터들의 세트들로부터 상기 노드들의 클러스터에 대한 구성 파라미터들의 세트를 선택하게 한다. 상기 구성 파라미터들의 세트의 선택은 상기 적어도 하나의 프로세서에 의한, 워크로드의 각각의 실행 동안 모니터링되는 상기 노드들의 클러스터의 적어도 하나의 성능 특성과 상기 노드들의 클러스터의 적어도 하나의 요구되는 성능 특성의 비교에 근거한다. 상기 명령들의 실행은 또한, 상기 적어도 하나의 프로세서로 하여금 상기 선택된 구성 파라미터들의 세트로 구성되는 상기 노드들의 클러스터에 의해 공유되는 실행을 위해 상기 노드들의 클러스터에 상기 워크로드를 제공하도록 한다.
본 발명은 다음 도면들과 동반될 때 다음의 상세한 설명에 비추어 더 쉽게 이해될 것이며, 이 도면들에서 유사한 도면 부호들은 유사한 요소들을 나타낸다.
도 1은 통신 네트워크 상에서 동작하는 노드들의 클러스터, 노드들의 클러스터와 통신하는 제어 서버 및 제어 서버의 구성기를 포함하는 일 실시예에 따른 클라우드 컴퓨팅 시스템의 블록도이다.
도 2는 적어도 하나의 프로세서 및 메모리를 포함하는 도 1의 노드들의 클러스터의 예시적인 노드의 블록도이다.
도 3은 도 1의 클라우드 컴퓨팅 시스템을 구성하도록 동작가능한 구성기를 포함하는 도 1의 클라우드 컴퓨팅 시스템의 예시적인 제어 서버의 블록도이다.
도 4는 클라우드 컴퓨팅 시스템을 구성하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 5는 클라우드 컴퓨팅 시스템을 구성하기 위한 도 3의 구성기의 동작의 다른 예시적인 방법의 순서도이다.
도 6은 클라우드 컴퓨팅 시스템을 구성하기 위한 도 3의 구성기의 동작의 다른 예시적인 방법의 순서도이다.
도 7은 사용자 액세스 인증(user access authentication)을 지원하기 위한 인증 및 라이브러리 설정 모듈을 포함하는 도 3의 구성기에 의해 제공되는 예시적인 사용자 인터페이스를 도시한다.
도 8은 도 1의 노드들의 클러스터의 선택을 지원하기 위한 인스턴스 탭(Instances tab)을 포함하는 도 7의 예시적인 사용자 인터페이스의 인스턴스 모듈을 도시한다.
도 9는 도 1의 노드들의 클러스터의 노드들에 대한 노드 타입의 선택을 지원하기 위한 도 8의 인스턴스 모듈의 인스턴스 타입 탭을 도시한다.
도 10은 도 1의 노드들의 클러스터의 하나 이상의 노드들의 부트 시간 파라미터들의 구성을 지원하기 위한 도 8의 인스턴스 모듈의 다른 인스턴스 설정 탭을 도시한다.
도 11은 도 1의 통신 네트워크 상의 네트워크 지연의 구현을 지원하기 위한 지연 탭을 포함하는 도 7의 예시적인 사용자 인터페이스의 네트워크 구성 모듈의 네트워크 설정 위저드(Network Settings Wizard)를 도시한다.
도 12는 도 1의 통신 네트워크 상의 패킷 손실율(packet loss rate)의 조정을 지원하기 위한 도 11의 네트워크 구성 모듈의 패킷 손실 탭을 도시한다.
도 13은 도 1의 통신 네트워크 상의 패킷 복제율(packet duplication rate)의 조정을 지원하기 위한 도 11의 네트워크 구성 모듈의 패킷 복제 탭을 도시한다.
도 14는 도 1의 통신 네트워크 상의 패킷 왜곡율(packet corruption rate)의 조정을 지원하기 위한 도 11의 네트워크 구성 모듈의 패킷 왜곡 탭을 도시한다.
도 15는 도 1의 통신 네트워크 상의 패킷 리오더링 왜곡율(packet reordering rate)의 조정을 지원하기 위한 도 11의 네트워크 구성 모듈의 패킷 리오더링 탭을 도시한다.
도 16은 도 1의 통신 네트워크 상의 통신율(communication rate)의 조정을 지원하기 위한 도 11의 네트워크 구성 모듈의 레이트 제어 탭을 도시한다.
도 17은 커스텀 커맨드 스트링(custom command string)들에 근거하여 도 1의 통신 네트워크 상에서 네트워크 파라미터들의 조정을 지원하기 위한 도 11의 네트워크 구성 모듈의 커스텀 커맨드 탭을 도시한다.
도 18은 Hadoop 워크로드 컨테이너의 선택을 지원하기 위한 Hadoop 탭을 포함하는 도 7의 예시적인 사용자 인터페이스의 워크로드 컨테이너 구성 모듈을 도시한다.
도 19는 Hadoop 워크로드 컨테이너의 동작 파라미터들의 구성을 지원하기 위한 확장 탭을 포함하는 도 18의 워크로드 컨테이너 구성 모듈의 Hadoop 탭을 도시한다.
도 20은 커스텀 커맨드 스트링들에 근거하여 Hadoop 워크로드 컨테이너의 동작 파라미터들의 구성을 지원하기 위한 커스텀 탭을 포함하는 도 18의 워크로드 컨테이너 구성 모듈의 Hadoop 탭을 도시한다.
도 21은 커스텀 워크로드 컨테이너의 선택을 지원하기 위한 도 18의 워크로드 컨테이너 구성의 커스텀 탭을 도시한다.
도 22는 도 1의 노드들의 클러스터 상에서 실행을 위한 워크로드의 선택을 지원하는 워크로드 탭을 포함하는 도 7의 예시적인 사용자 인터페이스의 워크로드 구성 모듈을 도시한다.
도 23은 합성 테스트 워크로드의 구성을 지원하기 위한 도 22의 워크로드 구성 모듈의 합성 커널 탭을 도시한다.
도 24는 맴캐시드(Memcached) 워크로드의 구성을 지원하기 위한 도 22의 워크로드 구성 모듈의 MC-블래스터 탭(MC-Blaster tab)을 도시한다.
도 25는 도 1의 노드들의 클러스터 상에서 실행을 위한 배치 시퀀스(batch sequence)의 선택 및 구성을 지원하기 위한 도 7의 예시적인 사용자 인터페이스의 배치 프로세싱 모듈을 도시한다.
도 26은 Hadoop 데이터 모니터링 툴의 구성을 지원하기 위한 Hadoop 탭을 포함하는 도 7의 예시적인 사용자 인터페이스의 모니터링 모듈을 도시한다.
도 27은 Ganglia 데이터 모니터링 툴의 구성을 지원하기 위한 도 26의 모니터링 모듈의 Ganglia 탭을 도시한다.
도 28은 SystemTap 데이터 모니터링 툴의 구성을 지원하기 위한 도 26의 모니터링 모듈의 SystemTap 탭을 도시한다.
도 29는 가상 메모리 통계들(VMStat) 및 입력/출력 통계들(IOStat) 데이터 모니터링 툴들의 구성을 지원하기 위한 도 26의 모니터링 모듈의 I/O 시간 탭을 도시한다.
도 30은 도 1의 노드들의 클러스터로의 시스템 구성의 배치를 지원하기 위한 그리고 도 26 내지 29의 모니터링 툴들에 의해 모니터링되는 데이터의 취합을 지원하기 위한 도 7의 예시적인 사용자 인터페이스의 제어 및 상태 모듈을 도시한다.
도 31은 도 1의 구성기의 웹 기반의 데이터 취합기를 도시하는 도 1의 클라우드 컴퓨팅 시스템의 다른 블록도이다.
도 32는 합성 테스트 워크로드를 생성하기 위한 복수의 사용자 정의 워크로드 파라미터들을 도시하는 예시적인 테이블을 도시한다.
도 33은 합성 테스트 워크로드를 생성하도록 동작가능한 합성기 및 합성 테스트 워크로드의 적어도 일부를 활성화 및 실행하도록 동작가능한 노드의 합성 워크로드 엔진을 포함하는 예시적인 합성 테스트 워크로드 시스템의 블록도이다.
도 34는 실제 워크로드 및 합성 테스트 워크로드 중 적어도 하나를 갖는 클라우드 컴퓨팅 시스템을 구성하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 35는 합성 테스트 워크로드를 갖는 클라우드 컴퓨팅 시스템을 구성하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 36은 도 1의 노드들의 클러스터 중 적어도 하나의 노드의 부트 시간 구성을 선택하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 37은 노드의 적어도 하나의 부트 시간 파라미터를 수정하기 위한 도 1의 노드들의 클러스터의 노드의 동작의 예시적인 방법의 순서도이다.
도 38은 도 1의 노드들의 클러스터의 하나 이상의 노드들의 부트 시간 구성을 수정하기 위한 도 1의 클라우드 컴퓨팅 시스템의 동작의 예시적인 방법의 순서도이다.
도 39는 도 1의 노드들의 클러스터의 적어도 하나의 노드의 통신 네트워크 구성을 수정하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 40은 에뮬레이션된(emulated) 노드 클러스터의 네트워크 구성에 근거하여 클라우드 컴퓨팅 시스템에 대한 노드들의 클러스터를 선택하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 41은 에뮬레이션된 노드 클러스터의 네트워크 구성에 근거하여 클라우드 컴퓨팅 시스템에 대한 노드들의 클러스터를 선택 및 구성하기 위한 도 3의 구성기의 동작의 다른 예시적인 방법의 순서도이다.
도 42는 노드 클러스터의 복수의 통신 네트워크 특성들을 식별하는 예시적인 데이터 파일을 도시한다.
도 43은 도 1의 노드들의 클러스터를 선택하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 44는 도 1의 클러스터를 선택하기 위한 도 3의 구성기의 동작의 다른 예시적인 방법의 순서도이다.
도 45는 도 1의 노드들의 클러스터의 하드웨어 구성을 선택하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 46은 도 1의 노드들의 클러스터의 하드웨어 구성을 선택하기 위한 도 3의 구성기의 동작의 다른 예시적인 방법의 순서도이다.
도 47은 노드들의 클러스터의 모니터링된 성능 특성들에 근거하여 도 1의 노드들의 클러스터에 대한 구성 파라미터들을 선택하기 위한 도 3의 구성기의 동작의 예시적인 방법의 순서도이다.
도 48은 노드들의 클러스터의 모니터링된 성능 특성들에 근거하여 도 1의 노드들의 클러스터에 대한 구성 파라미터들을 선택하기 위한 도 3의 구성기의 동작의 다른 예시적인 방법의 순서도이다.
본 명세서의 개시된 실시예들이 클라우드 컴퓨팅 시스템에 관하여 기술되지만, 본 발명의 방법들 및 시스템들은 워크로드를 실행하도록 동작하는 복수의 노드들을 포함하는 어떤 적절한 컴퓨팅 시스템으로도 구현될 수 있다.
본 명세서에 참조된 바와 같이, 컴퓨팅 시스템의 노드는 적어도 하나의 프로세싱 디바이스 및 상기 적어도 하나의 프로세싱 디바이스에 의해 액세스가능한 메모리를 포함한다. 노드는 또한, 예컨대 서버, 가상 서버, 가상 머신, 인스턴스 또는 프로세싱 노드로 지칭될 수 있다.
도 1은 최종 사용자들에게로의 서비스로서 컴퓨팅 용량 및 저장 용량을 배달하도록 구성된 다양한 실시예들에 따른 예시적인 클라우드 컴퓨팅 시스템(10)을 도시한다. 클라우드 컴퓨팅 시스템(10)은 노드들의 클러스터(14)에 동작적으로(operatively) 결합된 제어 서버(12)를 포함한다. 노드들의 클러스터(14)는 분산형 통신 네트워크(18)에 연결되고, 각각의 노드(16)는 로컬 프로세싱 능력 및 메모리를 포함한다. 특히, 각각의 노드(16)는 적어도 하나의 프로세서(40)(도 2) 및 적어도 하나의 메모리(42)(도 2)를 포함하며, 상기 메모리(42)는 프로세서(40)에 의해 액세스가능하다. 통신 네트워크(18)는 예컨대, TCP/IP(Transmission Control Protocol/Internet Protocol) 또는 UDP(User Datagram Protocol)를 포함하는 IP 포맷, 이더넷 네트워크, 직렬 네트워크 또는 다른 지역 또는 광역 네트워크(LAN 또는 WAN)와 같은 어떤 적절한 컴퓨터 네트워킹 프로토콜을 포함한다.
본 명세서에 기술된 바와 같이, 노드들(16)은 노드들의 클러스터(14)를 지정하기 위해 통신 네트워크(18) 상에서 연결된 복수의 이용가능한 노드들(16)의 클라우드로부터 제어 서버(12)에 의해 선택된다. 이용가능한 노드들(16)은 예컨대, 데이터 센터 내의 하나 이상의 서버 저장 랙들에 제공되며, 다양한 하드웨어 구성들을 포함한다. 일 실시예에서, 복수의 데이터 센터들 및/또는 다른 하드웨어 제공자들로부터의 이용가능한 노드들(16)들은 클라우드 컴퓨팅 시스템(10)에 대한 노드들의 클러스터(14)로서 선택 및 구성을 위해 제어 서버(12)에 의해 액세스가능하다. 예를 들어, 하나 이상의 제3자 데이터 센터들(예컨대, Amazon 웹 서비스들, 등) 및/또는 사용자 제공 하드웨어는 제어 서버(12)에 의해 클라우드 컴퓨팅을 위해 구성될 수 있다. 일 예에서, 비록 어떤 수의 노드들(16)도 이용가능할 수 있지만, 수천 개의 노드들(16)이 제어 서버(12)에 의해 선택 및 구성을 위해 이용가능할 수 있다. 다섯개의 노드들(16)이 도 1에 도시되지만, 어떤 적절한 수의 노드들(16)도 클라우드 컴퓨팅 시스템(10)을 위해 선택될 수 있다. 제어 서버(12)는 하나 이상의 컴퓨팅 디바이스들, 예시적으로는 서버 컴퓨터들을 포함하며, 각각의 서버 컴퓨터는 하나 이상의 프로세서들을 포함한다. 예시된 실시예에서, 제어 서버(12)는 노드 클러스터(14)로부터 물리적으로 별개인 전용 서버 컴퓨터(12)이다. 일 실시예에서, 제어 서버(12)는 이용가능한 노드들(16)을 하우징한 데이터 센터로부터 물리적으로 원격이다. 제어 서버(12)는 대안적으로는, 선택된 노드들의 클러스터(14)의 하나 이상의 노드들(16)일 수 있다. 제어 서버(12)는 본 명세서에 기술된 바와 같이, 노드들(16)을 할당 및 구성하고, 노드들(16) 상에서 워크로드를 시작하며, 성능 데이터를 수집 및 보고하고, 기타 등등을 수행하도록 동작하는 클라우드 컴퓨팅 구성 시스템으로서 역할을 한다.
제어 서버(12)는 예시적으로, 구성기(22), 로드 생성기(24) 및 로드 밸런서(26)를 포함한다. 본 명세서에 참조된 바와 같이, 구성기(22), 로드 생성기(24) 및 로드 밸런서(26)는 하나 이상의 프로세서들을 포함하고, 상기 프로세서들은 상기 하나 이상의 프로세서들에 의해 액세스가능한 내부 또는 외부 메모리에 저장된 소프트웨어 또는 펌웨어 코드를 실행한다. 상기 소프트웨어/펌웨어 코드는 구성기(22), 로드 생성기(24) 및 로드 밸런서(26)의 기능들에 대응하는 명령어들을 포함하고, 상기 명령어들은 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 본 명세서에 기술된 기능들을 수행하도록 한다. 구성기(22), 로드 생성기(24) 및/또는 로드 밸런서(26)는 대안적으로는, 주문형 집적 회로(ASIC)들, 현장 프로그래밍가능 게이트 어레이들(FPGA)들, 디지털 신호 프로세서(DSP)들, 하드웨어 로직 또는 이들의 조합을 포함할 수 있다. 구성기(22)는, 본 명세서에 기술된 바와 같이, 노드들의 클러스터(14)에 포함하기 위한 하나 이상의 노드들(16)을 선택 및 구성하고, 통신 네트워크(18)의 파라미터들을 구성하고, 노드들(14)의 클러스터 상에서의 실행을 위해 워크로드 컨테이너 모듈 및 워크로드를 선택, 구성 및 배치하며, 그리고 워크로드의 실행과 관련된 성능 데이터를 분석하도록 동작가능하다. 구성기(22)는, 노드들(16) 상에서 소프트웨어를 구성하기 위해 노드들(16)에 제공되고 노드들(16)에서 프로세스되는 구성 파일들(28) 및 로드 생성기(24)에 워크로드 요청 파라미터들을 제공하기 위해 로드 생성기(24)에 제공되는 적어도 하나의 구성 파일(30)을 생성하도록 동작가능하다.
로드 생성기(24)는 워크로드 실행을 위해 노드 클러스터(14)에 의해 사용되는 입력으로서 역할을 하는 요청들을 생성하도록 동작가능하다. 다시 말해, 노드 클러스터(14)는 요청들 및 상기 요청들과 함께 제공된 입력 파라미터들 및 데이터에 근거하여 워크로드를 실행한다. 일 실시예에서, 로드 생성기(24)로부터의 요청들은 사용자에 의해 개시된다. 예를 들어, 사용자 또는 커스토머(customer)는 특정 검색 용어 또는 데이터세트 각각에 대한 검색 또는 소팅 동작을 (예컨대, 사용자 인터페이스(200)를 통해) 요청할 수 있고, 로드 생성기(24)는 대응하는 검색 또는 소팅 요청을 생성한다. 일 실시예에서, 구성기(22)는 사용자 인터페이스(200)를 통해 수신된 사용자 요청들을 기술하는 구성 파일(30)을 생성한다. 노드들(16)은 검색될 식별된 용어들 또는 소팅될 데이터세트를 이용하여 워크로드를 실행한다. 로드 생성기(24)는 실행될 워크로드의 타입에 따라 다른 적절한 요청들을 생성할 수 있다. 로드 밸런서(26)는, 어느 노드들(16)이 어느 요청들을 실행할지를 디렉팅(direct)하기 위해 로드 생성기(24)에 의해 제공된 요청들을 노드들(16) 간에 분배하도록 동작가능하다. 로드 밸런서(26)는 또한, 로드 생성기(24)로부터의 요청을 부분(part)들로 나누고 복수의 노드들(16)이 요청을 실행하기 위해 병렬로 동작하도록 노드들(16)에 이 부분들을 분배하도록 동작가능하다.
구성기(22)는, 비록 상기 구성기(22)가 어떤 적절한 네트워크 또는 통신 링크를 통해 액세스될 수 있지만, 예시적으로, 사용자가 인터넷을 통해 구성기(22)에 액세스할 수 있도록 하는 웹 기반의 구성기이다. 예시적인 사용자의 컴퓨터(20)가 도 1에 도시되며, 상기 컴퓨터는 디스플레이(21), 프로세서(32)(예컨대, 중앙 처리 유닛(CPU)), 및 프로세서(32)에 의해 액세스가능한 메모리(34)를 포함한다. 컴퓨터(20)는 데스크탑 컴퓨터, 랩탑, 모바일 디바이스, 스마트폰, 등과 같은 어떤 적절한 컴퓨팅 디바이스를 포함할 수 있다. 소프트에어 또는 펌웨어 코드를 포함하는 웹-브라우져(36)는 컴퓨터(20) 상에서 실행되고, 구성기(22)에 의해 제공되는 그래픽 사용자 인터페이스에 액세스하고, 디스플레이(21) 상에 그래픽 사용자 인터페이스를 디스플레이하기 위해 사용된다. 예컨대, 도 7 내지 30에 도시된 그래픽 사용자 인터페이스(200)를 참조하라.
도면들에 도시된 것에 대한 대안들인, 클라우드 컴퓨팅 시스템(10)의 컴포넌트들의 다양한 다른 배치들 및 대응하는 연결이 활용될 수 있고, 이러한 컴포넌트들의 배치들 및 대응하는 연결은 본 명세서에 기술된 실시예들에 따라 유지될 수 있다.
도 2를 참조하면, 구성기(22)에 의해 구성된 도 1의 노드 클러스터(14)의 예시적인 노드(16)가 일 실시예에 따라 도시된다. 노드(16)는 메모리(42)에 저장된 소프트웨어 또는 펌웨어를 실행하도록 동작가능한 적어도 하나의 프로세서(40)를 포함한다. 메모리(42)는 하나 이상의 물리적 메모리 위치들을 포함하고, 프로세서(40) 내부 또는 외부에 있을 수 있다.
도 2는 운영 체제(44), 커널 모드 측정 에이전트(46), 네트워크 토폴로지 드라이버(48), 사용자 모드 측정 에이전트(50), 웹 어플리케이션 서버(52), 워크로드 컨테이너 모듈(54), 서비스 지향 아키텍쳐 런타입 에이전트(56) 및 합성 워크로드 엔진(58)을 포함하는 각각의 노드(16) 상으로 로딩되는 소프트웨어(또는 펌웨어) 코드를 도시한다. 예시된 실시예에서, 커널 모드 측정 에이전트(46) 및 네트워크 토폴로지 드라이버(48)는 예컨대, 노드(16)의 입력/출력(I/O) 디바이스들로부터의 데이터와 같은 특정 데이터에 액세스하기 위해 운영 체제(44)로부터의 특권(privilege)을 요한다. 유사하게, 사용자 모드 측정 에이전트(50), 웹 어플리케이션 서버(52), 워크로드 컨테이너 모듈(54), 서비스 지향 아키텍쳐 런타임 에이전트(56) 및 합성 워크로드 엔진(58)은 예시적으로, 데이터에 액세스하기 위해 또는 이들 각각의 기능들을 수행하기 위해 운영 체제(44)로부터의 특권을 요하지 않는다.
운영 체제(44)는 예컨대, 어플리케이션들, 특권들, 및 하드웨어 리소스들을 관리하는 것과 프로세서 시간 및 메모리 사용을 할당하는 것을 포함하여, 노드들(16)의 전반적인 동작을 관리한다. 네트워크 토폴로지 드라이버(48)는 통신 네트워크(18)(도 1) 상에서 노드(16)의 네트워크 특성들 및 파라미터들을 제어하도록 동작가능하다. 일 실시예에서, 네트워크 토폴로지 드라이버(48)는 구성기(22)(도 1)로부터 수신된 구성 파일(28)(도 1)에 근거하여 노드(16)와 관련된 네트워크 특성들을 변경하도록 동작가능하다.
네트워크 소프트웨어 스택(미도시)이 또한, 각각의 노드(16)에 저장되고 실행되며, 도 1의 네트워크(18) 상의 통신을 지원하기 위해 네트워크 소켓을 포함한다. 본 명세서에 기술된 실시예에서, 네트워크 소켓은 TCP 소켓을 포함하고, TCP 소켓은 네트워크 통신을 위해 어드레스 및 포트 번호(들)를 할당받는다. 일 실시예에서, 네트워크 소프트웨어 스택은 운영 체제(44)의 네트워크 드라이버를 이용한다.
커널 모드 측정 에이전트(46) 및 사용자 모드 측정 에이전트(50)는 각각, 노드(16)에서 동작들 및 워크로드 성능을 모니터링하기 위해 데이터를 수집 및 분석하도록 동작가능하다. 커널 모드 측정 에이전트(46)은 예를 들어, 프로세서 명령들의 수, 프로세서 활용, 각각의 I/O 동작에 대해 전송 및 수신된 바이트들의 수뿐만 아니라 다른 적절한 데이터 또는 이들의 조합들을 모니터링한다. 예시적인 커널 모드 측정 에이전트(46)는 SystemTap 소프트웨어를 포함한다. 사용자 모드 측정 에이전트(50)는 데이터에 액세스하기 위한 운영 체제(44)로부터의 시스템 특권들을 요하지 않는 성능 데이터를 수집한다. 이 성능 데이터의 예는, 개별적인 서브 태스크들의 시작 시간 및 완료 시간을 나타내는 어플리케이션 별 로그(application-specific log), 이러한 태스크들이 실행되는 레이트, 시스템에 의해 활용되는 가상 메모리의 양, 태스크에 대해 프로세스되는 입력 레코드들의 양, 등을 포함한다. 일 실시예에서, 에이전트들(46, 50) 및/또는 다른 모니터링 툴들은 각각의 노드(16) 상에 미리 인스톨되며, 구성 파일(28)(도 1)에 근거하여 각각의 노드(16)에서 구성기(22)에 의해 구성된다. 대안적으로는 구성기(22)는 워크로드 배치 동안 노드들(16) 상으로 구성된 에이전트들(46, 50) 및/또는 다른 모니터링 툴들을 로드한다.
웹 어플리케이션 서버(52)는 노드(16)와 도 1의 제어 서버(12) 및 노드 클러스터(14)의 다른 노드들(16)과의 사이의 통신을 제어하는 어플리케이션이다. 웹 어플리케이션 서버(52)는 노드들(16) 사이의 그리고 제어 서버(12)와 노드들(16)과의 사이의 파일 전달이 이루어지게(effect)한다. 예시적인 웹 어플리케이션 서버(52)는 Apache Tomcat이다.
워크로드 컨테이너 모듈(54)은 또한, 각각의 노드(16)의 메모리(42)에 저장된다. 본 명세서에 기술된 바와 같이, 제어 서버(12)는 워크로드 컨테이너 모듈(51)의 사용자의 선택 및 구성에 근거하여 노드(16)에 워크로드 컨테이너 모듈(54)을 제공한다. 예시적인 워크로드 컨테이너 모듈(54)은 Apache Hadoop, Memcached, Apache Cassandra, 또는 상업적으로 이용가능하지 않은, 사용자에 의해 제공된 커스텀 워크로드 컨테이너 모듈을 포함한다. 일 실시예에서, 워크로드 컨테이너 모듈(54)은 코드 모듈을 포함하는 파일 시스템(55)을 포함하며, 상기 코드 모듈은 프로세서에 의해 실행될 때, 메모리(42) 내의 데이터 저장 및 노드들(16) 사이의 데이터의 통신을 관리한다. 예시적인 파일 시스템(55)은 Apache Hadoop 워크로드 컨테이너의 분산형 파일 시스템(HDFS)이다. 파일 시스템(55)은 노드 메모리(42)에 데이터 및 파일들의 복수의 복사본들을 저장함으로써 데이터 복제를 지원한다.
옵션적인 서비스 지향 아키텍쳐(SOA) 런타임 에이전트(56) 및 옵션적인 합성 워크로드 엔진(58)과 같은 다른 적절한 워크로드 컨테이너 모듈들이 제공될 수 있다. SOA 런타임 에이전트(56)는 프로세서에 의해 실행될 때, 워크로드의 실행을 조정하도록 동작가능한 다른 타입의 워크로드 컨테이너 모듈이다. SOA 런타임 에이전트(56)는 예컨대, 워크로드 동작을 가속화하기 위해 빈번하게 사용되는 파일들(예컨대, 이미지들, 등)을 캐시하고 서빙하는 것과 같은 서비스 기능들을 수행한다. 예시적인 SOA 런타임 에이전트(56)는 Google 프로토콜 버퍼들을 포함한다. 합성 워크로드 엔진(58)은 본 명세서에 기술된 바와 같이, 프로세서에 의해 실행될 때, 구성기(22)(도 1)를 통해 수신된 합성 테스트 워크로드를 활성화 및 실행하도록 동작가능한 워크로드 컨테이너 모듈을 포함한다. 예시된 실시예에서, 합성 워크로드 엔진(58)은 실제의 비-테스트 워크로드에 대한 것보다는 합성 테스트 워크로드로 실행하는 것에 맞추어진다(tailored).
도 3을 참조하면, 제어 서버(12)의 구성기(22)가 일 실시예에 따라 도시된다. 구성기(22)는 예시적으로, 인증기(70), 노드 구성기(72), 네트워크 구성기(74), 워크로드 컨테이너 구성기(76), 워크로드 구성기(78), 배치 프로세서(80), 데이터 모니터 구성기(82) 및 데이터 취합기(84)를 포함하고, 이들 각각은 본 명세서에 기술된 기능들을 수행하기 위해 제어 서버(12)의 프로세서(들)(22)에 의해 액세스가능한 메모리(예컨대, 메모리(90))에 저장된 각각의 소프트웨어 또는 펌웨어 코드 모듈들을 실행하는 제어 서버(12)의 하나 이상의 프로세서들(22)을 포함한다. 인증기(70)는 도 7에 관하여 본 명세서에 기술된 바와 같이, 인증 코드 모듈을 실행하는 프로세서(들)(22)를 포함하고, 구성기(22)로의 사용자 액세스를 인증하도록 동작가능하다. 노드 구성기(72)는 도 8 내지 10에 관하여 본 명세서에 기술된 바와 같이, 노드 구성 코드 모듈을 실행하는 프로세서(들)(22)을 포함하고, 특정된 하드웨어 및 동작 구성을 가지는 노드들의 클러스터(14)를 식별하기 위해 노드들(16) 선택 및 구성하도록 동작가능하다. 네트워크 구성기(74)는 도 11 내지 17에 관하여 본 명세서에 기술된 바와 같이, 네트워크 구성 코드 모듈을 실행하는 프로세서(들)(22)를 포함하며, 예컨대, 테스트 및 성능 분석을 위해 그리고/또는 시스템 파워 소모를 조정하기 위해 도 1의 통신 네트워크(18)의 네트워크 파라미터들을 조정하도록 동작가능하다. 워크로드 컨테이너 구성기(76)는 도 18 내지 21에 관하여 본 명세서에 기술된 바와 같이, 워크로드 컨테이너 구성 코드 모듈을 실행하는 프로세서(들)(22)를 포함하며, 노드들(16) 상에서 동작을 위한 워크로드 컨테이너 모듈을 선택 및 구성하도록 동작가능하다. 워크로드 구성기(78)는 워크로드 구성 코드 모듈을 실행하는 프로세서(들)(22)를 포함하며, 노드들(16)에 의해 선택된 워크로드 컨테이너로 실행하기 위한 워크로드를 선택 및 구성하도록 동작가능하다. 워크로드 구성기(78)는 예시적으로, 합성 테스트 워크로드 생성 코드 모듈을 실행하는 프로세서(들)(22)를 포함하는 코드 합성기(79)를 포함하며, 코드 합성기(79)는 도 23 및 32 내지 35에 관하여 본 명세서에 기술된 바와 같이, 사용자 정의 워크로드 파라미터들에 근거하여 합성 테스트 워크로드를 생성하도록 동작가능하다. 배치 프로세서(80)는 도 25에 관하여 본 명세서에 기술된 바와 같이, 배치 프로세서 코드 모듈을 실행하는 프로세서(들)(22)를 포함하며, 복수의 워크로드들의 배치 프로세싱을 개시하도록 동작가능하고, 복수의 워크로드들은 노드 클러스터(14) 상에서 시퀀스로 실행된다. 데이터 모니터 구성기(82)는 도 26 내지 29에 관하여 본 명세서에 기술된 바와 같이, 데이터 모니터링 구성 코드 모듈을 실행하는 프로세서(들)(22)을 포함하며, 워크로드의 실행 동안 성능 데이터를 실시간으로 모니터링하고 데이터를 수집하는 모니터링 툴들을 구성하도록 동작가능하다. 데이터 취합기(84)는 도 30 내지 31에 관하여 본 명세서에 기술된 바와 같이, 데이터 취합 코드 모듈을 실행하는 프로세서(들)(22)를 포함하고, 각각의 노드(16)로부터 성능 데이터를 수집 및 취합하며 데이터의 로그들, 통계들, 그래프들 및 다른 표시들을 생성하도록 동작가능하다.
구성기(22)로부터의 출력은 예시적으로, 제어 서버(12)의 메모리(90)에 저장된다. 제어 서버(12)의 프로세서(들) 내부 또는 외부에 있을 수 있는 메모리(90)는 하나 이상의 물리적 메모리 위치들을 포함한다. 메모리(90)는 예시적으로, 구성기(22)에 의해 생성되는 도 1의 구성 파일들(28, 90)을 저장한다. 메모리(90)는 또한, 워크로드의 실행 다음에 노드들(16)에 의해 생성되고 제어 서버(12)에 통신되는 로그 파일들(98)을 저장한다. 예시된 바와 같이, 운영 체제의 이미지 파일(92), 워크로드 컨테이너 구성기(76)로 선택된 워크로드 컨테이너의 이미지 파일(94) 및 워크로드 구성기(78)로 선택 또는 생성된 워크로드의 이미지 파일(96)이 메모리(90)에 저장된다. 일 실시예에서, 복수의 운영 체제 이미지 파일들(92)이 사용자가 각각의 노드(16) 상에서의 인스톨을 위해 구성기(22)를 통해 운영 체제를 선택할 수 있도록 메모리(90)에 저장된다. 일 실시예에서, 사용자는 노드들(16) 상에서의 인스톨을 위해 원격 메모리(예컨대, 도 1의 컴퓨터(20)의 메모리(34))로부터 제어 서버(12) 상으로 운영 체제 이미지 파일(92)을 업로드할 수 있다. 워크로드 컨테이너 이미지 파일(94)은 복수의 이용가능한 워크로드 컨테이너 모듈들로부터 워크로드 컨테이너 모듈의 사용자의 선택 및 구성에 근거하여 워크로드 컨테이너 구성기(76)로 생성된다. 본 명세서에 기술된 실시예에서, 워크로드 컨테이너 구성기(76)는 도 7 내지 30의 사용자 인터페이스(200)를 통해 수신된 사용자 입력에 근거하여 대응하는 워크로드 컨테이너 이미지 파일(94)을 구성한다. 유사하게, 워크로드 구성기(78)는 제어 서버(12)의 사용자 인터페이스(200)를 통해 하나 이상의 이용가능한 워크로드들로부터의 워크로드의 사용자 선택에 근거하여 워크로드 이미지 파일(96)을 생성 및 구성한다. 워크로드 이미지 파일(96)은 사용자 입력에 근거하여 워크로드 구성기(78)에 의해 선택된 미리 정해진 실제 워크로드 및 사용자 입력에 근거하여 워크로드 구성기(78)에 의해 생성되는 합성 테스트 워크로드를 포함한다.
일 실시예에서, 메모리(90)는 노드 클러스터(14)의 각각의 노드(16)에 의해 액세스가능하며, 제어 서버(12)는 노드 클러스터(14)의 각각의 노드(16)에 메모리(90) 내의 각각의 이미지 파일(92, 94, 96)의 위치를 식별하는 포인터 또는 다른 식별자를 전송한다. 노드들(16)은 포인터들에 근거하여 메모리(90)로부터의 각각의 이미지 파일들(92, 94, 96)을 검색한다. 대안적으로는, 제어 서버(12)는 이미지 파일들(92, 94, 96) 및 적절한 구성 파일들(28)을 각각의 노드(16) 상으로 로딩하거나 또는 어떤 다른 적절한 메커니즘에 의해 이미지 파일들(92, 94, 96) 및 구성 파일들(28)을 노드들(16)에 제공한다.
본 명세서에 기술된 바와 같이, 구성기(22)는 사용자 선택들 및 입력에 근거하여 다음 동작들을 자동으로 수행하도록 동작가능한 바, 이 동작들은 요구되는 리소스들(예컨대, 노드들(16))을 할당하는것, 노드들(16)(예컨대, 네트워크 토폴로지, 메모리 특성들)을 미리 구성하는것, 각각의 노드(16)에 워크로드 컨테이너 소프트웨어를 인스톨하는 것, 노드들(16)에 사용자 제공 워크로드 소프트웨어 및 데이터를 배치하는 것, 모니터링 툴들(예컨대, Ganglia, SystemTap)을 개시하고 성능 데이터가 각각의 노드(16)로부터 모여지는 것을 개시하는 것, 워크로드 실행 동안 사용자에게 라이브 상태 업데이터들을 제공하는 것, 워크로드의 결과들 및 모니터링 툴들에 의해 모여진 정보를 포함하여 사용자에 의해 요구되는 모든 데이터를 수집하는 것, 사용자에 의해 요구되는 성능 데이터를 프로세스, 요약 및 디스플레이하는 것, 및 다른 적절한 기능들을 수행하는 것이다. 또한, 사용자는 본 명세서에 기술된 바와 같이, 순차적으로 또는 병렬로 실행되는 워크로드들의 시퀀스들을 생성 및 배치하기 위해 구성기(22)를 사용할 수 있다. 사용자는 실행들 동안 또는 실행들 사이에 구성 또는 입력 파라미터들에 대해 옵셔널한 조정들을 하면서 어떤 또는 모든 워크로드들을 반복적으로 실행할 수 있다. 구성기(22)는 또한, 사용자에 의한 요청들에 근거하여 노드 클러스터(14)의 지정된 데이터베이스 노드들(16)에 데이터를 저장하도록 동작가능하다.
도 4는 클라우드 컴퓨팅 시스템을 구성하기 위해 도 1 및 3의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(100)를 도시한다. 도 4의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 예시된 실시예에서, 구성기(22)는 도 7 내지 30에 도시된 사용자 인터페이스(200)와 같은 사용자 인터페이스를 통해 수신되는 복수의 사용자 선택들에 근거하여 도 4의 순서도(100)에 따라 도 1의 노드 클러스터(14)를 구성한다. 블록(102)에서, 구성기(22)의 노드 구성기(72)는 복수의 이용가능한 노드들(16)로부터 노드들의 클러스터(14)를 선택한다. 노드들의 클러스터(14)의 각각의 노드(16)는 본 명세서에 기술된 바와 같이, 적어도 하나의 프로세싱 디바이스(40) 및 메모리(42)(도 2)를 포함하고, 클러스터(14)의 다른 노드들(16)과 워크로드의 프로세싱을 공유하도록 동작가능하다. 예시된 실시예에서, 복수의 노드들(16)은 구성기(22)에 의한 선택을 위해 이용가능하고, 구성기(22)는 노드 클러스터(14)로서 이용가능한 노드들(16)의 서브세트를 선택한다. 일 실시예에서, 구성기(22)는 도 26 내지 30에 관하여 본 명세서에 기술된 바와 같이, 사용자 인터페이스를 통해 수신되는 사용자 선택에 근거하여 노드들의 클러스터(14)의 각각의 노드(16)로부터 수집될 적어도 하나의 타입의 데이터를 선택하며, 구성기(22)의 데이터 취합기(84)는 노드들의 클러스터(14)의 각각의 노드(16)로부터 적어도 하나의 타입의 데이터를 수집 및 취합한다.
블록(104)에서, 구성기(22)의 워크로드 컨테이너 구성기(76)는 선택된 노드들의 클러스터(14)의 각각의 노드(16) 상에서의 동작을 위해 워크로드 컨테이너 모듈을 선택한다. 워크로드 컨테이너 모듈은 노드(16)에 의해 실행될 때, 워크로드의 실행을 개시 및 조정하도록 동작가능한 선택가능한 코드 모듈을 포함한다. 일 실시예에서, 워크로드 컨테이너 모듈은 도 18에 관하여 본 명세서에 기술된 바와 같이, 복수의 이용가능한 워크로드 컨테이너 모듈들로부터 선택된다. 일 실시예에서, 구성기(22)는 사용자 인터페이스를 통해 수신되는 사용자 입력에 근거하여 각각의 노드(16) 상에서 워크로드 컨테이너 모듈의 적어도 하나의 동작 파라미터를 수정한다. 적어도 하나의 동작 파라미터는 본 명세서에 기술된 바와 같이, 판독/기록 동작, 파일 시스템 동작, 네트워크 소켓 동작 및 소팅 동작 중 적어도 하나와 관련된다.
일 실시예에서, 선택된 워크로드 컨테이너 모듈은 클라우드 컴퓨팅 시스템(10)으로부터 원격에 있는 메모리(예컨대, 도 1의 메모리(34)) 상에 저장된 커스텀 워크로드 컨테이너 모듈이며, 구성기(22)는 원격 메모리에 저장된 커스텀 워크로드 컨테이너 모듈을 노드들의 클러스터(14)의 각각의 노드(16) 상으로 로딩한다. 예를 들어, 커스텀 워크로드 컨테이너 모듈은 사용자에 의해 제공되고 상업적으로는 이용가능하지 않은 워크로드 컨테이너 모듈을 포함한다. 일 실시예에서, 커스텀 워크로드 컨테이너 모듈은 워크로드를 실행하기 위한 사용자 정의 명령들 및 파라미터들을 포함하는 구성 파일을 포함한다. 예시적인 명령들은 전형적인 워크로드들에서 일반적이지 않은(uncommon) 그리고/또는 특정 워크로드에 고유한 워크로드 파라미터들을 테스트하기 위한 명령들을 포함한다. 커스텀 워크로드 컨테이너 모듈의 다른 예시적인 명령들은 추가의 분석을 위해 서로 다른 위치에 실행의 출력 또는 로그 파일들을 리디렉팅(redirect)하기 위한 명령들을 포함한다. 대안적으로는, 워크로드 컨테이너 모듈은 Apache Hadoop, Memcached, Apache Cassandra, 등과 같은 상업적으로 이용가능한 제3자 워크로드 컨테이너 모듈을 포함하는 바, 상기 제3자 워크로드 컨테이너 모듈은 컴퓨팅 시스템(10)(예컨대, 도 3의 메모리(90))에 저장되고, 구성기(22)에 의한 선택 및 배치에 이용가능하다.
블록(106)에서, 구성기(22)의 워크로드 구성기(78)는 노드들의 클러스터(14) 상에서의 워크로드 컨테이너 모듈을 이용한 실행을 위해 워크로드를 선택한다. 선택된 워크로드의 프로세싱은 본 명세서에 기술된 바와 같이, 노드들의 클러스터(14)에 걸쳐 분산된다. 일 실시예에서, 워크로드는 실제 워크로드 및 합성 테스트 워크로드 중 적어도 하나로부터 선택된다. 하나 이상의 실제의 미리 컴파일된 워크로드들은 제어 서버(12)의 프로세서에 의해 액세스가능한 메모리(예컨대, 도 1의 메모리(34))에 저장되며, 구성기(22)는 선택된 실제 워크로드를 노드들(16) 상으로 로딩한다. 합성 테스트 워크로드는 도 23 및 32 내지 35에 관하여 본 명세서에 기술된 바와 같이, 사용자 인터페이스(200)를 통해 수신되는 사용자 정의 워크로드 파라미터들에 근거하여 구성기(22)에 의해 생성되고 노드들(16) 상으로 로딩된다. 일 실시예에서, 구성기(22)는 도 11 내지 17에 관하여 본 명세서에 기술된 바와 같이, 사용자 인터페이스(200)를 통해 수신되는 사용자 입력에 근거하여, 선택된 워크로드의 실행 동안 통신 네트워크(18)의 성능을 수정 또는 제한하기 위해 적어도 하나의 통신 네트워크 파라미터를 조정한다.
예시된 실시예에서, 구성기(22)는 선택가능한 노드 데이터(예컨대, 도 8의 테이블(258)), 선택가능한 워크로드 컨테이너 데이터(예컨대, 도 18의 선택가능한 입력(352)), 및 선택가능한 워크로드 데이터(예컨대, 도 22의 선택가능한 입력(418))을 포함하는 사용자 인터페이스(200)(도 7 내지 30)을 제공한다. 노드들의 클러스터(14)는 선택가능한 노드 데이터의 사용자 선택에 근거하여 선택되고, 워크로드 컨테이너 모듈은 선택가능한 워크로드 컨테이너 데이터의 사용자 선택에 근거하여 선택되며, 워크로드는 선택가능한 워크로드 데이터의 사용자 선택에 근거하여 선택된다.
도 5는 클라우드 컴퓨팅 시스템(10)을 구성하기 위해 도 1 및 3의 구성기(22)에 의해 수행되는 다른 예시적인 동작의 순서도(120)를 도시한다. 도 5의 설명 전반에서 도 1 및 3에 대한 참조가 이루어진다. 블록(122)에서, 워크로드 컨테이너 구성기(76)는 사용자 인터페이스(예컨대, 사용자 인터페이스(200))를 통해 수신되는 사용자 입력에 근거하여 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)의 각각의 노드(16) 상에서의 동작을 위해 복수의 이용가능한 워크로드 컨테이너 모듈들로부터 워크로드 컨테이너 모듈을 선택한다. 예시된 실시예에서, 워크로드 컨테이너 모듈은 예컨대, 도 18의 입력들(352, 360, 362) 및 도 21의 입력들(352, 401)과 같은 선택가능한 워크로드 컨테이너 데이터에 근거하여 선택된다. 선택된 워크로드 컨테이너 모듈은 워크로드의 실행을 조정하도록 동작가능한 (예컨대, 도 18의 입력들(360, 362) 및 도 21의 입력(401)으로 선택가능한) 선택가능한 코드 모듈을 포함한다. 일 실시예에서, 복수의 이용가능한 워크로드 컨테이너 모듈들은 본 명세서에 기술된 바와 같이, 커스텀 워크로드 컨테이너 모듈을 포함한다. 블록(124)에서, 노드 구성기(72)는 워크로드의 프로세싱이 노들의ㄴ 클러스터에 걸쳐 분산되도록, 워크로드를 실행하기 위해 선택된 워크로드 컨테이너 모듈로 노드들의 클러스터(14)의 각각의 노드(16)를 구성한다. 본 명세서에 기술된 바와 같이, 각각의 노드(16)는 프로세싱 디바이스(40) 및 메모리(42)를 포함하고, 노드들의 클러스터(14)의 다른 노드들(16)과 워크로드의 프로세싱을 공유하도록 동작가능하다. 구성기(22)는 노드들의 클러스터(14)의 각각의 노드(16) 상에서 선택된 워크로드 컨테이너 모듈을 인스톨하고, 노드들의 클러스터(14) 상에서 선택된 워크로드 컨테이너 모듈로 워크로드의 실행을 개시한다.
도 6은 클라우트 컴퓨팅 시스템(10)을 구성하기 위해 도 1 및 3의 구성기(22)에 의해 수행되는 다른 예시적인 동작의 순서도(140)를 도시한다. 도 6의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 블록(142)에서, 구성기(22)의 노드 구성기(72)는, 클라우드 컴퓨팅 시스템을 위한 복수의 이용가능한 노드들(16)로부터 워크로드의 프로세싱을 공유하도록 동작가능한 노드들의 클러스터(14)를 선택한다. 예시된 실시예에서, 노드들의 클러스터(14)는 본 명세서에 기술된 바와 같이, 선택가능한 노드 데이터에 근거하여 선택된다.
블록(144)에서, 워크로드 컨테이너 구성기(76)는 사용자 인터페이스를 통해 수신되는 사용자 입력(예컨대, 도 19의 사용자 인터페이스(200)의 선택가능한 입력들(367) 및 필드들(374, 378, 380))에 근거하여 각각의 노드(16)의 동일한 워크로드 컨테이너 모듈의 동작 파라미터를 수정한다. 동일한 워크로드 컨테이너 모듈은, 노드들(16)에 의해 실행될 때 동작 파라미터에 근거하여 워크로드의 실행을 조정하도록 동작가능한 선택가능한 코드 모듈을 포함한다. 동작 파라미터는 도 19 및 20에 관하여 본 명세서에 기술된 바와 같이, 판독/기록 동작, 파일 시스템 동작, 네트워크 소켓 동작 및 소팅 동작 중 적어도 하나와 관련된다. 구성기(22)는 워크로드 컨테이너 모듈을 각각의 노드(16) 상으로 배치하기 전에 또는 구성들을 업데이트할 때 각각의 노드(16)로의 워크로드 컨테이너 모듈의 배치 후에 동작 파라미터(들)를 수정한다. 워크로드 컨테이너 모듈은 각각의 노드(16)에 의해 실행될 때, 수정된 동작 파라미터에 근거하여 노드들의 클러스터(14) 상에서의 워크로드의 실행을 조정하도록 동작가능하다. 일 실시예에서, 동작 파라미터는 판독/기록 동작을 위한 메모리 버퍼 사이즈, 판독/기록 동작 동안 전달되는 데이터 블록의 사이즈, 각각의 노드(16)의 메모리(42)에 저장된 데이터 블록들의 수, 파일 시스템(55)에 대한 프로세싱 요청들을 위해 할당된 각각의 노드(16)의 프로세싱 스레드들의 수, 및/또는 데이터를 저장할 때 합칠(merge) 데이터 스트림들의 수를 포함한다. 다른 적절한 동작 파라미터들은 도 19 및 20에 관하여 기술된 바와 같이 수정될 수 있다.
도 3의 제어 서버(12)에 사용자 액세스를 제공하는 예시적인 사용자 인터페이스(200)가 도 7 내지 30에 도시된다. 사용자 인터페이스(200)는 예시적으로는, 컴퓨터(20)의 디스플레이(21)(도 1)와 같은 디스플레이 상에 디스플레이하기 위해 구성된 복수의 선택가능한 스크린들을 포함하는 웹 기반의 그래픽 사용자 인터페이스(200)이다. 네이티브(native) 사용자 인터페이스 어플리케이션, 커맨드 라인 구동식 인터페이스, 프로그래밍가능한 API 또는 다른 타입의 인터페이스 또는 인터페이스들의 결합과 같은 다른 적절한 사용자 인터페이스들이 제공될 수 있다. 사용자 인터페이스(200)는 구성기(22)의 컴포넌트들(70 내지 84)에 링킹되고 입력을 제공하는 선택가능한 입력들, 필드들, 모듈들, 탭들, 드롭 다운(drop-down) 메뉴들, 박스들, 및 다른 적절한 선택가능한 데이터와 같은 선택가능한 데이터를 포함한다. 일 실시예에서, 사용자 인터페이스(200)의 선택가능한 데이터는 이 선택가능한 데이터가 개별적으로 선택가능하도록 하는 방식으로 렌더링된다. 예를 들어, 선택가능한 데이터는 마우스 포인터를 이용하여 사용자에 의해, 사용자 인터페이스(200)의 터치스크린을 터치함으로써, 키보드의 키들을 누름으로써, 또는 어떤 다른 적절한 선택 메커니즘에 의해 선택된다. 선택된 데이터는 결과적으로, 예컨대, 데이터가 강조되거나 체크되게 하며, 새로운 스크린, 메뉴 또는 팝업 윈도우가 어떤 선택가능한 데이터(예컨대, 모듈들, 드롭 다운 메뉴들, 등)의 선택에 근거하여 나타날 수 있다.
사용자 인터페이스(200)의 설명 전반에 걸쳐 도 1 내지 3에 대한 참조가 이루어진다. 도 7에 예시된 바와 같이, 사용자 인터페이스(200)는, 선택될 때, 구성기(22)에 액세스를 제공하고, 그럼으로써 구성기(22)로의 사용자 선택들 및 다른 사용자 입력을 할 수 있게 하는 여러 선택가능한 모듈들을 포함한다. 특히, 인증 및 설정 라이브러리 모듈(202)은 구성기(22)의 인증기(70)를 표시하고 이에 링킹된 데이터를 포함한다. 인스턴스 모듈(204)은 구성기(22)의 노드 구성기(72)를 표시하고 이에 링킹된 데이터를 포함한다. 네트워크 구성 모듈(206)은 구성기(22)의 네트워크 구성기(74)를 표시하고 이에 링킹된 데이터를 포함한다. 워크로드 컨테이너 구성 모듈(208)은 구성기(22)의 워크로드 컨테이너 구성기(76)를 표시하고 이에 링킹된 데이터를 포함한다. 워크로드 구성 모듈(210)은 구성기(22)의 워크로드 구성기(78)를 표시하고 이에 링킹된 데이터를 포함한다. 배치 프로세싱 모듈(212)은 구성기(22)의 배치 프로세서(80)를 표시하고 이에 링킹된 데이터를 포함한다. 모니터링 모듈(214)은 구성기(22)의 데이터 모니터 구성기(82)를 표시하고 이에 링킹된 데이터를 포함한다. 제어 및 상태 모듈(216)은 구성기(22)의 데이터 취합기(84)를 표시하고 이에 링킹된 데이터를 포함한다. 구성기(22)의 컴포넌트들(70 내지 84)은 사용자 인터페이스(200)의 모듈들(202 내지 216)을 통해 제공되는 사용자 선택들, 데이터 및 다른 사용자 입력에 근거하여 그들 각각의 기능들을 구현한다.
도 7을 참조하면, 인증 및 설정 라이브러리 모듈(202)이 선택된다. 모듈(202)로의 사용자 입력에 근거하여, 인증기(70)는 구성기(22)로의 사용자 액세스를 인증할 뿐만 아니라 이전에 저장된 시스템 구성들을 로딩한다. 인증기(70)는 각각의 필드들(220, 222, 224) 내의 액세스 키, 비밀 키 및/또는 EC2 키 쌍의 형태로 입력되는 신임 데이터(credential data)를 확인(confirm)함으로써 구성기(22)로의 사용자 액세스를 허가한다. 예시된 실시예에서, 필드(224)의 EC2 키 쌍은 아마존 웹 서비스들 클라우드 플랫폼에 액세스하기 위해 모듈(202)을 이용할 때, 새롭게 선택된 노드들(16)에 루트(root) 또는 초기 액세스를 제공한다. 인증기(70)는 입력의 사용자 선택(238)에 근거하여 (예컨대, 도 1의 사용자의 컴퓨터(20) 또는 제어 서버(12) 상에 저장된) 시스템 구성 파일로부터 이전에 저장된 시스템 구성을 로딩한다. 시스템 구성 파일은 워크로드 및 워크로드 컨테이너 구성들, 노드(16) 및 네트워크 설정 정보, 클라우드 컴퓨팅 시스템(10)을 위한 데이터 모니터링/수집 설정들, 및 구성기(22)로 이전에 저장된 시스템 구성과 관련된 모든 다른 구성 정보를 포함한다. 이전에 저장된 시스템 구성 파일을 로딩하는 것은 시스템 구성 파일로부터의 구성 정보로 구성기(22)를 업데이트한다. 시스템 구성 파일은 비록 다른 적절한 포맷들이 제공될 수 있지만, 예시적으로는, JSON 파일 포맷을 포함한다. 시스템 구성 파일을 로딩한 후, 로딩된 시스템 구성은 사용자 인터페이스(200)의 모듈들을 통해 수정될 수 있다. 입력(240)의 선택은 인증기(70)로 하여금 파일에 구성기(22)의 현재 시스템 구성을 저장하도록 한다. 인증 데이터는 선택 박스(242)의 선택에 근거하여 저장된 시스템 구성 파일에 포함될 수 있다.
시스템 구성 파일은 식별되어 웹 기반의 사용자 인터페이스(200)를 통해 제어 서버(12) 상으로 로딩되고, 다른 적절한 원격 방법 호출(RMI) 메커니즘들이 시스템 구성 파일을 획득하기 위해 사용될 수 있다(예를 들어, HTTP(Apache Hypertext Transfer Protocol) 서버, Apache Tomcat 서버, 시스템 구성 파일을 패스하기 위해 RMI 메커니즘을 사용하는 Tomcat 서블렛, 또는 제어 서버(12)에 직접적으로 시스템 구성 파일을 패스하기 위해 RMI 메커니즘을 사용하는 커스텀 어플리케이션(예컨대, 커맨드 라인 유틸리티)).
라이브러리 설정(226)는 선택가능한 입력들(227)을 통한 선택 및 실행을 위해 이용가능한 이전에 생성된 시스템 구성 파일들의 테이블 또는 리스트를 제공한다. 입력(228)의 선택은 인증기(70)로 하여금 라이브러리(226)에 선택된 시스템 구성 파일로부터의 구성 정보로 모듈들(202 내지 216)을 업데이트하도록 한다. (예컨대, 모듈들(202 내지 216)을 통해 구성되는) 현재의 시스템 구성이 입력(230)의 선택에 근거하여 파일에 저장되고 라이브러리(226)에 추가되며, 시스템 구성 파일은 입력(234)의 선택에 근거하여 라이브러리(226)로부터 삭제된다. 입력들(232 및 236)의 선택은 각각, 인증기(70)로 하여금 로컬 컴퓨터(예컨대, 도 1의 컴퓨터(20))로부터 라이브러리(226)로 시스템 구성 파일을 업로드하도록 하거나 또는 (예컨대, 인터넷을 통해) 원격 컴퓨터로부터 라이브러리(226)로 시스템 구성 파일을 다운로드하도록 한다. 라이브러리(226)는 하나 이상의 이전에 사용된 시스템 구성이 빠르게 로딩 및 실행되도록 한다. 라이브러리(226)의 시스템 구성 파일들은 클라우드 컴퓨팅 시스템(10) 상에서 개별적으로, 병렬로, 또는 시퀀스로 선택 및 실행될 수 있다. 예를 들어, 복수의 시스템 구성 파일들은 배치 시퀀스로 실행하기 위해 라이브러리(226)에 제공될 수 있고, 구성기(22)는 각각의 시스템 구성으로 워크로드(들)를 실행하기 위해 시퀀스로 각각의 선택된 시스템 구성을 자동으로 배치한다. 예시된 실시예에서, 시스템 구성은 본 명세서에 기술된 바와 같이, 도 30의 제어 및 상태 모듈(216)을 통해 노드들에 배치된다. 시스템 구성의 배치는 도 30을 참조하여 본 명세서에 기술된 바와 같이, 구성기(22)가 시스템 구성 파일과 관련된 설정들, 소프트웨어, 및 워크로드 정보로 클라우드 컴퓨팅 시스템(10)을 구성하는 것을 수반한다. 본 명세서에 기술된 바와 같이, 구성기(22)는 예시적으로, 각각의 노드들(16)을 구성하기 위해 각각의 노드(16)에 라우딩되는 하나 이상의 구성 파일들(28)을 생성한다. 노드들(16)에 배치되는 구성 파일들(28)은 모듈(202)을 통해 로딩되는 시스템 구성 파일에 포함된 모든 구성 정보와 시스템 구성 파일을 로딩한 후 모듈들(202 내지 216)을 통해 이루어지는 어떤 추가적인 구성 변경들을 포함한다.
도 8을 참조하면, 인스턴스 모듈(204)은 노드들(16)의 번호 및 특성들을 구성하기 위해 선택된다. 모듈(204)로의 사용자 입력에 근거하여, 노드 구성기(72)는 특정된 하드웨어 및 동작 구성을 가지는 노드들의 클러스터(14)를 식별하고 선택한다. 인스턴스 모듈(204)은 인스턴스 탭(250), 인스턴스 타입 탭(252) 및 다른 인스턴스 설정 탭(254)을 포함한다. 도 8에서 선택된 인스턴스 탭(250) 하에서, 노드 클러스터(14)에 포함시키기 위해 요구되는 노드들(16)의 번호가 필드(256)에 입력된다. 노드 구성기(72)는 필드(256)를 이용한 노드들(16)의 요구되는 번호의 사용자 선택 시 테이블(258)에 특정 하드웨어 구성을 각각 가지는 노드들(16)의 디폴트 리스트를 생성한다. 테이블(258)은 도 1의 노드들의 클러스터(14)의 리스트 및 구성 설명을 제공한다. 테이블(258)은 노드 번호 및 이름, 인스턴스 (노드) 타입, 메모리 용량, 코어 프로세서들(예컨대, CPU)의 수, 저장 용량, 쿼터(quota), 수신/전송 쿼터 및 수신/전송 캡(cap)을 포함하는 각각의 노드(16)에 대한 여러 설명 필드들을 포함한다. 인스턴스 타입은 일반적으로, 예시적으로는 마이크로(micro), 스몰, 미디움, 라지, 엑스-라지(x-large), 2엑스-라지, 4엑스-라지, 등(도 9 참조)으로부터 선택되는, 노드의 상대적인 사이즈 및 컴퓨트 파워를 설명한다. 도 8의 예시적인 테이블(258)에서, 각각의 노드(16)는 7680 MB의 메모리 용량, 850 MB의 저장 용량 및 네 개의 코어 프로세서들을 가지는 라지 타입이다. 노드 구성기(72)는, 선택가능한 노드 데이터, 예시적으로는 선택 박스들(259) 및 선택가능한 입력들(262)의 사용자 선택에 근거하여 노드들(16)을 선택한다. 각각의 노드(16)의 타입은 (예컨대, 입력들(262)을 이용하여 또는 대응하는 선택 박스들(259)을 체킹함으로써) 테이블(258)의 노드(16)를 선택하는 것 및 인스턴스 타입 탭(252)으로 하여금 선택된 노드(16)에 대해 디스플레이되도록 하는 인스턴스 타입 편집 입력(edit instance type input)(260)을 선택하는 것에 근거하여 변경가능하다. 도 9를 참조하면, 테이블(264)은 노드 클러스터(14)에서 사용하기 위해 선택을 위해 이용가능한 (즉, 이용가능한 서버 하드웨어) 노드들(16)의 타입들의 리스트를 포함한다. 테이블(264)의 하나 이상의 노드들(16)은 도 8의 테이블(258)에서 선택된 노드(16)를 대체하기 위해 선택가능한 입력들(265)로 선택된다. 일 실시예에서, 테이블(264)의 필드들(예컨대, 메모리, VCPU들, 저장소, 등)은 선택된 노드들(16)의 요구되는 하드웨어 성능 특성들을 더 식별하기 위해 사용자에 의해 수정가능하다. 노드들(16)의 더 적은 또는 추가적인 타입들은 이용가능한 서버 하드웨어에 따른 테이블(264)에서의 선택을 위해 이용가능할 수 있다. 예시된 실시예에서, 복수의 노드들(16)은 노드 클러스터(14)에 추가하기 위해 테이블(264)에 나열된 각각의 노드 타입을 위해 이용가능하다.
도 10을 참조하면, 노드 구성기(72)는 사용자 인터페이스(200)의 인스턴스 설정 탭(254)에 제공되는 사용자 입력에 근거하여 각각의 노드(16)의 부트 시간 구성을 조정한다. 부트 시간 구성은 개별적인 노드들(16) 또는 노드들(16)의 그룹들에 또는 전체 노드 클러스터(14)에 적용되는 하나 이상의 부트 시간 파라미터들을 포함한다. 각각의 노드(16)의 컴퓨팅 용량, 시스템 메모리 용량 및/또는 저장 용량과 같은 부트 시간 파라미터들은 각각의 노드(16)가 최대 용량보다 적은 용량에서 동작하도록 필드들(268, 270, 272, 274)로의 사용자 입력에 근거하여 노드 구성기(72)에 의해 제한 또는 제약된다. 디폴트 부트 시간 파라미터들은 입력들(269)의 사용자 선택에 근거하여 선택되고, 커스토마이징된 부트 시간 파라미터들은 입력들(271)의 사용자 선택에 근거하여 선택된다. 예시된 실시예에서, 각각의 조정가능한 파라미터의 최대 설정은 디폴트이지만, 사용자는 입력(271)으로 "커스텀" 옵션을 선택하고 각각의 필드(268, 270, 272, 274) 내로 구성 설정을 입력할 시 각각의 파라미터를 조정할 수 있다.
예시된 실시예에서, 노드(16)의 프로세싱 코어들의 수는 필드(268)로 조정가능하다. 예를 들어, 인스턴스 탭(250)의 테이블(258)(도 8)에서 선택된 노드(16)가 네 개의 프로세싱 코어들을 가지면, 워크로드 수행 동안 인에이블되는 프로세싱 코어들의 수는 필드(268)를 통해 0, 1, 2 또는 3개의 코어들로 감소될 수 있고 그럼으로써, 워크로드 실행 동안 선택된 노드(16)의 하나 이상의 프로세싱 코어들을 운영 체제(44)(도 2)로부터 "숨길(hiding)" 수 있다. 가시적 시스템 메모리(즉 운영 체제(44)(도 2)에 의해 액세스가능한 시스템 메모리) 사이즈는 필드(270, 272)의 입력들에 근거하여 조정가능하다. 예를 들어, 인스턴스 탭(250)의 테이블(258)(도 8)에서 선택된 노드(16)가 2048 MB의 메모리 용량을 가지면, 워크로드 실행 동안 인에이블되는 "가시적" 메모리(9)(예컨대, 랜덤 액세스 메모리)는 2048 MB 미만으로 감소될 수 있고 그럼으로써, 워크로드 실행 동안 메모리의 일부를 운영 체제(44)(도 2)로부터 숨길 수 있다. 추가적인 워크로드 인수(argument)들 또는 명령들은 추가적인 부트 시간 파라미터들을 조정하기 위해 필드(274)를 이용하여 적용된다. 워크로드의 인수들의 수는 필드(274) 내로 입력되는 수에 근거하여 증가되거나 감소될 수 있다. 예를 들어, 워크로드의 명령들의 서브세트가 필드(274)를 이용하여 실행을 위해 선택가능하고 그럼으로써, 운영 체제(44)(도 2)로부터 나머지 명령들을 숨긴다. 또한, 64 비트 아키텍쳐를 갖는 노드(16)는 오직 32 비트만이 운영 체제(44)에 가시적인 32 비트 모드에서 동작하도록 하는 필드(274)로의 입력에 근거하여 구성가능하다. 추가적인 부트 시간 파라미터들은 필드(276)에 입력될 수 있다. 일 실시예에서, 명령들 또는 코드는 추가적인 클라우드 구성 설정들을 제공하기 위해 사용자에 의해 필드(276)에 수동으로 입력된다. 예를 들어, 맵-감소 워크로드에 대한 마스터 노드(16)는 특정 노드(16)가 부팅 시 마스터로서 동작하도록 필드(276)를 통해 특정될 수 있다. 일 실시예에서, 노드 구성기(72)를 이용하여 하나 이상의 노드들(16)의 동작을 제한하는 것은 본 명세서에 기술된 바와 같이, 클라우드 컴퓨팅 시스템(10)의 성능을 테스트하기 위해 사용된다. 예시된 실시예에서, 도 10에 특정된 부트 시간 구성 설정들은 도 36 내지 38에 관하여 본 명세서에 기술된 바와 같이, 각각의 노드들(16)의 부트 시간 구성을 조정하기 위해 각각의 노드(16)에 노드 구성기(72)에 의해 제공되는 부트 시간 구성 파일(28)(도 3)에 제공된다.
구성기(22)는 도 7의 네트워크 구성 모듈(206)의 사용자 선택에 근거하여 도 11 내지 17에 예시된 예시적인 네트워크 설정 위저드 윈도우(280)를 생성한다. 도 11을 참조하면, 네트워크 설정 위저드(280)는 하나 이상의 노드들(16)의 네트워크 파라미터들을 조정하기 위해 선택가능한 데이터를 각각 포함하는 복수의 글로벌 네트워크 설정 탭들을 제공한다. 조정가능한 네트워크 파라미터들은 탭(282)을 통한 네트워크 지연, 탭(284)을 통한 패킷 손실(packet loss), 탭(286)을 통해 패킷 복제, 탭(288)을 통한 패킷 왜곡, 탭(290)을 통한 패킷 리오더링, 탭(292)을 통한 패킷 레이트 제어, 및 탭(294)을 통한 다른 커스텀 커맨드들을 포함한다. 사용자 인터페이스(200)의 네트워크 설정 위저드(280)를 통한 사용자 선택들 및 입력에 근거하여, 도 3의 네트워크 구성기(74)는 본 명세서에 기술된 바와 같이, 도 1의 통신 네트워크(18)의 노드들(16)의 네트워크 파라미터들을 조정하도록 동작가능하다. 일 실시예에서, 네트워크 파라미터들의 수정은 네트워크 테스팅 및 성능 분석을 위해 그리고/또는 시스템 파워 소모를 조정하기 위해 이용된다. 예시된 실시예에서, 네트워크 구성기(74)는 네트워크 설정 위저드(280)로의 사용자 입력에 근거하여 네트워크 트래픽 및 거동(behavior)을 인위적으로(artificially) 형상화(shape)하고 그럼으로써, 다양한 타입의 네트워크 토폴로지들을 모델링한다. 예를 들어, 서로 다른 통신 네트워크들은 네트워크 구성에 따라, 서로 다른 레이턴시들, 대역폭, 성능 등을 가진다. 따라서, 네트워크 구성기(74)는 서로 다른 구성들을 가지는 네트워크들이 선택된 워크로드로 서로 다른 네트워크들의 성능을 테스트 및 분석하기 위해 워크로드 실행으로 구현될 수 있게 한다. 일 실시예에서, 테스팅 및 분석은 배치 프로세서(80)가 서로 다른 네트워크 구성들로 워크로드 실행들을 개시하는 것과 연계하여 행해진다. 예를 들어, 선택된 하드웨어(노드(16)) 구성으로 특별한 워크로드를 실행하기 위한 최적 네트워크 토폴로지가 결정될 수 있다. 일 실시예에서, 네트워크 구성기(74)는 노드 클러스터(14)의 노드들(16)의 특정 그룹들 또는 서브세트들에 네트워크 설정들을 적용하도록 동작가능하다.
도 11을 여전히 참조하여, 통신 네트워크 지연을 구현하는 것과 관련된 선택가능한 데이터는 탭(282)에 도시된다. 네트워크 구성기(74)는 입력들(예시적으로는 박스들)(298 내지 301) 및 필드들(302, 304, 306, 308, 310, 312)의 사용자 선택에 근거하여 네트워크 지연을 선택 및 수정한다. 통신 네트워크(18)(도 1)를 통한 각각의 패킷 통신(즉, 노드들(16) 사이에 또는 노드(16)와 제어 서버(12) 사이에 데이터 또는 정보를 운반하는 패킷들)에 대한 통신 지연은 입력(298)의 선택 및 필드(302)를 통해 입력되는 지연 값에 근거하여 구현된다. 특정된 통신 지연의 변화량(variation)은 입력(299)의 선택 및 필드(304)를 통해 입력되는 변화량 값(예컨대, 예시적으로는 + 또는 - 10 밀리초의 변화량)에 근거하여 구현된다. 필드들(310, 312)은 필드들(302, 304)의 각각의 값과 관련된 시간 단위(예컨대, 밀리초, 마이크로초, 등)를 선택하기 위한 드롭 다운 메뉴들을 포함한다. 특정된 통신 지연들 간의 상관성(correlation)이 입력(300)의 선택 및 필드(306)를 통해 입력되는 상관성 값, 예시적으로는 퍼센티지 상관성 값에 근거하여 구현된다. 특정된 통신 지연의 분산이 드롭 다운 메뉴(301)의 선택에 근거하여 구현된다. 분산은 정규 분산(normal distribution) 또는 다른 적절한 분산 타입을 포함한다.
도 12를 참조하면, 네트워크 패킷 손실률을 구현하는 것과 관련된 선택가능한 데이터가 탭(284)에 도시된다. 네트워크 구성기(74)는 입력들(예시적으로는 박스들)(313, 314)의 사용자 선택 및 필드들(315, 316)에 근거하여 패킷 손실률 즉, 패킷들이 인위적으로 손실되는 레이트)을 선택 및 수정한다. 패킷 손실률은 입력(313)의 선택 및 필드(315)를 통해 입력된 레이트 값에 근거하여 네트워크(18)를 통한 패킷 통신을 위해 구현된다. 패킷 손실률은 예시적으로는, 퍼센티지로 입력되는 바, 예컨대, 예컨대 0.1%는 결과적으로, 노드(16)에 의해 전송된 1000 개의 패킷들 마다 하나의 패킷이 손실되게 한다. 패킷 손실률에 대한 상관성은 입력(314)의 선택 및 필드(316)를 통해 입력된 상관성 값(예시적으로는 퍼센티지 값)에 근거하여 구현된다.
도 13을 참조하면, 네트워크 패킷 복제율을 구현하는 것과 관련된 선택가능한 데이터가 탭(286)에 도시된다. 네트워크 구성기(74)는 입력들(예시적으로는 박스들)(317, 318)의 사용자 선택 및 필드들(319, 320)에 근거하여 패킷 복제율(즉, 패킷들이 인위적으로 복제되는 레이트)을 선택 및 수정한다. 패킷 복제율은 입력(317)의 선택 및 필드(319)를 통해 입력되는 레이트 값에 근거하여 네트워크(18)를 통한 패킷 통신을 위해 구현된다. 패킷 복제율은 예시적으로 퍼센티지로 입력되는 바, 예컨대, 0.1%는 결과적으로, 노드(16)에 의해 전송된 1000개의 패킷들 마다 하나의 패킷이 복제되게 한다. 패킷 복제율에 대한 상관성은 입력(318)의 선택 및 필드(320)를 통해 입력되는 상관성 값(예시적으로는 퍼센티지 값)에 근거하여 구현된다.
도 14를 참조하면, 네트워크 패킷 왜곡률을 구현하는 것과 관련된 선택가능한 데이터는 탭(288)에 도시된다. 네트워크 구성기(74)는 입력(321)의 사용자 선택 및 필드(322)에 근거하여 패킷 왜곡률(즉, 패킷들이 인위적으로 왜곡되는 레이트)을 선택 및 수정한다. 패킷 왜곡률은 입력(321)의 선택 및 필드(322)를 통해 입력되는 레이트 값에 근거하여 네트워크(18)를 통한 패킷 통신을 위해 구현된다. 패킷 왜곡률은 예시적으로는 퍼센티지로 입력되는 바, 예컨대, 0.1%는 결과적으로, 노드(16)에 의해 전송된 1000개의 패킷들 마다 하나의 패킷이 왜곡되게 한다. 일 실시예에서, 패킷 왜곡률에 대한 상관성이 또한 선택 및 구현될 수 있다.
도 15를 참조하면, 네트워크 패킷 리오더링 레이트를 구현하는 것과 관련된 선택가능한 데이터가 탭(290)에 도시된다. 네트워크 구성기(74)는 입력들(예시적으로는 박스들)(323, 324)의 사용자 선택 및 필드들(325, 326)에 근거하여 패킷 리오더링 레이트(즉, 패킷들이 패킷 통신 동안 순서를 벗어나 위치되는 레이트)를 선택 및 수정한다. 패킷 리오더링 레이트는 입력(323)의 선택 및 필드(325)를 통해 입력되는 레이트 값에 근거하여 네트워크(18)를 통한 패킷 통신에 대해 구현된다. 패킷 리오더링 레이트는 예시적으로는 퍼센티지로 입력되는 바, 예컨대 0.1%는 결과적으로, 노드(16)에 의해 전송된 1000개의 패킷들 마다 하나의 패킷이 리오더링되게 한다. 패킷 리오더링 레이트에 대한 상관성은 입력(324)의 선택 및 필드(326)를 통해 입력되는 상관성 값(예시적으로는 퍼센티지 값)에 근거하여 구현된다.
도 16을 참조하면, 네트워크 통신율을 구현하는 것과 관련된 선택가능한 데이터가 탭(292)에 도시된다. 네트워크 구성기(74)는 입력들(예시적으로는 박스들)(327 내지 330)의 사용자 선택 및 필드들(331 내지 338)에 근거하여 패킷 통신율(즉, 패킷들이 노드들(16) 간에 통신되는 레이트)를 선택 및 수정한다. 패킷 통신율은 입력(327)의 선택 및 필드(331)를 통해 입력되는 레이트 값에 근거하여 통신 네트워크(18)에 대해 구현되고, 패킷 통신율에 대한 상한(ceiling)(최대치)은 입력(328)의 선택을 및 필드(332)를 통해 입력되는 상한 값에 근거하여 구현된다. 패킷 버스트(packet burst)는 입력(329)의 선택 및 필드(333)를 통해 입력되는 패킷 버스트 값에 근거하여 구현되고, 패킷 버스트에 대한 상한(최대치)은 입력(330)의 선택 및 필드(334)를 통해 입력되는 상한 값에 근거하여 구현된다. 필드들(335 및 336)은 레이트 단위들(예시적으로는 초 당 키로바이트)을 선택하기 위한 드롭 다운 메뉴를 제공하며, 필드들(337 및 338)은 버스트 단위들(예시적으로는 바이트 단위)에 대한 드롭 다운 메뉴들을 제공한다.
도 17을 참조하면, 네트워크 통신율을 구현하는 것과 관련된 선택가능한 데이터가 탭(292)에 도시된다. 네트워크 구성기(74)는 입력(예시적으로 박스)(340)의 사용자 선택 및 필드(342)를 통해 입력되는 커스텀 커맨드들에 근거하여 통신 네트워크(18) 상에서 하나 이상의 노드들(16)과 관련된 네트워크 파라미터들을 수정하기 위한 커스텀 커맨드들을 제공한다.
도 18을 참조하면, 워크로드 컨테이너 구성 모듈(208)이 선택된다. 모듈(208)로의 사용자 입력(예컨대, 입력들(352, 360, 362)과 같은 선택가능한 워크로드 컨테이너 데이터의 사용자 선택)에 근거하여, 워크로드 컨테이너 구성기(76)는 노드 클러스터(14) 상에서의 동작을 위해 워크로드 컨테이너 모듈을 선택 및 구성하도록 동작가능하다. 모듈(208)은 다양한 이용가능한 워크로드 컨테이너 모듈들에 대응하는 복수의 선택가능한 탭들(350)을 포함한다. 각각의 이용가능한 워크로드 컨테이너 모듈은, 실행될 때 노드 클러스터(14) 상에서 워크로드의 실행을 개시 및 제어하도록 동작가능한 선택가능한 코드 모듈을 포함한다. 예시적인 실시예에서 모듈(208)을 통해 이용가능한 워크로드 컨테이너 모듈들은 Apache Hadoop, Memcached, Cassandra, 및 Darwin Streaming와 같은 여러 제3자의, 상업적으로 이용가능한 워크로드 컨테이너 모듈들을 포함한다. Cassandra는 기본 데이터베이스 동작들을 제공하기 위한 키-값(key-value) 저장소를 제공하는 오픈-소스 분산형 데이터베이스 관리 시스템이다. Darwin Streaming은 다양한 영화 미디어 타입들을 스트리밍하기 위해 활용되는, Apple 인코포레이트에 의해 제공되는 QuickTime과 같은 미디어 스트리밍 어플리케이션의 오픈 소스 구현이다. 오픈 소스 워크로드 컨테이너 소프트웨어가 예시적으로는 모듈(208)을 통해 제공되지만은, 폐쇄 소스(closed-source) 워크로드 컨테이너 소프트웨어 역시 선택을 위해 제공될 수 있다. 예를 들어, 폐쇄 소스 워크로드 컨테이너 소프트웨어와 관련된 라이센스 정보가 사용자 인터페이스(200)를 통해 입력되거나 구매될 수 있다. 하나 이상의 커스텀 워크로드 컨테이너 모듈들은 또한, 모듈(208)의 "커스텀" 탭을 통해 로딩 및 선택될 수 있다. 다른 워크로드 컨테이너 모듈들이 제공될 수 있다. 예컨대, 이전에 사용된 커스텀 워크로드 컨테이너 모듈들과 같은, 선택에 이용가능한 추가적인 워크로드 컨테이너 모듈들의 라이브러리로의 액세스를 제공하는 "라이브러리" 탭이 또한 제공된다.
도 18의 "Hadoop" 탭 하에서, 워크로드 컨테이너 구성기(76)는 입력(352)의 사용자 선택에 근거하여 Apache Hadoop 워크로드 컨테이너 모듈을 선택한다. Apache Hadoop의 버전 및 구축 변형(build variant)이 일반 탭(354) 하에서 드롭 다운 메뉴들(360, 362) 각각을 통해 선택가능하다. 선택된 워크로드 컨테이너 모듈의 동작 파라미터들은 확장 탭(356) 및 커스텀 탭(358)을 통해 제공되는 사용자 입력에 근거하여 워크로드 컨테이너 구성기(76)에 의해 조정가능하다. 조정에 이용가능한 동작 파라미터들은 예시적으로는, 선택된 워크로드 컨테이너 모듈에 좌우된다. 예를 들어, 워크로드 컨테이너 모듈로서 선택된 Apache Hadoop의 경우, 도 19에 도시된 확장 탭(356)은 워크로드 컨테이너 구성기(76)에 의해 구성가능한 Apache Hadoop 워크로드 컨테이너 모듈의 예시적인 선택가능한 동작 파라미터들의 테이블(366)을 디스플레이한다. 워크로드 컨테이너 구성기(76)는 대응하는 선택 박스들(367)의 사용자 선택에 근거하여 구성을 위한 동작 파라미터들을 선택한다. 테이블(366)은 오버라이드 필드(374), 마스터 값 필드(378), 및 슬래이브 값 필드(380)를 포함하여, 구성 데이터를 수신하기 위한 워크로드 컨테이너 구성기(76)를 위한 여러 필드들을 제공한다. 오버라이드 필드(374)에서의 사용자 선택들에 근거하여, 워크로드 컨테이너들이 대응하는 동작 파라미터들로 조정되어야 하는 노드들(16)이 선택된다. 노드들(16)은 대응하는 드롭다운 메뉴들에서의 사용자 선택들에 근거하여 또는 입력들(384)의 사용자 선택들에 근거하여 오버라이드 필드(374)에서 선택된다. 예시적으로는, "네버(never)"의 선택은 결과적으로, 대응하는 동작 파라미터의 디폴트 구성이 모든 노드들(16)에서 구현되게 하고, "마스터" 또는 "슬래이브들"의 선택은 결과적으로, 마스터 노드(16) 또는 슬래이브 노드들(16) 각각에서 파라미터 조정이 구현되게 하며, "항상(always)"의 선택은 결과적으로, 노드 클러스터(14)의 모든 노드들(16)에서 파라미터 조정이 구현되게 한다. 대안적으로는, 노드 클러스터(14)의 개별적인 노드들(16)이 조정된 동작 파라미터의 구현에 대해 선택될 수 있다.
마스터 값 필드(378) 및 슬래이브 값 필드(380)에서, 제약, 데이터 값 또는 다른 사용자 선택이 각각의 마스터 노드(16) 또는 슬래이브 노드들(16)에서 워크로드 컨테이너의 대응하는 동작 파라미터에 대한 조정 값을 제공한다. 속성 이름 필드(376)는 예시적으로는, 선택된 워크로드 컨테이너 모듈의 코드 모듈에서 참조되는 관련 동작 파라미터의 이름을 나열한다. 설명 필드(382)는 예시적으로는, 관련 동작 파라미터의 사용자에게 일반적인 설명을 디스플레이한다. 입력(386)은 사용자로 하여금 테이블(366)에 나열된 모든 동작 파라미터들을 선택 또는 선택해제하게 한다. 입력(388)은 사용자로 하여금 이전 선택 또는 파라미터 변경을 "반전(reverse)" 또는 "취소(undo)"하도록 하고, 입력(390)은 사용자로 하여금 필드들(374, 378 및 380)에 제공되는 값들을 디폴트 설정들로 리셋하게 한다.
테이블(366) 내의 사용자 선택들에 근거하여 워크로드 컨테이너 구성기(76)로 조정가능한 예시적인 동작 파라미터들은 노드(16)의 판독/기록(I/O) 동작들, 소팅 동작들, 노드(16)의 네트워크 소켓 동작(예컨대, TCP 소켓 연결)의 구성 및 워크로드 컨테이너의 파일 시스템(55)(예컨대, Apache Hadoop에 대한 HDFS)과 관련된 동작 파라미터들을 포함한다. 판독/기록 동작들과 관련된 동작 파라미터들은 예컨대, 노드(16)의 메모리 버퍼 사이즈 및 판독/기록 동작 동안 전송되는 데이터 블록의 사이즈를 포함한다. 테이블(366)의 행(368)에 예시적으로 도시된 메모리 버퍼 사이즈는 얼마나 많은 데이터가 노드(16)의 판독/기록(I/O) 동작들 동안 버퍼링(임시로 캐시에 저장)되는지에 대응한다. 예시된 실시예에서, 메모리 버퍼 사이즈는 노드 하드웨어의 메모리 페이지 또는 데이터 블록 사이즈의 배수이다. 본 명세서에 기술된 메모리 페이지 또는 데이터 블록은 노드(16)의 가상 메모리의 고정된 길이의 블록을 나타내며, 이는 메모리 할당 및 메모리 전달을 위해 사용되는 데이터의 가장 작은 단위이다. 도 19의 행(368)에서, 마스터 및 슬래이브 노드 값들은 예시적으로는 4096 비트로 설정되지만, 이들 값들은 8192 비트 또는 노드 프로세서(40)(도 2)의 데이터 블록 사이즈의 다른 적절한 배수로 조정될 수 있다. 유사하게, 판독/기록 동작들 동안 전달되는 데이터 블록의 사이즈는 또한, 테이블(366)로의 사용자 입력에 근거하여 조정가능하다.
소팅 동작들과 관련된 동작 파라미터들은 예컨대, 데이터를 소팅할 때 동시에 합쳐(merge)질 데이터 스트림들의 수를 포함한다. 워크로드 컨테이너의 파일 시스템(예컨대, 도 2의 파일 시스템(55))과 관련된 동작 파라미터들은 각각의 노드(16)의 메모리(42)에 저장된 파일 시스템 레코드들 또는 파일들의 수(예컨대, 행(370) 참조) 및 파일 시스템(55)에 대한 요청들을 프로세싱하기 위해 할당되는 각각의 노드(16)의 프로세싱 스레드들의 수를 포함한다. 비록 다른 적절한 레코드 한계들이 입력될 수 있지만, 테이블(366)의 예시적인 행(370)에서, 도 2의 파일 시스템(55)에 대한 메모리(42)에 저장된 레코드들의 수는 마스터 및 슬래이브 노드들(16) 모두에 대해 100000개의 레코드들이다. 일 실시예에서, 파일 시스템 레코드들의 수를 제한하는 것은 파일 시스템(55)에 의한 파일들의 복제를 제한하는 역할을 한다.
본 명세서에 기술된 TCP 네트워크 소켓과 같은 네트워크 소켓의 구성 및 동작과 관련된 동작 파라미터들은 네트워크 소켓과 워크로드 컨테이너의 인터랙션(interaction)을 수반한다. 예를 들어, 네트워크 소켓의 통신 지연 또는 레이턴시 및 네트워크(18)(도 1)를 통해 전송된 패킷들의 수가 조정될 수 있다. 예를 들어, 테이블(366)의 행(372)은 노드(16)의 TCP 소켓 연결을 통해 전송되는 데이터 패킷들의 레이턴시 및 수를 조정하기 위해, 알고리즘, 예시적으로는 이 기술분야에 알려진 "Nagle의 알고리즘"의 필드들(378, 380)을 통한 활성화/비활성화를 할 수 있다. 네트워크 소켓의 동작과 관련된 다른 적절한 동작 파라미터들이 조정될 수 있다.
워크로드 컨테이너 구성기(76)에 의해 조정가능한 다른 예시적인 동작 파라미터는 노드(16)의 프로세서(40)에 의해 동시에 실행되는 소프트웨어 태스크들의 수를 포함한다. 예를 들어, 사용자는 테이블(366)로의 입력을 통해 워크로드 실행 동안 동시에 실행할 태스크들(예컨대, 자바 태스크들)의 수를 특정할 수 있고, 워크로드 컨테이너 구성기(76)는 상응하게 태스크들의 수를 조정한다. 워크로드 컨테이너와 관련된 다른 적절한 동작 파라미터들이 조정가능할 수 있다.
도 20의 커스텀 탭(358)을 참조하면, 추가적인 구성 조정들이 상기 선택된 워크로드 컨테이너 모듈의 추가적인 커스토마이징을 할 수 있게 하도록 선택된 워크로드 컨테이너 모듈(예시적으로는 Hadoop 워크로드 컨테이너 모듈)에 대해 구현될 수 있다. 워크로드 컨테이너 구성기(76)는 또한, 필드들(392, 394 및 396)로의 커맨드 스트링 입력 및 대응하는 선택가능 박스들(398)의 사용자 선택에 근거하여 선택된 워크로드 컨테이너 모듈의 구성을 조정한다. 예시된 실시예에서, 이 필드들(392, 394, 396)의 각각은, Hadoop 마스터 노드, Hadoop 파일 시스템 및, 태스트 트랙커 내의 태스트들의 수, 임시 데이터를 위치시킬 곳의 로컬 디렉토리, 및 다른 적절한 파라미터들과 같은 맵-감소 실행과 관계된 파라미터들에 각각 적용되는 구성들을 특정한다.
다른 이용가능한 워크로드 컨테이너 모듈들(예컨대, Memcached, Cassandra, Darwin Streaming 등)과 관련된 동작 파라미터들이 Hadoop 워크로드 컨테이너 모듈의 경우에 기술된 바와 유사하게 조정된다. 모듈(208)의 입력(352) 및 탭들(354, 356, 358)을 통해 제공된 구성 정보에 근거하여 선택되는 워크로드 컨테이너 모듈에 근거하여, 워크로드 컨테이너 구성기(76)는 노드 클러스터(14)의 노드들(16) 상으로 로딩하기 위한 워크로드 컨테이너 이미지 파일(94)(도 3)을 생성한다. 일 실시예에서, 워크로드 컨테이너 이미지 파일(94)은 제어 서버(12)의 메모리(90) 또는 노드들(16)의 메모리(42)에 저장되며, 워크로드 컨테이너 구성기(76)는 구성 정보로 이미지 파일(94)을 업데이트한다. 일 실시예에서, 워크로드 컨테이너 모듈의 복수의 구성들이 저장되고, 그 다음 예컨대, 워크로드 및 시스템 성능의 워크로드 컨테이너 구성 변경들의 영향을 탐색하기 위해 시퀀스로 실행될 수 있다.
도 21을 참조하면, 워크로드 컨테이너 구성기(76)는 모듈(208)의 "커스텀" 탭의 입력들(353, 401)의 사용자 선택에 근거하여 노드들(16) 상에서의 실행을 위해 사용자 정의 커스텀 워크로드 컨테이너 모듈을 선택한다. 예시된 실시예에서, 커스텀 워크로드 컨테이너 모듈은, 본 명세서에 기술된 바와 같이, 사용자에 의해 제공되고 상업적으로 이용가능하지 않을 수 있는 워크로드 컨테이너 모듈을 포함한다. 워크로드 컨테이너 구성기(76)는 예시적으로는, 워크로드 컨테이너 코드 모듈을 포함하는 압축된 집(zip) 파일을 로딩한다. 특히, 집 파일은 노드 클러스터(14) 상에서의 워크로드의 실행을 조정하기 위해 사용자 정의 파라미터들을 포함하는 구성 파일 또는 스크립트를 포함한다. 도 21에 도시된 바와 같이, 테이블(400)은, 제어 서버(12)(또는 컴퓨터(20))에 저장되고 선택가능한 입력(들)(401)을 통한 사용자 선택에 이용가능한 로딩된 커스텀 워크로드 컨테이너 모듈들의 리스트를 제공한다. 추가적인 커스텀 워크로드 컨테이너 모듈들이 입력들(402, 404) 각각의 사용자 선택에 근거하여 업로드 또는 다운로드되고 테이블(400)에 디스플레이되며, 커스텀 워크로드 컨테이너 모듈은 입력(403)의 사용자 선택에 근거하여 테이블(400)로부터 삭제된다. 사용자는 각각의 필드들(406, 408)을 통해 집 폴더 경로 및/또는 구성 스크립트 경로를 입력할 수 있다. 일 실시예에서, 커스텀 워크로드 컨테이너 모듈은 클라우드 컴퓨팅 시스템(10)으로부터 원격으로 예컨대, 컴퓨터(20)(도 1)의 메모리(34) 상에 저장되며, 입력(402)의 사용자 선택에 근거하여 제어 서버(12)의 메모리(90)(도 3) 상으로 업로드된다.
도 22를 참조하면, 워크로드 구성 모듈(210)이 선택된다. 모듈(210)로의 사용자 입력에 근거하여, 워크로드 구성기(78)(도 3)는 노드 클러스터(14)에 의해 선택된 워크로드 컨테이너 모듈로 실행하기 위한 워크로드를 선택 및 구성하도록 동작가능하다. 워크로드 구성기(78)는 또한, 선택된 워크로드 컨테이너 모듈로 노드들(16) 상에서 실행되는 사용자 정의 워크로드 파라미터들에 근거한 합성 테스트 워크로드를 생성하도록 동작가능하다. 모듈(210)은 워크로드 탭(410), 합성 커널 탭(412), MC-블래스터 탭(414), 설정 라이브러리 탭(416) 및 CloudSuite 탭(417)을 포함하는 여러 선택가능한 탭들을 포함한다. 도 22의 워크로드 탭(410) 하에서, 실행될 워크로드는 예시적으로는, 선택가능한 입력들(418, 424, 및 428)을 포함하여 선택가능한 워크로드 데이터의 사용자 선택에 근거하여 워크로드 구성기(78)에 의해 선택된다. 이용가능한 워크로드들은 예시적으로는, Hadoop 워크로드 컨테이너(입력(418)) 상에서 실행에 적응된 워크로드, Memcached 워크로드 컨테이너(입력(424)) 상에서 실행에 적응된 워크로드 또는 예컨대, 커스텀 워크로드(입력(428))와 같은 선택된 워크로드 컨테이너를 위해 구성된 어떤 다른 적절한 워크로드를 포함한다.
도 22를 참조하면, Hadoop 워크로드는 대응하는 입력들(418) 중 하나의 사용자 선택에 근거하여 실제 워크로드 및 합성 테스트 워크로드로부터 선택된다. Hadoop 워크로드 컨테이너의 맵 감소 기능에 적응된 미리 정의된 코드 모듈을 포함하는 실제 워크로드는 필드(422) 내의 실제 워크로드의 저장 위치의 식별에 근거하여 제어 서버(12) 상으로 로딩된다. 일 실시예에서, 실제 워크로드는 도 1의 메모리(34)와 같이 클라우드 컴퓨팅 시스템(10)으로부터 원격에 있는 메모리 상에 저장되고 필드(422)를 통해 제어 서버(12)의 메모리(90)에 업로드된다. 다른 실시예에서, 실제 워크로드는 Hadoop 워크로드 컨테이너 모듈로 제공되는 샘플 Hadoop 워크로드이거나 또는 제어 서버(12) 상으로 미리 로딩되는 다른 워크로드이다. 합성 테스트 워크로드는 또한, Hadoop 워크로드 컨테이너 상에서의 실행을 위해 대응하는 입력(418)의 사용자 선택에 근거하여 선택가능하다. 합성 테스트 워크로드로 생성될 그리고 합성 테스트 워크로드의 "맵" 페이즈에서 프로세스될 입력 레코드들 또는 명령들의 수는 본 명세서에 기술된 바와 같이 필드(420)를 통해 입력되고 워크로드 구성기(78)(도 3)의 합성기(79)로의 입력으로 제공될 수 있다. 합성기(79)에 의한 합성 테스트 워크로드의 생성을 위한 다른 입력 파라미터들은 본 명세서에 기술된 바와 같이 합성 커널 탭(412)을 통해 구성된다. 합성 테스트 워크로드는 예시적으로는, Hadoop 워크로드 컨테이너로 실행하기 위해 적응되지만, 합성 테스트 워크로드들은 또한, 다른 이용가능한 워크로드 컨테이너들에 대해 선택 및 생성될 수 있다.
커스텀 스트립트가 필드(430)를 통해 그리고 입력(428)의 사용자 선택 시 선택된 워크로드 컨테이너 모듈로 실행하기 위한 미리 정의된 실제 워크로드로서 로딩된다. 커스텀 스크립트는 노드 클러스터(14)에 의해 선택된 워크로드 컨테이너 모듈로 실행되는 하나 이상의 실행 커맨드들을 포함하는 사용자 제공 코드를 포함한다. 예시된 실시예에서, 커스텀 스크립트는 본 명세서에 기술된 바와 같이, 배치 프로세서(80)를 이용한 시스템 테스팅 동안 실행되는 워크로드로서 사용되며, 다양한 네트워크, 워크로드 컨테이너 및/또는 다른 시스템 구성 변경들이 시스템 성능의 영향들을 모니터링하기 위해 순차적인 워크로드 실행들 동안 이루어진다.
미리 정의된 워크로드는 또한, 입력(424)의 사용자 선택에 근거하여 Memcached 워크로드 컨테이너로 실행하기 위해 로딩될 수 있다. 일 실시예에서, Memcached 워크로드는 "셋(set)" 커맨드들을 통해 키-값 쌍들을 저장하고 그리고 "겟(get)" 커맨드들을 통해 키-값 쌍들을 검색하는 인-메모리 가속 구조(in-memory acceleration structure)를 포함한다. 키-값 쌍은 데이터의 아이템에 대한 식별자인 키(key) 및 키로 식별되는 데이터이거나 그 데이터의 위치에 대한 포인터인 값(value)을 포함하는 두개의 링킹된 데이터 아이템들의 세트이다. Memcached 워크로드는 예시적으로는, 필드(426)로의 입력 값에 근거하여 런 타입이 선택되는 선택가능 MC-블래스터 툴로 동작된다. MC-블래스터는 다수의 네트워크(예컨대, TCP) 소켓 연결들 상에서 Memcached로부터 레코드들을 판독/기록하기 위한 요청을 생성함으로써 테스트 하의 시스템을 시뮬레이션하기 위한 툴이다. 각각의 요청은 키 및 값을 특정한다. MC-블래스터 툴은 도 24의 MC-블래스터 탭(414)을 통해 구성된다. 도 24를 참조하면, 필드(460)로의 입력은 프로세싱 스레드 당 활용할 TCP 연결들의 수를 특정하고, 필드(462)로의 입력은 온 동작할 키들의 수를 특정하며, 필드들(464 및 466)로의 입력은 초 당 전송되도록 요구되는 '겟' 및 '셋' 커맨드들의 수를 각각 특정한다. 사용자 특정형(커스텀) 버퍼 사이즈가 대응하는 입력(469)의 선택 및 필드(468) 내로 입력되는 값에 근거하여 워크로드 구성기(78)에 의해 구현될 수 있고, TCP 요청이 "온(on)" 입력(470)의 선택에 근거하여 지연될 수 있다. 시작할 프로세싱 스레드들의 수가 대응하는 입력(473)의 사용자 선택 및 필드(472)에 입력되는 값에 근거하여 워크로드 구성기(78)에 의해 커스토마이징될 수 있다. 프로세싱 스레드들의 디폴트 수는 노드(16)의 활성 프로세싱 코어들의 수와 동일하다. UDP 리플레이 포트들의 수는 필드(474)의 입력에 근거하여 선택되며, 워크로드 실행으로부터 비롯되는 저장된(또는 리턴된) 값의 (비트단위) 사이즈는 필드(476)로의 입력에 근거하여 선택된다.
도 23을 참조하면, 합성 테스트 워크로드는 합성 커널 탭(412)을 통해 제공되는 사용자 입력에 근거하여 합성기(79)에 의해 생성된다. 특히, 워크로드 구성기(78)(도 3)의 합성기(79)는 코드 모듈, 예시적으로는 트레이스 파일(예컨대, 구성 파일)에 제공되는 사용자 정의 파라미터들에 근거하여 합성 테스트 워크로드를 생성하며, 상기 코드 모듈은 제어 서버(12)의 메모리(90) 상으로 로딩된다. 트레이스 파일은 본 명세서에 기술된 바와 같이, 합성 테스트 워크로드의 요구되는 컴퓨팅적 특성들을 기술하는 데이터를 포함한다. 도 23의 "합성" 입력(434)의 사용자 선택 시, 저장된 트레이스 파일의 위치는 필드(436) 또는 필드(438)로의 사용자 입력에 근거하여 식별될 수 있다. 필드(436)는 예시적으로는, 트레이스 파일을 포함하는 하드 디스크 위치(예컨대, 도 1의 컴퓨터(20)의 메모리(34))를 식별하고, 필드(438)는 예시적으로는, 트레이스 파일을 검색하기 위한 웹 어드레스 또는 URL을 식별한다. 테이블(440)은 로딩되고 선택을 위해 이용가능한 트레이스 파일들 및 이전에 생성된 합성 테스트 워크로드들을 디스플레이한다. 트레이스 파일은 입력(442)의 사용자 선택으로 테이블(440)에 로딩되고 디스플레이되며, 입력(444)의 사용자 선택으로 테이블(440)로부터 삭제되고, 그리고 입력(446)의 사용자 선택에 근거하여 (예컨대, 필드(438)에 식별된 URL로부터) 다운로드된다. 비록 다른 적절한 파일 타입들이 제공될 수 있지만, 트레이스 파일은 예시적으로는, JSON 파일 포맷이다. 합성 테스트 워크로드에 생성될 명령들의 최대 수는 필드(448)에 식별되며, 생성된 합성 테스트 워크로드의 반복(iteration)들의 최대 수는 필드(450)에 식별된다. 대안적으로는, 이전의 생성된 합성 테스트 워크로드는 라이브러리 입력(432)의 사용자 선택, 필드(436 또는 438)를 이용한 합성 테스트 워크로드의 저장된 위치(로컬 하드 드라이브, 웹사이트, 등)의 식별, 및 테이블(440)에 디스플레이되는 요구되는 미리 생성된 합성 테스트 워크로드에 대응하는 입력(441)의 사용자 선택에 근거하여 워크로드 구성기(78)에 의해 로딩된다. 이전에 생성된 합성 테스트 워크로드의 명령들 및 반복들의 최대 수는 필드들(448, 450)로 조정가능하다.
트레이스 파일은 수정가능한 데이터 구조, 예시적으로는, 합성 테스트 워크로드를 생성하기 위해 합성기(79)에의해 입력으로 사용되는 워크로드 특성들 및 사용자 정의 파라미터들을 식별하며 수정가능한 필드들을 가지는 테이블을 포함한다. 상기 테이블은 사용자 인터페이스(200) 또는 사용자 컴퓨터(20)의 사용자 인터페이스와 같은 사용자 인터페이스 상에 디스플레이되어서, 테이블의 필드들은 테이블로의 사용자 입력 및 선택들에 근거하여 수정될 수 있다. 예컨대, 본 명세서에 기술된 도 32의 테이블(150)을 참조하라. 트레이스 파일은 또한, 합성기(79)에 의한 입력으로 사용되는 타겟 명령 설정 아키텍쳐(ISA)의 적어도 일부를 식별한다. 트레이스 파일은 또한, 명령간 의존도(예컨대, 제1 명령은 제1 명령을 실행하기 전에 제2 명령의 완료에 좌우된다), 메모리 레지스터 할당 제약들(예컨대, 특별한 레지스터로부터의 값을 취하도록 명령을 제약함), 및 아키텍쳐 실행 제약들(예컨대, 제한된 수의 로직 유닛들이 특별한 타입의 명령을 실행하기 위해 이용가능함)을 포함하여, 합성 워크로드의 명령들과 관련된 다른 특성들을 식별한다. 따라서, 구성기(22)는 트레이스 파일에 특정된 실행 특성들에 근거하여 얼마나 긴 워크로드 명령들이 실행하기 위해 취해져야 하는지를 예측하도록 동작가능하다.
트레이스 파일에 제시된 예시적인 사용자 정의 워크로드 파라미터들은 다음을 포함하는 바, 즉 생성될 명령들의 총 수, 예컨대 부동 소수점 명령(floating point instruction), 정수 명령 및 브랜치 명령(branch instruction)을 포함하는 생성될 명령들의 타입들, 예컨대 실행 흐름이 브랜치 오프할(branch off) 확률(즉, 명령 실행 동안 브랜치들이 택해질 가능성이 있는지 또는 실행이 실행 흐름 경로를 따라 지속되고 브랜치로 점프하지 않을 것인지의 여부)과 같은 명령 실행의 거동(예컨대, 실행 흐름), 명령들 간의 데이터 의존성들의 분산, 실행 및/또는 전달되는 기본 블록들의 평균 사이즈, 및 명령 실행과 관련된 레이턴시들(즉, 특별한 명령 또는 명령 타입이 실행을 위해 얼마나 많은 사이클들을 요하는지와 같은 명령 또는 명령 타입을 실행하기 위해 요구되는 시간의 길이)를 포함한다. 일 실시예에서, 사용자 정의 워크로드 파라미터들을 어느 특정 명령들이 정수 명령들 또는 부동 소수점 명령들로 사용할지를 특정한다. 일 실시예에서, 사용자 정의 워크로드 파라미터들은 각각의 명령 타입(예컨대, 정소, 부동 소수점, 브랜치)의 평균 수 및 통계적 분포를 특정한다. 일 실시예에서, 각각의 명령은 하나 이상의 입력 및 출력 인수들을 포함한다.
예시된 실시예에서, 트레이스 파일에 제시된 워크로드 파라미터들 및 명령 설정 아키텍쳐 데이터는 테이블-구동(table-driven) 레지스터가능한 방식으로 제공된다. 테이블의 컨텐츠의 변경들에 근거하여, 구성기(22)는 서로 다른 마이크로아키텍쳐들 및 시스템들뿐만 아니라 노드들(16)의 서로 다른 명령 설정 아키텍쳐들을 타겟화하도록 동작가능하다. 코드 합성기(79)에 입력될 사용자 정의 워크로드 파라미터들의 세트를 나타내는 데이터를 포함하는 예시적인 테이블(150)이 도 32에 도시된다. 도 32를 참조하면, 테이블(150)은 생성된 합성 테스트 워크로드에 대한 명령들의 콜렉션(collection)을 기술하는 명령 부분(152) 및 합성 테스트 워크로드로 이용될 어드레싱 모드들을 기술하는 어드레싱 모드 부분(154)을 포함한다. 예시된 것들에 추가적인 명령들 및 어드레싱 모드들이 테이블(150)에 제공될 수 있다. 테이블(150)의 명령 부분(152)은 여러 수정가능한 필드들(158, 160, 162, 164)을 포함한다. 필드(158)는 생성될 명령을 식별하는 데이터를 포함하고, 필드(160)는 명령과 관련된 컴퓨테이션 타입을 식별하는 데이터를 포함하며, 필드(162)는 합성기(79)에 의해 코드 생성을 보조하도록 할당된 연상기호(mnemonic)를 식별하는 데이터를 포함한다. 필드(164)는 서로 다른 어드레싱 모드들(즉, 명령들의 인수가 메모리로부터 획득되는 방식)을 식별하는 데이터를 포함한다.
예시된 실시예에서, 입력 커맨드(156)("gen_ops.initialize()")는 생성될 명령들에 제시되는 테이블(150)의 명령 부분(152)이 시작됨을 나타낸다. 라인(166)은 하나 이상의 명령들을 생성하기 위한 사용자 정의 워크로드 파라미터들의 일례를 도시한다. 라인(166)을 참조하면, 필드(158) 내로 입력되는 "D(IntShortLatencyArith)"는 짧은 레이턴시을 갖는 정수 산술 명령을 특정하고, 필드들(160, 162) 내로 입력되는 "op add" 및 "addq"는 명령이 추가 즉 "add" 명령임을 나타낸다. 일 실시예에서, 짧은 레이턴시는 프로세서(예컨대, 노드 프로세서(40)가 명령을 실행하기 위해 하나의 사이클 또는 몇몇의 사이클들을 소요함을 나타낸다. 필드(164)의 "addr reg0rw reg1r"는 제1 레지스터 0 인수가 "rw"(판독 및 기록)이고, 제2 레지스터 1 인수는 "r"(판독)임을 나타낸다. 유사하게, 필드(164)의 "addr reg0rw imm"는 제1 인수(레지스터 0 인수)가 "rw"(판독 및 기록)이고, 제2 인수가 "imm"("즉시(immediate)") 값(예컨대, 123과 같은 수사)인 명령의 다른 변형을 기술한다.
테이블(150)의 어드레싱 모드 부분(154)를 참조하면, 예시적인 라인(170)은 레지스터들 상에서만 동작하는 명령들의 클래스를 식별하는 필드(172)의 "addr _reg0w_reg1r"를 포함한다. 제1 레지스터 인수(즉, 레지스터 0)는 목적지 "w"(기록)이고, 제2 레지스터 인수(즉, 레지스터 0)는 입력 "r"(판독)이다. 필드들(174 및 176) 내의 입력들은 인수들을 식별하며 판독 인수에 대해 "src", 기록 인수에 대해 "dst" 또는 판독-수정-기록 인수에 대해 "rmw"를 나타낸다. x86 아키텍쳐에서, 예를 들어 제1 레지스터 인수는 "rmw"(인수가 판독되고, 동작되며, 그 다음 결과로 기록된다) 또는 다른 적절한 인수일 수 있다. 추가적인 또는 다른 사용자 정의 워크로드 파라미터들이 테이블(150)을 통해 특정될 수 있다.
일 실시예에서, 테이블(150)(예컨대, 트레이스 파일)은 예컨대, 가령 사용자 컴퓨터(20)로, 오프라인으로 생성되고, 구성기(22) 상으로 로딩된다. 일 실시예에서, 테이블(150)은 제어 서버(12) 상에 저장 또는 로딩되고, 사용자로 하여금 사용자 인터페이스(200)에 의해 디스플레이되는 선택가능 및 수정가능 데이터를 통해 사용자 정의 워크로드 파라미터들을 수정할 수 있게 하는 사용자 인터페이스(200)로 디스플레이된다.
도 33을 참조하면, 합성 워크로드를 생성 및 실행하기 위한 예시적인 프로세스 흐름이 도시된다. 본 명세서에 기술된 바와 같이, 합성 테스트 워크로드를 생성하고 각각의 노드(16)에 구성 파일(28) 및 합성 워크로드 이미지를 출력하는 코드 합성기(79)가 도시되고, 각각의 노드(16)의 합성 워크로드 엔진(58)은 합성 테스트 워크로드들을 실행시킨다. 도 32의 블록들(60, 62, 64)은 합성기(79) 내로 입력되는 트레이스 파일에 제공된 컨텐츠의 요약(abstract) 표시를 제공한다. 블록(60)은 명령 세트의 실행 흐름을 나타내는 일반 태스크 그래프이다. 블록(62)은 입력, 출력, 시작 및 종료 명령들을 포함하여 실행되는 태스크 기능들을 나타낸다. 블록(64)은 본 명세서에 기술된 데이터 블록 사이즈, 실행 지속 기간 및 레이턴시들, 메시지 전파, 및 다른 사용자 정의 파라미터들을 포함하는 워크로드 거동 파라미터들을 나타낸다.
합성기(79)는 예시적으로는, 코드 생성기(66) 및 코드 에미터(68)를 포함하며, 이들 각각은 본 명세서에 기술된 기능들을 수행하기 위해 프로세서(들)(22)에 의해 액세스가능한 메모리(예컨대, 메모리(90)) 상에 저장된 소프트웨어 또는 펌웨어 코드를 실행하는 제어 서버(12)의 하나 이상의 프로세서들(22)을 포함한다. 코드 생성기(66)는 사용자 정의 워크로드 파라미터들 및 타겟 명령 설정 아키텍쳐를 기술하는 트레이스 파일의 데이터 구조(예컨대, 테이블) 상에서 동작하고, 특정된 실행 속성들을 가지는 추출된 합성 코드를 생성한다. 코드 에미터(68)는 추출된 합성 코드로부터 실행가능한 합성 코드를 실행 환경에 적절한 포맷(예컨대, 실행 하네스(harness)에서 링킹될 어셈블리 코드, 이진 코드 또는 시뮬레이션 인프라스트럭쳐와 링킹될 위치 독립적인 코드(position-independent code), 등)으로 생성한다. 일 실시예에서, 실행가능한 코드의 요구되는 포맷은 합성기(79)에서 하드 코딩된다. 다른 실시예에서, 실행가능한 코드의 요구되는 포맷은 사용자 인터페이스(200)의 선택가능한 데이터를 통해 선택가능하다. 일 실시예에서, 실행가능한 코드는 전체 사이즈 워크로드들을 실행하도록 되어있지 않은 정확한 사이클의(cycle-accurate) 시뮬레이션들을 통해 코드가 실행될 수 있도록 사이즈가 컴팩트하다. 합성기(79)의 다른 적절한 구성들이 제공될 수 있다. 일 실시예에서, 합성기(79)는 노드 클러스터(14)의 노드들(16)의 컴퓨터 아키텍쳐 데이터로의 액세스를 가진다. 따라서, 합성기(79)는 노드 클러스터(14)의 알려진 컴퓨터 아키텍쳐 데이터에 근거하여 특정 마이크로아키텍쳐 및 명령 설정 아키텍쳐를 타겟화하는 합성 테스트 워크로드를 생성한다. 따라서, 합성 테스트 워크로드는 예컨대, 요구되는 아키텍쳐의 특성들의 세트를 활동시키도록(exercise) 타겟화될 수 있다.
합성기(79)에 의해 생성된 합성 테스트 워크로드는 노드들(16) 상에서 선택된 워크로드 컨테이너 모듈로 실행가능한 코드 모듈을 포함한다. 합성 테스트 워크로드가 실행을 위해 생성 및 선택되면, 합성 테스트 워크로드는 제어 서버(12)의 메모리(90)에 도 3의 워크로드 이미지 파일(96)로서 저장된다. 그 다음, 구성기(22)는 실행을 위해 각각의 노드(16) 상으로 워크로드 이미지 파일(96)을 로딩하고, 노드들(16)은 워크로드 이미지 파일(96)을 검색한다. 일 실시예에서, 선택된 Hadoop 워크로드 컨테이너 모듈의 경우, 합성 테스트 워크로드가 맵 감소의 "맵" 페이즈로서 실행된다.
예시된 실시예에서, 합성 테스트 워크로드는 본 명세서에 기술된 바와 같이 테스팅 및 성능 분석을 위해 컴퓨팅 시스템(10)의 하드웨어를 활동시키도록 실행된다. 합성기(79)는 트레이스 파일을 통한 입력으로서 요구되는 워크로드 거동을 수신하고 상기 입력에 따라 거동하는 합성 테스트 워크로드를 생성한다. 특히, 본 명세서에 기술된 바와 같이, 실행될 명령들의 수 및 명령들의 타입의 통계적 분포와 같은 요구되는 워크로드의 통계적 속성들은 합성기(79)로의 입력이다. 예를 들어, 로딩된 트레이스 파일은 1000 개의 명령들을 포함하는 프로그램 루프를 요청하는 사용자 정의 파라미터들을 포함할 수 있고, 트레이스 파일은, 명령들의 30%가 정수 명령들임과, 10%는 특별한 브랜치 구조를 가지는 브랜치 명령들임과, 40%는 부동 소수점 명령들임과, 기타 등등을 특정할 수 있다. 트레이스 파일(또는 도 23의 필드(450))는 루프가 100 번 실행될 것을 특정할 수 있다. 그 다음, 합성기(79)는 합성 테스트 워크로드로서 요청된 파라미터들을 포함하는 프로그램 루프를 생성한다.
일 실시예에서, 생성된 합성 테스트 워크로드는, 알려진 어플리케이션 또는 프로그램의 특정 사유(proprietary) 코드 또는 복합 코드와 같은 실제 워크로드의 거동을 에뮬레이션(emulate)하는 역할을 한다. 예를 들어, 일부 사유 코드는 사용자에게 액세스가능하거나 이용가능하지 않은 명령들을 포함한다. 유사하게, 일부 복합 코드는 복잡하고 많은(numerous) 명령들을 포함한다. 일부 예들에서, 이러한 사유 또는 복합 코드에 근거하여 워크로드를 생성하는 것은 바람직하지 못하거나 어려울 수 있다. 따라서, 사유 또는 복합 코드의 모든 명령들을 포함하는 워크로드 코드 모듈을 생성하기 보다는, 어떻게 사유 또는 복합 코드가 상기 사유 또는 복합 코드의 실행 동안 서버 하드웨어(노드(16) 또는 다른 서버 하드웨어)를 활동시키는지를 모니터링하기 위해 (예컨대, 구성기(22)로부터 오프라인인) 모니터링 툴들이 사용된다. 사유 코드의 실행 동안 모니터링 툴들에 의해 모여진 통계적 데이터는 사유 또는 복합 코드의 요구되는 실행 특성들을 나타내는 파라미터들을 식별하기 위해 사용된다. 파라미터들의 콜렉션은 트레이스 파일에 제공된다. 그 다음, 트레이스 파일은 합성기(79)로의 입력으로 로딩되고, 합성기(79)는 통게적 입력 및 다른 요구되는 파라미터들에 근거하여 사유 코드와 유사하게 거동하는 합성 코드를 생성한다. 따라서, 특별한 코드의 복합 또는 사유 명령들은 클라우드 컴퓨팅 시스템(10) 상에서 그 코드의 거동을 모델링하도록 요구되지 않는다.
일 실시예에서, 합성기(79)는 다양한 트레이스 파일로부터 합성기(79)에 의해 생성되는 복수의 합성 테스트 워크로드들을 실행하기 위해 배치 프로세서(80)와 연계하여 동작한다. 일 실시예에서, 합성 테스트 워크로드들은 노드들(16)의 서로 다른 타겟 프로세서들, CPU 및 GPU 모두를 테스트하는 테이블(예컨대, 도 32의 테이블(150))의 수정된 사용자 정의 워크로드 파라미터들에 근거하여 생성된다.
도 34는 선택된 워크로드로 클라우드 컴퓨팅 시스템(10)을 구성하기 위해 도 1 및 3의 제어 서버(12)의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(600)를 도시한다. 도 34의 설명 전반에서 도 1 및 3에 대한 참조가 이루어진다. 예시된 실시예에서, 구성기(22)는 사용자 인터페이스(200)를 통해 수신되는 복수의 사용자 선택들에 근거하여 도 34의 순서도(600)에 따라 도 1의 노드 클러스터(14)를 구성한다. 블록(602)에서, 워크로드 구성기(78)는 사용자 인터페이스(200)를 통해 수신되는 사용자 선택(예컨대, 입력들(418)의 선택들)에 근거하여, 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14) 상에서 실행하기 위한 워크로드를 선택한다. 블록(602)에서, 워크로드는 실제 워크로드 및 합성 테스트 워크로드를 포함하는 복수의 이용가능한 워크로드들로부터 선택된다. 실제 워크로드는 본 명세서에 기술된 바와 같이, 제어 서버(12)에 의해 액세스가능한 메모리(예컨대, 메모리(90) 또는 메모리(34))에 저장된 코드 모듈을 포함한다. 블록(604)에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 선택된 워크로드의 프로세싱이 노드들의 클러스터(14)에 걸쳐 분산되게끔 선택된 워크로드를 실행하도록 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)를 구성한다.
일 실시예에서, 구성기(22)는 선택가능한 실제 워크로드 데이터 및 선택가능한 합성 테스트 워크로드 데이터를 포함하는 사용자 인터페이스(200)를 제공하며, 워크로드의 선택은 선택가능한 실제 워크로드 데이터 및 선택가능한 합성 테스트 워크로드 중 적어도 하나의 사용자 선택에 근거한다. 예시적인 선택가능한 실제 워크로드 데이터는 "실제 워크로드"에 대응하는 도 22의 선택가능한 입력(418) 및 도 22의 선택가능한 입력들(424, 428)을 포함하고, 예시적인 선택가능한 합성 테스트 워크로드 데이터는 "합성 워크로드"에 대응하는 도 22의 선택가능한 입력(418) 및 도 23의 선택가능한 입력들(434, 436, 441)을 포함한다. 일 실시예에서, 워크로드 구성기(78)는 선택가능한 합성 테스트 워크로드의 사용자 선택에 근거하여, 미리 생성된 합성 테스트 워크로드 및 사용자 정의 워크로드 파라미터들의 세트 중 적어도 하나를 선택한다. 미리 생성된 합성 테스트 워크로드는 제어 서버(12)에 의해 액세스가능한 메모리(예컨대, 메모리(90) 또는 메모리(34))에 저장된 (예컨대, 라이브러리 입력(432)을 통해 로딩되는) 코드 모듈을 포함한다. 합성기(79)는, 예시적으로는 본 명세서에 기술된 트레이스 파일을 통해 제공되는, 사용자 정의 워크로드 파라미터들의 세트의 선택에 근거하여 합성 테스트 워크로드를 생성하도록 동작가능하다. 트레이스 파일의 사용자 정의 워크로드 파라미터들은 본 명세서에 기술된 바와 같이, 합성 테스트 워크로드의 실행 특성들을 식별한다.
본 명세서에 기술된 바와 같이, 예시적인 사용자 정의 워크로드 파라미터들은 합성 테스트 워크로드의 명령들의 수, 합성 테스트 워크로드의 명령의 타입, 합성 테스트 워크로드의 적어도 하나의 명령의 실행과 관련된 레이턴시, 및 합성 테스트 워크로드의 실행 반복들의 최대 수 중 적어도 하나를 포함하며, 명령의 타입은 정수 명령, 부동 소수점 명령 및 브랜치 명령 중 적어도 하나를 포함한다. 일 실시예에서, 노드 클러스터(14)에 의한 합성 테스트 워크로드의 실행은 본 명세서에 기술된 바와 같이, 복합 워크로드 또는 사유 워크로드와 같은 노드들의 클러스터(14)에 의한 실제 워크로드의 실행과 관련된 실행 특성들을 에뮬레이션하도록 동작가능하다.
도 35는 합성 테스트 워크로드로 클라우드 컴퓨팅 시스템(10)을 구성하기 위해 도 1 및 3의 제어 서버(12)의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(610)를 도시한다. 도 35의 설명 전반에서 도 1 및 3에 대한 참조가 이루어진다. 도시된 실시에에서, 구성기(22)는 사용자 인터페이스(200)를 통해 수신되는 복수의 사용자 선택들에 근거하여 도 35의 순서도(610)에 따라 도 1의 노드 클러스터(14)를 구성한다. 블록(612)에서, 워크로드 구성기(78)의 코드 합성기(79)는 사용자 인터페이스(200)를 통해 제공되는 사용자 정의 워크로드 파라미터들의 세트에 근거하여 노드들의 클러스터(14) 상에서의 실행을 위해 합성 테스트 워크로드를 생성한다. (예컨대, 트레이스 파일에 제공되는) 사용자 정의 워크로드 파라미터들의 세트는 본 명세서에 기술된 바와 같이, 합성 테스트 워크로드의 실행 특성들을 식별한다. 블록(614)에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 합성 테스트 워크로드의 프로세싱이 노드들의 클러스터에 걸쳐 분산되게끔 합성 테스트 워크로드를 실행하도록 합성 테스트 워크로드를 갖는 노드들의 클러스터(14)를 구성한다.
일 실시예에서, 합성 테스트 워크로드의 생성은 또한, 노드들의 클러스터(14)와 관련된 명령 설정 아키텍쳐 및 마이크로아키텍쳐 중 적어도 하나를 식별하는 컴퓨터 아키텍쳐 데이터에 근거한다. 본 명세서에 기술된 바와 같이, 일 실시예에서, 구성기(22)는, 구성기(22)가 노드들의 클러스터(14)의 각각의 노드(16)의 명령 설정 아키텍쳐 및 마이크로아키텍쳐를 식별할 수 있도록 메모리(예컨대, 메모리(90))에 컴퓨터 아키텍쳐 데이터를 저장한다. 따라서, 구성기(22)는 메모리에 저장된 컴퓨터 아키텍쳐 데이터에 근거하여 합성 테스트 워크로드가 노드 클러스터(14)의 노드들(16)의 특정 컴퓨터 아키텍쳐로 실행하기 위해 구성되도록 상기 합성 테스트 워크로드를 생성한다. 일 실시예에서, 코드 합성기(79)는 노드들의 클러스터(14)의 노드들(16)과 관련된 서로 다른 컴퓨터 아키텍쳐에 각각 근거하여 복수의 합성 테스트 워크로드들을 생성하며, 각각의 컴퓨터 아키텍쳐는 명령 설정 아키텍쳐 및 마이크로아키텍쳐 중 적어도 하나를 포함한다. 일 실시예에서, 구성기(22)는 선택가능한 합성 테스트 워크로드 데이터를 포함하는 사용자 인터페이스(200)를 제공하며, 워크로드 구성기(78)는 선택가능한 합성 테스트 워크로드 데이터의 사용자 선택에 근거하여 합성 테스트 워크로드의 생성을 위해 사용자 정의 워크로드 파라미터들의 세트를 선택한다. 예시적인 선택가능한 합성 테스트 워크로드는 "합성 워크로드"에 대응하는 도 22의 선택가능한 입력(418) 및 도 23의 선택가능한 입력들(434, 436, 441)을 포함한다. 일 실시예에서, 사용자 정의 워크로드 파라미터들의 세트는 사용자 인터페이스(예컨대, 사용자 인터페이스(200) 또는 컴퓨터(20)의 디스플레이(21) 상에 디스플레이되는 사용자 인터페이스) 상에 디스플레이되는 데이터 스트럭쳐(예컨대, 도 32의 테이블(150))에서 식별되고, 데이터 스트럭쳐는 도 32의 테이블(150)에 관하여 본 명세서에 기술된 바와 같이, 적어도 하나의 사용자 정의 워크로드 파라미터를 각각 식별하는 복수의 수정가능한 입력 필드들을 포함한다. 일 실시예에서, 구성기(22)는 사용자 인터페이스(200)를 통해 수신되는 사용자 선택(예컨대, 입력들(269 내지 276)을 이용한 부트 시간 파라미터들의 선택)에 근거하여 노드 클러스터(14)의 적어도 하나의 노드(16)의 수정된 하드웨어 구성을 선택한다. 일 실시예에서, 본 명세서에 기술된 바와 같이, 구성기(22)는 수정된 하드웨어 구성을 가지는 노드들의 클러스터(14) 상에서 합성 테스트 워크로드를 실행하도록 합성 테스트 워크로드를 갖는 노드들의 클러스터(14)를 구성하고, 수정된 하드웨어 구성은 결과적으로, 컴퓨팅 용량이 감소되는 것 및 적어도 하나의 노드(16)에서 메모리 용량이 감소되는 것 중 적어도 하나가 이루어지게 한다.
도 23을 다시 참조하면, 이전에 저장된 워크로드는 설정 라이브러리 탭(416)을 통해 로컬 메모리(예컨대, 도 3의 메모리(90))로부터 로딩될 수 있다. 설정 라이브러리 탭(416)을 통해 로딩된 워크로드는 실제 워크로드, 합성 테스트 워크로드, 커스텀 스크립트 또는 선택된 워크로드 컨테이너 모듈로 실행하기에 적절한 어떤 다른 워크로드를 포함할 수 있다. 로딩된 워크로드 구성은 사용자 인터페이스(200)의 모듈(210)로의 사용자 입력들에 근거하여 수정될 수 있다. 현재의 워크로드 구성은 또한, 설정 라이브러리 탭(416)을 통해 메모리(90)에 저장될 수 있다.
예시된 실시예에서, CloudSuite 워크로드 콜렉션이 또한, 탭(417)을 통해 로딩 및 구성될 수 있다. CloudSuite는 클라우드 시스템들을 특성화하기 위해 이용되는 전형적인 클라우드 워크로드들을 포함하는 워크로드들의 콜렉션이다.
도 25를 참조하면, 배치 프로세싱 모듈(212)이 선택된다. 모듈(212)로의 사용자 입력에 근거하여, 배치 프로세서(80)(도 3)는 복수의 워크로드들의 배치 프로세싱을 개시하도록 동작가능하다. 배치 프로세서(80)는 또한, 본 명세서에 기술된 바와 같이, 서로 다른 네트워크 구성들, 서로 다른 워크로드 컨테이너 구성들, 서로 다른 합성 워크로드 구성들 및/또는 서로 다른 노드 구성들(예컨대, 부트 시간 구성들, 등)과 같은 복수의 서로 다른 구성들을 가지는 하나 이상의 워크로드들의 실행을 개시하도록 동작가능하다. 사용자 입력에 근거하여, 배치 프로세서(80)는, 모든 워크로드들이 완료까지 실행되는 데 수동 개입이 요구되지 않게끔 노드 클러스터(14) 상에서 시퀀스로 각각의 워크로드 및/또는 구성의 실행을 개시한다. 또한, 배치 프로세서(80)는 사용자 인터페이스(200)의 모듈(212)을 통해 수신되는 사용자 설정들에 근거하여 복수 번 실행되도록 하나 이상의 워크로드들을 구성할 수 있다. 배치 프로세서(80)는 배치로서 실제 워크로드들 및/또는 합성 테스트 워크로드들을 실행하도록 동작가능하다. 예시된 실시예에서, 성능 데이터는 예컨대, 도 47 및 48에 관하여 본 명세서에 기술된 바와 같이, 자동 시스템 튜닝을 하게 하는 워크로드들의 배치 프로세싱으로부터 모니터링 및 취합된다.
워크로드들 및/또는 구성들의 배치를 위한 실행들의 수는 반복 카운트 필드(480)를 통해 특정된다. 필드(480)로의 사용자 입력에 근거하여, 배치 프로세서(80)는 특정 수의 반복들로 하나 이상의 워크로드들을 실행한다. 배치 시퀀스 테이블(482)은 노드 클러스터(14)에 의해 실행될 배치 잡들을 나열하는 디스플레이 데이터를 포함한다. 배치 잡은 (예컨대, 필드(480)로의 입력에 근거하여 특정된) 특정 횟수로 실행하도록 되어 있는 하나 이상의 워크로드들을 포함한다. 일 실시예에서, 배치 잡은 특정 횟수로 하나 이상의 워크로드들을 실행하도록 되어 있는 하나 이상의 클라우드 시스템 구성들을 포함한다. 단 하나의 배치 잡이 테이블(482)에 나열되지만, 복수의 배치 잡들이 테이블(482)에 추가될 수 있다. 배치 프로세서(80)는 나열된 배치 잡(들)에 대응하는 입력(들)(483)의 사용자 선택에 근거하여 실행하기 위한 나열된 배치 잡(들)을 선택한다. 일 실시예에서, 선택된 배치 잡들은 이들이 테이블(482)에 나열된 순서의 시퀀스로 실행된다. 배치 잡은 예시적으로는, JSON 파일 포맷이지만, 다른 적절한 포캣들이 사용될 수 있다. 테이블(482)에 나열된 배치 잡들은 입력들(484, 486, 488)의 사용자 선택에 근거하여 각각 편집, 추가 및 삭제된다. 배치 시퀀스의 순서는 테이블(482)에 디스플레이되는 시퀀스로 다른 위치에 선택된 배치 잡을 이동시키기 위해 입력들(490, 492)의 사용자 선택에 근거하여 조정가능하다. 배치 시퀀스 및 배치 잡의 실행과 관련된 다른 설정들은 선택가능한 입력(494)을 통해 메모리(예컨대, 메모리(34) 또는 메모리(90))로부터 로딩될 수 있고, 현재 구성된 배치 시퀀스는 선택가능한 입력(496)을 통해 메모리(예컨대, 메모리(34) 또는 메모리(90))에 저장된다. 입력들(484 내지 496)은 예시적으로는 선택가능한 버튼들이다.
도 26을 참조하면, 모니터링 모듈(214)이 선택된다. 모듈(214)로의 사용자 입력에 근거하여, 데이터 모니터 구성기(82)(도 3)는 노드 클러스터(14) 상에서 워크로드의 실행 동안 성능 데이터를 모니터링 및 수집하기 위해 사용되는 하나 이상의 데이터 모니터링 툴들을 구성하도록 동작가능하다. 데이터 모니터 구성기(82)는 노드(16), 워크로드, 워크로드 컨테이너 및/또는 네트워크(18)의 성능에 관계된 데이터를 모니터링하는 모니터링 툴들을 구성하도록 동작가능하다. 일 실시예에서, 데이터 모니터 구성기(82)에 의해 구성되는 모니터링 툴들은 상업적으로 이용가능한 모니터링 툴들 및 사용자에 의해 제공되는 커스텀 모니터링 툴들을 포함한다. 모니터링 툴들은 클라우드 컴퓨팅 시스템(10) 내의 복수의 소스들 및 다른 이용가능한 노드들(16)로부터 데이터를 수집한다. 예를 들어, 모니터링 툴들은 커널-모드 측정 에이전트(46) 및 사용자-모드 측정 에이전트(50)를 포함하고, 이들은 각각의 노드(16)(도 2)에서 데이터를 수집한다. 제어 서버(12)는 또한, 노드 클러스터(14) 상에서 네트워크 및 컴퓨팅 성능을 모니터링하도록 동작가능한 하나 이상의 모니터링 툴들을 포함한다. 일 실시예에서, 사용자 입력(예컨대, 도 27의 필드들(530, 532)의 입력)에 근거하여, 데이터 모니터 구성기(82)는 모니터링 툴(들)이 노드들(16)로부터 데이터를 모니터링하는 샘플링 레이트를 특정한다. 데이터 모니터 구성기(82)는 각각의 노드(16) 상에 제공되는 Apache Hadoop 모니터링 툴(탭(500)), 제어 서버(12) 상에 제공되는 Ganglia 툴(탭(502)), 각각의 노드(16) 상에 제공되는 SystemTap 툴(탭(504)), 및 하나 이상의 노드들(16) 상에 제공되는 가상 메모리 통계 및 I/O 통계 모니터링 툴들(탭(506))을 포함하는 복수의 데이터 모니터링 툴들의 동작을 구성 및 개시하도록 동작가능하다.
Hadoop 모니터링 툴은 Hadoop 워크로드 컨테이너 모듈이 노드들(16) 상에서 실행을 위해 선택될 때 워크로드 컨테이너 레벨에서 노드들(16)의 성능을 모니터링한다. Hadoop 모니터링 툴은 도 26에 식별된 모니터링 구성에 근거하여 Hadoop 워크로드 컨테이너 모듈의 성능과 관련된 데이터를 모니터링하도록 Hadoop 워크로드 컨테이너 모듈을 가진 각각의 노드(16) 상으로 구성기(22)에 의해 로딩된다. 도 26에 도시된 바와 같이, Hadoop 모니터링 툴과 관련된 다양한 모니터링 파라미터들은 여러 수정가능한 필드들 및 드롭 다운 메뉴들로의 사용자 입력에 근거하여 데이터 모니터 구성기(80)에 의해 구성된다. 수정가능한 모니터링 파라미터들은 (드롭 다운 메뉴(508)로의 입력에 근거하여 선택되는) 디폴트 로그 레벨, (필드(510)로의 입력에 근거하여 선택되는) 수집된 데이터의 최대 파일 사이즈, (필드(512)로의 입력에 근거하여 선택되는) 수집된 데이터의 모든 파일들의 총 사이즈, (드롭 다운 메뉴(514)로의 입력에 근거하여 선택되는) Hadoop 워크로드 컨테이너의 JobTracker 툴의 로그 레벨, (드롭 다운 메뉴(516)로의 입력에 근거하여 선택되는) Hadoop 워크로드 컨테이너의 TaskTracker 툴의 로그 레벨, 및 (드롭 다운 메뉴(518)로의 입력에 근거하여 선택되는) Hadoop 워크로드 컨테이너의 FSNamesystem 툴의 로그 레벨을 포함한다. 로그 레벨은 정보("INFO"), 경고(warning)들, 에러들, 등과 같은 Hadoop 모니터링 툴을 통해 수집할 데이터의 타입을 식별한다. Hadoop 워크로드 컨테이너의 JobTracker, Tasktracker, 및 FSNamesystem 툴들은 예컨대, 마스터 노드(16)에서 워크로드의 개시 및 완료, 파일 시스템(55)(도 2)과 관련된 메타데이터 및 작업자 노드들(16)에서 맵 및 감소 태스크들의 개시를 포함하는 데이터 모니터 구성기(82)에 의해 트랙킹되는 다양한 프로세스들 및 데이터를 포함한다. 다른 적절한 데이터가 또한 Hadoop 모니터링 툴로 수집될 수 있다.
도 27을 참조하면, Ganglia 모니터링 툴은 또한, 데이터 모니터 구성기(82)에 의해 구현되는 모니터링 구성에 근거하여 클라우드 컴퓨팅 시스템(10)의 성능 데이터를 모니터링 및 수집하도록 동작가능하다. Ganglia는 이력 통계들을 보여주는 그래프들 및 챠트들뿐만 아니라 시스템 성능의 (제어 서버(12)를 통한) 원격 라이브 보기(remote live veiwing)를 제공하는 알려진 시스템 모니터링 툴이다. 예시된 실시예에서, Ganglia 모니터링 툴은 데이터 모니터 구성기(82)에 제공되는 구성 데이터에 근거하여 제어 서버(12) 상에서 실행된다. Ganglia로 모니터링되는 예시적인 데이터는 워크로드 실행 동안 노드 프로세서(40)(CPU)의 프로세싱 로드 평균, 워크로드 실행 동안 노드 프로세서들(40) 및 네트워크(19)의 활용(utilization)(예컨대, 스톨(stall) 또는 비활성 시간, 프로세싱에 소모한 시간의 퍼센티지, 대기에 소모한 시간의 퍼센티지, 등) 및 다른 적절한 데이터를 포함한다. Ganglia 모니터링 툴은 선택가능한 입력들(520)의 사용자 선택에 근거하여 데이터 모니터 구성기(82)에 의해 인에이블(enable) 및 디스에이블(disable)되며, 유니캐스트 또는 멀티캐스트 통신 모드가 선택가능한 입력들(522)의 사용자 선택에 근거하여 데이터 모니터 구성기(82)에 의해 선택된다. Ganglia과 관련된 다른 구성가능한 모니터링 파라미터들은 (필드(524)로의 입력에 근거하여 선택되는) 수집된 데이터의 생성된 그래프의 데이터 리프레시 간격, (필드(526)로의 입력에 근거하여 선택되는) 클린업(cleanup) 임계, 및 (필드(528)로의 입력에 근거하여 선택되는) 메타데이터를 전송하기 위한 간격을 포함한다. 필드들(524, 526, 및 528) 내로 입력되는 데이터는 예시적으로는 초 단위이다. 데이터 모니터 구성기(82)는 노드 프로세서(40)(CPU), (예컨대, 실행되고 있는 워크로드와 관련된)노드들(16) 상의 프로세싱 로드, 노드 메모리(42)의 사용, 통신 네트워크(18) 상의 노드들(16)의 네트워크 성능 및 각각의 노드(16)의 하드 디스크 사용과 관련된 데이터를 워크로드 실행 동안 수집하기 위해 각각의 필드들(530, 532) 내로 입력되는 값들(예시적으로는 초 단위)에 근거하여 콜렉션(즉, 샘플링) 간격 및 전송 간격들을 조정하도록 동작가능하다.
SystemTap 툴은, 클라우트 컴퓨팅 시스템(10)의 노드들(16)과 관련된 데데이터를 추출, 필터링 및 요약하도록 동작가능한 SystemTap 모니터링 소프트웨어를 포함하는 커널-모드 측정 에이전트(46)(도 2)이다. 일 실시예에서, SystemTap 툴은 각각의 노드(16) 상에서 실행된다. SystemTap은 리눅스 기반의 운영 체제들로 구현된다. SystemTap은 커스토마이징된 모니터링 스크립트가 예컨대, 샘플링 레이트 및 히스토그램들의 생성 및 디스플레이를 포함하는 커스토마이징된 모니터링 구성들을 갖는 각각의 노드(16) 상으로 로딩되게 할 수 있다. 도 28에 도시된 바와 같이, 선택된 "스크립트" 탭의 경우, SystemTap은 입력들(536)의 사용자 선택에 근거하여 데이터 모니터 구성기(82)에 의해 인에이블 또는 디스에이블된다. SystemTap 스크립트 파일은 각각의 입력들(버튼들)(540)의 사용자 선택에 근거하여, 제어 서버(12)에 다운로드되거나, 테이블(538) 내의 디스플레이를 위해 추가되거나, 또는 데이터 모니터 구성기(82)에 의해 테이블(538) 내의 디스플레이로부터 제거/삭제된다. 테이블(538)은 대응하는 입력(들)(539)의 사용자 선택에 근거하여 선택에 이용가능한 스크립트 파일들을 나타내는 디스플레이 데이터를 포함한다. 데이터 모니터 구성(82)은 구성기(22)에 의한 클라우드 구성의 배치 시 각각의 노드(16) 상으로 테이블(538)의 선택된 스크립트 파일을 로딩한다. 다른 적절한 구성 옵션들은 예컨대, 디스크 I/O, 네트워크 I/O 및 진단(diagnostic)들의 구성을 포함하는 SystemTap 모니터링 툴에 대한 탭들(534)을 통한 선택들 및 사용자 입력에 근거하여 이용가능하다.
도 29를 참조하면, I/O 시간 탭(506)은 하나 이상의 노드들(16) 상에 로딩되는 가상 메모리 통계들(VMStat) 및 및 입력/출력 통계들(IOStat)을 포함하는 추가적인 모니터링 툴들을 구성하기 위해 사용자 액세스를 제공한다. VMStat는 예컨대, 운영 체제로 제어되는 시스템 및 블록 I/O의 이용가능성 및 활용, 프로세스들의 성능, 인터럽트들, 페이징, 등과 관련된 데이터를 수집한다. 예를 들어, VMStat는 시스템 메모리의 활용, 예컨대 시스템 메모리 및/또는 메모리 제어기가 판독/기록 동작들을 바쁘게(busy) 수행하거나 또는 대기하는 시간의 양 또는 퍼센트와 관련된 데이터를 수집한다. IOStat는 예컨대, 운영 체제로 제어되는 저장 I/O의 통계들(예컨대, 활용, 이용가능성, 등)과 관련된 데이터를 수집한다. 예를 들어, IOStat는, 대응하는 노드(16)의 프로세서(40)의 프로세싱 코어들이 명령들을 바쁘게 실행하거나 또는 명령들을 실행하기 위해 대기하는 시간의 퍼센티지와 관련된 데이터를 수집한다. VMStat 및 IOStat는 각각의 입력들(546, 548)의 대응하는 사용자 선택에 근거하여 데이터 모니터 구성기(82)에 의해 인에이블/디스에이블되며, 샘플링 레이트(즉, 리프레시 간격)는 필드들(550, 552) 내로 입력되는 값들(예시적으로는 초 단위)에 근거하여 데이터 모니터 구성기(82)에 의해 선택된다. 대응하는 "인에이블된" 입력들(546, 548)의 사용자 선택 및 탭(506)의 필드들(550, 552) 내로 입력된 값들에 근거하여, 데이터 모니터 구성기(82)는 VMStat 및 IOStat 모니터링 툴들을 구성하고, 구성기(22)는 대응하는 "인에이블된" 입력들(546, 548)의 사용자 선택 시 각각의 노드(16) 상으로 툴들을 로딩한다.
데이터 모니터링 구성기(82)와 함께 구성되는 모니터링 툴들은 시스템 성능을 모니터링하기 위해 클라우드 컴퓨팅 시스템(10)에 대해 동적 인스투르먼테이션(instrumentation)을 제공하도록 협동(cooperate)한다. 구성된 모니터링 툴들을 통해 수집되는 데이터에 근거하여, 구성기(22)는 본 명세서에 기술된 바와 같이, 예컨대 시스템 병목(bottleneck)들을 진단하고 최적 시스템 구성들(예컨대, 하드웨어 및 네트워크 구성들)을 결정하도록 동작가능하다. 또한, 데이터 모니터 구성기(82)는 각각의 모니터링 툴을 구성하기 위해 사용되는 사용자 입력을 수신하고 각각의 툴로부터 모니터링된 데이터를 디스플레이하기 위해 사용자 인터페이스(200) 상에 모니터링 모듈(214)을 디스플레이함으로써 공통 사용자 인터페이스를 제공한다.
도 30을 참조하면, 선택가능한 데이터를 포함하는 제어 및 상태 모듈(216)이 선택된다. 모듈(216)로의 사용자 입력에 근거하여, 구성기(22)는 각각의 노드(16) 상으로 로딩되는 복수의 구성 파일들(28)을 생성함으로써 노드 클러스터(14)에 대한 시스템 구성을 런칭(launch)(즉, 배치)하도록 동작한다. 구성기(22)는 선택가능한 입력(560)의 사용자 선택에 근거하여 현재 시스템 구성의 배치(즉, 모듈들(202 내지 216)로 현재 식별되는 시스템 구성)을 개시한다. 구성기(22)의 배치 프로세서(80)는 선택가능한 입력(562)의 사용자 선택에 근거하여, 하나 이상의 워크로드들 및/또는 구성들의 배치 프로세싱, 즉, 도 25의 테이블(482)에 식별되는 배치 시퀀스를 개시한다.
구성기(22)의 워크로드 구성기(78)는 선택가능한 입력(564)의 사용자 선택에 근거하여, 도 22의 필드(430)에 식별된 커스텀 워크로드들과 같은 커스텀 워크로드들의 실행을 개시한다. 입력(560, 562, 또는 564)의 사용자 선택에 근거하여 시스템 구성의 배치 시, 구성기(22)는 선택된 노드 및 네트워크 설정들, 워크로드, 워크로드 컨테이너 모듈, 데이터 모니터링 툴들, 등으로 각각의 선택된 노드(16)를 자동으로 구성하며, 시스템 구성 정보에 근거하여 선택된 워크로드 및/또는 배치 잡들을 실행하는 것을 시작하도록 노드 클러스터(14)에 명령한다. 구성기(22)는 각각의 선택가능한 입력들(566, 568)의 사용자 선택에 근거하여 완료 전에 워크로드 실행을 종료 또는 일시 정지(pause)한다. 구성기(22)는 선택가능한 입력(570)의 사용자 선택에 근거하여 노드 클러스터(14) 상에서 현재 실행되는 워크로드를 재시작한다. 구성기(22)는 선택가능한 입력(572)의 사용자 선택에 근거하여 노드 클러스터(14) 상에서 현재 실행되는 워크로드를 스킵(skip)해서, 예컨대 노드들(16)은 배치의 다음 워크로드를 실행하도록 진행된다. 선택가능한 입력(576)의 선택에 근거하여, 구성기(22)의 데이터 모니터 구성기(82)는 모듈(214)을 통해 식별되는 데이터 모니터링 툴들, 설정들 및 구성을 구현한다. 일 실시예에서, 노드들(16) 상에서 데이터 모니터링 설정들을 구현하는 것은 각각의 노드(16)에 제공되는 대응하는 구성 파일(28)(도 3)을 생성하는 것을 포함한다. 입력(574)의 사용자 선택에 근거하여, 구성기(22)는 워크로드 실행(들)의 완료 다음에, 즉 노드 클러스터(14)로부터의 워크로드 실행의 결과 및 모든 요청된 데이터의 콜렉션의 수신 다음에, 노드 클러스터(14)를 종료시키거나 또는 정지(shut down)시킨다. 입력들(560-572)뿐만 아니라 입력들(582-595)은 예시적으로는 선택가능한 버튼들이다.
시스템 상태는 디스플레이들(578, 580)을 통해 워크로드 실행 동안 제공된다. 디스플레이들(578, 580)은 노드 클러스터(14)의 각각의 활성 노드(16)와 관련된 상태 정보뿐만 아니라 워크로드 실행의 진행을 보여준다. 시스템 상태의 디스플레이는 버튼(595)의 사용자 선택에 근거하여 인에이블되거나 디스에이블된다.
예시된 실시예에서, 노드 구성기(72), 네트워크 구성기(74), 워크로드 컨테이너 구성기(76), 워크로드 구성기(78), 배치 프로세서(80) 및 데이터 모니터 구성기(82)(도 3) 각각은 이들 각각의 구성 기능들을 구현하기 위해 입력(560, 562, 또는 564)을 통한 배치 개시 다음에 적어도 하나의 대응하는 구성 파일(28)을 자동으로 생성한다. 구성 파일들(28)은 본 명세서에 기술된 바와 같이, 노드 클러스터(14)의 각각의 노드(16)를 구성하기 위한 대응하는 구성 데이터 및 명령들을 포함한다. 일 실시예에서, 구성기(22)는 파일들(28)의 생성 다음에 노드 클러스터(14)의 각각의 노드(16) 상으로 각각의 구성 파일(28)을 자동으로 로딩한다. 대안적으로는, 구성기(22)의 각각의 컴포넌트(70 내지 84)로부터 구성 데이터 및 명령들을 포함하는 단일 구성 파일(28)이 생성되며, 구성기(22)는 구성 파일(28)의 생성 다음에 노드 클러스터(14)의 각각의 노드(16) 상으로 단일 구성 파일(28)을 자동으로 로딩한다. 각각의 운영 체제, 워크로드 컨테이너 모듈 및 워크로드에 대응하는 각각의 이미지 파일(92, 94, 96)은 또한, 입력(560, 562, 또는 564)으로 구성 배치를 런칭할 시 각각의 노드 상으로 로딩된다. 대안적으로는, 노드들(16)은 구성기(22)에 의한 파일들(28) 및 이미지 파일들(92, 94, 96)의 생성 다음에 구성 파일(들)(28) 및/또는 이미지 파일들(92, 94, 96)을 검색 또는 요청할 수 있다.
노드들(16)에 배치되는 구성 파일들(28)뿐만 아니라 도 7의 입력(240)을 통해 저장된 시스템 구성 파일들은 모듈들(202 내지 216)에 대한 사용자 입력 또는 상기 모듈들의 디폴트 설정들에 근거하여 선택 및 로딩된 모든 구성 데이터 및 정보를 포함한다. 예를 들어, 노드 구성기(72)에 의해 생성된 구성 파일(28)은 본 명세서에 기술된 바와 같이, 노드 클러스터(14)에 대해 할당 및/또는 사용할 노드들(16)의 수 및 각각의 노드(16)의 하드웨어 요건들 및 부트 시간 구성을 포함한다. 하드웨어 요건들은 예컨대, RAM 사이즈, CPU 코어들의 수 및 이용가능한 디스크 공간을 포함한다. 네트워크 구성기(74)에 의해 생성되는 구성 파일(28)은 예컨대, 모든 노드들(16)에 적용할 글로벌 디폴트 설정들, 어느 노드들(16)이 노드 클러스터(14)의 주어진 그룹에 속하는지, 노드 그룹 내의 네트워크 트래픽에 대한 설정들 및 노드 클러스터(14)의 다른 노드 그룹들로의 네트워크 트래픽에 대한 설정들을 포함하는 그룹 설정들, 임의의 노드들(16) 간의 네트워크 트래픽에 대한 커스텀 설정들을 포함하는 노드 별(node-specific) 설정들, 도 11 내지 17에 관하여 본 명세서에 기술된 바와 같은, 레이턴시, 대역폭, 왜곡 및 드롭된 패킷율들, 왜곡 및 드롭된 패킷들의 상관성 및 분산, 및 리오더링된 패킷들의 레이트를 포함하는 네트워크 파라미터들, 및 다른 적절한 네트워크 파라미터들 및 네트워크 토폴로지 구성 데이터를 포함한다. 워크로드 컨테이너 구성기(76)에 의해 생성된 구성 파일(28)은 예컨대, 워크로드를 실행하기 위해 사용되는 주요(primary) 워크로드 컨테이너 소프트웨어에 대한 구성 설정들을 포함한다. 워크로드 구성기(78)에 의해 생성되는 구성 파일(28)은 예컨대, 노드들(16) 상에서 실행될 선택된 미리 정의된 또는 합성 워크로드에 대한 구성 설정들을 포함한다. 구성 설정들은 예컨대, 합성 테스트 워크로드 이미지 파일, 최대 명령 카운트, 최대 반복 카운트 및 I/O 동작들의 비(ratio)를 포함하는 합성 테스트 워크로드 구성 데이터를 포함할 수 있다.
입력(560)(또는 입력들(562, 564))을 통한 배치의 개시 시, 구성기(22)는 여러 동작들을 자동으로 수행한다. 일 예시적인 실시예에 따르면, 구성기(22)는 노드들의 클러스터(14)를 선택하기 위해 요구되는 노드들(16)을 할당 및 시작시킨다. 그 다음, 구성기(22)는 각각의 노드(16)에 제어 서버(12)의 어드레스(예컨대, IP 어드레스)를 패스하고, 각각의 노드(16)에 식별자 및/또는 어드레스를 할당 및 패스한다. 일 실시예에서, 각각의 노드(16)는 제어 서버(12)의 어드레스의 수신 다음에, 제어 서버(12)에 자동으로 컨택하고, 잡 및 다른 구성 정보를 기술하는 하나 이상의 구성 파일들(28)을 요청하도록 구성된다. 각각의 노드(16)는 예컨대, 제어 서버(12)와 직접적으로 통신하기 위한 특정 RMI 메커니즘(예컨대, 웹 기반의 인터페이스), Apache HTTP 또는 Tomcat 서버들을 통해 제어 서버(12)와 인터랙팅하기 위한 HTTP 요청들 또는 원격 쉘(shell) 메커니즘을 포함하는 어떤 적절한 메커니즘을 이용하여 제어 서버(12)와 통신한다.
일 실시예에서, 구성기(22)는 요청이 노드 클러스터(14)의 각각의 노드(16)로부터 수신될 때까지 대기한다. 일 실시예에서, 노드(16)가 시작하는 것을 실패한 경우, 즉 노드(16)로부터의 요청 또는 확인응답(acknowledgement)의 결여에 근거하여, 구성기(22)는 그 노드(16)를 재시작시키는 것을 시도한다. 노드(16)가 계속 시작하는 것을 실패하는 경우, 구성기(22)는 실패한 노드(16)를 대신하기 위해 노드 클러스터(14)에 원래 포함되지 않은 다른 이용가능한 노드(16)를 식별 및 요청한다. 대체 노드(16)는 실패한 노드(16)와 동일한 또는 유사한 하드웨어 사양들 및 프로세싱 능력들을 포함한다. 일 실시예에서, 구성기(22)는 워크로드 실행 전반에 걸쳐 노드들(16)을 계속 모니터링하고, 응답을 멈춘 노드들(16)(및 워크로드)을 재시작시킨다. 구성기(22)는 실패한 데이터 모니터링 또는 다른 실패한 통신들에 근거하여 워크로드 실행 동안 응답하지 않는 노드들(16)을 검출할 수 있다.
구성기(22)가 노드 클러스터(14)의 각각의 노드(16)로부터 요청을 수신할 시, 구성기(22)는 각각의 노드(16)가 진행될 준비가 됨을 결정한다. 일 실시예에서, 그 다음, 구성기(22)는 구성 파일(들)(28), 노드 클러스터(14) 내의 다른 노드들(16)의 어드레스들 및 ID들, 이미지 파일들(92, 94, 96)을 포함하는 요청된 데이터를 각각의 노드(16)에 제공한다. 제어 서버(12)로부터 요청된 데이터의 수신 시, 노드 클러스터(14) 내의 각각의 노드(16)의 역할(role)이 결정된다. 일 실시예에서, 역할 결정은 (예컨대, 자동으로 또는 사용자 입력에 근거하여) 제어 서버(12)에 의해 이루어지고, 노드들(16)에 통신된다. 대안적으로는, 역할 결정은 분산형 중재 메커니즘(distributed arbitration mechanism)을 이용하여 노드 클러스터(14)에 의해 이루어진다. 일 실시예에서, 역할 결정은 워크로드에 좌우된다. 예를 들어, Hadoop 워크로드 컨테이너로 동작하는 노드 클러스터(14)에 대해, 제1 노드(16)는 마스터 노드(16)("네임노드")로서 지정될 수 있고, 나머지 노드들(16)은 슬래이브/작업자 노드들(16)("데이터노드들")로서 지정될 수 있다. 일 실시예에서, 노드(16)의 역할 결정은 또한, 노드(16)의 하드웨어 특성들에 좌우된다. 예를 들어, 더 느린 노드 프로세서들(40)을 갖는 노드들(16)의 그룹이 데이터를 저장하기 위한 데이터베이스 서버들로서 지정될 수 있고, 더 빠른 노드 프로세서들(40)을 갖는 노드들(16)의 다른 그룹이 워크로드를 프로세싱하기 위한 컴퓨트 노드들로서 지정될 수 있다. 일 실시예에서, 역할 결정은 구성 파일(28)을 통해 제공되는 사용자 입력에 근거한다. 예를 들어, 사용자는 제1 태스크를 수행하기 위해 제1 노드(들)(16) 제2 태스크를 수행하기 위해 제2 노드(들)(16), 제3 태스크를 수행하기 위해 제3 노드(들)(16)을 할당할 수 있으며, 기타 등등 동일한 방식으로 할당이 이루어진다.
각각의 노드(16)는 구성 파일(들)(28)을 통해 수신되는 네트워크 구성 데이터에 근거하여 자신의 가상 네트워크 설정들을 구성하는 것을 진행한다. 이는 본 명세서에 기술된 바와 같이, 예컨대, 네트워크 지연 및/또는 패킷 손길 에뮬레이터를 이용하는 것을 포함할 수 있다. 각각의 노드(16)는 또한, 워크로드 컨테이너 이미지 파일(94)을 통해 수신되는 워크로드 컨테이너 코드 모듈을 포함하여 사용자가 요청한 소프트웨어 어플리케이션을 인스톨 및/또는 구성하는 것을 진행한다. 일 실시예에서, 복수의 워크로드 컨테이너 모듈들(예컨대, 복수의 버젼들/빌드들(build))은 각각의 노드(16)에서 미리 인스톨되고, 선택된 워크로드 컨테이너 모듈의 위치로의 소프트 링크는 구성 파일(28)에 근거하여 생성된다. 합성 테스트 워크로드가 제어 서버(12)에서 생성 및 선택되면, 각각의 노드(16)는 워크로드 이미지 파일(96)에 근거하여 합성 테스트 워크로드를 활성화시키는 것을 진행한다. 각각의 노드(16)는 또한, 구성 정보에 근거하여 진단 및 모니터링 툴들(예컨대, Ganglia, SystemTap, VMStat, IOStatm, 등)을 실행시키는 것을 진행한다. 마지막으로, 각각의 노드(16)는 선택된 워크로드의 실행을 시작하는 것을 진행한다.
예시된 실시예에서, 배치 런칭 다음에 구성기(22) 및 노드들(16)에 의해 수행되는 각각의 단계는 노드 클러스터(14)의 노드들(16)에 걸쳐 동기화된다. 일 실시예에서, 비록, 노드 클러스터(14)의 하나 이상의 노드들(16)이 대안적으로 동기화를 관리할 수 있지만, 제어 서버(12)의 구성기(22)가 노드들(16)을 조정한다. 일 실시예에서, 노드 동작을 조정하기 위해 사용되는 동기화 메커니즘은 각각의 노드(16)로 하여금 정기적으로(on a regular basis) 제어 서버(12)에 상태 피드백을 제공하도록 한다. 따라서, 특정 시간 내에 보고하는 것을 실패한 노드들(16)은 크래시(crash)된 것으로 추정되어, 구성기(22)에 의해 재시작된다. 구성기(22)는 또한, 예컨대 도 30의 디스플레이들(578, 580)을 통해, 작업의 진행을 나타내기 위한 상태를 사용자에게 제공할 수 있다.
잡의 완료 시, 데이터 취합기(84)(도 3)는 각각의 노드(16)로부터 데이터를 수집하도록 동작가능하다. 특히, 각각의 노드(16)의 모니터링 툴들에 의해 수집된 데이터(예컨대, 잡 출력, 성능 통계들, 어플리케이션 로그들, 등, 모듈(214) 참조)는 제어 서버(12)(예컨대, 도 3의 메모리(90))에 의해 액세스된다. 일 실시예에서, 데이터 취합기(84)는 각각의 노드(16)로부터 데이터를 검색한다. 다른 실시예에서, 각각의 노드(16)는 데이터 취합기(84)에 데이터를 푸시한다. 예시된 실시예에서, 데이터는 도 31에 예시된 바와 같이, 각각의 노드(16)로부터 로그 파일들(98)의 형태로 제어 서버(12)에 통신된다(또한, 도 3 참조). 각각의 로그 파일(98)은 각각의 노드(16)의 다양한 모니터링 툴들 중 하나 이상에 의해 수집되는 데이터를 포함한다. 본 명세서에 기술되는 바와 같이, 데이터 취합기(84)는 로그 파일들(98)로부터 수집된 데이터를 조작 및 분석하고, 그래프들, 히스토그램들, 챠트들, 기타 등등의 형태로 사용자에게 취합된 데이터를 (예컨대, 도 1의 디스플레이(21)를 통해) 디스플레이하도록 동작가능하다. 데이터 취합기(84)는 또한, 도 27에 기술된 Ganglia 모니터링 툴과 같은 제어 서버(12) 상에 제공된 모니터링 툴들로부터 데이터를 취합한다.
도 30을 다시 참조하면, 데이터 취합기(84)는 각각의 노드(16)로부터 성능 데이터를 수집 및 취합하고, 모듈(216)의 대응하는 입력들(582 내지 594)의 사용자 선택에 근거하여 로그들, 통계들, 그래프들, 및 데이터의 다른 표시들을 생성하도록 동작가능하다. 데이터 취합기(84)는, 로그 파일들(98)에 제공되고 입력(586)의 사용자 선택에 근거하여 다른 모니터링 툴들로 제공되는 원시(raw) 통계 데이터를 모은다. 데이터 취합기(84)는 입력(588)의 사용자 선택에 근거하여, 노드들(16)로부터 로컬 파일 시스템으로 모든 로그 파일들(98)을 다운로드하고, 이는 또한, 분석되거나 또는 이력 트랜드 분석들을 위해 저장될 수 있다. 데이터 취합기(84)는 입력(590)의 사용자 선택에 근거하여 SystemTap 모니터링 툴과 관련된 로그 파일들만을 검색한다. 데이터 취합기(84)는 입력(582)의 사용자 선택에 근거하여 사용자 인터페이스(200) 상에 노드들(16)에 의해 제공되는 로그 파일들(98) 중 하나 이상을 디스플레이한다. 데이터 취합기(84)는 입력(584)의 사용자 선택에 근거하여 그래프들 및 챠트들의 형태로 사용자 인터페이스(200) 상에 통계 데이터를 디스플레이한다. 통계 데이터는 예컨대, 네트워크(18)의 성능 및 노드들(16)에 의한 네트워크 통신, 노드(16)의 다양한 하드웨어 컴포넌트들의 성능, 워크로드 실행 및 전체 노드 클러스터(14)의 성능과 관련된 성능 데이터를 포함한다. 데이터 취합기(84)는 입력(592)의 사용자 선택에 근거하여, 노드들(16) 및 다른 모니터링 툴들로부터 수집되는 다양한 데이터를 도시하는, 사용자 인터페이스(200) 상에 디스플레이하기 위한 하나 이상의 그래프들을 생성한다.
일 실시예에서, 데이터 취합기(84)는 모니터링 모듈(214)에 구성된 모니터링 툴들로 모니터링하기 위해 선택된 데이터에 근거하여 디스플레이할 데이터를 선택한다. 다른 실시예에서, 데이터 취합기(84)는 제어 및 상태 모듈(216)로의 상용자 입력들에 근거하여 취합 및 디스플레이되는 데이터를 선택한다. 예를 들어, 사용자는 각각의 입력들(582, 584, 및 592)을 선택할 시 어느 로그 파일들(98), 통계 데이터 및 그래프들이 디스플레이될지를 선택한다. 일 실시예에서, 데이터 취합기(84)는 사용자 인터페이스(200)로의 사용자 입력들에 근거하여, 어느 데이터가 그래프들에 디스플레이될지를 선택하고 어떻게 그 데이터를 디스플레이할지(예컨대, 라인 그래프, 바(bar) 그래프, 히스토그램, 등)를 선택한다. 입력(592)의 선택에 근거하여 디스플레이되는 예시적인 그래픽 데이터는 프로세서 속도 대(versus) 추가된 네트워크 지연, 워크로드 실행 속도 대 프로세서 코어들의 수, 워크로드 실행 속도 대 코어 당 프로세싱 스레드들의 수, 시간에 걸쳐 특별한 노드(16)에 의해 전송 또는 수신되는 데이터 패킷들의 수, 시간에 걸쳐 통신되는 특정 사이즈의 데이터 패킷들의 수, 네트워크 스택에서 데이터 패킷들에 의해 소요되는 시간, 기타 등등을 포함한다.
클라우드 컴퓨팅 시스템의 노드들의 부트 시간 파라미터들 구성
도 36은 클라우드 컴퓨팅 시스템(10)의 부트 시간 구성을 구성하기 위해 도 1 및 3의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(620)를 도시한다. 도 36의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 예시된 실시예에서, 구성기(22)는 사용자 인터페이스(200)를 통해 수신되는 복수의 사용자 선택들에 근거하여 도 36의 순서도(620)에 따라 도 1의 노드 클러스터(14)를 구성한다. 블록(622)에서, 구성기(22)는 선택가능한 부트 시간 구성 데이터를 포함하는 사용자 인터페이스(200)를 제공한다. 예시적인 선택가능한 부트 시간 구성 데이터는 도 10의 디스플레이된 스크린의 선택가능한 입력들(269, 271) 및 필드들(268, 270, 272, 274, 276)을 포함한다. 블록(624)에서, 구성기(22)의 노드 구성기(72)는 선택가능한 부트 시간 구성 데이터의 적어도 하나의 사용자 선택에 근거하여, 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)의 적어도 하나의 노드(16)에 대한 부트 시간 구성을 선택한다.
블록(626)에서, 구성기(22)는 적어도 하나의 노드(16)의 적어도 하나의 부트 시간 파라미터를 수정하기 위해 선택된 부트 시간 구성으로 노드들의 클러스터(14)의 적어도 하나의 노드(16)를 구성한다. 예를 들어, 적어도 하나의 부트 시간 파라미터는, 워크로드의 실행동안 인에이블되는 적어도 하나의 노드(16)의 (필드(268)로의 입력에 근거한) 프로세싱 코어들의 수 및/또는 적어도 하나의 노드(16)의 운영 체제(44)(도 2)에 의해 액세스가능한 (필드들(270, 272)로의 입력에 근거한) 시스템 메모리의 양을 포함한다. 또한, 수정된 부트 시간 파라미터는 필드(274)에 입력된 명령들의 수 및 대응하는 커스텀 입력(271)의 선택에 근거하여 적어도 하나의 노드(16)에 의해 실행될 워크로드의 복수의 명령들의 서브세트를 식별할 수 있다. 따라서, 워크로드는 적어도 하나의 노드(16)의 적어도 하나의 부트 시간 파라미터의 수정에 근거하여 노드들의 클러스터(14)로 실행된다. 일 실시예에서, 구성기(22)는 워크로드의 실행을 개시하고, 노드들(14)의 클러스터는 적어도 하나의 부트 식나 파라미터의 수정에 근거하여 감소된 컴퓨팅 용량 및 감소된 메모리 용량 중 적어도 하나로 워크로드를 실행한다. 특히, 필드(268) 및 대응하는 입력(271)의 선택을 이용한 프로세싱 코어들의 수에 대한 수정은 컴퓨팅 용량을 감소시키는 역할을 하며, 필드들(270, 272) 및 대응하는 입력(271)의 선택을 이용한 시스템 메모리의 수에 대한 수정은 메모리 용량을 감소시키는 역할을 한다.
일 실시예에서, 노드 구성기(72)는 선택가능한 부트 시간 구성 데이터의 적어도 하나의 사용자 선택에 근거하여, 노드들의 클러스터(14)의 제1 노드(16)에 대해 제1 부트 시간 구성 및 노드들의 클러스터(14)의 제2 노드(16)에 대해 제2 부트 시간 구성을 선택한다. 이 실시예에서, 제1 부트 시간 구성은 제1 노드(16)의 적어도 하나의 부트 시간 파라미터의 제1 수정을 포함하고, 제2 부트 시간 구성은 제2 노드(16)의 적어도 하나의 부트 시간 파라미터의 제2 수정을 포함하며, 제1 수정은 제2 수정과 다르다. 일 예에서, 제1 부트 시간 구성은 제1 노드(16)의 두 개의 프로세싱 코어들을 인에이블하는 것을 포함하고, 제2 부트 시간 구성은 제2 노드(16)의 세 개의 프로세싱 코어들을 인에이블하는 것을 포함한다. 각각의 노드(16)의 부트 시간 파라미터들의 다른 적절한 수정들이 상기에 기술된 바와 같이 제공될 수 있다.
도 37은 노드(16)의 부트 시간 구성을 구성하기 위해 도 1의 노드들의 클러스터(14)의 노드(16)에 의해 수행되는 예시적인 동작의 순서도(630)를 도시한다. 도 37의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 블록(632)에서, 노드들의 클러스터(14)의 노드(16)는 클라우드 구성 서버(12)에 의해 제공되는 부트 시간 구성 조정 요청에 근거하여, 노드(16)의 적어도 하나의 부트 시간 파라미터를 수정한다. 예시된 실시예에서, 부트 시간 구성 조정 요청은 본 명세서에 기술된 바와 같이, 구성 파일(28)(도 3)에 제공되고, 도 10의 입력들(270, 271) 및 필드들(268, 270, 272, 274, 276)을 통해 이루어지는 사용자 선택들에 근거하여 노드(16)의 하나 이상이 부트 시간 파림터들에 대한 요청된 수정을 식별한다. 예시된 실시예에서, 노드(16)는 적어도 하나의 부트 시간 파라미터를 수정하기 전의 초기 부트 시간 구성 및 적어도 하나의 부트 시간 파라미터를 수정한 다음의 수정된 부트 시간 구성을 가진다. 수정된 부트 시간 구성은 본 명세서에 기술된 바와 같이, 노드(16)의 감소된 컴퓨팅 용량 및 감소된 메모리 용량 중 적어도 하나를 제공한다.
블록(634)에서, 노드(16)는 노드(16)의 리부트 다음에, 적어도 하나의 부트 시간 파라미터가 부트 시간 구성 조정 요청에 따라 수정되었음을 노드(16)에 의해 결정할 시, 노드(16)에 의한 노드(16)의 리부트 다음에, 워크로드의 적어도 일부를 실행한다. 일 실시예에서, 노드(16)는 적어도 하나의 부트 시간 파리미터에 대한 수정에 근거하여 클라우드 구성 서버(12)로부터 워크로드의 적어도 일부를 획득하고 워크로드를 실행한다. 일 실시예에서, 노드(16)에 의한 결정은 적어도 하나의 부트 시간 파라미터에 대한 수정 다음에 그리고 노드(16)의 리부트 전에 노드(16)에 의해 설정된 플래그(예컨대, 하나 이상의 비트들)에 근거한다. 설정 플래그는 적어도 하나의 부트 시간 파라미터가 이미 수정되었음을 노드(16)의 재시작 다음에 노드(16)에게 나타내며, 따라서 노드(16)는 적어도 하나의 부트 시간 파라미터를 수정하고 다시 리부트하는 것을 시도하지 않는다. 일 실시예에서, 결정은 노드(16)의 부트 시간 구성과 부트 시간 구성 조정 요청으로 식별된 요청된 부트 시간 구성의 비교에 근거한다. 예를 들어, 노드(16)는 부트 시간 구성 조정 요청으로 식별된 요청된 부트 시간 파라미터들과 노드(16)의 현재 부트 시간 파라미터들을 비교하며, 파라미터들이 동일하지 않으면, 적어도 하나의 부트 시간 파라미터를 수정하고 다시 리부트하는 것을 시도하지 않는다. 일 실시예에서, 노드(16)가 새로운 부트 시간 구성 조정 요청을 포함하는 새로운 구성 파일을 수신하면, 노드(16)는 새로운 부트 시간 구성 조정 요청에 따라 부트 시간 파라미터들에 대한 수정을 구현하기 전에 플래그를 클리어(clear)한다.
도 38은 노드 클러스터(14)의 하나 이상의 노드들(16)의 부트 시간 구성을 구성하기 위해 클라우드 컴퓨팅 시스템(10)에 의해 수행되는 예시적인 상세한 동작의 순서도(650)를 도시한다. 도 38의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 예시된 실시예에서, 구성기(22)는 도 38의 블록들(652 내지 656)을 수행하며, 각각의 구성된 노드(16)는 도 38의 블록들(658 내지 664)을 수행한다. 블록(652)에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 사용자 인터페이스(200)(도 10)를 통해 입력되는 사용자 정의 부트 시간 파라미터들에 근거하여 대응하는 노드들(16)에 대한 하나 이상의 부트 시간 구성 파일들(28)(도 3)을 생성한다. 일 실시예에서, 부트 시간 구성 파일(28)은 노드(16)의 하나 이상의 구성 파일들에 대한 패치(patch)이거나 또는 태스크 별 파일/데이터 포맷이다. 블록(654)에서, 구성기(22)는 (본 명세서에 기술된 바와 같이, 예컨대, 도 30의 입력(560) 또는 입력들(562, 564)의 사용자 선택 시) 노드들의 클러스터(14)를 시작시킨다. 블록(656)에서, 구성기(22)는 노드들의 클러스터(14)의 적절한 노드들(16)에 부트 시간 구성 파일(들)을 분산시킨다. 일 실시예에서, 각각의 노드(16)는 부트 시간 구성 파일을 수신하고, 각각의 파일은 각각의 노드(16)에 대해 고유한 부트 시간 파라미터들을 식별할 수 있다. 일 실시예에서, 구성 파일(28)은 예컨대, 보안 쉘(SSH) 파일 전달을 통해, FTP 클라이언트를 통해, Amazon AWS에서 사용자 데이터 스트링을 통해 또는 다른 적절한 파일 전달 메커니즘을 통해 노드들에 푸시된다. 다른 실시예에서, 노드들(16) 각각은 부트 시간 구성 정보에 대해 제어 서버(12) 또는 마스터 노드(16)에 (예컨대, HTTP 요청을 통해) 질의한다. 블록(658)에서, 노드(16)는 수신된 부트 시간 구성 파일(28)에 특정된 요구되는 부트 시간 파라미터 변경들을 적용시킨다. 일 예에서, 노드(16)는 노드(16)의 부트 파일들에 패치를 적용하거나 또는 노드(16)는 수신된 부트 시간 구성 파일(28)에 특정된 부트 시간 파라미터들에 근거하여 노드(16)에 대해 새로운 부트 파일들의 세트를 생성하기 위해 유틸리티를 이용한다. 일 실시예에서, 블록(658)에서 요구되는 부트 시간 변경들을 적용하는 동안 또는 적용할 시, 노드(16)는 본 명세서에 기술된 바와 같이, 부트 시간 구성이 업데이트됨을 나타내는 상태 플래그를 설정한다. 블록(660)에서, 노드(16)는 부트 시간 구성 변경들의 적용 다음에 리부트하게 한다(force). 리부트 시, 노드(16)는 블록(662)에서, 노드(16)의 부트 시간 구성이 수신된 부트 시간 구성 파일(28)에 특정된 부트 시간 파라미터 변경들로 이미 업데이트됨을 결정한다. 일 실시예에서, 노드(16)는 본 명세서에 기술된 바와 같이, 부트 시간 구성이 블록(658)에서 설정된 상태 플래그에 근거하여 또는 부트 시간 구성 파일(28)과 노드(16)의 현재 부트 시간 구성의 비교에 근거하여 블록(662)에서 업데이트됨을 결정한다. 따라서, 노드(16)는 한 번보다 많이 부트 시간 구성 변경을 적용할 가능성(likelihood)을 감소시킨다. 블록(664)에서, 노드(16)는 제어 서버(12)로부터 수신된 워크로드 또는 워크로드의 부분의 실행을 포함하여 다른 태스크들의 실행으로 진행된다.
네트워크 구성 수정 및/또는 에뮬레이션
도 39는 클라우드 컴퓨팅 시스템(10)의 할당된 노드들의 클러스터(14)의 네트워크 구성을 수정하기 위해 도 1 및 3의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(700)를 도시한다. 도 39의 설명 전반에 걸쳐 도 1 및 3뿐만 아니라 도 11 내지 17에 대한 참조가 이루어진다. 블록(702)에서, 네트워크 구성기(74)는 사용자 인터페이스(200)를 통해 수신되는 사용자 선택에 근거하여, 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)의 적어도 하나의 노드(16)의 네트워크 구성을 수정한다. 블록(702)에서 적어도 하나의 노드(16)의 네트워크 구성을 수정하는 것은 통신 네트워크(18)(도 1) 상에서 적어도 하나의 노드(16)의 네트워크 성능을 수정하는 것을 포함한다. 네트워크 성능은 본 명세서에 기술된 바와 같이, 패킷 통신율, 드롭 및 왜곡된 패킷들, 리오더링된 패킷들 등과 같은 네트워크 파라미터들을 수정함으로써 수정된다. 예시된 실시예에서, 네트워크 구성기(74)는 도 11 내지 17에 관하여 본 명세서에 기술된 바와 같이, 사용자 인터페이스(200)의 모듈(280)을 통해 제공되는 사용자 선택들 및 입력에 근거하여 네트워크 구성 파일(28)(도 3)을 생성함으로써 그리고 노드들(16)(또는 파일(28)을 페치하는 노드(16)에 네트워크 구성 파일(28)을 제공함으로써, 노드(16)의 네트워크 구성을 수정한다. 그 다음, 노드들(16)은 액세스된 네트워크 구성 파일(28)에 특정된 노드(16)의 네트워크 구성에 대한 변경을 구현한다. 예시된 실시예에서, 적어도 하나의 노드(16)는 수정 전의 초기 네트워크 구성 및 수정 다음의 수정된 네트워크 구성을 가진다. 일 실시예에서, 수정된 네트워크 구성은 선택된 워크로드의 실행 동안 통신 네트워크(18) 상에서 적어도 하나의 노드(16)의 네트워크 성능을 감소시킨다. 대안적으로는, 수정된 네트워크 구성은 가령, 예컨대 도 11의 필드(302)를 통해 특정된 통신 지연 값을 감소시킴으로써, 적어도 하나의 노드(16)의 네트워크 성능을 증가시킨다.
일 실시예에서, 네트워크 구성기(74)는 워크로드의 실행 동안 통신 네트워크(18) 상에서 적어도 하나의 노드(16)의 네트워크 성능을 제한하기 위해 적어도 하나의 노드(16)의 적어도 하나의 네트워크 파라미터를 변경시킴으로써 적어도 하나의 노드(16)의 네트워크 구성을 수정한다. 일 실시예에서, 변경되는 적어도 하나의 네트워크 파라미터는, 본 명세서에 기술된 바와 같이, 탭들(282 내지 294)을 통해 사용자에 의해 선택가능한, 패킷 통신 지연, 패킷 손실율, 패킷 복제율, 패킷 왜곡율, 패킷 리오더링 레이트, 패킷 통신율 중 적어도 하나를 포함한다. 따라서, 네트워크 구성기(74)는, 네트워크 파라미터에 대한 수정(예컨대, 노드들(16) 간의 증가된 통신 지연, 증가된 패킷 손실율 또는 왜곡율, 기타 등등)을 식별하는 구성 파일(28)로의 노드(16) 액세스를 생성 및 제공함으로써 적어도 하나의 노드(16)의 네트워크 성능을 제한한다.
예시된 실시예에서, 구성기(22)는 선택가능한 네트워크 구성 데이터를 포함하는 사용자 인터페이스(200)를 제공하며, 네트워크 구성기(74)는 본 명세서에 기술된 바와 같이, 선택가능한 네트워크 구성 데이터의 적어도 하나의 사용자 선택에 근거하여 적어도 하나의 노드(16)의 네트워크 구성을 수정한다. 예시적인 선택가능한 네트워크 구성 데이터는 도 11의 입력들(298 내지 301) 및 대응하는 필드들(302 내지 312), 도 12의 입력들(313, 314) 및 대응하는 필드들(315, 316), 도 13의 입력들(317, 318) 및 대응하는 필드들(319, 320), 도 14의 입력(321) 및 대응하는 필드(322), 도 15의 입력들(323, 324) 및 대응하는 필드들(325, 326), 도 16의 입력들(327-330, 335-338) 및 대응하는 필드들(331-334) 및 도 17의 입력(340) 및 대응하는 필드(342)를 포함한다. 일 실시예에서, 네트워크 구성기(74)는 선택가능한 네트워크 구성 데이터의 적어도 하나의 사용자 선택에 근거하여, 워크로드의 실행 동안 통신 네트워크(18) 상에서 제1 노드(16)의 네트워크 성능을 제한하기 위해 노드들의 클러스터(14)의 제1 노드(16)의 제1 네트워크 파라미터를 (즉, 네트워크 구성 파일(28)을 통해) 변경함으로써 그리고 워크로드의 실행 동안 통신 네트워크(18) 상에서 제2 노드(16)의 네트워크 성능을 제한하기 위해 노드들의 클러스터(14)의 제2 노드(16)의 제2 네트워크 파라미터를 변경함으로써 네트워크 성능을 수정한다. 일 실시예에서, 제1 네트워크 파라미터는 제2 네트워크 파라미터와 다르다. 따라서, 네트워크 구성기(74)는 워크로드 실행 동안 노드들의 클러스터(14)의 요구되는 네트워크 특성들을 달성하기 위해 노드들의 클러스터(14)의 서로 다른 노드들(16)의 서로 다른 네트워크 파라미터들을 수정하도록 동작가능하다.
예시된 실시예에서, 구성기(22)는 또한, 도 40 내지 42에 관하여 본 명세서에 기술된 바와 같이, 에뮬레이션된 노드 클러스터의 네트워크 구성과 실질적으로 매치되는 네트워크 구성을 가지는 클라우드 컴퓨팅 시스템(10) 대한 노드들의 클러스터(14)를 선택하도록 동작가능하다. 본 명세서에서 참조된 바와 같이, 에뮬레이션된 노드 클러스터는, 제어 서버(12)에 의해 선택된 노드 클러스터(14)에 의해 에뮬레이션될 알려진 네트워크 구성을 가지는 네트워크 노드들의 어떤 그룹을 포함한다. 에뮬레이션된 노드 클러스터의 각각의 노드는 하나 이상의 프로세싱 디바이스들 및 프로세싱 디바이스들에 의해 엑세스가능한 메모리를 포함한다. 일 실시예에서, 에뮬레이션된 노드 클러스터는 구성기(22)에 의해 선택가능한 이용가능한 노드들(16)을 포함하지 않는다. 예를 들어, 에뮬레이션된 노드 클러스터는, 사용자에 의해 제공되는 노드들과 같이, 하나 이상의 데이터 센터(들)에 하우징되고 구성기(22)에 의해 액세스가능한 이용가능한 노드들(16)로부터 별개인 노드들을 포함한다. 대안적으로는, 에뮬레이션된 노드 클러스터는 이용가능한 노드들(16)의 그룹을 포함할 수 있다. 에뮬레이션된 노드 클러스터의 네트워크 토폴로지 및 네트워크 성능 특성들은 하기에 기술된 바와 같이, 하나 이상의 네트워크 성능 테스트들을 이용하여 획득된다. 도 40을 참조하면, 도 1 및 3의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(710)가 에뮬레이션된 노드 클러스터의 네트워크 특성들과 실질적으로 매치되는 네트워크 특성들을 가지는 노드들의 클러스터(14)를 선택하기 위해 예시된다. 도 40의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 도시된 실시예에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 사용자 인터페이스(200)를 통해 수신되는 사용자 선택들에 근거하여 도 40의 순서도(710)에 따라 도 1의 노드 클러스터(14)를 선택 및 구성한다. 블록(712)에서, 노드 구성기(72)는 에뮬레이션된 노드 클러스터의 통신 네트워크 구성과 복수의 이용가능한 노드들(16)의 실제 통신 네트워크 구성을 비교한다. 블록(714)에서, 노드 구성기(72)는 블록(712)의 비교에 근거하여 통신 네트워크(18)에 결합된 복수의 이용가능한 노드들(16)로부터 클라우드 컴퓨팅 시스템(10)에 대한 노드들의 클러스터(14)를 선택한다. 선택된 노드들의 클러스터(14)는 복수의 이용가능한 노드들(16)의 서브세트를 포함한다. 블록(716)에서, 노드 구성기(72)는 본 명세서에 기술된 바와 같이, 노드들의 클러스터(14)의 각각의 노드(16)가 노드들의 클러스터(14)의 다른 노드들(16)과 워크로드의 프로세싱을 공유하도록 동작가능하게끔 선택된 노드들의 클러스터(14)가 워크로드를 실행하도록 구성한다. 일 실시예에서, 블록들(712 내지 716)은 본 명세서에 기술된 바와 같이, 도 30의 모듈(216)로의 사용자 입력에 근거하여 클라우드 구성의 배치 시 개시된다.
예시된 실시예에서, 에뮬레이션된 노드 클러스터의 통신 네트워크 구성 및 복수의 이용가능한 노드들(16)의 실제 통신 네트워크 구성 각각은 대응하는 노드들과 관련된 통신 네트워크 특성들을 포함한다. 노드 구성기(72)는 에뮬레이션된 노드 클러스터의 통신 네트워크 특성들과 복수의 이용가능한 노드들(16)의 통신 네트워크 특성들 간의 유사성들에 근거하여 노드들의 클러스터(14)를 선택한다. 예시적인 통신 네트워크 특성들은 네트워크 토폴로지 및 네트워크 파라미터들을 포함한다. 예시적인 네트워크 파라미터들은 노드들 간의 통신율들 및 레이턴시들, 노드들 간의 네트워크 대역폭, 및 패킷 에러율을 포함한다. 네트워크 토폴로지는 노드들의 물리적 및 로직적 연결성, 노드 클러스터의 어느 노드들 및 노드들의 그룹들이 물리적으로 서로에 가까이 또는 서로로부터 멀리 위치되는지의 식별, 노드들 사이의 연결의 타입(예컨대, 광 섬유(fiber optic) 링크, 위성 연결, 등) 및 다른 적절한 특성들을 포함한다. 패킷 에러율은 드롭된 또는 손실된 패킷들, 왜곡된 패킷들, 리오더링된 패킷들, 복제된 패킷들, 등을 포함한다. 일 실시예에서, 노드 구성기(72)는 도 31에 관하여 본 명세서에 기술된 바와 같이, 에뮬레이션된 노드 클러스터의 통신 네트워크 특성들을 우선순위화하고, 우선순위화된 통신 네트워크 특성들에 근거하여 노드들의 클러스터를 선택한다.
예시된 실시예에서, 노드 구성기(72)는 이용가능한 노드들(16)의 실제 통신 네트워크 구성을 식별하기 위해 이용가능한 노드들(16) 상에서 네트워크 성능 테스트를 개시한다. 어떤 적절한 네트워크 성능 테스트도 이용될 수 있다. 예를 들어, 노드 구성기(72)는 이용가능한 노드들(16) 간의 네트워크 성능에 관한 데이터를 테스트 및 수집하기 위해 패킷 인터넷 그로퍼(Packet Internet Groper)("Ping")와 같은 컴퓨터 네트워크 관리 유틸리티를 실행하도록 하는 요청을 각각의 이용가능한 노드(16)에 전송할 수 있다. 각각의 노드(16)에 의해 제공되는 Ping 테스트의 결과들에 근거하여, 노드 구성기(72)는 이용가능한 노드들(16)의 실제 통신 네트워크 구성을 결정한다. 일 실시예에서, Ping은 실제 통신 네트워크 구성을 획득하기 위해 다른 네트워크 성능 테스트들과 연계하여 사용된다. 구성기(22)는 이용가능한 노드들(16)의 실제 통신 네트워크 구성을 식별하는 네트워크 디스크립터 데이터 파일 또는 객체(예컨대, 도 42의 데이터 파일(750) 참조)를 생성하기 위해 노드들(16)로부터 수신되는 네트워크 성능 테스트 결과들을 취합한다. 일 실시예에서, 구성기(22)는 사용자 인터페이스(200)로의 사용자 입력에 근거하여 네트워크 성능 테스트를 개시하고 결과들을 취합한다. 예를 들어, 도 30의 버튼(586)의 사용자 선택 또는 다른 적절한 입력은 구성기(22)로 하여금 테스트를 개시하고 결과들을 취합하도록 할 수 있다.
예시된 실시예에서, 노드 구성기(72)는 또한, 에뮬레이션된 노드 클러스터의 통신 네트워크 구성을 식별하는 하나 이상의 데이터 파일들(예컨대, 도 42의 데이터 파일(750))에 액세스한다. 일 실시예에서, 에뮬레이션된 노드들의 클러스터 상에서 하나 이상의 네트워크 성능 테스트들(예컨대, Ping 테스트, 등)을 구현함으로써 제어 서버(12)의 오프라인으로 데이터 파일(들)이 획득된다. 일 실시예에서, 구성기(22)는 액세스가능한 메모리(예컨대, 도 3의 메모리(90)) 내로 에뮬레이션된 노드 클러스터와 관련된 데이터 파일을 로딩한다. 예를 들어, 구성기(22)는 사용자가 사용자 인터페이스(200)를 통해 예컨대, 도 7의 테이블(226)으로의 입력들을 통해, 데이터 파일의 위치를 식별함에 근거하여, 데이터 파일을 로딩할 수 있다. 따라서, 구성기(22)는 이용가능한 노드들(16)과 관련된 생성된 데이터 파일에 식별된 통신 네트워크 특성들과 에뮬레이션된 노드 클러스터와 관련된 액세스된 데이터 파일을 비교함으로써 도 40의 블록(712)에서 비교를 수행한다.
예시적인 데이터 파일(750)은 도 42에 도시된다. 데이터 파일(750)은 제어 서버(12)에 의해 액세스가능한 이용가능한 노드들(16) 또는 에뮬레이션된 노드 클러스터의 노드들과 같은 어떤 적절한 네트워킹된 노드들의 네트워크 구성을 식별한다. 도시된 바와 같이, 데이터 파일(750)은 예시적으로는 그룹들 A, B,...M을 포함하는 여러 노드들의 그룹들을 식별한다. 각각의 그룹 A, B, M은 데이터 센터의 동일한 물리 랙(rack) 상의 노드들과 같이, 서로에게 물리적으로 가까이 있는 노드들을 포함한다. 라인들 6 내지 11은 그룹 A의 노드들에 의한 네트워크 통신과 관련된 네트워크 파라미터들을 식별하고, 라인 15 내지 22는 그룹 B의 노드들에 의한 네트워크 통신과 관련된 네트워크 파라미터들을 식별하고, 라인 27 내지 34는 그룹 M의 노드들에 의한 네트워크 통신과 관련된 네트워크 파라미터들을 식별한다. 예를 들어, 라인들 6 및 7은 그룹 A의 노드들 간의 통신과 관련된 레이턴시, 대역폭, 및 에러율을 식별한다. 라인들 8 및 9은 그룹 A 노드들과 그룹 B 노드들 간의 통신과 관련된 레이턴시, 대역폭, 및 에러율을 식별한다. 유사하게, 라인들 10 및 11은 그룹 A 노드들과 그룹 M 노드들 간의 통신과 관련된 레이턴시, 대역폭, 및 에러율을 식별한다. 그룹들 B 및 M의 노드들에 의한 통신과 관련된 네트워크 파라미터들은 유사하게 데이터 파일(750)에 식별된다. 데이터 파일(750)은 본 명세서에 기술된 바와 같이, 네트워크 토폴로지 데이터 및 다른 네트워크 파라미터들과 같은 추가적인 네트워크 구성 데이터를 식별할 수 있다.
도 41을 참조하면, 에뮬레이션된 노드 클러스터의 네트워크 특성들과 실질적으로 매치되는 네트워크 특성들을 가지는 노드들의 클러스터(14)를 선택하기 위해, 도 1 및 3의 구성기(22)를 포함하는 하나 이상의 컴퓨팅 디바이스들에 의해 수행되는 예시적인 상세한 동작의 순서도(720)가 예시된다. 도 41의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 블록(722)에서, 네트워크 구성이 에뮬레이션된 노드 클러스터의 각각의 노드로부터 요청된다. 예를 들어, 본 명세서에 기술된 바와 같이, 네트워크 성능 테스트는 각각의 노드 상에서 개시되고, 테스트 결과들은 컴퓨팅 디바이스에 의해 수신된다. 블록(724)에서, 네트워크 구성 데이터 파일(예컨대, 데이터 파일(750))은 성능 테스트로부터 비롯되는 에뮬레이션된 노드 클러스터의 노드들로부터 수신된 네트워크 구성 데이터에 근거하여 생성된다. 본 명세서에 기술된 바와 같이, 블록들(722 및 724)은 예컨대, 도 1의 컴퓨터(20)와 같이, 클라우드 컴퓨팅 시스템(10)으로부터 별개인 컴퓨팅 시스템에 의해 오프라인으로 수행될 수 있다.
블록(726)에서, 구성기(22)는 데이터 센터의 각각의 이용가능한 노드(16) 또는 이용가능한 노드들(16)의 그룹으로부터 네트워크 구성을 요청한다. 예를 들어, 구성기(22)는 이용가능한 노드들(16) 상에서 네트워크 성능 테스트를 개시하고, 구성기(22)는 본 명세서에 기술된 바와 같이, 네트워크 성능 테스트들로부터 비롯되는 구성 데이터를 취합한다. 블록(728)에서, 구성기(22)는 이용가능한 노드들(16)로부터 수신된 네트워크 구성 데이터에 근거하여 네트워크 구성 데이터 파일(예컨대, 데이터 파일(750))을 생성한다. 따라서, 구성기(22)는 에뮬레이션된 노드 클러스터를 기술하는 데이터 파일 및 이용가능한 노드들(16)을 기술하는 데이터 파일을 포함하는 두 개의 구성 데이터 파일들로의 액세스를 가진다. 구성기(22)는 블록(730)에 표시된 바와 같이, 두 개의 데이터 파일들에 식별된 네트워크 특성들의 비교에 근거하여 에뮬레이션된 노드 클러스터와 유사한 네트워크 특성들을 가지는 적절한 노드들(16)을 이용가능한 노드들(16)로부터 선택한다. 일 실시예에서, 구성기(22)는 또한, 본 명세서에 기술된 바와 같이, 에뮬레이션된 노드 클러스터 및 이용가능한 노드들(16)의 노드 하드웨어 특성들(예컨대, 프로세싱 용량, 메모리 용량, 등)의 비교에 근거하여 블록(730)에서 적절한 노드들을 선택한다.
블록(732)에서, 구성기(22)는 에뮬레이션된 노드 클러스터와 관련된 데이터 파일에 식별된 요구되는 네트워크 구성 파라미터들에 근거하여 선택된 노드들(16)을 튜닝(tune)한다. 예를 들어, 선택된 노드들(16)의 네트워크 특성들은 에뮬레이션된 노드 클러스터의 네트워크 특성들과 정확하게 매치되지 않을 수 있고, 추가의 네트워크 튜닝이 요구되거나 또는 바람직할 수 있다. 따라서, 각각의 노드(16)의 운영 체제(44), 네트워크 토폴로지 드라이버(48) 및/또는 다른 네트워크 컴포넌트들 및 네트워크 파라미터들은 에뮬레이션된 노드 클러스터의 요구되는 네트워크 성능을 더 달성하기 위해 튜닝된다. 일 실시예에서, 구성기(22)는 데이터 파일에 식별된 네트워크 특성들에 근거하여 선택된 노드들(16)을 자동으로 튜닝한다. 일 실시예에서, 네트워크 파라미터들은 예컨대, 도 11 내지 17에 관하여 본 명세서에 기술된 바와 같이, 사용자 인터페이스(200)의 모듈(206)을 통해 제공되는 사용자 입력에 근거하여 더 튜닝된다.
일 예시적인 실시예에서, 구성기(22)는 비록, 다른 적절한 방법들 및 알고리즘들이 제공될 수 있지만, 다음의 "최적 매칭" 기법을 이용하여 블록(730)에서 적절한 노드들(16)을 선택한다. 구성기(22)는 데이터 파일들의 네트워크 구성 데이터(예컨대, 레이턴시 - p0, 대역폭 - p1, 에러율 - pz)를 비교할 때 Z 네트워크 속성들(즉, 특성들)을 고려하며, 노드들 X1, X2,... , XQ은 에뮬레이션된 노드 클러스터 상의 노드들이다. 구성기(22)는 네트워크 속성들 p1, p2, ..., px에 관하여 노드들 X1, X2,... , XQ과 가장 유사한 이용가능한 노드들(16)(예컨대, 노드들 Y1, Y2, ..., Y3)의 서브세트를 선택한다. 비록, 다른 알고리즘들이 선택을 수행하기 위해 사용될 수 있지만, 이용가능한 노드들(16)의 적절한 서브세트를 찾기 위해 구성기(22)에 의해 구현되는 일 예시적인 알고리즘은 네트워크 특성들을 우선순위화하는 것을 포함한다. 예시적인 우선순위화에서, 속성 p0는 속성 p1보다 높은 우선순위를 가지고, 속성 pk는 속성 pk +1보다 높은 우선순위를 가진다. 따라서, 예시된 실시예에서, 레이턴시는 노드 선택 동안 대역폭보다 높은 우선순위를 부여받고, 대역폭은 노드 선택 동안 에러율보다 높은 우선순위를 부여받는다. 입력들 N(네트워크 속성), X(노드) 및 Y(노드)을 갖는 함수 P(N,X,Y)가 네트워크 노드들 X와 Y 간의 네트워크 속성 N의 값을 리턴하도록 구성될 수 있다. 이러한 함수는 블록들(724, 728)에서 생성되는 네트워크 디스크립터 데이터 파일들/객체들(예컨대, 데이터 파일들(750))을 이용하여 구현될 수 있다. 노드들 L = {Y1, Y2, Y3 ... }의 초기 리스트는 이용가능한 노드들(16) 모두를 포함한다. 클라우드 내의 각각의 노드 Yg에 대해 - 1 ≤ g ≤ R (R은 L 내의 노드들의 총 수이고, R ≥ Q ) - , 다음의 방정식 (1)이 적용된다:
Figure pct00001
(1)
에뮬레이션된 노드 클러스터 내의 각각의 노드 Xi에 대해 - 1 ≤ i ≤ Q (Q는 에뮬레이션된 노드 클러스터 내의 노드들의 수이다) - , 다음의 공식 (2)가 적용된다:
Figure pct00002
(2)
알고리즘은
Figure pct00003
가 되도록 클라우드 컴퓨팅 시스템(10)에 대한 이용가능한 노드 YW를 찾는 것을 진행한다. 따라서, 노드 YW는 원래 노드 Xi를 시뮬레이션하기 위해 사용되고, 노드 YW는 리스트 L로부터 제거된다. 알고리즘은 이용가능한 노드들(16)의 전체 세트가 선택될 때까지 진행된다. 블록(730)에서 노드들(16)을 선택하기 위한 다른 적절한 방법들 및 알고리즘들이 제공될 수 있다.
일 예시적인 실시예에서, 구성기(22)는 비록, 다른 방법들 및 알고리즘들이 제공될 수 있지만, 다음의 방법을 이용하여 블록(732)에서 선택된 노드들(16)을 튜닝한다. 이 방법의 경우, 구성기는 각각의 노드(16) 상에서 적절한 네트워크 시뮬레이션을 자동으로 생성하는 구성 어플리케이션을 실행시킨다. Netem 네트워크 지연 및 손실 에뮬레이터를 이용하는 경우, 다음 알고리즘이 구성기(22)에 의해 구현된다. 에뮬레이션된 노드 클러스터 내의 각각의 노드에 대해, Gs는 에뮬레이션 노드가 속한 노드 그룹이다(즉, 각각의 노드 그룹은 서로와 물리적으로 가까이에 있는 (예컨대, 동일한 랙) 노드들을 포함한다). 각각의 그룹 Gi에 대해 - 1 <= i <= E이고 E는 에뮬레이션된 노드 클러스터와 관련된 데이터 파일에 정의된 그룹들의 총 수이다 - , 다음이 구성기(22)에 의해 수행된다. 구성기(22)는 노드 Gs 내지 Gi로부터 트래픽을 인출(outgoing)하기 위해 요구되는 네트워크 속성들 P0...PN을 찾아본다(look up). 구성기(22)는 예컨대, 가령 커맨드 "tc class add dev"를 이용함으로써, 서비스의 새로운 클래스를 생성한다. 구성기(22)는 예컨대, 가령 커맨드 "tc qdisc add dev"를 이용함으로써 새로운 큐잉 규율(discipline)을 생성한다. 구성기(22)는 요구되는 네트워크 속성들을 상기 클래스 또는 큐잉 규율 "qdisc"로 설정한다. 대역폭 및 버스트 네트워크 속성들은 클래스에서 특정되고, 모든 다른 속성들(레이턴시, 에러율, 등)은 큐잉 규율에서 특정된다. 각각의 노드 Yn에 대해, Gyn은 Yn가 속하는 그룹이다. 구성기(22)는 목적지 IP 어드레스(노드 Yn의 어드레스)에 근거하여 필터를 구성하고, 이를 클래스 Gyn에 할당한다. 이는 예컨대, 커맨드 "tc filter add dev"를 이용하여 행해질 수 있다.
그 결과, Netem 에뮬레이터가 턴 온(turn on)되면, 선택된 노드 클러스터(14)는 적어도 다음의 네트워크 속성들: 최소 레이턴시, 최대 대역폭, 최대 버스트 레이트, 최소 패킷 왜곡율, 최소 패킷 손실율, 및 최소 패킷 리오더링 레이트에 관하여 에뮬레이션된 노드 클러스터와 유사한 네트워크 성능을 가질 것이다. 블록(732)에서 노드들(16)을 튜닝하기 위한 다른 적절한 방법들 및 알고리즘들이 제공될 수 있다.
일 실시예에서, 도 41의 블록들(726 내지 732)은 에뮬레이션된 노드 클러스터에 대응하는 노드들의 전체 클러스터(14)가 선택될 때까지 이용가능한 노드들(16)의 서로 다른 그룹들로 반복된다. 일 실시예에서, 에뮬레이션된 노드 클러스터는, 물리적인 노드들(16)이 존재할 수 있거나 존재하지 않을 수 있지만, 요구되는 네트워크 구성은 노드 선택을 수행하기 위한 구성기(22)로의 입력으로 알려지고 제공된다는 점에서 이론적이다. 일 실시예에서, 에뮬레이션된 노드 클러스터에 근거하여 노드들의 클러스터(14)를 선택할 시, 구성기(22)는 본 명세서에 기술된 바와 같이, 예컨대, 매치 프로세서(80)를 이용하여, 요구되는 네트워크 구성을 가지는 선택된 노드들의 클러스터(14)로 다양한 워크로드들을 테스트하도록 동작가능하다.
하드웨어 특성들에 근거한 노드들의 클러스터 할당
도 43은 클라우드 컴퓨팅 시스템(10)에 대한 노드들(14)의 클러스터를 할당하기 위해 도 1 및 3의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(760)를 도시한다. 도 43의 설명 전반에 걸쳐 도 1 내지 3에 대한 참조가 이루어진다. 블록(762)에서, 구성기(22)(예컨대, 데이터 모니터 구성기(82))는 이용가능한 노드들(16)의 그룹의 실제 하드웨어 성능 특성들을 획득하기 위해 하나 이상의 데이터 센터들의 이용가능한 노드들(16)의 그룹 상에서 하드웨어 성능 평가 테스트를 개시한다. 블록(764)에서, 노드 구성기(72)는 이용가능한 노드들(16)의 그룹의 실제 하드웨어 성능 특성들과 사용자 인터페이스(200)를 통한 사용자 선택들에 근거하여 식별되는 요구되는 하드웨어 성능 특성들을 비교한다. 블록(766)에서, 노드 구성기(72)는 블록(764)에서의 비교에 근거하여 이용가능한 노드들(16)의 그룹으로부터 클라우드 컴퓨팅 시스템(10)에 대한 노드들(16)의 서브세트를 선택한다. 노드 클러스터(14) 또는 노드 클러스터(14)의 노드들(16)의 그룹과 같은 노드들(16)의 서브세트는 본 명세서에 기술된 바와 같이, 워크로드의 프로세싱을 공유하도록 동작가능하다. 노드들(16)의 서브세트 내의 노드들(16)의 수는 본 명세서에 기술된 바와 같이, 노드 클러스터(14)에 대해 사용자에 의해 요청되는 노드들(16)의 수보다 작거나 같다.
일 실시예에서, 노드 구성기(72)는 요구되는 하드웨어 성능 특성들을 가지는 클라우드 컴퓨팅 시스템(10)에 대한 노드들의 클러스터를 요청하는 사용자 요청을 사용자 인터페이스(200)를 통해 수신한다. 사용자 요청은 예컨대, 도 8의 선택 박스들(259), 입력들(262) 및 필드(256) 및 도 9의 선택가능한 입력들(265)과 같은 선택가능한 하드웨어 구성 데이터의 사용자 선택들에 근거하여 요구되는 하드웨어 성능 특성들을 식별한다. 일 실시예에서, 도 9의 테이블(264)의 필드들은 요구되는 하드웨어 성능 특성들을 더 식별하기 위해 선택가능/수정가능하다. 노드 구성기(72)는 사용자 인터페이스(200)의 다른 적절한 선택가능한 입력들 및 필드들에 근거하여 요구되는 하드웨어 성능 특성들을 식별할 수 있다. 노드 구성기(72)는 노드들의 클러스터의 사용자 요청 및 상기 요청에서 식별된 요구되는 성능 특성들에 근거하여(에컨대, 이용가능한 노드들(16)가 요청된 노드들의 클러스터 사이의 하드웨어 유사성들에 근거하여) 하드웨어 성능 평가 테스트로 테스트하기 위한 이용가능한 노드들(16)의 그룹을 선택한다. 예시된 실시예에서, 이용가능한 노드들(16)의 그룹의 노드들(16)의 수는 사용자 요청으로 요청된 노드들의 클러스터의 노드들(16)의 수보다 많다.
예시적인 하드웨어 성능 특성은 가령, 네이티브(native) 32 비트 및/또는 64 비트 동작들을 요하는 워크로드를 지원하기 위해 노드(16)가 64 비트 프로세서 아키텍쳐를 가지든 또는 32 비트 프로세서 아키텍쳐를 가지든지 간에, 노드(16)의 컴퓨터 아키텍쳐를 포함한다. 다른 예시적인 하드웨어 성능 특성들은 노드(16)의 프로세서(들)의 제조사(에컨대, AMD, 인텔, Nvidia, 등), 노드(16)의 프로세서(들)(40)의 동작 주파수 및 노드(16)의 판독/기록 성능을 포함한다. 또다른 예시적인 하드웨어 성능 특성들은, 시스템 메모리 용량 및 디스크 공간(저장 용량), 노드(16)의 프로세서들(40)의 수 및 사이즈, 노드(16)의 캐시 사이즈, 노드(16)의 이용가능한 명령 세트들, 디스크 I/O 성능, 노드(16)의 하드 드라이브 속도, 에뮬레이팅 소프트웨어를 지원하기 위한 노드(16)의 능력, 노드들(16) 간의 네트워크 통신 레이턴시/대역폭, 및 다른 적절한 하드웨어 성능 특성을 포함한다. 예시된 실시예에서, 이 하드웨어 성능 특성들 각각은 사용자 인터페이스(200)를 통해 제공되는 사용자 요청에 근거하여 사용자에 의해 요구되는 바와 같이 특정될 수 있다. 또한, 하나 이상의 하드웨어 성능 평가 테스트들은 각각의 선택된 이용가능한 노드(16)의 실제 하드웨어 성능 특성들을 결정하도록 동작가능하다.
일 실시예에서, 노드 구성기(72)는, 노드(16)의 하드웨어 성능 특성들을 식별 또는 결정하도록 그리고 이 특성들을 나타내는 하드웨어 구성 데이터를 생성하도록 동작가능한 하나 이상의 하드웨어 성능 평가 툴들을 각각의 노드(16)에 배치함으로써 블록(762)에서 하드웨어 성능 평가 테스트를 개시한다. 그 다음, 데이터 취합기(84)는 하드웨어 성능 평가 툴들에 의해 제공되는 하드웨어 성능 데이터를 취합하도록 동작가능해서, 노드 구성기(72)는 취합된 데이터에 근거하여 각각의 노드(16)의 실제 하드웨어 성능 특성들을 결정할 수 있다. 예시적인 평가 툴은, 노드(16)의 프로세서(들)의 타입 및 상기 프로세서의 다양한 특성들/특징들(예컨대, 제조사, 프로세서 속도 및 용량, 이용가능한 메모리 및 디스크 공간, 등)을 포함하는, 이 기술분야에 알려진 CPU 식별 툴("CPUID")을 포함한다. 다른 예시적인 모니터링 툴은, 노드(16)에 의해 실행될 때, 노드(16) 및/또는 프로세서(들)의 제조사와 호환가능한(compatible) 명령 세트를 결정하기 위해 명령 세트 확장 또는 명령 타입에 대해 테스트하도록 동작가능한 소프트웨어 코드 모듈을 포함한다. 다른 예시적인 모니터링 툴은, 노드(16)에 의해 실행될 때, 노드(16)가 64 비트 또는 32 비트 아키텍쳐를 가지는지를 테스트하도록 동작가능한 소프트웨어 코드 모듈들을 포함한다. 예를 들어, 이러한 테스트는 커맨드를 발행하거나 요청을 프로세싱하는 것 그리고 프로세서가 요청을 완료하기 위해 얼마나 시간을 소요하는지를 측정하는 것을 수반할 수 있다.
일 실시예에서, 블록(766)에서 선택된 노드들(16)의 서브세트의 노드들(16)의 수는 사용자 요청에 식별된 노드들(16)의 수보다 적다. 따라서, 구성기(22)는 선택된 노드들(16)의 수가 사용자 요청으로 요청된 노드들의 수와 동일할 때까지 노드들(16)의 추가적인 서브세트들을 획득하기 위해 단계들(762 내지 766)을 반복한다. 일 실시예에서, 블록(766)에서 노드들(16)의 제1 서브세트를 선택한 후, 노드 구성기(72)는 블록(762)에서 초기에 테스트되는 이용가능한 노드들(16)의 제1 그룹과 다른 이용가능한 노드들(16)의 제2 그룹을 선택한다. 데이터 모니터 구성기(82)는 이용가능한 노드들(16)의 제2 그룹의 실제 하드웨어 성능 특성들을 획득하기 위해 이용가능한 노드들(16)의 제2 그룹 상에서 하드웨어 성능 평가를 개시하고, 노드 구성기(72)는 이용가능한 노드들의 제2 그룹의 실제 하드웨어 성능 특성들과 요구되는 하드웨어 성능 특성들의 노드 구성기(72)에 의한 비교에 근거하여 이용가능한 노드들(16)의 제2 그룹으로부터 클라우드 컴퓨팅 시스템(10)에 대한 노드들(16)의 제2 서브세트를 선택한다. 일 실시예에서, 노드들(16)의 선택된 서브세트들의 결합된 노드들의 수가 사용자 요청으로 요청된 노드들(16)의 수와 동일할 시, 노드 구성기(72)는 선택된 노드들(16)의 서브세트들을 클라우드 컴퓨팅 시스템(10)의 노드 클러스터(14)로서 구성한다(즉, 사용자 특정 구성 파라미터들로 노드 클러스터(14)를 구성하고, 노드 클러스터(14) 상에서 워크로드들을 동작시키고, 기타 등등을 행한다).
도 44를 참조하면, 사용자에 의해 특정된 요구되는 하드웨어 특성들과 실질적으로 매치되는 하드웨어 특성들을 가지는 노드들의 클러스터(14)를 선택하기 위해 도 1 및 3의 구성기(22)를 포함하는 하나 이상의 컴퓨팅 디바이스들에 의해 수행되는 예시적인 상세한 동작의 순서도(770)가 예시된다. 도 44의 설명 전반에 걸쳐 도 1 내지 3에 대한 참조가 이루어진다. 블록(772)에서, 노드 구성기(72)는 요구되는 하드웨어 성능 특성들을 가지는 N개의 노드들(16)에 대한 사용자 요청을 수신하고, N은 요구되는 노드들(16)의 어떤 적절한 수이다. 일 실시예에서, 사용자 요청은 도 43에 관하여 본 명세서에 기술된 바와 같이, 선택가능한 하드웨어 구성 데이터(예컨대, 도 8 및 9)의 사용자 선택에 근거한다. 블록(774)에서, 노드 구성기(72)는 액세스된 데이터 센터(들) 또는 클라우드의 이용가능한 노드들(16)로부터 N + M개의 노드들(16)을 요청 또는 수신한다. M은 예약된(reserved) 이용가능한 노드들(16) 수(N + M)가 요청된 노드들(16)의 수 N를 초과하도록 하는 어떤 적절한 수이다. 예를 들어, M은 N과 동일할 수 있거나 또는 N의 두배와 동일할 수 있다. 대안적으로는, 노드 구성기(72)는 블록(774)에서 N 개의 이용가능한 노드들(16)을 요청할 수 있다. 일 실시예에서, (N + M개의) 노드들(16)은 어플리케이션 별 API(예컨대, Amazon AWS API, OpenStack API, 커스텀 API, 등)을 이용하여 할당 또는 예약된다. 노드 구성기(72)는 요구되는 노드들의 클러스터와 유사한 하드웨어 특성들을 가지는 이용가능한 노드들(16)에 근거하여 블록(774)(및 블록(788))에서 이용가능한 노드들(16)을 요청한다. 예를 들어, 노드 구성기(72)는 동일한 노드 타입(본 명세서에 기술된 바와 같이, 예컨대, 스몰, 미디움, 라지, x-라지)을 가지는 이용가능한 노드들(16)을 예약할 수 있다.
블록(776)에서, 도 43에 관하여 본 명세서에 기술된 바와 같이, 데이터 모니터 구성기(82)는 하나 이상의 하드웨어 성능 평가 툴들을 배치함으로써 각각의 예약된 노드(16) 상에서 하드웨어 성능 평가 테스트를 개시하고, 데이터 취합기(84)는 각각의 노드(16) 상에서 개시된 하드웨어 성능 평가 테스트들로부터 비롯되는 하드웨어 성능 데이터를 취합(예컨대, 수집 및 저장)한다. 일 실시예에서, 하드웨어 성능 평가 툴들은 SSH, HTTP 또는 일부 다른 적절한 프로토콜/메커니즘을 이용하여 노드들(16)에 미리 인스톨되거나 또는 노드들(16)에 인스톨된 소프트웨어 코드 모듈들이다.
블록(780)에서, 노드 구성기(72)는 하드웨어 성능 평가 테스트들로부터 비롯된 실제 하드웨어 성능 특성들과 사용자 요청(블록(772))의 요구되는 하드웨어 성능 특성들을 비교한다. 실제의 또는 요구되는 하드웨어 성능 특성들에 있어서의 유사성들에 근거하여, 노드 구성기(72)는 블록(782)에서, 요구되는 하드웨어 특성들과 최적으로 매치되는 X개의 노드들(16)을 (N + M개의) 예약된 노드들(16)로부터 선택하며, X는 요청된 노드들(16)의 수 N보다 작거나 또는 동일한 어떤 수이다. 하드웨어 특성들에 근거하여 도 41에 관하여 본 명세서에 기술된 "최적 매칭" 기법과 같은 어떤 적절한 알고리즘이 하드웨어 특성들을 비교하고 최적으로 매칭되는 노드들(16)을 선택하기 위해 사용될 수 있다. 블록(784)에서, 노드 구성기(72)는 예컨대, 가령 어플리케이션 별 API들을 이용함으로써, 데이터 센터(들) 또는 클라우드에 (예컨대, (N + M) - X 개의) 나머지 선택되지 않은 이용가능한 노드들(16)을 릴리즈(release)시켜서, 선택되지 않은 이용가능한 노드들(16)은 다른 클라우드 컴퓨팅 시스템들로 사용하기 위해 이용가능하게 된다. 선택된 노드들(16)의 수 X가 블록(786)에서 요청된 노드들(16)의 수 N보다 작을 시, 노드 구성기(72)는 블록(788)에서 데이터 센터(들)/클라우드로부터 추가적인 노드들(16)을 요청 또는 예약한다. 그 다음, 구성기(22)는 선택된 노드들(16)의 총 수(즉, 선택된 방법의 모든 반복들로부터 비롯되는 결합된 노드들(16)의 수)가 요청된 노드들(16)의 수 N과 동일해질 때까지 단계들(776 내지 786)을 반복한다. 그 다음, 선택된 노드들(16)은 사용자에 의해 할당되는 클라우드 컴퓨팅 태스크들을 수행하기 위해 노드들의 클러스터(14)로서 구성된다.
일 실시예에서, 도 44의 방법은 요구되는 하드웨어 특성들 및 네트워크 특성들을 가지는 노드들의 클러스터(14)를 선택하기 위해 도 41의 방법과 연계하여 동작한다. 일 실시예에서, 도 44의 방법은 가까운 네트워크 접근성을 가지는 노드들(16)에 더 근거하여 노드들(16)을 선택한다. 일 실시예에서, 블록(772)에서 사용자 요청으로 식별된 하드웨어 특성들은 노드 클러스터(14)에 대해 노드들(16)을 선택하기 전에 우선순위화된다. 일 실시예에서, 도 44(및 도 43)의 방법은 사용자에 의해 특정된 요구되는 노드들의 클러스터와 실제 선택된 노드들의 클러스터(14)와의 적절한 매치를 발견하기 위해 구성기(22)에 의해 자동으로 실행된다. 대안적으로는, 사용자는 예컨대, 사용자 인터페이스(200)의 선택가능한 입력들에 근거하여 도 43 및 44의 동작들을 개시하기 위해 구성기(22)에 의한 옵션을 부여받을 수 있다.
클라우드 컴퓨팅 시스템의 하드웨어 구성 선택 및/또는 수정
도 45는 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)의 하드웨어 구성을 선택하기 위해 도 1 및 3의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(800)를 도시한다. 도 45의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 블록(802)에서, 노드 구성기(72)는 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)에 의해 공유되는 워크로드의 실행에 근거하여, 노드들의 클러스터(14)의 적어도 하나의 노드(16)가 공유되는 워크로드의 실행 동안 임계 동작 용량보다 작은 동작 용량에서 동작됨을 결정한다. 임계 동작 용량은 예시적으로는, 적어도 하나의 노드(16)에 의한 하드웨어 활용, 예컨대 워크로드 실행 동안 프로세서(40) 및/또는 메모리(42)의 활용에 근거한다. 임계 동작 용량은 예컨대, 최대 동작 용량(100%) 또는 90%의 동작 용량과 같은 어떤 적절한 임계일 수 있다. 블록(804)에서, 노드 구성기(72)는 블록(802)에서의 결정에 근거하여 노드들의 클러스터(14)의 수정된 하드웨어 구성을 선택해서, 수정된 하드웨어 구성을 가지는 노드 클러스터(14)는 감소된 컴퓨팅 용량 및 감소된 저장 용량 중 적어도 하나를 가진다.
일 실시예에서, 노드 구성기(72)는 데이터 센터의 복수의 이용가능한 노드들(16)로부터 적어도 하나의 다른 노드(16)를 선택하고 노드들의 클러스터(14)의 적어도 하나의 노드(16)를 상기 적어도 하나의 다른 노드(16)와 교체함으로써 수정된 하드웨어 구성을 선택한다. 다른 노드(16)는 노드들의 클러스터(14)의 교체된 노드(16)에 비해 감소된 컴퓨팅 용량 및 감소된 저장 용량 중 적어도 하나를 가진다. 예를 들어, 노드 구성기(72)는 교체된 노드(16)에 비해, 더 느린 프로세서(40), 더 적은 프로세싱 코어들, 더 적은 메모리 용량 및 또는 어떤 다른 적절한 감소된 하드웨어 특성들을 가지는 다른 노드(16)를 이용가능한 노드들(16)로부터 선택한다. 예를 들어, 교체된 노드(16)는 워크로드를 프로세스하는데 요구되는 것보다 많은 컴퓨팅 파워 또는 메모리 용량을 가져서, 교체된 노드(16)의 하드웨어의 일부들은 워크로드 실행 동안 활용되지 않는다. 예시된 실시예에서, 다른 노드(16)가 선택되어서, 이 다른 노드는 하나 이상의 교체된 노드들(16)과 유사한 성능(예컨대, 유사한 실행 속도, 등)으로 워크로드를 프로세스할뿐만 아니라 상기 다른 노드(16)의 감소된 컴퓨팅 및/또는 저장 용량으로 인해 더 효율적으로 워크로드를 프로세스하도록 동작가능하다. 따라서, 다른 노드(16)로 수정된 노드들의 클러스터(14)는 상기 다른 노드(16)의 감소된 컴퓨팅 및/또는 저장 용량으로 인해 더 효율적으로 워크로드를 실행하면서도 전반적인 성능 손실을 거의 보이지 않거나 전혀 보이지 않는다. 예를 들어, 노드 클러스터(14)는 교체된 노드(16)와도 그러하듯이 다른 노드(16)와 실질적으로 유사한 속도로 워크로드를 실행시킨다.
일 실시예에서, 노드 구성기(72)는 다른 노드들(16)과 제거된 노드들(16)을 교체함이 없이 노드들의 클러스터(14)로부터 하나 이상의 노드들(16)을 선택 및 제거함으로써 블록(804)의 수정된 하드웨어 구성을 선택 및 구현한다. 예를 들어, 노드 구성기(72)는 노드 클러스터(14)의 나머지 노드들(16)이 유사한 실행 성능으로 워크로드를 실행시키는데 노드 클러스터(14)의 하나 이상의 노드들(16)이 필요하지 않음을 결정한다. 따라서, 노드 구성기(72)는 노드 클러스터(14)로부터 이 하나 이상의 노드들(16)을 제거하고, 데이터 센터에 이 노드들(16)을 다시 릴리즈시킨다. 일 실시예에서, 노드 구성기(72)는 노드 클러스터(14)의 하나 이상의 노드들(16)의 컴퓨팅 용량 및 메모리 용량 중 적어도 하나를 감소시킴으로써(예컨대, 본 명세서에 기술된 부트 시간 파라미터들을 조정함으로써) 블록(804)의 수정된 하드웨어 구성을 선택 및 구현한다.
예시된 실시예에서, 구성기(22)는 노드 클러스터(14)에 대해 다양한 하드웨어 리소스들(예컨대, 노드들(16))을 이용하는 것과 관련된 하드웨어 사용 비용을 식별하는 하드웨어 사용 비용 데이터로의 액세스를 가진다. 예를 들어, 클라우드 컴퓨팅 서비스(예컨대, Amazon, OpenStack, 등)는 노드 클러스터(14)의 각각의 선택된 노드(16)의 컴퓨팅 용량 및 메모리 용량과 같은 하드웨어에 근거하여 사용 비용을 부과한다. 따라서, 일 실시예에서, 노드 구성기(72)는 노드들의 클러스터(14) 내의 적어도 하나의 교체된 노드(16)를 이용하는 것과 관련된 사용 비용 데이터와 노드들의 클러스터(14) 내의 적어도 하나의 다른 노드(16)를 이용하는 것과 관련된 사용 비용 데이터와의 비교에 더 근거하여 노드 클러스터(14)의 하나 이상의 노드들(16)을 교체하기 위해 적어도 하나의 다른 노드(16)를 선택한다. 일 실시예에서, 노드 구성기(72)는 적어도 하나의 다른 노드(16)의 사용 비용이 교체된 노드(16)의 사용 비용보다 적을 시 적어도 하나의 다른 노드(16)를 선택한다. 예를 들어, 노드 구성기(72)는 노드들의 클러스터(14)에서 사용죄는 하드웨어 리소스들(예컨대, 노드(16))의 비용을 계산하고, 노드들의 클러스터(14)의 잠재적인 하드웨어 구성 변경들과 관련된 비용 이득(benefit)들을 결정한다. 예를 들어, 노드 구성기(72)는 하나 이상의 다른 노드들(16)을 선택하는 바, 상기 하나 이상의 다른 노드들(16)은 결과적으로, 적은 사용 비용에서 그리고 최소 성능 손실로 노드 클러스터(14)의 할당된 하드웨어 리소스들이 더욱 효율적으로 사용되게 할 것이다. 일 실시예에서, 구성기(22)는 유사한 비용 분석에 근거하여 네트워크 구성 또는 다른 구성 파라미터들을 구성한다.
예시된 실시예에서, 구성기(22)는 노드 클러스터(14)의 각각의 노드(16)에 하나 이상의 하드웨어 활용 모니터링 툴들을 배치함으로써 각각의 노드(16)의 하드웨어 활용을 모니터링한다. 각각의 노드(16)에 의한 하드웨어 활용 모니터링 툴들의 실행은, 각각의 노드(16)의 적어도 하나의 프로세서(40)로 하여금 워크로드의 실행 동안 컴퓨터 하드웨어(예컨대, 프로세서(40), 메모리(42), 메모리 제어기, 등)의 활용 또는 사용을 모니터링하게끔 동작가능하다. 그 다음, 모니터링 툴들은 노드들(16)로 하여금 워크로드의 실행 동안 각각의 노드(16)의 하드웨어 활용과 관련된 구성기(22)에 의해 액세스가능한 하드웨어 활용 데이터를 제공하게 한다. 구성기(22)의 데이터 취합기(84)는 각각의 노드(16)에 의해 제공되는 하드웨어 활용 데이터를 취합하도록 동작가능해서, 구성기(22)는 취합된 하드웨어 활용 데이터에 근거하여 각각의 노드(16)의 하드웨어 활용을 결정한다. 예시적인 하드웨어 모니터링 툴들은 도 26 내지 29의 모니터링 모듈(214)에 관하여 본 명세서에 기술된다. 예를 들어, IOStat 및 VMStat 툴들은 프로세서(40), 가상 메모리 및/또는 메모리 제어기가 워크로드 실행 동안 바쁘게 명령들을 실행하거나 또는 I/O 동작들을 수행하는 시간의 퍼센티지, 이 컴포넌트들이 워크로드 실행 동안 대기/인스톨되는 시간의 퍼센티지, 및 다른 적절한 활용 파라미터들을 모니터링하도록 노드 프로세서(40)에 의해 실행가능한 코드 모듈들을 포함한다. 노드(16)의 결정된 하드웨어 활용에 근거하여, 노드 구성기(72)는 본 명세서에 기술된 바와 같이, 초기에 요청 및 할당된 것보다 그 노드(16)에 대해 적은 메모리 및 적은 컴퓨팅 파워가 필요함을 결정할 수 있고, 클러스터(14)로부터 노드(16)을 교체 또는 제거할 수 있다.
일 실시예에서, 노드 구성기(72)는 블록(804)에서, 선택된 수정된 하드웨어 구성을 나타내는 사용자 인터페이스(200) 상에 선택가능한 하드웨어 구성 데이터를 디스플레이한다. 선택가능한 하드웨어 구성 데이터의 사용자 선택에 근거하여, 노드 구성기(72)는 노드들의 클러스터(14)의 하드웨어 구성을 수정하는 바, 예컨대 노드 클러스터(14)의 노드(16)를 교체하거나 또는 제거한다. 예시적인 선택가능한 하드웨어 구성 데이터는 선택가능한 입력들(259, 262)을 갖는 도 8의 테이블(258)에 도시된다. 예를 들어, 노드 구성기(72)는 하나 이상의 다른 노드들(16) 또는 제거된 노드들(16)을 포함하는 노드 클러스터(14)의 추천된(recommended) 노드들(16)을 나열함으로써 테이블(258)에 노드 클러스터(14)의 추천된 수정된 하드웨어 구성을 디스플레이할 수 있다. 본 명세서에 기술된 바와 같이, 사용자는 하드웨어 변경들을 받아들이기 위해 나열된 노드들(16)에 대응하는 입력들(259)을 선택하고, 노드 구성기(72)는 워크로드 배치의 개시 시 받아들여진 변경들에 근거하여 수정된 노드 클러스터(14)를 구성한다. 일 실시예에서, 하드웨어 사용 비용은 또한, 관련된 사용 비용에 근거하여 사용자가 구현하기 위한 구성을 선택하게 하도록 노드 클러스터(14)의 하나 이상의 추천된 하드웨어 구성들에 대해 사용자 인터페이스(200)로 디스플레이된다. 다른 적절한 인터페이스들이 노드들의 클러스터(14)의 수정된 하드웨어 구성을 디스플레이하기 위해 제공될 수 있다. 일 실시예에서, 노드 구성기(72)는 사용자 입력 또는 확인이 없이 블록(804)에서 선택된 수정된 하드웨어 구성으로 노드들의 클러스터(14)를 자동으로 구성하고, 또한 수정된 노드 클러스터(14)로 워크로드의 실행들을 개시한다.
도 46을 참조하면, 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)의 하드웨어 구성을 선택하기 위해 도 1 및 3의 구성기(22)를 포함하는 하나 이상의 컴퓨팅 디바이스들에 의해 수행되는 예시적인 상세한 동작의 순서도(810)가 예시된다. 도 46의 설명 전반에 걸쳐 도 1 내지 3에 대한 참조가 이루어진다. 블록(812)에서, 구성기(22)는 본 명세서에 기술된 바와 같이 요구되는 하드웨어 구성으로 요구되는 노드들의 클러스터(14)의 블록(814)에서의 사용자 선택을 할 수 있게 하기 위한 선택가능한 노드 데이터를 포함하는 사용자 인터페이스(200)를 제공한다. 블록(816)에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 선택된 노드들의 클러스터(14)를 선택 및 구성하고, 노드들의 클러스터(14)에 워크로드를 배치한다. 블록(818)에서, 구성기(22)는 노드 클러스터(14)의 각각의 노드(16) 상에서 하드웨어 활용 모니터링 툴들을 인스톨 및/또는 구성한다. 일 실시예에서, 모니터링 툴들은 도 26 내지 29의 모니터링 모듈(214)을 통해 사용자에 의해 선택된다. 대안적으로는, 구성기(22)는 도 46의 방법의 개시에 근거하여IOStat 및 VMStat 툴들과 같은 하나 이상의 모니터링 툴들을 자동으로 배치할 수 있다. 블록(820)에서, 워크로드 구성기(78)는 노드들의 클러스터(14) 상에서 워크로드의 실행을 개시하고, 블록(822)에서, 실행 다음에 또는 실행 동안 데이터 취합기(84)는 각각의 노드(16)의 모니터링 툴들에 의해 제공되는 하드웨어 활용 데이터를 수집 및 저장한다.
노드 클러스터(14)에 의한 워크로드 실행의 완료 시, 노드 구성기(72)는 블록(824)로 나타내진 바와 같이, 하드웨어 활용 데이터에 근거하여 각각의 노드(16)의 하드웨어 활용을 결정한다. 블록(826)에서, 노드 구성기(72)는 각각의 노드(16)의 하드웨어 활용이 활용 임계(예컨대, 100% 활용, 90% 활용 또는 어떤 다른 적절한 활용 임계)를 충족 또는 초과하는지를 결정한다. 일 실시예에서, 노드 구성기(72)는 프로세서 활용, 메모리 활용, 메모리 제어기 활용, 등과 같이, 블록(826)에서 하나 이상의 활용 임계들과 복수의 활용 측정들을 비교한다. 블록(826)에서, 예(yes)이면, 노드 클러스터(14)는 추가의 워크로드 실행들에 적절한 것으로 결정되는 바, 즉, 노드 클러스터(14)의 하드웨어 구성의 어떠한 조정들도 구성기(22)에 의해 이루어지지 않는다. 블록(826)에서 활용 임계를 충족 또는 초과하지 않는 각각의 노드(16)에 대해, 노드 구성기(72)는 도 45에 관하여 본 명세서에 기술된 바와 같이, 교체된 노드(16)보다 적은 컴퓨팅 또는 메모리 용량을 가지면서도 워크로드의 실행에 적절한 하드웨어를 (즉, 교체된 노드(들)(16)과 유사한 성능을) 가지는 다른 교체 노드(16)를 데이터 센터의 이용가능한 노드들(16)로부터 식별한다. 블록(830)에서, 노드 구성기(72)는 도 45에 관하여 기술된 바와 같이, 사용자 인터페이스(200) 상에 노드들의 클러스터(14)의 추천된 하드웨어 구성을 디스플레이함으로써 블록(828)에서 식별된 어떤 추천된 하드웨어 구성 변경들의 피드백을 사용자에게 제공한다. 블록(832)에서, 노드 구성기(72)는 본래의 노드 클러스터(14)의 노드들(16)을 제거 및/또는 블록(828)에서 식별된 다른 노드들(16)과 교체함으로써 워크로드의 향후 실행들을 위해 추전된 하드웨어 구성 변경들을 적용한다.
일 실시예에서, 사용 인터페이스(200)의 선택가능한 입력의 사용자에 의한 선택은 노드 구성기(72)로 하여금 워크로드를 실행하기 위한 노드 클러스터(14)의 적절한 구성을 찾기 위해 도 45 및 46과 함께 기술된 하드웨어 구성 방법을 실행하게 한다. 대안적으로는, 구성기(22)는 워크로드 성능을 현저히 제한하지는 않는 노드들의 클러스터(14)의 적절한 대안적인 구성을 찾기 위해 예컨대, 가령 배치 프로세싱 잡의 개시 시 도 45 및 46의 방법을 자동으로 구현할 수 있다.
클라우드 컴퓨팅 시스템 튜닝
도 47은 복수의 이용가능한 구성들로부터 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)의 적절한 구성을 선택하기 위해 도 1 및 3의 구성기(22)에 의해 수행되는 예시적인 동작의 순서도(850)를 도시한다. 도 47의 설명 전반에 걸쳐 도 1 및 3에 대한 참조가 이루어진다. 블록(852)에서, 구성기(22)(예컨대, 배치 프로세서(80))는 노드들의 클러스터(14)에 대한 복수의 다른 구성 파라미터들의 세트들에 근거하여 노드들의 클러스터(14) 상에서 워크로드의 복수의 실행들을 개시한다. (예컨대, 본 명세서에 기술된 바와 같은 하나 이상의 구성 파일들(28)을 통해) 구성기(22)에 의해 노드들(16)로의 입력으로 제공되는 구성 파라미터들은 다른 구성 파라미터들의 세트들을 제공하기 위해 구성기(22)에 의해 조정가능하며, 워크로드는 각각의 다른 구성 파라미터들의 세트로 노드들의 클러스터(14)에 의해 실행된다. 일 실시예에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 사용자 인터페이스(200)를 통해 제공되는 사용자 입력에 근거하여 각각의 워크로드 실행을 위한 구성 파라미터들을 조정한다. 일 실시예에서, 구성 파라미터들은 다음의, 적어도 하나의 노드(16)의 워크로드 컨테이너의 동작 파라미터, 적어도 하나의 노드(16)의 부트 시간 파라미터, 및 적어도 하나의 노드(16)의 하드웨어 구성 파라미터 중 적어도 하나를 포함한다.
블록(854)에서, 노드 구성기(72)는 복수의 다른 구성 파라미터들의 세트들로부터 노드들의 클러스터(14)에 대한 구성 파라미터들의 세트를 선택한다. 블록(856)에서, 워크로드 구성기(78)는 선택된 구성 파라미터들의 세트로 구성되는 노드들의 클러스터(14)에 의한 실행을 위해 노드들의 클러스터(14)에 워크로드를 제공(예컨대, 배치)한다. 따라서, 워크로드의 추가의 실행들은 선택된 구성 파라미터들의 세트에 근거하는 구성을 가지는 노드들의 클러스터(14)에 의해 수행된다.
블록(854)에서 구성 파라미터들의 세트의 선택은, 노드들의 클러스터(14)의 적어도 하나의 요구되는 성능 특성과 워크로드의 각각의 실행 동안 (예컨대, 모니터링 툴들로) 모니터링되는 노드들의 클러스터(14)의 적어도 하나의 성능 특성의 노드 구성기(72)에 의한 비교에 근거한다. 예를 들어, 일 실시예에서, 노드 구성기(72)는, 결과적으로,워크로드 실행 동안의 노드 클러스터(14)의 성능 특성들이 사용자에 의해 특정된 요구되는 성능 특성들과 최적으로 매치되게 하는 구성 파라미터들의 세트를 선택한다. 예시된 실시예에서, 요구되는 성능 특성들은 사용자 인터페이스(200)를 통해 제공되는 사용자 입력에 근거하여 노드 구성기(72)에 의해 식별된다. 예를 들어, 사용자 인터페이스(200)는, 선택된 워크로드를 실행할 때 사용자로 하여금 노드들의 클러스터(14)의 요구되는 성능 특성들을 선택하게 할 수 있는 선택가능한 입력들 또는 채울 수있는(fillable) 필드들과 같은 선택가능한 성능 데이터를 포함한다. 예컨대, 요구되는 성능 특성들을 식별하는 사용자 입력을 수신하도록 구성된 도 10의 채울 수 있는 필드(276) 또는 사용자 인터페이스(200)의 어떤 다른 적절한 선택가능한 입력 또는 필드를 참조하라. 다른 예에서, 노드 구성기(72)는 예컨대, 가령 도 7의 입력들(238, 228, 230, 232)의 사용자 선택 및/또는 도 25의 배치 프로세서 모듈(212)의 버튼(494)에 근거하여, 요구되는 성능 특성들을 식별하는 데이터를 포함하는 사용자 제공 파일을 로딩할 수 있다.
사용자에 의해 특정되고 워크로드 실행 동안 모니터링되는 예시적인 성능 특성들은 워크로드 실행 시간, 노드(16)에 의한 프로세서 활용, 노드(16)에 의한 메모리 활용, 노드(16)에 의한 파워 소모, 노드(16)에 의한 하드 디스크 입력/출력(I/O) 활용 및 노드(16)에 의한 네트워크 활용을 포함한다. 다른 적절한 성능 특성들은 도 26 내지 29에 관하여 본 명세서에 기술된 모니터리 툴들로 모니터링되는 성능 특성들과 같이, 사용자에 의해 모니터링 및/또는 특정될 수 있다.
일 실시예에서, 블록(854)에서 구성 파라미터들의 세트의 선택은 또한, 워크로드의 실행 동안 모니터링되는 하나 이상의 성능 특성들과 관련된 값이 하나 이상의 대응하는 요구되는 성능 특성들과 관련된 허용가능한 값들의 범위 내에 속함을 노드 구성기(72)에 의해 결정하는 것에 근거한다. 예를 들어, 대응하는 요구되는 성능 특성들과 관련된 (예컨대, 사용자에 의해 입력되거나 노드 구성기(72)에 의해 설정되는) 허용가능한 값들의 범위들은 85% 내지 100%의 프로세서 활용 및 85% 내지 100%의 메모리 활용을 포함할 수 있다. 따라서, 노드 구성기(72)는, 결과적으로 프로세서가 95% 활용되게 하고 메모리가 90% 활용되게 하는 구성 파라미터들의 세트를 선택하고, 결과적으로 프로세서가 80% 활용되게 하고 메모리가 75% 활용되게 하는 구성 파라미터들의 세트를 받아들이지 않는다(reject). 복수의 구성 파라미터들의 세트들이, 결과적으로 성능 특성들이 허용가능한 값들의 범위를 충족하게 할 시, 노드 구성기(72)는 최적 성능 값들, 최저 사용 비용, 성능 특성들의 우선순위, 또는 다른 적절한 인자들과 같은 추가적인 인자들에 근거하여 구성 파라미터들의 세트를 선택한다. 어떤 구성 파라미터들의 세트들도 결과적으로, 성능 특성들이 허용가능한 범위에 속하게 하지 않을 시, 노드 구성기(72)는, 결과적으로 성능 특성들이 최적으로 매치되게 하는 세트를 선택하고, 적절한 세트가 발견될 때까지 구성 파라미터들을 자동으로 더 조정하며 그리고/또는 사용자에게 어떤 구성 파라미터들의 세트들도 허용가능한 것으로 발견되지 않았음을 통지한다.
일 실시예에서, 노드 구성기(72)는 요구되는 성능 특성들에 대한 모니터링되는 성능 특성들의 유사성들에 근거하여 각각의 다른 구성 파라미터들의 세트에 스코어 값을 할당한다. 따라서, 블록(854)에서 구성 파라미터들의 세트의 선택은 또한, 선택된 구성 파라미터들의 세트에 할당된 스코어 값에 근거한다. 예를 들어, 노드 구성기(72)는, 결과적으로 스코어 값이 최고가 되게 하는 구성 파라미터들의 세트를 선택한다. 스코어 값은, 노드 클러스터(14)의 성능 특성들이 얼마나 밀접하게 요구되는 성능 특성들과 매치되는지에 근거하여 구성 파라미터들의 세트를 순위화(rank)한다.
일 실시예에서, 블록(854)에서의 구성 파라미터들의 세트의 선택은 또한, 노드들의 클러스터(14)로 서로 다른 이용가능한 노드들(16)또는 네트워크 구성들을 이용하는 것과 관련된 사용 비용 데이터의 비교에 더 근거한다. 예를 들어, 노드 구성기(72)는, 결과적으로 프로세서 및 메모리 활용이 임계 활용 레벨보다 높아지게 하고 사용 비용이 임계 비용 레벨보다 낮아지게 하는 구성 파라미터들의 세트를 선택할 수 있다. 사용 비용의 어떤 다른 적절한 고려들이 블록(854)에서의 선택에 적용될 수 있다.
일 실시예에서, 구성기(22)는 (예컨대, 사용자 인터페이스(200)를 통해) 사용자에 의해 제공되는 초기 설정 구성 파라미터들에 근거하여 노드 클러스터(14) 상에서 워크로드들의 제1 실행을 개시한다. 이 실시예에서, 결과적으로 요구되는 성능 특성들로 이어지는 구성 파라미터들의 세트를 찾기 위해, 노드 구성기(72)는, 초기 세트의 적어도 하나의 구성 파라미터들을 자동으로 조정하고, 수정된 초기 세트들에 근거하여 워크로드의 추가적인 실행을 개시함으로써 다른 구성 파라미터들의 세트들을 통해 진행한다(step). 어떤 적절한 설계 공간 탐색(design space exploration) 방법 또는 알고리즘도 이러한 방식으로 다른 구성 파라미터들의 세트들을 탐색하기 위해 사용될 수 있다.
일 실시예에서, 데이터 모니터 취합기(82)는 노드들의 클러스터(14)의 각각의 노드(16)에 (예컨대, 도 26 내지 29와 함께 기술된) 하나 이상의 노드 및 네트워크 성능 모니터링 툴들을 배치한다. 모니터링 툴들은 각각의 노드(16)에 의해 (또는 제어 서버(12)에 의해) 실행될 때, 본 명세서에 기술된 바와 같이 워크로드의 각각의 실행 동안 각각의 노드(16)의 성능 특성들을 모니터링하도록 동작가능하다. 실행된 모니터링 툴들은 구성기(22)에 의해 액세스가능한 대응하는 노드(16)의 성능 특성들을 나타내는 성능 데이터를 생성한다. 데이터 취합기(84)는 각각의 노드(16)의 성능 모니터링 툴들에 의해 제공되는 성능 데이터를 취합하며, 노드 구성기(72)는 취합된 성능 데이터에 근거하여 블록(854)에서 구성 파라미터들의 세트를 선택한다.
본 명세서에 기술된 바와 같이, 노드들의 클러스터(14)의 다른 구성 파라미터들의 세트들은 워크로드 컨테이너의 동작 파라미터, 부트 시간 파라미터 및 하드웨어 구성 파라미터 중 적어도 하나를 포함한다. 워크로드 컨테이너의 예시적인 동작 파라미터들은 도 4 내지 6, 19 및 20에 관하여 본 명세서에 기술되며, 예컨대 판독/기록 동작, 파일 시스템 동작, 네트워크 소켓 동작 및 소팅 동작 중 적어도 하나와 관련된 동작 파라미터들을 포함한다. 동작 파라미터들은 도 19 및 20에 예시되도 본 명세서에 기술된 선택가능한 데이터(예컨대, 입력들 및 필드들)의 사용자 선택들에 근가하여 워크로드 컨테이너 구성기(76)에 의해 선택 및 수정된다. 판독/기록 동작과 관련된 예시적인 동작 파라미터들은 판독/기록 동작에 대한 메모리 버퍼 사이즈 및 판독/기록 동작 동안 전달되는 데이터 블록의 사이즈를 포함한다. 파일 시스템 동작과 관련된 예시적인 동작 파라미터들은 각각의 노드(16)의 메모리에 저강된 파일 시스템 레코드들의 수 및 파일 시스템에 대한 요청들을 프로세싱하기 위해 할당되는 각각의 노드(16)의 프로세싱 스레드들의 수 중 적어도 하나를 포함한다. 소팅 동작과 관련된 예시적인 동작 파라미터는, 소팅 동작을 수행할 때 합치기 위한 데이터 스트림들의 수를 포함한다. 워크로드 컨테이너의 다른 적절한 동작 파라미터들이 제공될 수 있다.
예시적인 부트 시간 파라미터들이 도 10 및 36 내지 38에 관하여 본 명세서에 기술되고, 예컨대 워크로드의 실행 동안 인에이블되는 노드(16)의 프로세싱 코어들의 수 및 노드(16)의 운영 체제(11)에 의해 액세스가능한 노드(16)의 시스템 메모리의 양을 포함한다. 부트 시간 파라미터들은 도 10에 예시되고 본 명세서에 기술된 선택가능한 데이터(예컨대, 입력들 및 필드들)의 사용자 선택에 근거하여 노드 구성기(72)에 의해 선택 및 수정된다. 다른 적절한 부트 시간 파라미터들이 제공될 수 있다. 예시적인 하드웨어 구성 파라미터들이 도 8, 9 및 43 내지 46에 관하여 본 명세서에 기술되고, 예컨대 노드(16)의 프로세서들(40)의 수, 노드(16)의 시스템 메모리의 양, 및 노드(16)의 하드 디스크 공간의 양 중 적어도 하나를 포함한다. 하드웨어 구성 파라미터들은 도 8 및 9에 예시되고 본 명세서에 기술된 선택가능한 데이터(예컨대, 입력들 및 필드들)의 사용자 선택에 근거하여 노드 구성기(72)에 의해 선택 및 수정된다. 다른 적절한 하드웨어 구성 파라미터들이 제공될 수 있다.
도 48을 참조하면, 복수의 이용가능한 구성들로부터 클라우드 컴퓨팅 시스템(10)의 노드들의 클러스터(14)의 적절한 구성을 선택하기 위해 도 1 및 3의 구성기(22)를 포함하는 하나 이상의 컴퓨팅 디바이스들에 의해 수행되는 예시적인 상세한 동작의 순서도(860)가 예시된다. 도 48의 설명의 전반에 걸쳐 도 1 내지 3에 대한 참조가 이루어진다. 도 48의 예시된 실시예에서, 구성기(22)는 노드 클러스터(14)의 실제 성능이 요구되는 성능을 충족하거나 초과할 시 적절한 구성 파라미터들의 세트에 대한 검색을 중단한다. 다른 실시예에서, 구성기(22)는 요구되는 성능 특성들 및/또는 다른 적절한 인자들(에컨대, 사용 비용)에 근거하여 최적을 매치되는 구성 파라미터들의 세트를 선택하기 전에 식별된 각각의 구성 파라미터들의 세트를 트라이(try)한다.
블록(862)에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 사용자 인터페이스(200)를 통해 수신된 사용자 입력에 근거하여 워크로드 실행과 관련된 요구되는 성능 특성들뿐만 아니라 하나 이상의 구성 파라미터들의 세트들을 수신한다. 블록(864)에서, 구성기(22)는 노드들의 클러스터(14)를 할당하고, 블록(862)에서 수신된 구성 파라미터들의 세트로 노드들의 클러스터(14)를 구성한다. 일 실시예에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 블록(864)에서 구성 파라미터들을 식별하는 하나 이상의 구성 파일들(28)을 노드들(16)에 배치한다. 구성기(22)는 블록(866)에서 각각의 노드(16) 상에 (예를 들어, 예컨대, 모듈(214)을 통해 사용자에 의해 선택된) 하나 이상의 모니터링 툴들을 인스톨 및/또는 구성하고, 블록(868)에서 노드들의 클러스터(14)에 의해 워크로드의 실행을 개시한다. 워크로드의 실행 시 또는 워크로드의 실행 동안, 구성기(22)는 블록(870)에서 각각의 노드(16)의 하나 이상의 모니터링 툴들에 의해 생성되는 성능 데이터를 취합한다. 취합된 성능 데이터에 근거하여, 블록(872)에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 취합된 성능 데이터로 식별된 클러스터(14)의 실제 성능 특성들과 블록(862)에서 식별된 요구되는 성능 특성들을 비교한다. 블록(874)에서, 구성기(22)는 본 명세서에 기술된 바와 같이, 성능 특성들이 (예컨대, 허용가능한 범위 내에 있는, 적절한 스코어 값을 가지는, 기타 등등의) 요구되는 성능 특성들과 비교해 볼 때 적절한지를 결정한다. 블록(874)에서, "예"인 경우, 구성기는 워크로드의 향후의 실행들을 위해 블록(864)에서 구현되는 현재의 구성 파라미터들을 계속 유지한다. 성능 특성들이 블록(874)에서 요구되는 것만큼이 아니면 그리고 이용가능한 다른 구성 파라미터들의 세트들이 블록(876)에서 고갈되지(exhausted) 않으면, 구성기(22)는 블록(878)에서 다른 구성 파라미터들의 세트를 선택하고, 블록들(864 내지 846)의 기능들을 반복한다. 예를 들어, 구성기(22)는 상기에 기술된 바와 같이, 블록(862)에서 식별된 다른 구성 파라미터들의 세트 또는 구성기(22)에 의해 제공되는 점진적으로(incrementally) 조정된 파라미터들의 세트를 구현할 수 있다. 프로세스는 구성기(22)가 블록(874)에서 적절한 구성 파라미터들의 세트를 찾거나 또는 구성 파라미터 옵션들이 블록(876)에서 고갈될 때까지 반복된다. 구성 옵션들이 블록(876)에서 고갈되면, 구성기(22)는 최적 성능 특성들 및 블록(882)에서 다른 식별된 특성들 (예컨대, 사용 비용)을 제공한 구성 파라미터들의 세트를 선택한다.
다른 장점들 중에서도 특히, 본 방법 및 시스템은 사용자 인터페이스를 통한 노드들의 클러스터, 워크로드, 워크로드 컨테이너 및 네트워크 구성의 선택, 구성 및 디플로이먼트를 할 수 있게 한다. 추가적으로, 본 방법 및 시스템은 클라우드 구성 파라미터들의 제어 및 조정을 할 수 있게 하고 그럼으로써, 노드 하드웨어, 네트워크, 워크로드 컨테이너 및/또는 워크로드의 다양한 특성들 하에서 성능 분석을 가능하게 하고 성능 분석에 근거하여 자동화된 시스템 튜닝을 가능하게 한다. 다른 장점들이 이 기술분야의 숙련자들에게 인지될 것이다.
본 발명이 양호한 설계들을 가지는 것으로 기술되지만은, 본 발명은 본 발명의 사상 및 범위 내에서 더 수정될 수 있다. 따라서, 본 출원은 본 발명의 일반적인 원리들을 이용하여 본 발명의 어떤 변형들, 사용들 또는 적응들을 커버하도록 의도된다. 또한, 본 출원은, 첨부된 특허 청구 범위의 한정사항 내에 속하고, 본 발명이 속하는 이 기술 분야에 알려진 또는 관습적인 실행 내에서 오는 본 발명으로부터의 이러한 변경(departure)들을 커버하도록 의도된다.

Claims (42)

  1. 하나 이상의 디바이스들에 의해 수행되는 컴퓨팅 시스템을 구성하는 방법으로서,
    상기 하나 이상의 컴퓨팅 디바이스들에 의한, 노드들의 클러스터에 의한 워크로드(workload)의 이전의 실행 동안 모니터링된 상기 노드들의 클러스터의 적어도 하나의 성능 특성(performance characteristic)과 상기 노드들의 클러스터의 적어도 하나의 요구되는 성능 특성의 비교에 근거하여, 복수의 서로 다른 구성 파라미터들의 세트들로부터 컴퓨팅 시스템의 상기 노드들의 클러스터에 대한 구성 파라미터들의 세트를 선택하는 단계와; 그리고
    상기 선택된 구성 파라미터들의 세트로 구성되는 상기 노드들의 클러스터에 의해 공유되는 실행을 위해 상기 노드들의 클러스터에 상기 워크로드를 제공하는 단계를 포함하는 컴퓨팅 시스템을 구성하는 방법.
  2. 제1항에 있어서,
    상기 워크로드의 이전의 실행은,
    상기 노드들의 클러스터의 상기 복수의 서로 다른 구성 파라미터들의 세트에 근거하여 상기 노드들의 클러스터 상에서 복수의 워크로드의 실행들을 개시하는 것을 포함하고, 상기 구성 파라미터들은, 워크로드 컨테이너(workload container)의 동작 파라미터, 적어도 하나의 노드의 부트 시간 파라미터(boot-time parameter) 및 적어도 하나의 노드의 하드웨어 구성 파라미터 중 적어도 하나를 포함하며, 상기 워크로드 컨테이너는 상기 노드들의 클러스터 상에서 상기 워크로드의 프로세싱을 조정하도록 동작가능한 것인 컴퓨팅 시스템을 구성하는 방법.
  3. 제2항에 있어서,
    상기 선택하는 단계는 또한, 상기 하나 이상의 디바이스들에 의해, 상기 워크로드의 실행 동안 모니터링되는 적어도 하나의 성능 특성들과 관련된 값이 적어도 하나의 대응하는 요구되는 성능 특성과 관련된 허용가능한 값들의 범위 내에 속함을 결정하는 것에 근거하는 것인 컴퓨팅 시스템을 구성하는 방법.
  4. 제2항에 있어서,
    상기 선택하는 단계는 또한, 적어도 하나의 모니터링된 성능 특성과 적어도 하나의 요구되는 성능 특성의 비교에 근거하여 각각의 다른 구성 파라미터들의 세트에 스코어 값을 할당하는 것과 그리고 상기 선택된 구성 파라미터들의 세트에 할당된 스코어 값에 근거하여 복수의 다른 구성 파라미터들의 세트로부터 구성 파라미터드르이 세트를 선택하는 것을 포함하는 것인 컴퓨팅 시스템을 구성하는 방법.
  5. 제2항에 있어서,
    상기 선택하는 단계는 또한, 상기 노드들의 클러스터에서 서로 다른 이용가능한 노드들을 이용하는 것과 관련된 사용 비용 데이터(usage cost data)의 비교에 근거하는 것인 컴퓨팅 시스템을 구성하는 방법.
  6. 제2항에 있어서,
    상기 노드들의 클러스터에 의한 워크로드의 각각의 실행 동안 각각의 노드의 적어도 하나의 성능 특성을 모니터링하고 그리고 상기 적어도 하나의 성능 특성을 나타내는 성능 데이터를 제공하도록 동작가능한 적어도 하나의 노드 성능 모니터링 툴을 상기 노드들의 클러스터의 각각의 노드에 디플로이(deploy)하는 단계와; 그리고
    각각의 노드의 상기 적어도 하나의 성능 모니터링 툴에 의해 제공되는 성능 데이터를 취합하는(aggregating) 단계를 더 포함하며, 상기 선택하는 단계는 상기 취합된 성능 데이터에 근거하는 것인 컴퓨팅 시스템을 구성하는 방법.
  7. 제2항에 있어서,
    상기 노드들의 클러스터에 선택된 구성 파라미터들의 세트를 제공하는 단계를 더 포함하는 컴퓨팅 시스템을 구성하는 방법.
  8. 제2항에 있어서,
    선택가능한 구성 데이터를 포함하는 사용자 인터페이스를 제공하는 단계를 더 포함하고, 상기 복수의 서로 다른 구성 파라미터들의 세트들은 상기 선택가능한 구성 데이터의 사용자 선택들에 근거하는 것인 컴퓨팅 시스템을 구성하는 방법.
  9. 제2항에 있어서,
    선택가능한 구성 데이터를 포함하는 사용자 인터페이스를 제공하는 단계를 더 포함하고, 복수의 서로 다른 구성 파라미터들의 세트들의 초기 세트는 상기 선택가능한 구성 데이터의 적어도 하나의 사용자 선택에 근거하며, 복수의 서로 다른 구성 파라미터들의 세트들의 다른 세트들은 상기 하나 이상의 컴퓨팅 디바이스들에 의한 초기 구성 파라미터들의 세트의 적어도 하나의 구성 파라미터의 조정들에 근거하여 상기 하나 이상의 컴퓨팅 디바이스들에 의해 선택되는 것인 컴퓨팅 시스템을 구성하는 방법.
  10. 제2항에 있어서,
    상기 워크로드의 각각의 실행 동안 모니터링되는 적어도 하나의 성능 특성 및 상기 적어도 하나의 요구되는 성능 특성은 워크로드 실행 시간, 적어도 하나의 노드에 의한 프로세서 활용(utilization), 적어도 하나의 노드에 의한 메모리 활용, 적어도 하나의 노드에 의한 파워 소모, 적어도 하나의 노드에 의한 하드 디스크 입력/출력(I/O) 활용, 및 적어도 하나의 노드에 의한 네트워크 활용 중 적어도 하나를 포함하는 것인 컴퓨팅 시스템을 구성하는 방법.
  11. 제2항에 있어서,
    상기 적어도 하나의 노드의 하드웨어 구성 파라미터는 상기 적어도 하나의 노드의 프로세서들의 수, 상기 적어도 하나의 노드의 시스템 메모리의 양, 및 상기 적어도 하나의 노드의 하드 디스크 공간의 양 중 적어도 하나를 포함하는 것인 컴퓨팅 시스템을 구성하는 방법.
  12. 제2항에 있어서,
    상기 적어도 하나의 노드의 부트 시간 파라미터는, 상기 워크로드의 실행 동안 인에이블(enable)되는 상기 적어도 하나의 노드의 프로세싱 코어들의 수 및 상기 적어도 하나의 노드의 운영 체제에 의해 액세스가능한 상기 적어도 하나의 노드의 시스템 메모리의 양 중 적어도 하나를 포함하는 것인 컴퓨팅 시스템을 구성하는 방법.
  13. 제2항에 있어서,
    상기 워크로드 컨테이너의 동작 파라미터는 판독/기록 동작, 파일 시스템 동작, 네트워크 소켓 동작 및 소팅(sorting) 동작 중 적어도 하나와 관련되는 것인 컴퓨팅 시스템을 구성하는 방법.
  14. 제13항에 있어서,
    상기 판독/기록 동작과 관련된 동작 파라미터는 상기 판독/기록 동작을 위한 메모리 버퍼 사이즈 및 상기 판독/기록 동작 동안 전달되는 데이터 블록의 사이즈 중 적어도 하나를 포함하고, 상기 파일 시스템 동작과 관련된 동작 파라미터는 각각의 노드의 메모리에 저장된 파일 시스템 레코드들의 수 및 파일 시스템에 대한 요청들을 프로세싱하기 위해 할당되는 각각의 노드의 프로세싱 스레드(thread)들의 수 중 적어도 하나를 포함하고, 상기 소팅 동작과 관련된 동작 파라미터는 상기 소팅 동작을 수행할 때 합칠(merge) 데이터 스트림들의 수를 포함하는 것인 컴퓨팅 시스템을 구성하는 방법.
  15. 컴퓨팅 구성 시스템으로서,
    노드들의 클러스터에 의한, 워크로드의 이전의 실행 동안 모니터링된 상기 노드들의 클러스터의 적어도 하나의 성능 특성과 상기 노드들의 클러스터의 적어도 하나의 요구되는 성능 특성의 비교에 근거하여 복수의 서로 다른 구성 파라미터들의 세트들로부터 컴퓨팅 시스템의 상기 노드들의 클러스터에 대한 구성 파라미터들의 세트를 선택하도록 동작가능한 노드 구성기와; 그리고
    상기 선택된 구성 파라미터들의 세트로 구성되는 상기 노드들의 클러스터에 의해 공유되는 실행을 위해 상기 노드들의 클러스터에 상기 워크로드를 제공하도록 동작가능한 워크로드 구성기를 포함하여 구성되는 컴퓨팅 구성 시스템.
  16. 제15항에 있어서,
    배치 프로세서(batch processor)를 더 포함하여 구성되며, 상기 배치 프로세서는 상기 노드들의 클러스터의 복수의 서로 다른 구성 파라미터들의 세트들에 근거하여 상기 노드들의 클러스터 상에서 상기 워크로드의 복수의 실행들을 개시함으로써 상기 워크로드의 이전의 실행을 개시하도록 동작가능하고, 상기 구성 파라미터들은 워크로드 컨테이너의 동작 파라미터, 적어도 하나의 노드의 부트 시간 파라미터, 및 적어도 하나의 노드의 하드웨어 구성 파라미터 중 적어도 하나를 포함하고, 상기 워크로드 컨테이너는 상기 노드들의 클러스터 상에서 상기 워크로드의 프로세싱을 조정하도록 동작가능한 것인 컴퓨팅 구성 시스템.
  17. 제16항에 있어서,
    상기 노드 구성기는, 상기 노드 구성기에 의해, 상기 워크로드의 실행 동안 모니터링되는 적어도 하나의 성능 특성과 관련된 값이 적어도 하나의 대응하는 요구되는 성능 특성과 관련된 허용가능한 값들의 범위 내에 속함을 결정함에 또한 근거하여 구성 파라미터들의 세트를 선택하도록 동작가능한 것인 컴퓨팅 구성 시스템.
  18. 제16항에 있어서,
    상기 노드 구성기는 상기 모니터링된 적어도 하나의 성능 특성 및 상기 적어도 하나의 요구되는 성능 특성의 비교에 근거하여 각각의 다른 구성 파라미터들의 세트에 스코어 값을 할당함으로써 그리고 선택된 구성 파라미터들의 세트에 할당된 스코어 값에 근거하여 복수의 서로 다른 구성 파라미터들의 세트들로부터 구성 파라미터들의 세트를 선택함으로써 구성 파라미터들의 세트를 선택하도록 동작가능한 것인 컴퓨팅 구성 시스템.
  19. 제16항에 있어서,
    상기 노드 구성기는 상기 노드 구성기에 의한, 상기 노드들의 클러스터 내의 서로 다른 이용가능한 노드들을 이용하는 것과 관련된 사용 비용 데이터의 비교에 또한 근거하여 구성 파라미터들의 세트를 선택하도록 동작가능한 것인 컴퓨팅 구성 시스템.
  20. 제16항에 있어서,
    상기 노드들의 클러스터의 각각의 노드에 적어도 하나의 노드 성능 모니터링 툴을 디플로이하도록 동작가능한 데이터 모니터 구성기 - 상기 적어도 하나의 노드 성능 모니터링 툴은 노드에 의해 실행될 때, 상기 노드들의 클러스터에 의한 워크로드의 각각의 실행 동안 노드의 적어도 하나의 성능 특성을 모니터링하고 그리고 상기 적어도 하나의 성능 특성을 나타내는 성능 데이터를 제공하도록 동작가능함 - 와; 그리고
    각각의 노드의 상기 적어도 하나의 성능 모니터링 툴에 의해 제공되는 성능 데이터를 취합하도록 동작가능한 데이터 취합기를 더 포함하며, 상기 노드 구성기는 상기 취합된 성능 데이터에 근거하여 구성 파라미터들의 세트를 선택하도록 동작가능한 것인 컴퓨팅 구성 시스템.
  21. 제16항에 있어서,
    상기 노드 구성기는 또한 상기 노드들의 클러스터에 상기 선택된 구성 파라미터들의 세트를 제공하도록 동작가능한 것인 컴퓨팅 구성 시스템.
  22. 제16항에 있어서,
    적어도 하나의 프로세서 및 실행가능 명령들을 포함하는 메모리를 더 포함하고, 상기 실행가능 명령들은 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 선택가능한 구성 데이터를 포함하는 그래픽 사용자 인터페이스를 제공하도록 하고, 복수의 서로 다른 구성 파라미터들의 세트들은 상기 선택가능한 구성 데이터의 사용자 선택들에 근거하는 것인 컴퓨팅 구성 시스템.
  23. 제16항에 있어서,
    적어도 하나의 프로세서 및 실행가능 명령들을 포함하는 메모리를 더 포함하고, 상기 실행가능 명령들은 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 선택가능한 구성 데이터를 포함하는 그래픽 사용자 인터페이스를 제공하도록 하고, 복수의 서로 다른 구성 파라미터들의 세트들의 초기 세트는 상기 선택가능한 구성 데이터의 적어도 하나의 사용자 선택에 근거하며, 상기 복수의 서로 다른 구성 파라미터들의 세트들의 다른 세트들은 상기 노드 구성기에 의한, 초기 복수의 파라미터들의 세트의 적어도 하나의 구성 파라미터들의 조정들에 근거하여 상기 노드 구성기에 의해 선택되는 것인 컴퓨팅 구성 시스템.
  24. 제16항에 있어서,
    상기 워크로드의 각각의 실행 동안 모니터링되는 적어도 하나의 성능 특성 및 상기 적어도 하나의 요구되는 성능 특성들은 워크로드 실행 시간, 적어도 하나의 노드에 의한 프로세서 활용, 적어도 하나의 노드에 의한 메모리 활용, 적어도 하나의 노드에 의한 파워 소모, 적어도 하나의 노드에 의한 하드 디스크 입력/출력(I/O) 활용 및 적어도 하나의 노드에 의한 네트워크 활용 중 적어도 하나를 포함하는 것인 컴퓨팅 구성 시스템.
  25. 제16항에 있어서,
    상기 적어도 하나의 노드의 하드웨어 구성 파라미터는 상기 적어도 하나의 노드의 프로세서들의 수, 상기 적어도 하나의 노드의 시스템 메모리의 양, 및 상기 적어도 하나의 노드의 하드 디스크 공간의 양 중 적어도 하나를 포함하는 것인 컴퓨팅 구성 시스템.
  26. 제16항에 있어서,
    상기 적어도 하나의 노드의 부트 시간 파라미터는 상기 워크로드의 실행 동안 인에이블되는 상기 적어도 하나의 노드의 프로세싱 코어들의 수 및 상기 적어도 하나의 노드의 운영 체제에 의해 액세스가능한 상기 적어도 하나의 노드의 시스템 메모리의 양 중 적어도 하나를 포함하는 것인 컴퓨팅 구성 시스템.
  27. 제16항에 있어서,
    상기 워크로드 컨테이너의 동작 파라미터는 판독/기록 동작, 파일 시스템 동작, 네트워크 소켓 동작 및 소팅 동작 중 적어도 하나와 관련되는 것인 컴퓨팅 구성 시스템.
  28. 제27항에 있어서,
    상기 판독/기록 동작과 관련된 동작 파라미터는 상기 판독/기록 동작을 위한 메모리 버퍼 사이즈 및 상기 판독/기록 동작 동안 전달되는 데이터 블록의 사이즈 중 적어도 하나를 포함하고, 상기 파일 시스템 동작과 관련된 동작 파라미터는 각각의 노드의 메모리에 저장된 파일 시스템 레코드들의 수 및 파일 시스템에 대한 요청들을 프로세싱하기 위해 할당되는 각각의 노드의 프로세싱 스레드들의 수 중 적어도 하나를 포함하고, 상기 소팅 동작과 관련된 동작 파라미터는 상기 소팅 동작을 수행할 때 합칠 데이터 스트림들의 수를 포함하는 것인 컴퓨팅 구성 시스템.
  29. 비 일시적 컴퓨터 판독가능 매체로서,
    적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금,
    상기 적어도 하나의 프로세서에 의한, 노드들의 클러스터에 의한 워크로드의 이전의 실행 동안 모니터링된 상기 노드들의 클러스터의 적어도 하나의 성능 특성과 상기 노드들의 클러스터의 적어도 하나의 요구되는 성능 특성의 비교에 근거하여 복수의 서로 다른 구성 파라미터들의 세트들로부터 컴퓨팅 시스템의 상기 노드들의 클러스터에 대한 구성 파라미터들의 세트를 선택하게 하고; 그리고
    상기 선택된 구성 파라미터들의 세트로 구성되는 상기 노드들의 클러스터에 의해 공유되는 실행을 위해 상기 노드들의 클러스터에 상기 워크로드를 제공하도록 하는 실행가능한 명령들을 포함하는 비 일시적 컴퓨터 판독가능 매체.
  30. 제29항에 있어서,
    상기 실행가능한 명령들은 상기 적어도 하나의 프로세서로 하여금 상기 적업로드의 이전의 실행을 개시하도록 하고, 상기 적어도 하나의 프로세서는 상기 노드들의 클러스터의 복수의 서로 다른 구성 파라미터들의 세트들에 근거하여 상기 노드들의 클러스터 상에서 상기 워크로드의 복수의 실행들을 개시함으로써 상기 워크로드의 이전의 실행을 개시하고, 상기 구성 파라미터들은 워크로드 컨테이너의 동작 파라미터, 적어도 하나의 노드의 부트 시간 파라미터, 및 적어도 하나의 노드의 하드웨어 구성 파라미터 중 적어도 하나를 포함하고, 상기 워크로드 컨테이너는 상기 노드들의 클러스터 상에서 상기 워크로드의 프로세싱을 조정하도록 동작가능한 것인 비 일시적 컴퓨터 판독가능 매체.
  31. 제30항에 있어서,
    상기 실행가능한 명령들은 상기 적어도 하나의 프로세서로 하여금 상기 워크로드의 실행 동안 모니터링되는 적어도 하나의 성능 특성과 관련된 값이 적어도 하나의 대응하는 요구되는 성능 특성과 관련된 허용가능한 값들의 범위 내에 속함을 상기 적어도 하나의 프로세서에 의해 결정함에 또한 근거하여 구성 파라미터들의 세트를 선택하도록 하는 것인 비 일시적 컴퓨터 판독가능 매체.
  32. 제30항에 있어서,
    상기 실행가능한 명령들은 상기 적어도 하나의 프로세서로 하여금 상기 모니터링된 적어도 하나의 성능 특성 및 상기 적어도 하나의 요구되는 성능 특성의 비교에 근거하여 각각의 다른 구성 파라미터들의 세트에 스코어 값을 할당하도록 하고 그리고 선택된 구성 파라미터들의 세트에 할당된 스코어 값에 근거하여 복수의 서로 다른 구성 파라미터들의 세트들로부터 구성 파라미터들의 세트를 선택하도록 하는 것인 비 일시적 컴퓨터 판독가능 매체.
  33. 제30항에 있어서,
    상기 실행가능한 명령들은 상기 적어도 하나의 프로세서로 하여금 상기 적어도 하나의 프로세서에 의한, 상기 노드들의 클러스터 내의 서로 다른 이용가능한 노드들을 이용하는 것과 관련된 사용 비용 데이터의 비교에 또한 근거하여 구성 파라미터들의 세트를 선택하도록 하는 것인 비 일시적 컴퓨터 판독가능 매체.
  34. 제30항에 있어서,
    상기 실행가능한 명령들은 또한, 상기 적어도 하나의 프로세서로 하여금:
    적어도 하나의 노드 성능 모니터링 툴을 상기 노드들의 클러스터의 각각의 노드에 디플로이하도록 하고 - 상기 적어도 하나의 노드 성능 모니터링 툴은 노드에 의해 실행될 때, 상기 노드들의 클러스터에 의한 워크로드의 각각의 실행 동안 노드의 적어도 하나의 성능 특성을 모니터링하고 그리고 상기 적어도 하나의 성능 특성을 나타내는 성능 데이터를 제공하도록 동작가능함 - ; 그리고
    각각의 노드의 상기 적어도 하나의 성능 모니터링 툴에 의해 제공되는 성능 데이터를 취합하도록 하며, 상기 실행가능한 명령들은 상기 적어도 하나의 프로세서로 하여금 상기 취합된 성능 데이터에 근거하여 구성 파라미터들의 세트를 선택하도록 하는 것인 비 일시적 컴퓨터 판독가능 매체.
  35. 제30항에 있어서,
    상기 실행가능한 명령들은 또한, 상기 적어도 하나의 프로세서로 하여금 상기 노드들의 클러스터에 선택된 구성 파라미터들의 세트를 제공하도록 하는 것인 비 일시적 컴퓨터 판독가능 매체.
  36. 제30항에 있어서,
    상기 실행가능한 명령들은 또한, 상기 적어도 하나의 프로세서로 하여금 선택가능한 구성 데이터를 포함하는 그래픽 사용자 인터페이스를 제공하도록 하고, 상기 복수의 서로 다른 구성 파라미터들의 세트들은 상기 선택가능한 구성 데이터의 사용자 선택들에 근거하는 것인 비 일시적 컴퓨터 판독가능 매체.
  37. 제30항에 있어서,
    상기 실행가능한 명령들은 또한, 상기 적어도 하나의 프로세서로 하여금 선택가능한 구성 데이터를 포함하는 그래픽 사용자 인터페이스를 제공하도록 하고, 복수의 서로 다른 구성 파라미터들의 세트들의 초기 세트는 상기 선택가능한 구성 데이터의 적어도 하나의 사용자 선택에 근거하며, 상기 복수의 서로 다른 구성 파라미터들의 세트들의 다른 세트들은 상기 적어도 하나의 프로세서에 의한 초기 구성 파라미터들의 세트의 적어도 하나의 구성 파라미터의 조정들에 근거하여 상기 적어도 하나의 프로세서에 의해 선택되는 것인 비 일시적 컴퓨터 판독가능 매체.
  38. 제30항에 있어서,
    상기 워크로드의 각각의 실행 동안 모니터링되는 적어도 하나의 성능 특성 및 상기 적어도 하나의 요구되는 성능 특성은 워크로드 실행 시간, 적어도 하나의 노드에 의한 프로세서 활용, 적어도 하나의 노드에 의한 메모리 활용, 적어도 하나의 노드에 의한 파워 소모, 적어도 하나의 노드에 의한 하드 디스크 입력/출력(I/O) 활용, 및 적어도 하나의 노드에 의한 네트워크 활용 중 적어도 하나를 포함하는 것인 비 일시적 컴퓨터 판독가능 매체.
  39. 제30항에 있어서,
    상기 적어도 하나의 노드의 하드웨어 구성 파라미터는 상기 적어도 하나의 노드의 프로세서들의 수, 상기 적어도 하나의 노드의 시스템 메모리의 양, 및 상기 적어도 하나의 노드의 하드 디스크 공간의 양 중 적어도 하나를 포함하는 것인 비 일시적 컴퓨터 판독가능 매체.
  40. 제30항에 있어서,
    상기 적어도 하나의 노드의 부트 시간 파라미터는, 상기 워크로드의 실행 동안 인에이블되는 상기 적어도 하나의 노드의 프로세싱 코어들의 수 및 상기 적어도 하나의 노드의 운영 체제에 의해 액세스가능한 상기 적어도 하나의 노드의 시스템 메모리의 양 중 적어도 하나를 포함하는 것인 비 일시적 컴퓨터 판독가능 매체.
  41. 제30항에 있어서,
    상기 워크로드 컨테이너의 동작 파라미터는 판독/기록 동작, 파일 시스템 동작, 네트워크 소켓 동작 및 소팅 동작 중 적어도 하나와 관련되는 것인 비 일시적 컴퓨터 판독가능 매체.
  42. 제41항에 있어서,
    상기 판독/기록 동작과 관련된 동작 파라미터는 상기 판독/기록 동작을 위한 메모리 버퍼 사이즈 및 상기 판독/기록 동작 동안 전달되는 데이터 블록의 사이즈 중 적어도 하나를 포함하고, 파일 시스템 동작과 관련된 동작 파라미터는 각각의 노드의 메모리에 저장된 파일 시스템 레코드들의 수 및 파일 시스템에 대한 요청들을 프로세싱하기 위해 할당되는 각각의 노드의 프로세싱 스레드들의 수 중 적어도 하나를 포함하고, 상기 소팅 동작과 관련된 동작 파라미터는 상기 소팅 동작을 수행할 때 합칠 데이터 스트림들의 수를 포함하는 것인 비 일시적 컴퓨터 판독가능 매체.
KR20157005995A 2012-08-07 2013-07-31 클라우드 컴퓨팅 시스템을 튜닝하는 시스템 및 방법 KR20150043377A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US13/568,463 US9658895B2 (en) 2012-08-07 2012-08-07 System and method for configuring boot-time parameters of nodes of a cloud computing system
US13/568,432 US20140047095A1 (en) 2012-08-07 2012-08-07 System and method for tuning a cloud computing system
US13/568,463 2012-08-07
US13/568,432 2012-08-07
US13/568,459 2012-08-07
US13/568,459 US9152532B2 (en) 2012-08-07 2012-08-07 System and method for configuring a cloud computing system with a synthetic test workload
PCT/US2013/052994 WO2014025584A1 (en) 2012-08-07 2013-07-31 System and method for tuning a cloud computing system

Publications (1)

Publication Number Publication Date
KR20150043377A true KR20150043377A (ko) 2015-04-22

Family

ID=49029172

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20157005995A KR20150043377A (ko) 2012-08-07 2013-07-31 클라우드 컴퓨팅 시스템을 튜닝하는 시스템 및 방법

Country Status (5)

Country Link
EP (1) EP2883140A1 (ko)
JP (1) JP6373840B2 (ko)
KR (1) KR20150043377A (ko)
CN (1) CN104541247B (ko)
WO (1) WO2014025584A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180028004A (ko) * 2016-09-07 2018-03-15 한국전자통신연구원 복수의 워커 노드가 분산된 환경에서 데이터 스트림을 분석하고 처리하는 방법 및 장치, 그리고 태스크를 관리하는 방법 및 장치
WO2020046514A1 (en) * 2018-08-30 2020-03-05 Intuit Inc. Cost optimized dynamic resource allocation in a cloud infrastructure
KR102178121B1 (ko) * 2019-12-03 2020-11-12 아이씨티웨이주식회사 웹 기반의 공간 빅데이터 관리 서비스를 제공하는 방법 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체
WO2021095943A1 (ko) * 2019-11-15 2021-05-20 대구대학교 산학협력단 서비스 프로파일을 고려한 컨테이너의 배치 방법
KR20210058401A (ko) * 2019-11-14 2021-05-24 대구대학교 산학협력단 클라우드 컴퓨팅 환경에서의 컨테이너 배치 장치 및 방법

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10432734B2 (en) 2014-12-12 2019-10-01 Hewlett Packard Enterprise Development Lp Cloud service tuning
US9652612B2 (en) 2015-03-25 2017-05-16 International Business Machines Corporation Security within a software-defined infrastructure
CN106155811B (zh) * 2015-04-28 2020-01-07 阿里巴巴集团控股有限公司 资源服务装置、资源调度方法和装置
FR3037165B1 (fr) * 2015-06-03 2022-07-29 Bull Sas Dispositif d'interface de programmation pour generer des programmes informatiques dedies de service d'utilisation de ressources informatiques partagees
CN105677382A (zh) * 2015-12-28 2016-06-15 深圳市华讯方舟软件技术有限公司 一种大数据库系统的安装工具
CN106936766A (zh) * 2015-12-29 2017-07-07 大唐高鸿信安(浙江)信息科技有限公司 基于可信芯片的可信云自动部署系统及方法
CN109643350A (zh) * 2016-01-15 2019-04-16 E·马伊姆 在有节点能够执行基于消息的交易的网络架构中实施的方法和系统
WO2018142592A1 (ja) * 2017-02-03 2018-08-09 株式会社日立製作所 情報処理システム及び情報処理方法
US10719354B2 (en) * 2017-06-20 2020-07-21 Samsung Electronics Co., Ltd. Container workload scheduler and methods of scheduling container workloads
CN107590001B (zh) * 2017-09-08 2020-12-22 北京京东尚科信息技术有限公司 负载均衡方法及装置、存储介质、电子设备
US10901804B2 (en) 2017-12-15 2021-01-26 Fujitsu Limited Apparatus and method to select services for executing a user program based on a code pattern included therein
CN110161431B (zh) * 2018-02-12 2023-02-17 西门子公司 变频器监控数据的处理方法、装置和存储介质
CN109471574B (zh) * 2018-11-21 2020-04-10 北京百度网讯科技有限公司 用于配置资源的方法及装置
US11140036B2 (en) 2019-01-16 2021-10-05 International Business Machines Corporation Identifying groups of related nodes in an integration flow
US11349663B2 (en) 2019-10-30 2022-05-31 International Business Machines Corporation Secure workload configuration
CN110941461B (zh) * 2019-11-26 2023-08-04 杭州皓智天诚信息科技有限公司 一种业务处理软件的参数配置终端
CN111754191A (zh) * 2020-06-08 2020-10-09 中国建设银行股份有限公司 基于云平台的自动变更方法及相关设备
CN112286671B (zh) * 2020-12-29 2021-03-12 湖南星河云程信息科技有限公司 一种容器化批处理作业调度方法、装置和计算机设备
EP4134817A1 (en) * 2021-08-14 2023-02-15 Tata Consultancy Services Limited Method and system for performance management of distributed software applications
US11900078B2 (en) 2021-10-15 2024-02-13 International Business Machines Corporation Tuning a container orchestrator
DE102022202944A1 (de) * 2022-03-25 2023-09-28 Robert Bosch Gesellschaft mit beschränkter Haftung Gerätesystem, Verfahren zur Konfiguration des Gerätesystems, Computerprogramm sowie Speichermedium
US11909621B2 (en) * 2022-06-03 2024-02-20 Linquest Corporation Systems and methods for implementing a network resiliency testbed emulator

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350186B2 (en) * 2003-03-10 2008-03-25 International Business Machines Corporation Methods and apparatus for managing computing deployment in presence of variable workload
US20050060391A1 (en) * 2003-09-16 2005-03-17 International Business Machines Corporation Autonomic cluster-based optimization
US7712102B2 (en) * 2004-07-30 2010-05-04 Hewlett-Packard Development Company, L.P. System and method for dynamically configuring a plurality of load balancers in response to the analyzed performance data
JP4460512B2 (ja) * 2005-05-06 2010-05-12 株式会社日立製作所 計算機システムおよび計算機制御方法
US7496667B2 (en) * 2006-01-31 2009-02-24 International Business Machines Corporation Decentralized application placement for web application middleware
TWI428767B (zh) * 2006-06-26 2014-03-01 Ibm 最佳化配置系統參數集之方法,程式及裝置
US8112771B2 (en) * 2008-01-30 2012-02-07 Microsoft Corporation Managing component programs within a service application
US8117613B2 (en) * 2009-04-08 2012-02-14 Microsoft Corporation Optimized virtual machine migration mechanism
US9501329B2 (en) * 2009-05-08 2016-11-22 Rackspace Us, Inc. Methods and systems for cloud computing management
JP5507136B2 (ja) * 2009-07-09 2014-05-28 株式会社日立製作所 管理装置及び方法並びに計算機システム
CN101710866B (zh) * 2009-12-01 2011-11-02 北京邮电大学 一种选择和设置网络超级节点的方法
US8612984B2 (en) * 2010-04-28 2013-12-17 International Business Machines Corporation Energy-aware job scheduling for cluster environments
US8341462B2 (en) * 2010-07-19 2012-12-25 Soasta, Inc. System and method for provisioning and running a cross-cloud test grid
CN102236582B (zh) * 2011-07-15 2013-06-05 浙江大学 虚拟化集群负载在多台物理机中均衡分配的方法
CN102546256B (zh) * 2012-01-12 2015-05-06 易云捷讯科技(北京)有限公司 用于对云计算服务进行监控的系统及方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180028004A (ko) * 2016-09-07 2018-03-15 한국전자통신연구원 복수의 워커 노드가 분산된 환경에서 데이터 스트림을 분석하고 처리하는 방법 및 장치, 그리고 태스크를 관리하는 방법 및 장치
WO2020046514A1 (en) * 2018-08-30 2020-03-05 Intuit Inc. Cost optimized dynamic resource allocation in a cloud infrastructure
KR20210058401A (ko) * 2019-11-14 2021-05-24 대구대학교 산학협력단 클라우드 컴퓨팅 환경에서의 컨테이너 배치 장치 및 방법
WO2021095943A1 (ko) * 2019-11-15 2021-05-20 대구대학교 산학협력단 서비스 프로파일을 고려한 컨테이너의 배치 방법
KR102178121B1 (ko) * 2019-12-03 2020-11-12 아이씨티웨이주식회사 웹 기반의 공간 빅데이터 관리 서비스를 제공하는 방법 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체

Also Published As

Publication number Publication date
CN104541247A (zh) 2015-04-22
EP2883140A1 (en) 2015-06-17
WO2014025584A1 (en) 2014-02-13
JP6373840B2 (ja) 2018-08-15
CN104541247B (zh) 2018-12-11
JP2015530647A (ja) 2015-10-15

Similar Documents

Publication Publication Date Title
KR101614052B1 (ko) 클라우드 컴퓨팅 시스템들을 구성하는 시스템 및 방법
US9152532B2 (en) System and method for configuring a cloud computing system with a synthetic test workload
US9262231B2 (en) System and method for modifying a hardware configuration of a cloud computing system
US9658895B2 (en) System and method for configuring boot-time parameters of nodes of a cloud computing system
JP6373840B2 (ja) クラウドコンピューティングシステムをチューニングするためのシステム及び方法
US20140047095A1 (en) System and method for tuning a cloud computing system
US20140047342A1 (en) System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics
US20140047079A1 (en) System and method for emulating a desired network configuration in a cloud computing system
US10291476B1 (en) Method and apparatus for automatically deploying applications in a multi-cloud networking system
US9712604B2 (en) Customized configuration of cloud-based applications prior to deployment
US9703540B2 (en) Dynamic configuration of virtual appliances
US20150264117A1 (en) Processes for a highly scalable, distributed, multi-cloud application deployment, orchestration and delivery fabric
EP3149603B1 (en) Customized configuration of cloud-based applications prior to deployment
Kjorveziroski et al. Kubernetes distributions for the edge: serverless performance evaluation
Sarzyniec et al. Design and evaluation of a virtual experimental environment for distributed systems
Lin et al. Modeling and simulation of spark streaming
Papapanagiotou et al. Ndbench: Benchmarking microservices at scale
Bian et al. Simulating big data clusters for system planning, evaluation, and optimization
Robert et al. Software frameworks for SDR
Calcaterra et al. MaxHadoop: An efficient scalable emulation tool to test SDN protocols in emulated Hadoop environments
US20220129786A1 (en) Framework for rapidly prototyping federated learning algorithms
Penchalaiah et al. Clustered Single-Board Devices with Docker Container Big Stream Processing Architecture.
Zhang et al. Tinyedge: Enabling rapid edge system customization for iot applications
Straesser et al. Kubernetes-in-the-Loop: Enriching Microservice Simulation Through Authentic Container Orchestration
Akhthar Tenant-Aware BigData Scheduling with Software-Defined Networking

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application