KR102362037B1 - 컨테이너 워크로드 스케줄러 및 컨테이너 워크로드 계획 방법 - Google Patents
컨테이너 워크로드 스케줄러 및 컨테이너 워크로드 계획 방법 Download PDFInfo
- Publication number
- KR102362037B1 KR102362037B1 KR1020180047543A KR20180047543A KR102362037B1 KR 102362037 B1 KR102362037 B1 KR 102362037B1 KR 1020180047543 A KR1020180047543 A KR 1020180047543A KR 20180047543 A KR20180047543 A KR 20180047543A KR 102362037 B1 KR102362037 B1 KR 102362037B1
- Authority
- KR
- South Korea
- Prior art keywords
- workload
- container
- workloads
- collision penalty
- penalty
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- General Factory Administration (AREA)
- Stored Programmes (AREA)
Abstract
일련의 애플리케이션들과 각 애플리케이션들의 일련의 컨테이너에서 컨테이너 워크로드의 실행을 예약하기 위한 시스템이 제공된다. 상기 시스템은, 프로세서에 의해 실행될 때, 상기 컨테이너 워크로드들의 최소 총 충돌 패널티 및 상기 컨테이너 워크로드들을 실행하기 위한 워크로드 배치들을 계산하도록 구성되는 컴퓨터 판독 가능 매체를 포함한다. 워크로드 배치의 수는 최소 총 충돌 패널티와 관련된다. 이 명령어들은 프로세서에 의해 실행될 때, 시스템이 최소 총 충돌 패널티 및 워크로드 배치 수에 따라 컨테이너 워크로드를 워크로드 배치에 할당하도록 한다.
Description
본 발명은 일반적으로 컨테이터화된 워크로드의 스케줄링에 관한 것이다.
DOCKER 시스템의 컨테이너와 같은 컨테이너는 공유 운영 체제에서 격리되어 실행할 수 있는 독립 실행형 소프트웨어 패키지이다. 컨테이너는 엔터프라이즈 및 데이터 센터의 개발 환경뿐 아니라 개발 및 운영(DevOps)에서 빠르게 가장 중요한 도구 중 하나가 되어 가고있다. 그러나 컨테이너 통합, 스케줄링 및 성능은 업계 전반에 걸친 도전 과제이다. 예를 들어, 언제 어떤 컨테이너로 시작하고 어디에 무엇을 마이그레이션을 할 것인지를 결정하는 것은 적절한 스케줄링이 필요한 문제이다. 이러한 결정은 여러 응용 프로그램 컨테이너가 서로 다른 워크로드와 동시에 실행되는 때와 같은 요인에 따라 달라지므로 일부 응용 프로그램의 처리량이 다른 응용 프로그램 컨테이너에 비해 크게 저하될 수 있다(예: 일부 응용 프로그램 워크로드의 불공정 처리량이 있을수 있다). 이러한 불공정 처리량은 일반적으로 사용자에게 바람직하지 않으며 서비스 제공 업체의 서비스 수준 계약(SLA: Service Level Agreement)를 위반할 수 있다. 또한, 동일한 애플리케이션(즉, 동일 환경)의 복수의 인스턴스를 동시에 동작시키고 상이한 애플리케이션(즉, 이기종 환경)의 다수의 인스턴스를 동시에 동작시킴으로써 얻어지는 성능상의 이점은 관련 기술 컨테이너에 따라 다를 수 있다. 또한, 고성능 비휘발성 메모리(NVMe) 및 솔리드 스테이트 드라이브(SSD)와 같은 스토리지 및 디스크 시스템의 최근 혁신에 대한 I/O 집중적인 도킹화된 워크로드의 성능은 아직 잘 이해되지 않고 조사되지 않았다. 컨테이너의 시작 시간은 가상 컴퓨터의 시작 시간과 비교할 때 무시할 수 있으므로 처음에는 모든 컨테이너를 시작하지 않아도 되지만 어느 컨테이너를 언제 시작해야할지에 대한 결정은 성능에 영향을 준다. 따라서 컨테이너 편성이나 일정을 수립하는 것이 바람직하다.
본 발명의 목적은 컨테이너 워크로드의 효과적인 스케줄링 방법 및 시스템을 제공하는데 있다.
본 발명은 일련의 애플리케이션 및 일련의 애플리케이션의 각 애플리케이션의 일련의 컨테이너로부터 컨테이너 워크로드의 실행을 스케줄링하기 위한 시스템의 다양한 실시 예에 관한 것이다. 이 시스템은, 프로세서에 의해 실행될 때, 시스템으로 하여금, 복수의 컨테이너들의 컨테이너 워크로드들의 각각의 가능한 조합에 대한 충돌 패널티를 포함하는 충돌 패널티 매트릭스를 계산하고, 컨테이너 워크로드의 최소 총 충돌 패널티 및 상기 컨테이너 워크로드를 실행하기 위한 상기 최소 총 충돌 패널티와 관련된 워크로드 배치(workload batches)의 수를 계산하도록 하는 명령어들이 저장된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 워크로드 배치의 수는 최소 총 충돌 패널티와 관련된다. 명령어들은, 프로세서에 의해 실행될 때 시스템이 최소 총 충돌 패널티 및 워크로드 배치들의 수에 따라 컨테이너 워크로드를 워크로드 배치에 할당한다.
명령어들은 프로세서에 의해 실행될 때, 시스템으로 하여금 일련의 워크로드 특성 빈들의 하나의 워크로드 특성 빈에 일련의 컨테이너 워크로드의 각각을 할당하게 할 수 있다.
시스템은 정규화된 충돌 패널티 및 정규화된 워크로드 배치들의 합의 최대값으로서 정의된 목적 함수를 해석함으로써 최소 총 충돌 패널티 및 워크로드 배치들의 수를 계산하도록 구성될 수 있다.
시스템은 제한 매트릭스 최적화를 구현하는 2 개의 선형 알고리즘을 이용하여 목적 함수를 해석하도록 구성될 수 있다. 2 개의 선형 알고리즘은 내부 점(IP) 알고리즘 및 표준 2 차 프로그래밍(SQP) 알고리즘을 포함할 수 있다.
시스템은 목적 함수의 국소 최소값을 계산하도록 구성될 수 있다. 시스템은 목적 함수의 전역 최소값을 계산하도록 구성될 수 있다.
본 발명은 또한 일련의 애플리케이션 및 일련의 애플리케이션들 각각의 일련의 컨테이너들로부터 컨테이너 워크로드의 실행을 스케줄링하는 방법의 다양한 실시 예에 관한 것이다. 이 방법은 프로세서에 의해 비일시적인 물리적 매체에 저장된 명령어을 실행하는 단계, 일련의 컨테이너들의 컨테이너 워크로드들의 각각의 가능한 조합에 대한 충돌 패널티를 포함하는 충돌 패널티 매트릭스를 계산하는 단계, 및 컨테이너 워크로드 및 컨테이너 워크로드를 실행하기 위한 다수의 워크로드 배치가 포함된다. 워크로드 배치의 수는 최소 총 충돌 벌점과 관련된다. 또한 이 방법에는 최소 총 충돌 패널티 및 워크로드 배치 수에 따라 컨테이너 워크로드를 워크로드 배치에 할당하는 작업이 포함된다.
이 방법은 일련의 워크로드 특성 빈들 중 하나의 워크로드 특성 빈에 일련의 컨테이너 워크로드들의 각각을 할당하는 단계를 또한 포함할 수 있다.
이 방법은 정규화 된 충돌 패널티 및 정규화 된 워크로드 배치들의 합의 최대값으로서 정의된 목적 함수를 해석함으로써 최소 총 충돌 패널티 및 최소 워크로드 수를 계산하는 단계를 포함할 수 있다. 목적 함수를 해석하는 것은 제한된 매트릭스 최적화를 구현하는 2 개의 선형 알고리즘을 이용하는 것을 포함할 수 있다. 2 개의 선형 알고리즘은 내부 점(IP) 알고리즘 및 표준 2 차 프로그래밍(SQP) 알고리즘을 포함할 수 있다.
이 방법은 워크로드배치들 중 하나에 할당 될 수있는 컨테이너 워크로드의 최대 개수를 설정하는 단계를 포함할 수 있다.
본 발명은 또한 일련의 애플리케이션 및 일련의 애플리케이션의 각 애플리케이션의 일련의 컨테이너로부터 실행시에 상이한 노드로 컨테이너 워크로드의 실행을 스케줄링하기 위한 시스템의 다양한 실시 예에 관한 것이다. 이 시스템은, 프로세서와, 이 프로세서에 의해 실행될 때, 상기 시스템이 상기 프로세서의 컨테이너 워크로드들의 각각의 가능한 조합에 대한 충돌 패널티를 포함하는 충돌 패널티 매트릭스를 계산하게 하고, 상기 컨테이너 워크로드들 및 상기 컨테이너 워크로드들을 실행하기 위한 다수의 노드들의 총 충돌 패널티의 최소값을 계산하게 하는 명령어들이 저장되는 비일시성 컴퓨터 판독가능 저장 매체를 포함한다. 노드의 수는 최소 총 충돌 패널티와 관련된다. 명령어들은 프로세서에 의해 실행될 때 시스템이 최소 총 충돌 패널티와 노드 수에 따라 노드에 컨테이너 워크로드를 할당하도록 한다.
컨테이너 워크로드들의 각각의 잠재적 조합에 대한 충돌 패널티는 노드들 상의 컨테이너 워크로드들의 각각의 잠재적 조합의 실행과 관련된 자원 이용 파라미터들의 가중치 합에 기초하여 계산될 수 있다. 리소스 사용량 매개 변수에는 CPU 사용률, 메모리 사용률 및/또는 디스크 사용률이 포함될 수 있다.
가중치 합은 실행시에 사용자 할당 가중치에 기초할 수 있다. 가중치에는 각 노드의 처리 능력 및/또는 저장 용량이 포함된다.
명령어들은 프로세서에 의해 실행될 때, 시스템으로 하여금 고정된 시간 간격으로 충돌 패널티 매트릭스을 재계산하게 할 수 있다.
명령어들은 프로세서에 의해 실행될 때, 노드상의 자원의 이용이 임계값을 초과할 때 시스템이 충돌 패널티 매트릭스을 재계산하게 할 수 있다.
이 개요는 이하의 상세한 설명에서 더 설명되는 본 발명의 실시 예의 특징 및 개념의 선택을 소개하기 위해 제공된다. 이 개요는 청구된 주제의 핵심 또는 필수적인 특징을 식별하기 위한 것이 아니며 청구된 주제의 범위를 제한하는 데 사용되지도 않는다. 설명된 특징 중 하나 이상은 작동 가능한 장치를 제공하기 위해 하나 이상의 다른 설명된 특징과 결합 될 수 있다.
상술한 특징에 따른 본 발명에 따르면, 컨테이너 워크로드의 특성과 노드의 다양한 특성에 따른 워크로드 할당을 통해서 효율적인 데이터 처리가 가능한 시스템을 구현할 수 있다.
도 1은 본 발명의 일 실시 예에 따라 워크로드 배치에 대한 컨테이너 워크로드를 스케줄링하는 시스템 및 방법의 개략적인 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 컨테이너 워크로드를 노드로 스케줄링하기 위한 시스템 및 방법의 개략적인 블록도이다.
도 3은, 도 1의 컨트롤러에 의해 워크로드 배치에 대한 컨테이너 워크로드를 스케줄링하는 것을 도시하는 흐름도이다.
도 4는 도 2의 제어 기능 및 조정된 스케줄러에 의한 노드에 대한 컨테이너 워크로드를 스케줄링하는 흐름도이다.
도 2는 본 발명의 일 실시 예에 따른 컨테이너 워크로드를 노드로 스케줄링하기 위한 시스템 및 방법의 개략적인 블록도이다.
도 3은, 도 1의 컨트롤러에 의해 워크로드 배치에 대한 컨테이너 워크로드를 스케줄링하는 것을 도시하는 흐름도이다.
도 4는 도 2의 제어 기능 및 조정된 스케줄러에 의한 노드에 대한 컨테이너 워크로드를 스케줄링하는 흐름도이다.
본 발명은 일련의 애플리케이션 및 각 유형의 애플리케이션의 일련의 컨테이너로부터 워크로드 배치에 컨테이너 워크로드의 실행을 스케줄링하기 위한 다양한 시스템 및 방법에 관한 것이다. 두 개 이상의 컨테이너 워크로드가 동일한 워크로드 배치에 함께 예약된 경우 컨테이너 워크로드의 워크로드 특성에 따라 동일한 워크로드 배치에서 두 개 이상의 워크로드 컨테이너를 동시에 실행하는 것과 관련된 충돌 패널티가 존재한다(예 : 순차 쓰기 집중 워크로드, 임의 쓰기 집중 작업량, 읽기 집중 작업량). 본 발명의 시스템 및 방법은 워크로드 배치의 총 충돌 패널티를 최소화하고, 그룹화된 컨테이너 워크로드와 관련된 충돌 패널티에 기초하여 컨테이너 워크로드를 워크로드 배치로 그룹화함으로써 워크로드 배치 수를 최소화하도록 구성된다(예를 들어, 컨트롤러는 여러 워크로드 배치의 작업 패널티가 최소화되도록 컨테이너 워크로드를 여러 워크로드 배치로 패킷화하도록 구성된다. 이러한 방식으로, 본 발명의 다양한 시스템 및 방법은 콘테이너의 정적 초기화를 수행하여 콘테이너 워크로드가 언제 실행될지를 결정하도록 구성된다.
본 발명은 또한 실행시에 상이한 노드에 컨테이너 워크로드를 스케줄링하기 위한 다양한 시스템 및 방법에 관한 것이다. 본 발명의 시스템 및 방법은 콘테이너 워크로드의 특성 및 노드의 다양한 특성(예를 들어, 노드의 처리 능력 및 저장 용량)에 의존하는 총 충돌 패널티를 최소화하도록 구성되며, 노드들의 수를 최소화하도록 구성된다. 총 노드 수를 최소화하고 총 충돌 패널티를 최소화하는 것은 전체 리소스 활용도를 최대화(예를 들면, 디스크, 메모리 및 CPU 사용률 최대화)하도록 한다. 이러한 방식으로, 본 발명의 다양한 시스템 및 방법은 노드 스케줄링에 대한 동적 컨테이너 워크로드를 수행하도록 구성된다.
이하, 예시적인 실시 예들은 동일한 참조 번호들은 동일한 구성 요소들을 지칭하는 첨부 도면을 참조하여 상세히 설명될 것이다. 그러나 본 발명은 여러 가지 다양한 형태로 구현될 수 있고, 본 명세서에서 단지 예시된 실시 예에 한정되는 것은 아니다. 오히려, 이러한 실시 예들은 이 개시가 철저하고 완전하게 되기 위한 예로서 제공되며, 당업자에게 본 발명의 특징 및 기능을 완전하게 전달할 것이다. 따라서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명의 특징 및 기능을 완벽하게 이해하기 위해 필요하지 않은 프로세스, 요소들, 및 기술들은 설명되지 않을 수 있다. 특별히 언급하지 않는 한, 유사한 참조 번호들은 첨부된 도면들 및 씌어진 설명에서 유사한 구성 요소들을 나타내고, 따라서 그것에 대한 설명은 반복되지 않을 것이다.
도면에서, 요서들, 층들 및 영역들의 상대적 크기는 명확성을 위해 과장되거나 및/또는 간략화될 수 있다. "아래(beneath)", "아래(below)", "아래(lower)", "아래(under)", "위에(above)", "상부에(upper)"등과 같은 공간적으로 상대적인 용어는 본 명세서에서 하나의 요소 또는 특징의 관계를 설명하기 위해 설명의 용이함을 위해 사용될 수 있다. 공간적으로 관련된 용어는 도면에 도시된 방위에 추가하여, 사용 또는 작동 중에 장치의 상이한 방위를 포함하도록 의도된 것으로 이해 될 것이다. 예를 들어, 도면의 장치가 뒤집힌다면, 다른 요소 또는 특징의 "아래(below)" 또는 "아래(beneath)" 또는 "아래(under)"로 기술된 요소는 다른 요소 또는 특징의 "위에" 배향될 것이다. 따라서, "아래(below)" 및 "아래(under)"의 예시적인 용어는 위와 아래의 방향 모두를 포함할 수 있다. 장치는 다른 방향으로 배향 될 수 있고(예를 들어, 90도 또는 다른 배향으로 회전될 수 있음), 본 명세서에서 사용된 공간적으로 상대적인 기술 어는 그에 따라 해석되어야 한다.
비록 여기에서 제 1, 제 2, 제3 등의 용어들은 다양한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들을 설명하기 위해 사용되지만, 이러한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들은 이러한 용어들로 인해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 다른 요소, 성분, 영역, 층, 또는 섹션으로부터 하나의 요소, 구성, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 후술하는 제 1 구성 요소, 성분, 영역, 층, 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고, 제 2 구성 요소, 성분, 영역, 층, 또는 섹션을 지칭할 수 있다.
요소, 층, 영역, 또는 성분이 다른 요소, 층, 영역 또는 성분 "에", "에 연결된", "에 결합된" 것으로 언급되는 때, 그것은 다른 요소, 층, 영역, 또는 성분 "에 직접적으로", "에 직접적으로 연결된", "에 직접적으로 결합된"일 수 있거나, 하나 또는 그 이상의 사이의 요소들, 층들, 영역들, 또는 성분들이 존재할 수 있다. 또한, 요소 또는 층이 두 개의 요소들 또는 층들 사이로 언급되는 때, 그것은 단지 요소 또는 층이 두 요소들 또는 층들 사이에 있을 수 있거나, 또는 하나 또는 그 이상의 사이의 요소들 또는 층들이 또한 존재할 수 있다.
본 명세서에서 사용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 "하나"는 복수의 형태도 포함하는 것으로 의도된다. "구성되는", "구성되고 있는", "포함하는", 그리고 "포함하고 있는" 용어들이 본 명세서에서 사용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 성분들이 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 그리고/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는다. 본 명세서에서 사용된 바와 같이, "그리고/또는" 용어는 하나 또는 그 이상의 열거된 항목들과 연관된 임의의 그리고 모든 조합들 포함한다. "적어도 하나"와 같은 표현들은 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다.
본 명세서에서 사용된 바와 같이, "실질적으로", "약" 그리고 이와 유사한 용어들은 근사치의 용어들로서 사용되고, 정도의 용어들로서 사용되지 않으며, 본 발명의 당업자에 의해 식별되는 측정된 또는 계산된 값들의 고유한 변동을 고려하기 위한 것이다. 또한, 본 발명의 실시 예들을 기술할 때 "할 수 있다"의 사용은 "본 발명의 하나 이상의 실시 예들"을 의미한다. 본 명세서에서 사용된 바와 같이, "사용하는", "사용되는", 그리고 "사용된" 용어들은 "이용하는", "이용되는", 그리고 "이용된" 용어들의 동의어로 각각 간주될 수 있다. 또한, "예시" 용어는 예 또는 그림을 의미한다.
달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어(기술 용어 및 과학 용어 포함)는 본 발명이 속하는 기술 분야의 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전에 정의된 용어와 같은 용어는 관련 기술 및/또는 본 명세서와 관련하여 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 이상적이거나 지나치게 형식적인 의미로 사용된 것으로 간주되어야 한다.
용어 "프로세서"는 데이터 또는 디지털 신호를 처리하기 위해 사용되는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 포함하는 것으로 여기에서 사용된다. 프로세서의 하드웨어는 ASIC(application specific integrated circuits), 범용 또는 특수 목적의 중앙 처리 장치(CPU), 디지털 신호 프로세서(DSP), 그래픽 프로세서(GPU), 및 프로그래머블 로직 장치 프로그래밍 가능한 게이트 어레이(FPGA)를 포함할 수 있다. 본 명세서에서 사용되는 프로세서에서, 각 기능은, 그 기능을 수행하도록 구성된 하드웨어, 즉 하드-와이어드(hard-wired)에 의해, 또는 비 일시적으로 저장된 명령어을 실행하도록 구성된 CPU와 같은 보다 일반적인 목적의 하드웨어에 의해서 실행될 수 있다. 프로세서는 단일 인쇄 배선 기판(PWB)에서 제조되거나 여러 개의 상호 연결된 PWB에 분산될 수 있다. 프로세서에는 다른 프로세서가 포함될 수 있는데, 예를 들어 프로세서는 PWB 상에 상호 연결된 두 개의 프로세서, 즉 FPGA 및 CPU를 포함할 수 있다.
도 1은 컨테이너 워크로드(101)의 실행을 일련의 n 개의 애플리케이션 및 각 애플리케이션 유형의 일련의 m 개의 컨테이너(총 nxm 워크로드 컨테이너)로부터 워크로드 배치(102)로 스케줄링하기 위한 본 발명의 일 실시 예에 따른 시스템 및 방법(100)의 개략도이다. 여기서 n과 m은 모두 양의 정수이다. 도 1에 도시된 시스템 및 방법은, 도 1은 콘테이너 워크로드가 언제 실행될지를 결정하기 위한 콘테이너 워크로드(101)의 정적 초기화(즉, 콘테이너 워크로드(101)가 실행될 워크로드 배치(102)를 결정하기위한 정적 초기화)이다. 도 1에 도시된 바와 같이, 시스템 및 방법(100)은 워크로드 특성 검출기(103)로 컨테이너 워크로드(101)의 특성을 검출하고 예를 들어 순차 쓰기 집중적 워크로드 특성 빈, 임의 쓰기 집중적 워크로드 특성 빈, 또는 읽기 집중적 워크로드 특성 빈과 같은 일련의 워크로드 특성 빈(104)(예를 들어, W1, W2 또는 W3) 중 하나에 컨테이너 워크로드 각각을 할당한다. 다른 빈들이 사용될 수도 있다. 도 1에 도시된 시스템 및 방법(100)의 컨트롤러(106)는 또한 동일한 워크로드 배치(102)에서 서로 다른 워크로드 특성 빈(104)으로부터의 둘 이상의 컨테이너 워크로드(101, Ai 및 Aj)를 동시에 실행하는 것과 관련된 충돌 패널티 Sij를 할당한다. 도 1에 도시 된 시스템 및 방법(100)은 컨테이너 워크로드(101)의 특성(105)에 따라 충돌 패널티 Sij의 값을 할당한다(예를 들어, 충돌 패널티(Sij)의 값은 워크로드 특성 검출기(103)에 입력되는 컨테이너 워크로드(101)의 미리 알려진 본성 또는 특성(105)에 기초하여 할당된다). 예를 들어, 읽기 집중형 및 기록 집중형 컨테이너 워크로드(101)를 결합하는 것은 성능 관점에서 유익하고, 따라서 읽기 집중형 워크로드 특성 빈(104) (예를 들어, W1)에 할당된 컨테이너 워크로드(Ai)와 쓰기 집중형 워크로드 특성 빈(104) (예를 들어, W2)에 할당된 컨테이너 워크로드(Aj)를 동시에 실행하는 것과 관련된 충돌 패널티는 더 낮은 값(예를 들어, 0)으로 설정될 수 있다. 또한, 랜덤 및 순차 쓰기 컨테이너를 결합하는 것은 성능 관점에서 해롭고 따라서, 랜덤 쓰기 워크로드 특성 빈(104)(예를 들어, W3)에 할당된 컨테이너 워크로드(Ai) 및 순차 워크로드 특성 빈(104)(예를 들어, W2)에 할당된 컨테이너 워크로드(Aj)를 동시에 실행하는 것과 관련된 충돌 패널티 Sij는 더 높은 양의 값으로 설정될 수 있다. 콘테이너들의 워크로드 특성에 기초하여 콘테이너를 그룹화함으로써 콘테이너의 워크로드를 균형잡기 위한 적절한 시스템 및 방법은 "최적의 디스크를 위한 다중 콘테이너 워크로드 균형화(Multi-Container Workload Balancing for Optimal Disk)"라는 제목의 2016년 12월 14일자 출원된 미국 특허 출원 제15/379327호 사용법에 기재되어 있으며, 이의 전체 내용은 본 명세서에 참고로 포함된다.
아래의 표 1은 컨테이너 워크로드의 가능한 조합 각각에 관련된 충돌 패널티 Sij를 계산함으로써 생성된 충돌 패널티 매트릭스(S)의 예이다. 충돌 패널티 매트릭스(S)의 크기는 n*m x n*m이며, 여기서, n은 응용 프로그램의 수이고, m은 각 응용 프로그램 유형의 컨테이너 수이다. 표 1에서 볼 수 있듯이, 동일한 워크로드 특성 빈의 두 컨테이너 워크로드를 동시에 실행하는 것과 관련된 충돌 패널티가 없기 때문에 충돌 패널티 매트릭스는 대각선에 대해 대칭이며 모든 대각 요소는 '0'(null)로 설정된다(즉, 동일한 워크로드 배치에서 동일한 컨테이너 워크로드를 두 번 이상 실행하는 것과 관련된 충돌 패널티는 없음).
A1 | A2 | A3 | ?? | Aj | ?? | A(n*m) | |
A1 | 0 | 1 | 2 | Sij | 3 | ||
A2 | 1 | 0 | 4 | S2j | 1 | ||
A3 | 2 | 4 | 0 | S3j | 5 | ||
: | ?? | : | ?? | ||||
Ai | Si1 | Si2 | Si3 | Sij | Si(n*m) | ||
: | : | ||||||
A(n*m) | 3 | 1 | 5 | S(n*m)j | 0 |
각 워크로드 컨테이너는 하나의 워크로드 배치에 할당되어 언제 시작할지 또는 어디로 마이그레이션 할지를 결정한다. 아래 표 2는 동시에 실행중인 컨테이너 워크로드의 워크로드 배치를 묘사하는 빈 패킹 매트릭스(P)를 보여준다. 워크로드 배치들 Z1 ~ Z (n*m)는 시간 t에 걸쳐 순차적으로 실행된다. 표 2에서 "1"은 컨테이너 워크로드가 워크로드 배치에서 실행되고 "0"은 컨테이너 워크로드가 워크로드 배치에서 실행되지 않음을 나타낸다. 예를 들어 표 2는 컨테이너 워크로드 A3과 A(n*m)가 첫 번째 워크로드 배치 Z1에서 실행되고 컨테이너 워크로드 A1이 두 번째 워크로드 배치 Z2에서 실행됨을 보여준다.
Z1 | Z2 | Z3 | ?? | Zk | ?? | Z(n*m) | |
A1 | 0 | 1 | 0 | P1k | 0 | ||
Ai2 | Pi1 | Pi2 | Pi3 | ?? | Pik | ?? | Pi(n*m) |
A3 | 1 | 0 | 0 | P3k | 0 | ||
: | ?? | : | ?? | ||||
Aj | Pj1 | Pj2 | Pj3 | Pjk | Pj(n*m) | ||
: | : | ||||||
A(n*m) | 1 | 0 | P(n*m)k | 0 |
계속해서 도 1을 참조하면, 시스템 및 방법(100)(예를 들어, 컨트롤러(106))은 워크로드 배치의 총 충돌 패널티(Tp)를 최소화하고 워크로드 배치의 총 수(Nz)를 최소화하는 작업을 포함한다. 총 충돌 패널티(Tp)는 아래 수학식 1과 같이 정의된다.
여기서, Sij는 동일한 워크로드 배치에서 컨테이너 워크로드 Ai와 컨테이너 워크로드 Aj를 동시에 실행하는 것과 관련된 충돌 패널티이다. Pik은 컨테이너 워크로드 Ai가 워크로드 배치 k에 할당되면 '1'이 되고, 그렇지 않으면 '0'인 이진 변수이다. 더불어, 워크로드 배치(Nz)의 총 수는 아래 수학식 2와 같이 정의된다.
여기서, zk는 워크로드 배치 k가 사용된 경우 1이고 그렇지 않은 경우 0인 이진 변수이다.
하나 이상의 실시 예에서, 워크로드 배치의 총 충돌 패널티(Tp)를 최소화하고 워크로드 배치(Nz)의 총 수를 최소화하는 작업은 전체 충돌 패널티 (Tp) 및 전체 워크로드 배치 수(Nz)를 목적 함수(f)로 변환한다. 이 방정식을 반대 함수로 변환하는 것은 충돌 패널티 값과 워크로드 배치의 수를 정규화하여 0과 1 사이의 개념적 공통 스케일을 따르도록 값을 조정하는 것이다. 그런 다음 목적 함수(f)는 이 두 정규화 비율의 합을 최대화하는 값으로 정의된다. 따라서, 목적 함수(f)는 워크로드 배치의 총 충돌 패널티(Tp)를 최소화하고 워크로드 배치 (Nz)의 총 수를 최소화하는 작업을 정규화된 충돌 패널티와 정규화된 워크로드 배치의의 합계를 최대화하는 빈 패킹 매트릭스(P)를 결정하는 작업으로 변환한다. 목적 함수 f는 아래 수학식 3과 같이 정의된다.
여기서, Maxp는 동일한 워크로드 배치 k에서 모든 컨테이너 워크로드를 실행하여 주어진 충돌 패널티 매트릭스(S)에 대해 가능한 최대 충돌 패널티이고, Minp는 각 배치에서 하나의 컨테이너 워크로드만 실행하여 주어진 충돌 패널티 매트릭스(S)에 대해 가능한 최소 충돌 패널티이고(즉, 별도 워크로드 배치에서 각 컨테이너 워크로드를 실행하는 것과 관련된 충돌 패널티가 없기 때문에 Minp=0임), Maxz는 가능한 최대 배치 수이고(즉, Minz = n*m, 여기서 n은 응용 프로그램의 수이고, m은 각 응용 프로그램 유형의 컨테이너 수), Minz는 가능한 배치들의 최소 수이다(즉, 모든 컨테이너 워크로드가 단일 워크로드 배치로 실행될 수 있으므로 Minz = 1임). 위에 정의된 목적 함수(f)를 만족하는 빈 패킹 매트릭스(P)는 스케줄링 정보를 제공한다(즉, 목적 함수(f)를 만족하는 빈 패킹 매트릭스(P)는 워크로드에 대한 컨테이너 워크로드의 할당을 스케줄링하기 위한 그리고 배치 충돌을 최소화하고 워크로드 배치의 수를 최소화하기 위한 정보를 포함한다).
또한, 하나 이상의 실시 예에서, 하나 또는 그 이상의 제약 조건 C가 목적 함수(f)를 풀기 위해 이용될 수 있다. 일 실시 예에서, 컨테이너 워크로드(Ai)가 워크로드 배치(k)에서 실행되는지 여부를 나타내기 위해 제약 조건(C1)이 이용된다. 제약 조건(C1)은 아래 수학식 4와 같이 정의된다.
따라서, 워크로드(Ai)가 워크로드 배치 k에서 실행되면 Pik는 1로 설정되고 그렇지 않으면 Pik은 0으로 설정된다(즉, 컨테이너 워크로드 Ai가 워크로드 배치 k에서 실행되지 않으면 Pik은 0으로 설정됨).
하나 이상의 실시 예에서, 제약 조건(C2)은 각 컨테이너 워크로드가 단지 하나의 워크로드 배치에서 실행되도록 보장하기 위해 이용된다. 제약 조건(C2)는 아래 수학식 5로 정의될 수 있다.
하나 이상의 실시 예에서, 제약 조건(C3)은 동일한 워크로드 배치(k)에 할당될 수 있는 동시 컨테이너 워크로드의 최대 수를 제한하는데 이용된다. 제약 조건(C3)는 아래 수학식 6으로 정의될 수 있다.
여기서, φ는 주어진 워크로드 배치 k에 할당될 수 있는 컨테이너 워크로드의 최대 수이다. 하나 이상의 실시 예들에서, 제약 조건(C3)은 이용되지 않을 수도 있다.
하나 이상의 실시 예에서, 워크로드 배치의 총 충돌 패널티(Tp)를 최소화하는 작업은 가능한 모든 빈 패킹 매트릭스(P)를 생성하고 총 충돌 패널티(Tp)를 최소화하는 빈 패킹 매트릭스(P)를 선택함으로써 목적 함수(f)의 억지 평가(brute force evaluation)를 포함할 수 있다. 하나 이상의 실시 예에서, 워크로드 배치의 총 충돌 패널티(Tp)를 최소화하는 작업은 제한 매트릭스 최적화를 구현함으로써 2 개의 선형 프로그래밍 알고리즘을 이용함으로써 수행될 수 있다. 하나 이상의 실시 예에서, 목적 함수(f)를 만족하는 빈 패킹 매트릭스(P)를 계산함으로써 MATLAB에서 제공되는 것과 같은 내부 점(IP) 및 표준 2 차 프로그래밍(SQP) 알고리즘이 워크로드 배치의 총 충돌 패널티(Tp)를 최소화하기 위해 사용될 수 있다. 하나 이상의 실시 예들에서, 총 충돌 패널티(Tp)를 최소화하는 빈 패킹 매트릭스(P)를 발견하기 위해 목적 함수(f)를 해석하는 것은 국부 최소값 또는 전역 최소값을 탐색하는 것을 포함할 수 있다.
도시된 실시 예에서, 시스템 및 방법(100)은 또한 워크로드 배치들(102)의 총 충돌 패널티(Tp)를 최소화하고 워크로드 배치들(102)의 총 수(NZ)를 최소화하는 빈 패킹 매트릭스(P)에 기초하여 컨트롤러(106)로 컨테이너 워크로드(101)를 워크로드 배치들(102, Nz)에 할당하는 것을 포함한다(즉, 컨트롤러(106)는 위에서 정의된 목적 함수(f)를 만족하는 빈 패킹 매트릭스(P)에 기초하여 워크로드 배치들(102)에 컨테이너 워크로드(101)를 할당).
더불어, 하나 이상의 실시 예에서, 시스템 및 방법(100)은 제 1 워크로드 배치(102)(예를 들어, B1)에 할당된 컨테이너 워크로드(101)를 동시에 실행하고, 시간 경과에 따라 각각의 워크로드 배치(102)(예를 들어, B2 및 B3) 를 순차적으로 실행한다(예를 들어, 시스템 및 방법(100)은 목적 함수(f)를 만족하는 빈 패킹 매트릭스(P)에 포함된 워크로드 배치(102)에 로의 컨테이너 워크로드(101)의 할당에 따라 컨테이너 워크로드(101)를 인스턴스화한다).
이러한 방식으로, 시스템 및 방법(100)은 그들의 워크로드 특성 및 상호 작용에 기초하여 컨테이너 워크로드(101)의 실행을 워크로드 배치(102)로 스케줄링하여 불공평한 애플리케이션 간섭을 최소화함으로써 자원 활용(예를 들어, 디스크, 메모리 및 CPU 사용률을 최대화하다)을 최대화한다. 즉, 본 발명의 일 실시 예에 따른 시스템 및 방법(100)은 어느 컨테이너 워크로드(101)가 함께 동작하는지 그리고 언제 컨테이너 워크로드(101)가 실행될지를 결정하고 스케줄링하도록 구성된다. 반면, 각 워크로드 배치(즉, 워크로드 배치 수를 최대화하여 총 컨테이너 워크로드 수(n*m)와 동일하게 하는)에서 단일 컨테이너 워크로드를 실행하면 시스템 자원이 완전히 활용되지 않을 수 있으며 응용 프로그램의 실행 시간을 줄일 수 없다. 또한, 현재 시스템 및 방법과 달리 동일한 워크로드 배치에서 모든 컨테이너 워크로드를 실행하면 모든 응용 프로그램이 가용 자원을 놓고 경쟁하게되어 경쟁 및 병목 현상이 발생할 수 있다.
하나 이상의 실시 예들에서, 상술된 태스크들은 컨트롤러 상에 구현될 수 있다. 하나 이상의 실시 예에서, 상술 한 태스크는 소스 관리 플러그-인(Plug-in) 모듈로서 호스트 측에서 구현될 수 있다.
도 2는 일련의 n 개의 애플리케이션 및 각 유형의 애플리케이션(즉, 총 n*m 컨테이너 워크로드)의 일련의 m 개의 컨테이너로부터 런타임시 상이한 노드로 컨테이너 워크로드를 스케줄링하는 시스템 및 방법(200)을 보여주는 블록도이다. 여기서, n과 m은 모두 양의 정수(즉, 노드 스케줄링 시스템과 방법에 대한 런타임)이다. 다시 말해, 본 발명의 하나 이상의 실시 예들에 따른 시스템 및 방법(200)은 어떤 컨테이너 워크로드들이 어떤 노드에서 실행될 것인지를 결정하고 스케줄링하도록 구성된다.
도 2에 도시 된 바와 같이, 시스템 및 방법(200)은 런타임에 상이한 노드(230)(예를 들어, N1, N2, N3)에 컨테이너 워크로드를 스케줄링하기 위한 제어 기능 블록(210) 및 조정된 스케줄러 블록(220)을 포함한다. 도시된 실시 예에서, 각각의 노드들(230)은 노드 (230)와 관련된 충돌 패널티 매트릭스(S)를 계산하고 충돌 패널티 매트릭스(S)를 제어 기능 블록(210)에 입력한다. 제어 기능 블록(210)은 노드(230)의 수(Nz)를 최소화하고, 상이한 노드 (230)에서 동작하도록 컨테이너 워크로드를 할당하는 것과 관련된 총 충돌 패널티(Tp)를 최소화함으로써, 노드(230)에로의 워크로드 컨테이너의 최적 할당을 포함하는 빈 패킹 매트릭스(P)를 계산하도록 구성된다. 즉, 제어 기능 블록(210)은, 노드(230)의 수(Nz)를 최소화하고, 컨테이너 워크로드를 다른 노드(230)에서 동작하는것에 할당하는 것과 관련된 총 충돌 패널티(Tp)를 최소화하여 디스크, 메모리 그리고/또는 CPU 사용률과 같은 전체 리소스 이용률을 최대화하도록 구성되는 최적화 함수를 포함한다. 예시된 실시 예에서, 빈 패킹 매트릭스(P)는 제어 기능 블록(210)으로부터 조정된 스케줄러 블록(220)으로 출력된다. 조정된 스케줄러 블록(220)은 빈 패킥 매트릭스(P)에 포함된 노드들(230)로의 워크로드 컨테이너 할당에 따라 대응하는 노드(230) 상의 워크로드 컨테이너를 인스턴스화하도록 구성된다.
시스템 및 방법(200)은 동일한 노드(230)(예를 들어, N1, N2 또는 N3)상에서 컨테이너 워크로드 Ai 및 Aj를 동시에 실행하는것과 연관된 충돌 패널티(Sij)를 할당하도록 구성된다. 충돌 패널티(Sij)의 값은 노드(230)의 처리 능력, 저장 용량, CPU 사용률, 메모리 사용률 및 디스크 사용률과 같은 컨테이너 워크로드 특성 및 노드(230)의 다양한 특성에 의존한다. 각 노드(230)는 그 노드 (230) 상에서 실행되는 컨테이너 워크로드들의 상이한 조합의 충돌 패널티(즉, 비용)를 반영하는 자체 충돌 패널티 매트릭스(S)를 갖는다. 하나 이상의 실시 예에서, 노드들(230) 각각에서 실행되는 컨테이너 워크로드의 가능한 각각의 조합에 관련된 충돌 패널티(Sij)를 계산함으로써 충돌 패널티 매트릭스(S)가 생성 될 수 있다.
충돌 패널티 매트릭스(S)는 아래 수학식 7로 나타낼 수 있다.
여기서, xi는 노드(230)에서 컨테이너 워크로드를 실행하는 것과 관련된 CPU 사용률, 메모리 사용률 그리고/또는 디스크 사용률과 같은 리소스 사용률 매개 변수이다. 매개 변수 wi는 사용자가 런타임에 할당할 수있는 가중치이다. 가중치 wi의 값은, 예를 들어 각 노드(230)의 처리 능력 및 저장 용량과 같은 클러스터 환경의 특성에 따라 선택될 수 있다.
하나 이상의 실시 예에서, 제어 기능 블록(210)은 노드(230) 상의 워크로드 배치를 실행하는 총 충돌 패널티(Tp)를 최소화하고 노드의 총 수(Nz)를 최소화 하도록 구성된다. 총 충돌 패널티(Tp)는 아래 수학식 8로 나타낼 수 있다.
여기서, Sij k는 동일한 노드(230)상에서 동시에 실행중인 컨테이너 워크로드(Ai) 및 컨테이너 워크로드(Aj)와 관련된 충돌 패널티이며, k는 노드(230) (즉, k 번째 노드)를 나타낸다. Pik는 컨테이너 워크로드들(Ai 및 Aj)이 노드 k에서 실행되도록 할당되면 '1', 그렇지 않으면 '0'인 이진 변수이다. 따라서, 컨테이너 워크로드들(Ai 및 Aj)이 노드 k에서 실행되면, 충돌 패널티 매트릭스(S)로부터 k 번째 노드의 충돌 패널티(Sij)가 적용된다. 더불어, 총 노드들의 수(Nz)는 아래 수학식 9로 정의될 수 있다.
여기서, zk는 노드 k가 사용되면 '1', 그렇지 않으면 '0'인 이진 변수이다. 총 노드 수(Nz)를 최소화하고 총 충돌 패널티(Tp)를 최소화하는 것은 전체 리소스 이용율을 최대화(예를 들어, 디스크, 메모리 및 CPU 활용을 최대화)하도록 구성된다.
각 컨테이너 워크로드는 한 번만 실행되므로 각 컨테이너 워크로드는 하나의 노드(node_1에서 node_ (n*m))에만 할당된다. 아래의 표 3은 동일한 노드(예를 들어, 노드 1, 노드 2, 노드 3 등)에서 실행중인 컨테이너 워크로드의 배치를 나타내는 빈 패킹 매트릭스(P)를 도시한다. 표 3에서 "1"은 컨테이너 워크로드가 노드에서 실행되고 "0"은 컨테이너 워크로드가 노드에서 실행되지 않음을 나타낸다. 예를 들어, 표 3은 컨테이너 워크로드 A3와 컨테이너 워크로드 A(n*m)가 모두 첫 번째 노드(node_1)에서 실행되고 컨테이너 워크로드 A1이 두 번째 노드(node_2)에서 실행됨을 보여준다.
Node_1 | Node_2 | Node_3 | ?? | Node_k | ?? | Node_(n*m) | |
A1 | 0 | 1 | 2 | P1k | 0 | ||
Ai2 | Pi1 | Pi2 | Pi3 | Pik | Pi(n*m) | ||
A3 | 1 | 0 | 0 | P3k | 0 | ||
: | ?? | : | ?? | ||||
Aj | Pj1 | Pj2 | Pj3 | Pjk | Pj(n*m) | ||
: | : | ||||||
A(n*m) | 1 | 0 | P(n*m)k | 0 |
하나 이상의 실시 예들에서, 빈 패킹 매트릭스(P)는 시작되는 신규 또는 수정된 애플리케이션 컨테이너들 그리고/또는 새로운 노드들(230)이 시스템(200)에 추가되기 때문에 런타임시 확장될 수 있다. 따라서, 하나 이상의 실시 예들에서 시스템 및 방법 (200)은 일정 시간 간격 그리고/또는 정의된 트리거 포인트들에서 충돌 패널티 매트릭스(S)을 재계산하도록 구성될 수 있다(예를 들어, 노드(230)상의 임의의 리소스의 이용이 자신의 임계값을 초과하여, 호스트된 컨테이너들의 재할당 또는 재배포를 트리거할 때).
제어 기능 블록(210)은 임의의 적절한 위치에 구현될 수 있다. 하나 이상의 실시 예에서, 제어 기능 블록(210)은 소스 관리용 플러그-인 모듈로서 호스트 측에서 구현될 수 있다.
도 3은 도 1의 컨트롤러(106)에 의해 워크로드 배치에 컨테이너 워크로드를 스케줄링하는 것을 도시하는 흐름도이다. 도 3에 도시된 바와 같이, 컨트롤러(106)는 컨테이너 워크로드(300)의 미리 알려진 본성 또는 특성에 기초하여 컨테이너 워크로드 각각의 잠재적 조합에 대한 충돌 패널티를 포함하는 충돌 패널티 매트릭스를 계산한다. 컨트롤러(106)는 또한 콘테이너 워크로드의 최소 총 충돌 패널티 및 컨테이너 워크로드(301)를 실행하기 위한 다수의 워크로드 배치를 계산한다. 워크로드 배치의 수는 최소 총 충돌 패널티와 관련된다. 도시된 실시 예에서, 컨트롤러(106)는 최소 총 충돌 패널티 및 워크로드 배치(302)의 수에 기초하여 컨테이너 워크로드를 워크로드 배치에 할당한다.
도 4는 도 2의 제어 기능 블록(210) 및 조정된 스케줄러 블록(220)에 의한 컨테이너 워크로드를 노드에 스케줄링하는 것을 도시하는 흐름도이다. 도 4에 도시된 바와 같이, 제어 기능 블록(210)은 컨테이너 워크로드(400)의 각 잠재적 조합에 대한 충돌 패널티를 포함하는 충돌 패널티 매트릭스를 계산한다. 충돌 패널티의 값은 노드의 처리 능력, 저장소 용량, CPU 사용률, 메모리 사용률 및 디스크 사용률과 같이 컨테이너 워크로드의 특성과 노드의 다양한 특성에 따른다. 제어 기능 블록(210)은 또한 컨테이너 워크로드의 총 충돌 패널티 및 컨테이너 워크로드를 실행하기 위한 다수의 노드를 계산한다(402). 노드의 수는 최소 총 충돌 패널티와 관련된다. 도시 된 실시 예에서, 조정된 스케줄러 블록(220)은 최소 총 충돌 패널티 및 노드의 수(403)에 기초하여 컨테이너 워크로드를 노드에 할당한다.
본 발명은 특정한 예시적인 실시 예와 관련하여 설명되었지만, 본 발명은 개시된 실시 예들에 한정되지 않으며, 첨부된 특허 청구 범위의 사상 및 범위 내에 포함되는 다양한 변형 및 균등물 및 그 등가물을 포함하는 것으로 이해되어야 한다.
Claims (10)
- 복수의 애플리케이션들 및 상기 복수의 애플리케이션들의 각 애플리케이션의 복수의 컨테이너들로부터 컨테이너 워크로드들의 실행을 스케줄링하기 위한 시스템에 있어서:
프로세서; 그리고
명령어들이 저장된 비-일시적인 컴퓨터 판독 가능 저장 매체를 포함하고,
상기 명령어들은 상기 프로세서에 의해 실행될 때, 상기 시스템으로 하여금:
상기 복수의 컨테이너들의 상기 컨테이너 워크로드들의 잠재적 조합들에 대한 충돌 패널티를 포함하는 충돌 패널티 매트릭스를, 상기 잠재적 조합들의 상기 컨테이너 워크로드들의 워크로드 특성에 기반하여 계산하고;
상기 컨테이너 워크로드의 최소 총 충돌 패널티 및 상기 컨테이너 워크로드를 실행하기 위한 상기 최소 총 충돌 패널티와 관련된 워크로드 배치들(workload batches)의 수를 계산하며; 그리고
상기 최소 총 충돌 패널티와 상기 워크로드 배치들의 수에 기초하여, 상기 컨테이너 워크로드들을 상기 워크로드 배치들에 할당하도록 하고,
상기 충돌 패널티는 동일한 워크로드 배치에서의 잠재적인 조합으로 동시에 실행하는 컨테이너 워크로드들의 성능과 관련되고,
상기 워크로드 특성은 읽기 집약적 워크로드, 쓰기 집약적 워크로드, 랜덤 쓰기 워크로드, 그리고 순차 쓰기 워크로드들로 구성된 그룹으로부터 선택되는 시스템. - 제 1 항에 있어서,
상기 프로세서에 의해 실행될 때, 상기 명령어는 상기 시스템으로 하여금 상기 복수의 컨테이너 워크로드 각각을 복수의 워크로드 특성 빈 중 하나의 워크로드 특성 빈으로 할당하게 하는 시스템. - 제 1 항에 있어서,
상기 시스템은 정규화된 충돌 패널티 및 정규화된 워크로드 배치들의 합의 최대치로서 정의된 목적 함수를 풀음으로써 최소 전체 충돌 패널티 및 워크로드 배치들의 수를 계산하도록 구성되는 시스템. - 제 3 항에 있어서,
상기 시스템은 제한된 매트릭스 최적화를 구현하는 2 개의 선형 알고리즘을 이용하여 상기 목적 함수를 풀도록 구성되고,
상기 2 개의 선형 알고리즘은 내부 점(Interior Point: IP) 알고리즘 및 표준 2 차 프로그래밍(Standard Quadratic Programming: SQP) 알고리즘을 포함하는 시스템. - 삭제
- 제 4 항에 있어서,
상기 시스템은 목적 함수의 국소 최소값을 계산하도록 구성되는 시스템. - 제 4 항에 있어서,
상기 시스템은 상기 목적 함수의 전역 최소값을 계산하도록 구성되는 시스템. - 복수의 애플리케이션들 및 상기 복수의 애플리케이션들의 각 애플리케이션의 복수의 컨테이너들로부터 컨테이너 워크로드의 실행을 스케줄링하는 방법에 있어서:
비-일시적인 물리 매체에 저장된 명령어들을 프로세서에 의해 실행하는 단계;
컨트롤러에 의해, 상기 복수의 컨테이너들의 컨테이너 워크로드들의 워크로드 특성에 기반하여 상기 컨테이너 워크로드들의 잠재적 조합들에 대한 충돌 패널티를 포함하는 충돌 패널티 매트릭스를 계산하는 단계;
상기 컨트롤러에 의해, 상기 컨테이너 워크로드들의 최소 총 충돌 패널티와 상기 컨테이너 워크로드들을 실행하기 위한 워크로드 배치들(workload batches)의 수를 계산하는 단계를 포함하되, 상기 워크로드 배치들의 수는 상기 최소 총 충돌 패널티와 연관되며; 그리고
상기 컨트롤러에 의해, 상기 최소 총 충돌 패널티 및 워크로드 배치 수에 기초하여 상기 컨테이너 워크로드를 상기 워크로드 배치들에 할당하는 단계를 포함하되,
상기 충돌 패널티는 동일한 워크로드 배치에서의 잠재적인 조합으로 동시에 실행하는 컨테이너 워크로드들의 성능과 관련되고,
상기 워크로드 특성은 읽기 집약적 워크로드, 쓰기 집약적 워크로드, 랜덤 쓰기 워크로드, 그리고 순차 쓰기 워크로드들로 구성된 그룹으로부터 선택되는 스케줄링 방법. - 제 8 항에 있어서,
상기 충돌 패널티 매트릭스를 계산하는 단계 이전에,
상기 컨트롤러에 의해, 상기 복수의 컨테이너 워크로드 각각을 복수의 워크로드 특성 빈 중 하나의 워크로드 특성 빈에 할당하는 단계를 더 포함하는 스케줄링 방법. - 복수의 애플리케이션들 및 상기 복수의 애플리케이션들 각각의 애플리케이션의 복수의 컨테이너들로부터 런타임시 상이한 노드들로의 컨테이너 워크로드의 실행을 스케줄링하기 위한 시스템에 있어서:
프로세서; 그리고
명령어들이 저장된 비-일시적인 컴퓨터 판독 가능 저장 매체를 포함하고,
상기 명령어들은 상기 프로세서에 의해 실행될 때, 상기 시스템으로 하여금:
상기 복수의 컨테이너들의 컨테이너 워크로드들의 워크로드 특성에 기반하여 상기 컨테이너 워크로드들의 잠재적 조합들에 대한 충돌 패널티를 포함하는 충돌 패널티 매트릭스를 계산하고;
상기 컨테이너 워크로드의 최소 총 충돌 패널티 및 상기 컨테이너 워크로드를 실행하기 위한 노드들의 수를 계산하며, 상기 노드들의 수는 상기 최소 총 충돌 패널티와 관련되며; 그리고
상기 최소 총 충돌 패널티와 상기 노드들의 수에 기초하여 상기 컨테이너 워크로드들을 상기 노드들에 할당하도록 하고,
상기 충돌 패널티는 동일한 워크로드 배치에서의 잠재적인 조합으로 동시에 실행하는 컨테이너 워크로드들의 성능과 관련되고,
상기 워크로드 특성은 읽기 집약적 워크로드, 쓰기 집약적 워크로드, 랜덤 쓰기 워크로드, 그리고 순차 쓰기 워크로드들로 구성된 그룹으로부터 선택되는 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762522630P | 2017-06-20 | 2017-06-20 | |
US62/522,630 | 2017-06-20 | ||
US15/820,856 US10719354B2 (en) | 2017-06-20 | 2017-11-22 | Container workload scheduler and methods of scheduling container workloads |
US15/820,856 | 2017-11-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180138123A KR20180138123A (ko) | 2018-12-28 |
KR102362037B1 true KR102362037B1 (ko) | 2022-02-11 |
Family
ID=64656285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180047543A KR102362037B1 (ko) | 2017-06-20 | 2018-04-24 | 컨테이너 워크로드 스케줄러 및 컨테이너 워크로드 계획 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10719354B2 (ko) |
KR (1) | KR102362037B1 (ko) |
CN (1) | CN109117264B (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190317825A1 (en) * | 2018-04-16 | 2019-10-17 | Kazuhm, Inc. | System for managing deployment of distributed computing resources |
US10684895B1 (en) * | 2018-11-09 | 2020-06-16 | Veritas Technologies Llc | Systems and methods for managing containerized applications in a flexible appliance platform |
US11321130B2 (en) | 2019-08-01 | 2022-05-03 | Kyndryl, Inc. | Container orchestration in decentralized network computing environments |
US10972548B2 (en) * | 2019-09-09 | 2021-04-06 | International Business Machines Corporation | Distributed system deployment |
US11513842B2 (en) | 2019-10-03 | 2022-11-29 | International Business Machines Corporation | Performance biased resource scheduling based on runtime performance |
JP7513866B2 (ja) * | 2020-03-04 | 2024-07-10 | 富士通株式会社 | 移動対象コンテナ決定方法、及び移動対象コンテナ決定プログラム |
CN111464659A (zh) * | 2020-04-27 | 2020-07-28 | 广州虎牙科技有限公司 | 节点的调度、节点的预选处理方法、装置、设备及介质 |
CN112214286B (zh) * | 2020-11-03 | 2023-06-13 | 网易(杭州)网络有限公司 | 容器的启动方法、装置及电子设备 |
KR102446717B1 (ko) * | 2020-11-12 | 2022-09-27 | 한국과학기술정보연구원 | 컨테이너 처리 방법, 컨테이너 처리 장치 및 컨테이너 처리 시스템 |
US11941453B2 (en) | 2020-12-08 | 2024-03-26 | International Business Machines Corporation | Containerized computing environments |
US11886921B2 (en) | 2021-03-04 | 2024-01-30 | International Business Machines Corporation | Serverless runtime container allocation |
US20220398134A1 (en) * | 2021-06-11 | 2022-12-15 | International Business Machines Corporation | Allocation of services to containers |
KR20230024744A (ko) | 2021-08-12 | 2023-02-21 | 주식회사 케이티 | 다중 클러스터 환경에서의 컨테이너 배포 방법, 장치, 시스템 및 컴퓨터 프로그램 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100083264A1 (en) | 2008-09-30 | 2010-04-01 | Abhay Mehta | Processing Batch Database Workload While Avoiding Overload |
US20110191400A1 (en) | 2010-02-01 | 2011-08-04 | Mithun Das Gupta | L1 Projections with Box Constraints |
US20160150002A1 (en) | 2014-11-21 | 2016-05-26 | International Business Machines Corporation | Cross-Platform Scheduling with Long-Term Fairness and Platform-Specific Optimization |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044643A1 (en) | 2002-04-11 | 2004-03-04 | Devries David A. | Managing multiple virtual machines |
US20100017650A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
US8578386B1 (en) * | 2009-04-01 | 2013-11-05 | Netapp, Inc. | Processor scheduling method and system using domains |
US9767274B2 (en) | 2011-11-22 | 2017-09-19 | Bromium, Inc. | Approaches for efficient physical to virtual disk conversion |
WO2014025584A1 (en) * | 2012-08-07 | 2014-02-13 | Advanced Micro Devices, Inc. | System and method for tuning a cloud computing system |
US8897913B2 (en) | 2012-10-19 | 2014-11-25 | Chunsong Luo | Automatic stacked storage system for parking or storage |
US9483299B2 (en) * | 2014-06-30 | 2016-11-01 | Bmc Software, Inc. | Capacity risk management for virtual machines |
US9256467B1 (en) | 2014-11-11 | 2016-02-09 | Amazon Technologies, Inc. | System for managing and scheduling containers |
US9800465B2 (en) | 2014-11-14 | 2017-10-24 | International Business Machines Corporation | Application placement through multiple allocation domain agents and flexible cloud scheduler framework |
US9690622B1 (en) | 2015-08-24 | 2017-06-27 | Amazon Technologies, Inc. | Stateless instance backed mobile devices |
US20170070561A1 (en) | 2015-09-04 | 2017-03-09 | Futurewei Technologies, Inc. | Mechanism and Method for Constraint Based Fine-Grained Cloud Resource Controls |
US10146592B2 (en) * | 2015-09-18 | 2018-12-04 | Salesforce.Com, Inc. | Managing resource allocation in a stream processing framework |
US9965330B2 (en) | 2015-09-18 | 2018-05-08 | Salesforce.Com, Inc. | Maintaining throughput of a stream processing framework while increasing processing load |
CN106453492B (zh) | 2016-08-30 | 2019-05-14 | 浙江大学 | 基于模糊模式识别的Docker容器云平台下的容器调度方法 |
EP3516516B1 (en) * | 2016-09-21 | 2022-05-11 | Accenture Global Solutions Limited | Dynamic resource allocation for application containers |
CN107590001B (zh) * | 2017-09-08 | 2020-12-22 | 北京京东尚科信息技术有限公司 | 负载均衡方法及装置、存储介质、电子设备 |
-
2017
- 2017-11-22 US US15/820,856 patent/US10719354B2/en active Active
-
2018
- 2018-04-24 KR KR1020180047543A patent/KR102362037B1/ko active IP Right Grant
- 2018-06-19 CN CN201810632891.0A patent/CN109117264B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100083264A1 (en) | 2008-09-30 | 2010-04-01 | Abhay Mehta | Processing Batch Database Workload While Avoiding Overload |
US20110191400A1 (en) | 2010-02-01 | 2011-08-04 | Mithun Das Gupta | L1 Projections with Box Constraints |
US20160150002A1 (en) | 2014-11-21 | 2016-05-26 | International Business Machines Corporation | Cross-Platform Scheduling with Long-Term Fairness and Platform-Specific Optimization |
Also Published As
Publication number | Publication date |
---|---|
CN109117264B (zh) | 2021-06-01 |
KR20180138123A (ko) | 2018-12-28 |
US10719354B2 (en) | 2020-07-21 |
CN109117264A (zh) | 2019-01-01 |
US20180365055A1 (en) | 2018-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102362037B1 (ko) | 컨테이너 워크로드 스케줄러 및 컨테이너 워크로드 계획 방법 | |
Gopinath et al. | An in-depth analysis and study of Load balancing techniques in the cloud computing environment | |
US9229783B2 (en) | Methods and apparatus for resource capacity evaluation in a system of virtual containers | |
Tariq et al. | Energy-efficient static task scheduling on VFI-based NoC-HMPSoCs for intelligent edge devices in cyber-physical systems | |
WO2018120991A1 (zh) | 一种资源调度方法及装置 | |
US20130247067A1 (en) | GPU Compute Optimization Via Wavefront Reforming | |
US8214521B2 (en) | Systems and methods for changing computational tasks on computation nodes to minimize processing time variation | |
JP2001134453A (ja) | コンピュータ環境の区画のグループを管理する方法、システム、およびプログラム製品 | |
Subramanian et al. | An adaptive algorithm for dynamic priority based virtual machine scheduling in cloud | |
Tang et al. | An effective reliability-driven technique of allocating tasks on heterogeneous cluster systems | |
CN112559130B (zh) | 容器分配方法、装置、电子设备及存储介质 | |
Garala et al. | A performance analysis of load Balancing algorithms in Cloud environment | |
Komarasamy et al. | A novel approach for Dynamic Load Balancing with effective Bin Packing and VM Reconfiguration in cloud | |
Lai et al. | Delay-aware container scheduling in kubernetes | |
Seth et al. | Dynamic threshold-based dynamic resource allocation using multiple VM migration for cloud computing systems | |
CN115391023A (zh) | 多任务容器集群的计算资源优化方法及装置 | |
Imdoukh et al. | Optimizing scheduling decisions of container management tool using many‐objective genetic algorithm | |
Ferreira da Silva et al. | Controlling fairness and task granularity in distributed, online, non‐clairvoyant workflow executions | |
JP2016071886A (ja) | スケジューラコンピューティング装置、それを含む分散コンピューティングシステムのデータノード、及びその方法 | |
KR102674475B1 (ko) | 복수의 뉴럴 네트워크들을 실행하기 위한 전자 장치 | |
US20150046657A1 (en) | System and method for managing correspondence between a cache memory and a main memory | |
Ahmad et al. | A novel dynamic priority based job scheduling approach for cloud environment | |
Samad et al. | Two round scheduling (TRS) scheme for linearly extensible multiprocessor systems | |
Herrmann et al. | Memory-aware list scheduling for hybrid platforms | |
KR20220107616A (ko) | 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |