KR102456005B1 - 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체 - Google Patents

페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체 Download PDF

Info

Publication number
KR102456005B1
KR102456005B1 KR1020210000563A KR20210000563A KR102456005B1 KR 102456005 B1 KR102456005 B1 KR 102456005B1 KR 1020210000563 A KR1020210000563 A KR 1020210000563A KR 20210000563 A KR20210000563 A KR 20210000563A KR 102456005 B1 KR102456005 B1 KR 102456005B1
Authority
KR
South Korea
Prior art keywords
container
scheduling
node
score
nodes
Prior art date
Application number
KR1020210000563A
Other languages
English (en)
Other versions
KR20220098636A (ko
Inventor
오효식
김수진
고진수
유근호
Original Assignee
네이버 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 네이버 주식회사 filed Critical 네이버 주식회사
Priority to KR1020210000563A priority Critical patent/KR102456005B1/ko
Publication of KR20220098636A publication Critical patent/KR20220098636A/ko
Application granted granted Critical
Publication of KR102456005B1 publication Critical patent/KR102456005B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체가 개시된다. 컨테이너 스케줄링 방법은, 노드 별로 각 노드에 포함된 컨테이너의 문서 규모에 따른 스코어를 산출하는 단계; 및 상기 스코어를 기초로 선정된 노드에 다음 컨테이너를 스케줄링하는 단계를 포함한다.

Description

페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체{METHOD, SYSTEM, AND COMPUTER READABLE RECORD MEDIUM FOR SCHEDULING CONTAINERS THAT USE PAGE CACHE}
아래의 설명은 컨테이너 스케줄링 기술에 관한 것이다.
컨테이너 클러스터 관리 기술은 서버 가상화 기술에 비해 컨테이너를 기반으로 하여 오버헤드, 이식성 및 효율성의 측면에서 장점을 가지고 있다. 이에 따라, 컨테이너 기반 클라우드 환경으로의 전환이 빠르게 진행되고 있다.
이러한 컨테이너 클러스터 관리 기술은 컨테이너 기반 프라이빗 클라우드의 도입을 통해 호스트의 동적 할당으로 인프라 효율성을 증가시킬 수 있다.
예컨대, 한국 공개특허공보 제10-2019-0140341호(공개일 2019년 12월 19일)에는 컨테이너 가상화 환경에서 네트워크 자원을 동적으로 할당하기 위한 기술이 개시되어 있다.
페이지 캐시를 사용하는 특성의 컨테이너를 효율적으로 분배할 수 있는 스케줄링 방법과 시스템을 제공한다.
문서 규모에 따른 인스턴스 타입으로 컨테이너를 스케줄링할 수 있는 방법과 시스템을 제공한다.
동일 서비스 군에 속하는 컨테이너들을 분산 배치하여 서비스 가용성을 유지할 수 있는 방법과 시스템을 제공한다.
컴퓨터 시스템에서 실행되는 컨테이너 스케줄링 방법에 있어서, 상기 컴퓨터 장치는 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 컨테이너 스케줄링 방법은, 상기 적어도 하나의 프로세서에 의해, 노드 별로 각 노드에 포함된 컨테이너의 문서 규모에 따른 스코어를 산출하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 스코어를 기초로 선정된 노드에 다음 컨테이너를 스케줄링하는 단계를 포함하는 컨테이너 스케줄링 방법을 제공한다.
일 측면에 따르면, 상기 산출하는 단계는, 상기 노드에 포함된 상기 컨테이너를 상기 문서 규모에 따라 인스턴스 타입으로 분류하는 단계; 및 상기 인스턴스 타입에 할당된 점수를 합산하여 상기 노드의 스코어를 산출하는 단계를 포함할 수 있다.
다른 측면에 따르면, 상기 스케줄링하는 단계는, 동일한 서비스 군에 속하는 컨테이너들을 서로 다른 노드에 분산 배치하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 스케줄링하는 단계는, 상기 스코어를 이용하여 복수 개의 후보 노드를 선정하는 단계; 및 상기 후보 노드 중에서 각 노드의 부하 상태를 고려하여 스케줄링 대상 노드를 선정하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 스케줄링 대상 노드를 선정하는 단계는, 평균 부하(load average)를 이용하여 상기 스케줄링 대상 노드를 선정할 수 있다.
또 다른 측면에 따르면, 상기 스케줄링 대상 노드를 선정하는 단계는, 상기 부하 상태를 나타내는 부하율(load rate)과 메모리 사용량(memory usage) 및 Iops(input/output operations per second) 비율 중 적어도 하나를 이용하여 상기 스케줄링 대상 노드를 선정할 수 있다.
또 다른 측면에 따르면, 상기 스케줄링하는 단계는, 노드 간 사양 차이를 보정하기 위한 가중치를 이용하여 상기 스코어를 조정하는 단계; 및 상기 조정된 스코어를 기초로 노드를 선정하여 상기 다음 컨테이너를 스케줄링하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 가중치는 CPU 코어를 포함하는 사양 정보를 바탕으로 결정될 수 있다.
또 다른 측면에 따르면, 상기 스케줄링하는 단계는, 상기 가중치에 따라 일부 노드를 하나의 컨테이너가 자원 전체를 독점하여 사용하는 격리 노드로 스케줄링하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 스케줄링하는 단계는, 상기 격리 노드 간의 컨테이너 이동이 가능하고 상기 격리 노드 이외에 다른 노드와의 컨테이너 이동이 제한할 수 있다.
상기 컨테이너 스케줄링 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 컴퓨터 판독 가능한 기록 매체를 제공한다.
컴퓨터 시스템에 있어서, 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 노드 별로 각 노드에 포함된 컨테이너의 문서 규모에 따른 스코어를 산출하는 스코어 산출부; 및 상기 스코어를 기초로 선정된 노드에 다음 컨테이너를 스케줄링하는 컨테이너 스케줄링부를 포함하는 컴퓨터 시스템을 제공한다.
본 발명의 실시예들에 따르면, 컨테이너를 문서 규모에 따른 인스턴스 타입으로 스케줄링함으로써 페이지 캐시를 노드의 부하 요소로 반영하여 효율적인 스케줄링을 제공할 수 있다.
본 발명의 실시예들에 따르면, 서비스 단위 컨테이너 스케줄링으로서 동일 서비스 군에 속하는 컨테이너를 서로 다른 노드로 분산 배치함으로써 서비스 가용성을 유지할 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일실시예에 따른 서버의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 서버가 수행할 수 있는 방법의 예를 도시한 흐름도이다.
도 5 내지 도 7은 본 발명에 따른 컨테이너 스케줄링 방식을 설명하기 위한 예시 도면이다.
도 8 내지 도 9는 본 발명의 일실시예에 있어서 컨테이너 스케줄링 방식의 일례에 따른 노드 선정 예시를 도시한 것이다.
도 10은 본 발명에 따른 컨테이너 스케줄링 방식의 다른 예를 설명하기 위한 흐름도이다.
도 11은 본 발명의 일실시예에 있어서 컨테이너 스케줄링 방식의 다른 예에 따른 노드 선정 예시를 도시한 것이다.
도 12 내지 도 13은 본 발명의 일실시예에 있어서 컨테이너 스케줄링 방식의 또 다른 예에 따른 노드 선정 예시를 도시한 것이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들은 컨테이너 스케줄링 기술에 관한 것이다.
본 명세서에서 구체적으로 개시되는 것들을 포함하는 실시예들은 컨테이너가 사용하는 페이지 캐시를 부하 요소로 고려하여 스케줄링에 반영함으로써 컨테이너를 효율적으로 분배 배치할 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다.
복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 시스템으로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 내비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC, 게임 콘솔(game console), 웨어러블 디바이스(wearable device), IoT(internet of things) 디바이스, VR(virtual reality) 디바이스, AR(augmented reality) 디바이스 등이 있다. 일례로 도 1에서는 전자 기기(110)의 예로 스마트폰의 형상을 나타내고 있으나, 본 발명의 실시예들에서 전자 기기(110)는 실질적으로 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있는 다양한 물리적인 컴퓨터 시스템들 중 하나를 의미할 수 있다.
통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망, 위성망 등)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 예를 들어, 서버(150)는 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 제1 서비스를 제공하는 시스템일 수 있으며, 서버(160) 역시 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 제2 서비스를 제공하는 시스템일 수 있다. 보다 구체적인 예로, 서버(150)는 복수의 전자 기기들(110, 120, 130, 140)에 설치되어 구동되는 컴퓨터 프로그램으로서의 어플리케이션을 통해, 해당 어플리케이션이 목적하는 서비스(일례로, 검색 서비스 등)를 제1 서비스로서 복수의 전자 기기들(110, 120, 130, 140)로 제공할 수 있다. 다른 예로, 서버(160)는 상술한 어플리케이션의 설치 및 구동을 위한 파일을 복수의 전자 기기들(110, 120, 130, 140)로 배포하는 서비스를 제2 서비스로서 제공할 수 있다.
도 2는 본 발명의 일실시예에 있어서 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 2에서는 전자 기기에 대한 예로서 전자 기기(110), 그리고 서버(150)의 내부 구성을 설명한다. 또한, 다른 전자 기기들(120, 130, 140)이나 서버(160) 역시 상술한 전자 기기(110) 또는 서버(150)와 동일한 또는 유사한 내부 구성을 가질 수 있다.
전자 기기(110)와 서버(150)는 메모리(211, 221), 프로세서(212, 222), 통신 모듈(213, 223) 그리고 입출력 인터페이스(214, 224)를 포함할 수 있다. 메모리(211, 221)는 비-일시적인 컴퓨터 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory), 디스크 드라이브, SSD(solid state drive), 플래시 메모리(flash memory) 등과 같은 비소멸성 대용량 저장 장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM, SSD, 플래시 메모리, 디스크 드라이브 등과 같은 비소멸성 대용량 저장 장치는 메모리(211, 221)와는 구분되는 별도의 영구 저장 장치로서 전자 기기(110)나 서버(150)에 포함될 수도 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기(110)에 설치되어 구동되는 브라우저나 특정 서비스의 제공을 위해 전자 기기(110)에 설치된 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(211, 221)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로, 상술한 서버(160))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 컴퓨터 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.
프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기(110)와 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 전자 기기(110) 및/또는 서버(150)가 다른 전자 기기(일례로 전자 기기(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기(110)의 프로세서(212)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기(110)의 통신 모듈(213)을 통해 전자 기기(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령, 컨텐츠, 파일 등은 프로세서(212)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기(110)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.
입출력 인터페이스(214)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드, 마우스, 마이크로폰, 카메라 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커, 햅틱 피드백 디바이스(haptic feedback device) 등과 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(215)는 전자 기기(110)와 하나의 장치로 구성될 수도 있다. 또한, 서버(150)의 입출력 인터페이스(224)는 서버(150)와 연결되거나 서버(150)가 포함할 수 있는 입력 또는 출력을 위한 장치(미도시)와의 인터페이스를 위한 수단일 수 있다. 보다 구체적인 예로, 전자 기기(110)의 프로세서(212)가 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기(120)가 제공하는 데이터를 이용하여 구성되는 인터페이스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.
또한, 다른 실시예들에서 전자 기기(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기(110)는 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기(110)가 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라 모듈, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기(110)에 더 포함되도록 구현될 수 있다.
이하에서는 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법 및 시스템의 구체적인 실시예를 설명하기로 한다.
도 3은 본 발명의 일실시예에 따른 서버의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이고, 도 4는 본 발명의 일실시예에 따른 서버가 수행할 수 있는 방법의 예를 도시한 흐름도이다.
본 실시예에 따른 서버(150)는 검색 플랫폼에서 사용되는 컨테이너 스케줄링 기술을 제공한다. 서버(150)에는 컴퓨터 시스템으로 구현된 컨테이너 스케줄링 시스템이 구성될 수 있다. 서버(150)는 클라이언트(client)인 복수의 전자 기기들(110, 120, 130, 140)을 대상으로 하는 것으로, 전자 기기들(110, 120, 130, 140) 상에 설치된 전용 어플리케이션이나 서버(150)와 관련된 웹/모바일 사이트 접속을 통해 검색 서비스를 제공할 수 있다. 특히, 서버(150)는 컨테이너가 사용하는 페이지 캐시를 노드의 부하 요소로 고려하여 컨테이너를 스케줄링할 수 있다.
서버(150)의 프로세서(222)는 도 4에 따른 컨테이너 스케줄링 방법을 수행하기 위한 구성요소로서 도 3에 도시된 바와 같이, 스코어 산출부(310), 및 컨테이너 스케줄링부(320)를 포함할 수 있다. 실시예에 따라 프로세서(222)의 구성요소들은 선택적으로 프로세서(222)에 포함되거나 제외될 수도 있다. 또한, 실시예에 따라 프로세서(222)의 구성요소들은 프로세서(222)의 기능의 표현을 위해 분리 또는 병합될 수도 있다.
이러한 프로세서(222) 및 프로세서(222)의 구성요소들은 도 4의 컨테이너 스케줄링 방법이 포함하는 단계들(S410 내지 S420)을 수행하도록 서버(150)를 제어할 수 있다. 예를 들어, 프로세서(222) 및 프로세서(222)의 구성요소들은 메모리(221)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.
여기서, 프로세서(222)의 구성요소들은 서버(150)에 저장된 프로그램 코드가 제공하는 명령에 따라 프로세서(222)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 서버(150)가 노드의 부하 요소와 관련된 스코어를 산출하도록 상술한 명령에 따라 서버(150)를 제어하는 프로세서(222)의 기능적 표현으로서 스코어 산출부(310)가 이용될 수 있다.
프로세서(222)는 서버(150)의 제어와 관련된 명령이 로딩된 메모리(221)로부터 필요한 명령을 읽어들일 수 있다. 이 경우, 상기 읽어들인 명령은 프로세서(222)가 이후 설명될 단계들(S410 내지 S420)을 실행하도록 제어하기 위한 명령을 포함할 수 있다. 이후 설명될 단계들(S410 내지 S420)은 도 4에 도시된 순서와 다른 순서로 수행될 수 있으며, 단계들(S410 내지 S420) 중 일부가 생략되거나 추가의 과정이 더 포함될 수 있다.
도 4를 참조하면, 단계(S410)에서 스코어 산출부(310)는 노드 별 스케줄링 점수로서 각 노드에 포함된 컨테이너 규모에 따른 노드 스코어를 산출할 수 있다. 이때, 스코어 산출부(310)는 노드에 속해 있는 컨테이너의 문서 규모를 나타내는 스코어를 산출할 수 있다.
단계(S420)에서 컨테이너 스케줄링부(320)는 노드 스코어를 기초로 노드를 선정하여 선정된 노드에 컨테이너를 스케줄링할 수 있다. 컨테이너 스케줄링부(320)는 노드 스코어를 통해 노드에 속해 있는 컨테이너 규모를 파악하여 컨테이너 규모가 작은 노드에 컨테이너를 스케줄링할 수 있다.
도 5 내지 도 7은 본 발명에 따른 컨테이너 스케줄링 방식을 설명하기 위한 예시 도면이다.
페이지 캐시를 사용하는 컨테이너의 경우 스케줄링을 위해서는 페이지 캐시를 노드의 부하 요소로 고려해야 한다. 페이지 캐시 영역은 검색 엔진에서 커널이 관리하는 메모리 영역으로, 디스크와 같은 블록 디바이스의 파일들을 빠르게 접근하기 위해 메모리에 올리는데 사용된다.
노드의 부하 상태만이 반영된 스케줄링 방식의 경우 컨테이너를 분산 배치한 이후 데이터가 저장됨에 따라 노드 간 부하가 불균등해지는 문제가 발생한다. 페이지 캐시가 노드 부하로 집계되지 않아 컨테이너 스케줄링에 반영되지 못하는 경우 노드 간 불균등이 더욱 두드러지게 된다.
본 실시예들은 도 5에 도시한 컨테이너 스케줄링 과정에서 컨테이너(501)의 규모를 스케줄링에 반영하여 컨테이너(501)를 효율적으로 분산 배치할 수 있다. 컨테이너(501)의 데이터 규모를 고려한 스케줄링에 따르면, 도 6에 도시한 바와 같이 색인이라는 문서 입력 과정을 거친 이후에도 노드 간 부하가 비교적 균등한 상태를 보장할 수 있다.
한편, 동일한 서비스의 컨테이너들을 같은 노드에 스케줄링한 경우 특정 컨테이너의 부하가 다른 컨테이너의 성능에도 영향을 미칠 수 있고, 노드에 장애가 발생하는 경우 해당 노드에 속한 모든 컨테이너가 사라짐에 따라 서비스 가용성을 보장하지 못한다.
본 실시예들은 서비스 단위로 컨테이너를 스케줄링하는 과정에서 서비스 고가용성을 위해 동일한 서비스 군에 속하는 컨테이너들을 서로 다른 노드로 각각 분배할 수 있다. 예를 들어, 도 7을 참조하면, 웹툰 서비스를 위한 컨테이너가 3개 존재하는 경우 각 컨테이너를 서로 다른 노드, 즉 Node #1, #2, #3에 분산 배치함으로써 Node #1에 장애가 발생하더라도 Node #2 또는 Node #3의 컨테이너를 통해 웹툰 서비스를 유지할 수 있다.
컨테이너를 문서 규모에 따른 인스턴스 타입으로 스케줄링하는 과정을 상세히 설명하면 다음과 같다.
프로세서(222)는 컨테이너를 인스턴스 타입 별로 분류하고 색인과 같은 문서 입력 과정 후의 데이터 사이즈를 예상하여 컨테이너를 분산 배치할 수 있다.
프로세서(222)는 컨테이너의 예상되는 문서 규모에 따라 인스턴스 타입을 구분할 수 있으며 컨테이너 별 인스턴스 타입에 따라 점수를 할당할 수 있다.
인스턴스 타입은 문서 규모에 따라 구분될 수 있다. 예를 들어, 도 8에 도시한 바와 같이 인스턴스 타입은 볼륨 사이즈가 16GB 이하로 제한된 small, 32GB 이하로 제한된 large, 64GB 이하로 제한된 xlarge, 128GB 이하로 제한된 2xlarge, 사이즈 제한이 없는 unlimit로 구분될 수 있다. 인스턴스 타입 별로 문서 규모에 따른 점수를 할당할 수 있으며, 문서 규모가 클수록 높은 점수를 할당할 수 있다. 예를 들어, small, large, xlarge, unlimit 순으로 1, 2, 4, 8, ∞와 같이 인스턴스 타입 별 점수가 할당될 수 있다.
인스턴스 타입 중 unlimit의 경우 점수와 무관하게 하나의 노드에 컨테이너 하나만 배치될 수 있는 조건으로, 컨테이너 하나가 노드의 모든 자원을 독점하여 사용할 수 있다.
프로세서(222)는 각 노드 별로 해당 노드에 할당된 컨테이너들을 대상으로 각 컨테이너에 해당되는 인스턴스 타입의 점수를 합산함으로써 노드 스코어를 산출할 수 있다. 예를 들어, 도 9에 도시한 바와 같이, small 컨테이너 2개, large 컨테이너 2개, xlarge 컨테이너 1개가 배치된 Node #1의 경우 노드 스코어는 (1×2+2×2+4×1)=10과 같고, large 컨테이너 2개, xlarge 컨테이너 1개가 배치된 Node #2의 경우 (2×2+4×1)=8과 같다. 이와 동일한 방식으로, Node #3과 Node #4의 스코어를 산출한다.
프로세서(222)는 컨테이너를 문서 규모에 따른 인스턴스 타입으로 구분하여 스케줄링하는 경우 노드 스코어를 기준으로 다음 번 컨테이너 스케줄링 대상 서버를 선정할 수 있다.
도 9의 예시에서는 다음 번 컨테이너 스케줄링 대상 서버로 노드 스코어가 가장 작은 Node #2가 선정되어 해당 컨테이너가 Node #2에 배치될 수 있다. 이때, 프로세서(222)는 서비스 가용성을 유지하기 위한 컨테이너 분산 배치를 위해 Node #2에 스케줄링 대상 컨테이너와 같은 서비스의 컨테이너가 존재하는 경우 컨테이너를 Node #2에 스케줄링하지 않고 노드 스코어가 Node #2 다음으로 작은 Node #3에 스케줄링할 수 있다.
노드 스코어만을 고려한 컨테이너 스케줄링에서는 스케줄링 대상 서버로 선정된 노드에 수천 qps(query per second) 이상의 트래픽이 발생하는 통합 검색과 같은 서비스의 컨테이너가 배치되는 경우 노드 스코어가 낮더라도 노드 부하가 크게 증가하는 문제를 사전에 대비하지 못하는 한계가 있을 수 있다.
프로세서(222)는 보다 개선된 컨테이너 스케줄링을 위해 노드 스코어와 함께 각 노드의 현재 부하 상태를 컨테이너 스케줄링에 반영할 수 있다.
도 10은 본 발명에 따른 컨테이너 스케줄링 방식의 다른 예를 설명하기 위한 흐름도이다.
도 10을 참조하면, 단계(S1001)에서 컨테이너 스케줄링부(320)는 노드 스코어를 이용하여 복수 개의 후보 노드를 선정할 수 있다. 일례로, 컨테이너 스케줄링부(320)는 클러스터에 포함된 노드를 노드 스코어가 낮은 순으로 정렬한 후 스코어가 가장 낮은 노드부터 일정 개수 혹은 일정 비율만큼의 노드를 후보 노드로 선정할 수 있다.
단계(S1002)에서 컨테이너 스케줄링부(320)는 후보 노드 중에서 노드의 현재 부하 상태를 고려하여 최종 스케줄링 대상 노드를 선정할 수 있다.
일례로, 컨테이너 스케줄링부(320)는 노드의 부하 상태를 나타내는 지표 중 하나인 평균 부하(load average)를 이용할 수 있으며, 후보 노드 중에서 평균 부하가 가장 낮은 노드에 컨테이너를 스케줄링할 수 있다. 평균 부하는 CPU 사용량(CPU usage)과는 다른 지표로, CPU가 처리하기 위해 대기하고 있는 큐의 크기를 의미할 수 있다. 일반적으로 평균 부하가 CPU 코어 수보다 높은 경우 가용 처리량보다 높은 부하가 있다고 볼 수 있다.
다른 예로, 컨테이너 스케줄링부(320)는 노드의 부하 상태를 알 수 있는 부하율(load rate)과 메모리 사용량(memory usage) 및 Iops(input/output operations per second) 비율 중 적어도 하나의 노드 부하율을 이용할 수 있으며, 후보 노드 중에서 노드 부하율(예를 들어, 부하율과 메모리 사용량 및 Iops 비율의 합산 값)이 가장 낮은 노드에 컨테이너를 스케줄링할 수 있다. 부하율은 CPU 코어 대비 현재 평균 부하 비율(load average/CPU core)로 정의될 수 있고, Iops 비율은 최대 Iops 값 대비 현재 Iops 값 비율(Iops/Max Iops)로 정의될 수 있다. 이때, 컨테이너 스케줄링부(320)는 부하율과 메모리 사용량 및 Iops 비율을 동일한 비중으로 합산한 값 혹은 중요도에 따라 서로 다른 비중으로 합산한 값을 이용하여 최종 스케줄링 대상 노드를 선정할 수 있다.
예를 들어, 노드 스코어, 부하율, 메모리 사용량, Iops 비율이 도 11과 같다고 가정할 때, 노드 스코어(1101)만을 컨테이너 스케줄링에 반영하는 경우 노드 스코어(1101)가 가장 낮은 Node F와 Node G 중 하나가 최종 스케줄링 대상 노드로 선정될 수 있다. 컨테이너 스케줄링부(320)는 노드 스코어(1101)가 동점인 경우 다른 부하 요소, 예를 들어 평균 부하를 비교하여 평균 부하가 적은 Node F를 최종 스케줄링 대상 노드로 선정할 수 있다.
노드 스코어(1101)와 함께, 부하율과 메모리 사용량 및 Iops 비율의 합산 값(1102)을 컨테이너 스케줄링에 반영하는 경우, 컨테이너 스케줄링부(320)는 노드 스코어(1101)를 기준으로 후보 노드를 먼저 선정한다. 스코어(1001)가 가장 낮은 노드부터 일정 개수, 예를 들어 동점 포함 6개를 후보 노드로 선정할 때 Node B, C, D, E, F, G를 후보 노드로 선정한 다음, 후보 노드 중에서 부하율과 메모리 사용량 및 Iops 비율의 합산 값(1102)이 가장 낮은 Node B를 최종 스케줄링 대상 노드로 선정할 수 있다.
요컨대, 컨테이너 스케줄링부(320)는 노드 스코어를 기준으로 후보 노드를 선정한 다음 후보로 선정된 노드들의 부하 상태를 확인하여 부하 상태가 가장 낮은 노드에 컨테이너를 배치함으로써 차후 서비스 트래픽으로 인한 문제를 사전에 대비할 수 있는 보다 개선된 스케줄링을 제공할 수 있다.
더 나아가, 컨테이너 스케줄링부(320)는 보다 개선된 컨테이너 스케줄링을 위해 노드 간의 스펙 차이를 컨테이너 스케줄링에 반영할 수 있다.
컨테이너 스케줄링부(320)는 스케줄링 대상 노드를 선정하는 과정에서 각 노드에 해당되는 스케줄링 대상 서버 별 사양 차이를 고려하여 노드 별로 가중치를 적용할 수 있다. 예를 들어, 도 12를 참조하면 노드 간에 스펙 차이를 보정하기 위한 수치로서 사전에 정해진 가중치(1203)를 노드 스코어(1101)에 곱함으로써 조정 스코어(1204)를 획득할 수 있다. 일례로, 가중치(1203)는 CPU 코어를 고려하여 결정될 수 있으며, CPU 코어가 같더라도 서버 성능이 각기 다를 수 있기 때문에 서버 사양과 관련된 정보를 기계 학습 모델을 통해 학습한 결과를 바탕으로 가중치(1203)를 설정하는 것 또한 가능하다.
일부 노드의 경우 서버 스펙에 따라 가중치(1203)로 음수(negative number)가 적용될 수 있으며, 클러스터 내 노드를 양수(positive number) 가중치가 적용된 노드 그룹인 일반 그룹과, 음수 가중치가 적용된 노드 그룹인 격리 그룹으로 나누어 관리할 수 있다.
컨테이너 스케줄링부(320)는 스케줄링 대상 노드를 선정하는 과정에서 일반 그룹의 노드 중에서 조정 스코어(1204)가 가장 낮은 노드를 선정할 수 있다. 도 12를 참조하면, 노드 스코어(1101)를 이용한 컨테이너 스케줄링의 경우 Node F와 Node G 중 하나가 스케줄링 대상 노드로 선정되는 반면에, 서버 별 사양 차이를 고려한 조정 스코어(1204)를 기준으로 하는 경우 Node B와 Node C 중 하나가 스케줄링 대상 노드로 선정될 수 있다.
음수 가중치가 적용된 격리 노드는 해당 노드에 속해 있던 컨테이너를 다른 노드로 보내지도 않고 다른 노드의 컨테이너를 받지도 않는 고립 상태의 노드를 의미할 수 있다.
컨테이너 스케줄링부(320)는 인스턴스 타입 중 unlimit에 해당되는 컨테이너를 격리 노드에 스케줄링할 수 있다. 예를 들어, 도 13을 참조하면, Node#1에 할당된 컨테이너 중 특정 컨테이너(1301)의 부하가 극심하여 다른 컨테이너(1302)에 영향을 미치는 경우 부하가 심한 컨테이너(1301)를 격리 노드(1320)로 이동시킬 수 있다. 나머지 컨테이너(1302)는 일반 노드(1310)에서 관리하는 반면에, 부하가 심한 컨테이너(1301)는 격리 노드(1320)에서 관리할 수 있다. 격리 노드(1320)에 할당된 컨테이너(1301)는 일반 노드(1310)로의 이동이 제한되고 기존 격리 노드 혹은 다른 격리 노드로의 이동만 가능하다. 격리 노드(1320) 간의 컨테이너 이동 또한 조정 스코어(1204)(스코어 절대값)를 기준으로 한 스케줄링에 따라 진행될 수 있다.
이처럼 본 발명의 실시예들에 따르면, 컨테이너를 문서 규모에 따른 인스턴스 타입으로 분류하여 스케줄링함으로써 페이지 캐시를 노드의 부하 요소로 반영하여 효율적인 스케줄링을 제공할 수 있다. 그리고, 본 발명의 실시예들에 따르면, 서비스 단위 컨테이너 스케줄링으로서 동일 서비스 군에 속하는 컨테이너를 서로 다른 노드로 분산 배치함으로써 서비스 가용성을 유지할 수 있다. 또한, 본 발명의 실시예들에 따르면, 컨테이너 규모뿐 아니라 노드의 실제 부하 상태 또는 노드 간 사양 차이를 보정하는 가중치를 컨테이너 스케줄링에 반영함으로써 자원 효율성을 더욱 개선할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 컴퓨터 시스템에서 실행되는 컨테이너 스케줄링 방법에 있어서,
    컴퓨터 장치는 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,
    상기 컨테이너 스케줄링 방법은,
    상기 적어도 하나의 프로세서에 의해, 노드 별로 각 노드에 포함된 컨테이너의 문서 규모에 따른 스코어를 산출하는 단계; 및
    상기 적어도 하나의 프로세서에 의해, 상기 스코어를 기초로 선정된 노드에 다음 컨테이너를 스케줄링하는 단계
    를 포함하는 컨테이너 스케줄링 방법.
  2. 제1항에 있어서,
    상기 산출하는 단계는,
    상기 노드에 포함된 상기 컨테이너를 상기 문서 규모에 따라 인스턴스 타입으로 분류하는 단계; 및
    상기 인스턴스 타입에 할당된 점수를 합산하여 상기 노드의 스코어를 산출하는 단계
    를 포함하는 컨테이너 스케줄링 방법.
  3. 제1항에 있어서,
    상기 스케줄링하는 단계는,
    동일한 서비스 군에 속하는 컨테이너들을 서로 다른 노드에 분산 배치하는 단계
    를 포함하는 컨테이너 스케줄링 방법.
  4. 제1항에 있어서,
    상기 스케줄링하는 단계는,
    상기 스코어를 이용하여 복수 개의 후보 노드를 선정하는 단계; 및
    상기 후보 노드 중에서 각 노드의 부하 상태를 고려하여 스케줄링 대상 노드를 선정하는 단계
    를 포함하는 컨테이너 스케줄링 방법.
  5. 제4항에 있어서,
    상기 스케줄링 대상 노드를 선정하는 단계는,
    평균 부하(load average)를 이용하여 상기 스케줄링 대상 노드를 선정하는 것
    을 특징으로 하는 컨테이너 스케줄링 방법.
  6. 제4항에 있어서,
    상기 스케줄링 대상 노드를 선정하는 단계는,
    상기 부하 상태를 나타내는 부하율(load rate)과 메모리 사용량(memory usage) 및 Iops(input/output operations per second) 비율 중 적어도 하나를 이용하여 상기 스케줄링 대상 노드를 선정하는 것
    을 특징으로 하는 컨테이너 스케줄링 방법.
  7. 제1항에 있어서,
    상기 스케줄링하는 단계는,
    노드 간 사양 차이를 보정하기 위한 가중치를 이용하여 상기 스코어를 조정하는 단계; 및
    상기 조정된 스코어를 기초로 노드를 선정하여 상기 다음 컨테이너를 스케줄링하는 단계
    를 포함하는 컨테이너 스케줄링 방법.
  8. 제7항에 있어서,
    상기 가중치는 CPU 코어를 포함하는 사양 정보를 바탕으로 결정되는 것
    을 특징으로 하는 컨테이너 스케줄링 방법.
  9. 제7항에 있어서,
    상기 스케줄링하는 단계는,
    상기 가중치에 따라 일부 노드를 하나의 컨테이너가 자원 전체를 독점하여 사용하는 격리 노드로 스케줄링하는 단계
    를 포함하는 컨테이너 스케줄링 방법.
  10. 제9항에 있어서,
    상기 스케줄링하는 단계는,
    상기 격리 노드 간의 컨테이너 이동이 가능하고 상기 격리 노드 이외에 다른 노드와의 컨테이너 이동이 제한하는 것
    을 특징으로 하는 컨테이너 스케줄링 방법.
  11. 제1항 내지 제10항 중 어느 한 항의 컨테이너 스케줄링 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 컴퓨터 판독 가능한 기록 매체.
  12. 컴퓨터 시스템에 있어서,
    메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    노드 별로 각 노드에 포함된 컨테이너의 문서 규모에 따른 스코어를 산출하는 스코어 산출부; 및
    상기 스코어를 기초로 선정된 노드에 다음 컨테이너를 스케줄링하는 컨테이너 스케줄링부
    를 포함하는 컴퓨터 시스템.
  13. 제12항에 있어서,
    상기 스코어 산출부는,
    상기 노드에 포함된 상기 컨테이너를 상기 문서 규모에 따라 인스턴스 타입으로 분류하고,
    상기 인스턴스 타입에 할당된 점수를 합산하여 상기 노드의 스코어를 산출하는 것
    을 특징으로 하는 컴퓨터 시스템.
  14. 제12항에 있어서,
    상기 컨테이너 스케줄링부는,
    동일한 서비스 군에 속하는 컨테이너들을 서로 다른 노드에 분산 배치하는 것
    을 특징으로 하는 컴퓨터 시스템.
  15. 제12항에 있어서,
    상기 컨테이너 스케줄링부는,
    상기 스코어를 이용하여 복수 개의 후보 노드를 선정하고,
    상기 후보 노드 중에서 각 노드의 부하 상태를 고려하여 스케줄링 대상 노드를 선정하는 것
    을 특징으로 하는 컴퓨터 시스템.
  16. 제15항에 있어서,
    상기 컨테이너 스케줄링부는,
    상기 부하 상태를 나타내는 부하율과 메모리 사용량 및 Iops 비율 중 적어도 하나를 이용하여 상기 스케줄링 대상 노드를 선정하는 것
    을 특징으로 하는 컴퓨터 시스템.
  17. 제12항에 있어서,
    상기 컨테이너 스케줄링부는,
    노드 간 사양 차이를 보정하기 위한 가중치를 이용하여 상기 스코어를 조정하고,
    상기 조정된 스코어를 기초로 노드를 선정하여 상기 다음 컨테이너를 스케줄링하는 것
    을 특징으로 하는 컴퓨터 시스템.
  18. 제17항에 있어서,
    상기 가중치는 CPU 코어를 포함하는 사양 정보를 바탕으로 결정되는 것
    을 특징으로 하는 컴퓨터 시스템.
  19. 제17항에 있어서,
    상기 컨테이너 스케줄링부는,
    상기 가중치에 따라 일부 노드를 하나의 컨테이너가 자원 전체를 독점하여 사용하는 격리 노드로 스케줄링하는 것
    을 특징으로 하는 컴퓨터 시스템.
  20. 제19항에 있어서,
    상기 컨테이너 스케줄링부는,
    상기 격리 노드 간의 컨테이너 이동이 가능하고 상기 격리 노드 이외에 다른 노드와의 컨테이너 이동을 제한하는 것
    을 특징으로 하는 컴퓨터 시스템.
KR1020210000563A 2021-01-04 2021-01-04 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체 KR102456005B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210000563A KR102456005B1 (ko) 2021-01-04 2021-01-04 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210000563A KR102456005B1 (ko) 2021-01-04 2021-01-04 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체

Publications (2)

Publication Number Publication Date
KR20220098636A KR20220098636A (ko) 2022-07-12
KR102456005B1 true KR102456005B1 (ko) 2022-10-18

Family

ID=82420164

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210000563A KR102456005B1 (ko) 2021-01-04 2021-01-04 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체

Country Status (1)

Country Link
KR (1) KR102456005B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102154446B1 (ko) 2019-11-14 2020-09-09 한국전자기술연구원 분산·협업형 컨테이너 플랫폼 환경에서의 자원 균등 배분을 위한 고속 스케줄링 방법
WO2021095943A1 (ko) 2019-11-15 2021-05-20 대구대학교 산학협력단 서비스 프로파일을 고려한 컨테이너의 배치 방법
KR102260547B1 (ko) 2020-09-10 2021-06-04 한국전자기술연구원 분산 협업형 클러스터내 최적합 클러스터 선정 스케줄링 방법
CN113157379A (zh) 2020-01-22 2021-07-23 株式会社日立制作所 集群节点资源调度方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102154446B1 (ko) 2019-11-14 2020-09-09 한국전자기술연구원 분산·협업형 컨테이너 플랫폼 환경에서의 자원 균등 배분을 위한 고속 스케줄링 방법
WO2021095943A1 (ko) 2019-11-15 2021-05-20 대구대학교 산학협력단 서비스 프로파일을 고려한 컨테이너의 배치 방법
CN113157379A (zh) 2020-01-22 2021-07-23 株式会社日立制作所 集群节点资源调度方法及装置
KR102260547B1 (ko) 2020-09-10 2021-06-04 한국전자기술연구원 분산 협업형 클러스터내 최적합 클러스터 선정 스케줄링 방법

Also Published As

Publication number Publication date
KR20220098636A (ko) 2022-07-12

Similar Documents

Publication Publication Date Title
US11720408B2 (en) Method and system for assigning a virtual machine in virtual GPU enabled systems
US10289767B2 (en) Communications interface facilitating operations of a persistent spatially-optimized computer-based simulation
US20180307528A1 (en) Leveraging directed acyclic graph (dag) information to group tasks for execution
US20200356415A1 (en) Apparatus and method for depoying a machine learning inference as a service at edge systems
US9794136B1 (en) Distributed resource allocation
US20240036937A1 (en) Workload placement for virtual gpu enabled systems
JP2005056391A (ja) コンピューティング環境の作業負荷を均衡させる方法およびシステム
US20200301748A1 (en) Apparatuses and methods for smart load balancing in a distributed computing system
US10664278B2 (en) Method and apparatus for hardware acceleration in heterogeneous distributed computing
US11620155B2 (en) Managing execution of data processing jobs in a virtual computing environment
KR102632639B1 (ko) 이미지 기반 컨텐츠의 개인화 추천을 위한 방법, 시스템, 및 비-일시적인 컴퓨터 판독가능한 기록 매체
CN108073423A (zh) 一种加速器加载方法、系统和加速器加载装置
CN109818880B (zh) 动态分派工作及提供资源的方法、装置及其系统
US11886898B2 (en) GPU-remoting latency aware virtual machine migration
Bravo Ferreira et al. More sharing, more benefits? A study of library sharing in container-based infrastructures
US9971785B1 (en) System and methods for performing distributed data replication in a networked virtualization environment
KR20210023635A (ko) 장기간 관련 있는 이슈 단위의 클러스터를 이용한 문서 타임라인을 제공하는 방법 및 시스템
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
KR102456005B1 (ko) 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체
CN113297226B (zh) 数据存储方法、数据读取方法、装置、电子设备及介质
WO2022078060A1 (en) Tag-driven scheduling of computing resources for function execution
KR102077061B1 (ko) 유저 이동을 통한 서버 채널의 자동 로드 밸런싱 방법
CN109617954B (zh) 一种创建云主机的方法和装置
KR102423876B1 (ko) 어플리케이션 리소스 최적화를 위한 방법과 시스템
KR102002896B1 (ko) 컨텐츠 서비스에서 알림 시간을 개인화 하는 방법 및 시스템

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant