KR101827369B1 - 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법 - Google Patents

데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법 Download PDF

Info

Publication number
KR101827369B1
KR101827369B1 KR1020120017309A KR20120017309A KR101827369B1 KR 101827369 B1 KR101827369 B1 KR 101827369B1 KR 1020120017309 A KR1020120017309 A KR 1020120017309A KR 20120017309 A KR20120017309 A KR 20120017309A KR 101827369 B1 KR101827369 B1 KR 101827369B1
Authority
KR
South Korea
Prior art keywords
tasks
task
overload
input
load
Prior art date
Application number
KR1020120017309A
Other languages
English (en)
Other versions
KR20130095910A (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 KR1020120017309A priority Critical patent/KR101827369B1/ko
Priority to US13/585,252 priority patent/US8997109B2/en
Publication of KR20130095910A publication Critical patent/KR20130095910A/ko
Application granted granted Critical
Publication of KR101827369B1 publication Critical patent/KR101827369B1/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/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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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

Abstract

데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법이 개시된다. 본 발명에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치는, 데이터 스트림 분산 병렬 처리 서비스를 구성하는 복수의 태스크들을 등록하는 서비스 관리부; 상기 복수의 태스크들의 부하 정보 및 상기 데이터 스트림 분산 병렬 처리 서비스를 제공하는 클러스터를 구성하는 복수의 노드들의 부하 정보를 수집하는 서비스 품질 모니터링부; 및 상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 상기 복수의 태스크들을 상기 복수의 노드들에 분산 배치하는 스케쥴링부를 포함한다.

Description

데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법{Apparatus and method for managing data stream distributed parallel processing service}
본 발명은 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에 관한 것으로서, 특히 복수의 태스크를 분산 병렬 실행하여 복수의 입력 데이터 스트림을 연속 처리 시에, 복수의 태스크를 각 부하 특성에 맞게 효율적으로 배치하고 태스크 배치 구조에 적절한 통신 수단을 사용함으로써, 서비스를 구성하는 태스크의 입력 데이터 스트림의 폭증으로 인한 서비스의 태스크 간 데이터 입출력 부하를 감소시키고 입출력 성능 및 데이터 처리 성능을 향상시킬 수 있는 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에 관한 것이다.
유비쿼터스 컴퓨팅 환경이 도래하고 사용자 중심의 인터넷 서비스 시장이 급속하게 발전함으로 인해 처리해야 할 데이터 스트림의 양이 빠르게 증가하고 있으며, 데이터 스트림의 종류 또한 더욱 다양화되고 있다. 이에 따라, 대용량 데이터 스트림에 대한 준실시간 데이터 분석 및 가공 서비스를 제공하기 위한 데이터 스트림 분산 병렬 처리 관련 연구가 활발히 진행되고 있다.
도 1은 종래의 분산 병렬 처리 서비스의 일 예를 도시한 도면이다.
도 1을 참조하면, 분산 병렬 처리 서비스(110)는 입력 소스(100)와 출력 소스(130)와 연결되어 있으며, 입력 데이터의 처리 방법은 데이터 스트림에 대한 질의 또는 처리 방법이 기술된 여러 연산들(116 내지 120)의 정의와 이들 연산들 간의 데이터 흐름을 기술하는 DAG(Directed Acyclic Graph)로 표현된다. 이러한 종래의 분산 병렬 처리 서비스(110) 내의 연산들(116 내지 120)은 다중 노드로 구성된 클러스터 내의 여러 노드들(111 내지 115)에 분산 배치되어 일반적으로 개별 프로세스 형태로 실행이 되며, 한번 실행이 되면 이후 프로세스의 종료 없이 연속적으로 수행됨으로써 대용량 데이터 스트림의 빠른 병렬 처리를 연속적으로 수행하는 것이 가능하게 된다.
상기 기술한 종래의 분산 병렬 처리 서비스를 바탕으로 한 종래의 분산 병렬 처리 시스템은 등록된 서비스의 연산들이 입력되는 데이터 스트림을 바탕으로 연속적으로 수행되나, 데이터 스트림의 폭증 시에 가용 자원의 부족에 따라 연속적인 질의 처리의 지연이 발생함은 물론 노드 자원의 고갈로 인하여 분산 데이터 스트림 처리 시스템에 오류가 발생하거나 혹은 정지되는 문제점이 있었다. 이를 해결하기 위하여, 종래의 분산 병렬 처리 시스템은 문제가 되는 연산에 메모리, CPU와 같은 노드의 자원을 더 많이 할당하거나, 입력 데이터 스트림을 선별적으로 버리는 부하 차단(load shedding) 방법을 수행하거나 혹은 연산을 현재 수행 중인 노드에서 다른 노드로 이동시켜 수행하는 부하 이주(load migration) 방법을 채택하였다.
그러나, 노드의 자원을 더 많이 할당하는 방법은 서비스가 수행 중인 상황에서 온라인으로 적용하기 힘든 면이 있으며, 입력 데이터 스트림을 삭제하는 부하 차단 방법은 연속 질의 처리 결과의 정확도 저하를 초래한다는 문제점이 있다.
또한, 부하 이주 방법은 입력되는 데이터 스트림의 폭증으로 특정 연산이 단일 노드에서 처리하기 힘든 경우 어차피 다른 노드로 이주시키더라도 이를 해결할 수 없는 문제가 있으며, 특히 다양한 부하 특성(load characteristics)을 갖는 연산들을 단순하게 계산 집중(compute intensive) 연산으로 바라보고 단순하게 다른 노드의 여유 CPU 자원에 할당하는 방식으로 이주시키게 되면, 입출력 집중(I/O intensive) 연산의 경우에는 오히려 디스크, 네트워크 자원과 같이 최근 하드웨어 환경에서는 CPU 보다 더 성능 측면에서 제약적인 자원에 병목 현상을 일으키는 문제가 발생하게 된다.
본 발명의 목적은 복수의 태스크를 분산 병렬 실행하여 복수의 입력 데이터 스트림을 연속 처리 시에, 복수의 태스크를 각 부하 특성에 맞게 효율적으로 배치하고 태스크 배치 구조에 적절한 통신 수단을 사용함으로써, 서비스를 구성하는 태스크의 입력 데이터 스트림의 폭증으로 인한 서비스의 태스크 간 데이터 입출력 부하를 감소시키고 입출력 성능 및 데이터 처리 성능을 향상시킬 수 있는 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법을 제공하는 것이다.
본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치는 데이터 스트림 분산 병렬 처리 서비스를 구성하는 복수의 태스크들을 등록하는 서비스 관리부; 상기 복수의 태스크들의 부하 정보 및 상기 데이터 스트림 분산 병렬 처리 서비스를 제공하는 클러스터를 구성하는 복수의 노드들의 부하 정보를 수집하는 서비스 품질 모니터링부; 및 상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 상기 복수의 태스크들을 상기 복수의 노드들에 분산 배치하는 스케쥴링부를 포함하여 구성된다.
상기 복수의 태스크들의 부하 정보는, 태스크 중앙처리장치(Central Processing Unit; CPU) 부하 및 태스크 간 입출력 부하와 관련한 정보를 포함할 수 있다.
상기 스케쥴링부는, 상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 간 입출력 부하가 높아서 태스크 간 입출력 과부하가 발생한 경우, 상기 태스크 간 입출력 과부하를 유발하는 태스크들을 입출력 과부하 태스크들로 선정하고, 상기 복수의 태스크들의 부하 정보 및 상기 태스크 간 입출력 부하에 근거하여 상기 입출력 과부하 태스크들을 재배치할 수 있다.
상기 스케쥴링부는, 상기 입출력 과부하 태스크들을 단일 노드에 단일 프로세스의 별도 쓰레드(thread)로 배치할 수 있다.
상기 단일 프로세스의 별도 쓰레드로 배치된 상기 입출력 과부하 태스크들은, 선행 태스크와 후행 태스크가 공유 메모리 버퍼를 두고 상기 공유 메모리 버퍼를 통해 직접 통신하는 메모리 통신으로 데이터 통신을 수행할 수 있다.
상기 복수의 태스크들 중 상기 단일 프로세스의 별도 쓰레드로 배치된 상기 입출력 과부하 태스크들 이외의 태스크들은, 선행 태스크와 후행 태스크가 소켓을 통하여 통신하는 네트워크 통신 또는 파일을 통하여 통신하는 파일 입출력 통신으로 데이터 통신을 수행할 수 있다.
상기 스케쥴링부는, 상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 CPU 부하가 높아서 태스크 CPU 과부하가 발생한 경우, 상기 태스크 CPU 과부하를 유발하는 태스크들을 CPU 과부하 태스크들로 선정하고, 상기 복수의 태스크들의 부하 정보 및 상기 태스크 CPU 부하에 근거하여 상기 CPU 과부하 태스크들을 재배치할 수 있다.
상기 스케쥴링부는, 상기 복수의 노드들에 장착된 코어의 속도 및 개수를 기반으로 상기 CPU 과부하 태스크들을 별도의 노드에 별도의 프로세스로 배치할 수 있다.
상기 서비스 품질 모니터링부는, 상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 태스크 간 입출력 과부하 발생 여부 및 태스크 CPU 과부하 발생 여부를 포함하는 서비스 품질을 판단하고, 태스크 간 입출력 과부하 또는 태스크 CPU 과부하가 발생하여 서비스 품질이 불만족인 것으로 판단되는 경우, 상기 복수의 태스크들을 상기 복수의 노드들에 재배치하도록 재배치 요청을 상기 스케쥴링부에 송신할 수 있다.
상기 스케쥴링부는, 상기 서비스 품질 모니터링부로부터 상기 재배치 요청을 수신한 경우, 상기 태스크 간 입출력 과부하 또는 태스크 CPU 과부하의 발생으로 인한 과부하 오버헤드(overhead)와 상기 복수의 태스크들의 재배치로 인한 재배치 오버헤드를 비교하여, 상기 재배치 오버헤드에 대한 상기 과부하 오버헤드의 비율이 소정의 설정값을 초과하는 경우에만 재배치를 수행할 수 있다.
본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법은, 서비스 관리부가 데이터 스트림 분산 병렬 처리 서비스를 구성하는 복수의 태스크들을 등록하는 단계; 서비스 품질 모니터링부가 상기 복수의 태스크들의 부하 정보 및 상기 데이터 스트림 분산 병렬 처리 서비스를 제공하는 클러스터를 구성하는 복수의 노드들의 부하 정보를 수집하는 단계; 및 스케쥴링부가 상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 상기 복수의 태스크들을 상기 복수의 노드들에 분산 배치하는 단계를 포함하여 구성된다.
상기 복수의 태스크들의 부하 정보는, 태스크 중앙처리장치(Central Processing Unit; CPU) 부하 및 태스크 간 입출력 부하와 관련한 정보를 포함할 수 있다.
상기 데이터 스트림 분산 병렬 처리 서비스 관리 방법은, 상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 간 입출력 부하가 높아서 태스크 간 입출력 과부하가 발생한 경우, 상기 스케쥴링부가 상기 태스크 간 입출력 과부하를 유발하는 태스크들을 입출력 과부하 태스크들로 선정하는 단계; 및 상기 스케쥴링부가 상기 복수의 태스크들의 부하 정보 및 상기 태스크 간 입출력 부하에 근거하여 상기 입출력 과부하 태스크들을 재배치하는 단계를 더 포함할 수 있다.
상기 입출력 과부하 태스크들을 재배치하는 단계는, 상기 스케쥴링부가 상기 입출력 과부하 태스크들을 단일 노드에 단일 프로세스의 별도 쓰레드(thread)로 배치하는 단계를 포함할 수 있다.
상기 데이터 스트림 분산 병렬 처리 서비스 관리 방법은, 상기 단일 프로세스의 별도 쓰레드로 배치된 상기 입출력 과부하 태스크들이 선행 태스크와 후행 태스크가 공유 메모리 버퍼를 두고 상기 공유 메모리 버퍼를 통해 직접 통신하는 메모리 통신으로 데이터 통신을 수행하는 단계를 더 포함할 수 있다.
상기 데이터 스트림 분산 병렬 처리 서비스 관리 방법은, 상기 복수의 태스크들 중 상기 단일 프로세스의 별도 쓰레드로 배치된 상기 입출력 과부하 태스크들 이외의 태스크들이 선행 태스크와 후행 태스크가 소켓을 통하여 통신하는 네트워크 통신 또는 파일을 통하여 통신하는 파일 입출력 통신으로 데이터 통신을 수행하는 단계를 더 포함할 수 있다.
상기 데이터 스트림 분산 병렬 처리 서비스 관리 방법은, 상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 CPU 부하가 높아서 태스크 CPU 과부하가 발생한 경우, 상기 스케쥴링부가 상기 태스크 CPU 과부하를 유발하는 태스크들을 CPU 과부하 태스크들로 선정하는 단계; 및 상기 스케쥴링부가 상기 복수의 태스크들의 부하 정보 및 상기 태스크 CPU 부하에 근거하여 상기 CPU 과부하 태스크들을 재배치하는 단계를 더 포함할 수 있다.
상기 CPU 과부하 태스크들을 재배치하는 단계는, 상기 스케쥴링부가, 상기 복수의 노드들에 장착된 코어의 속도 및 개수를 기반으로 상기 CPU 과부하 태스크들을 별도의 노드에 별도의 프로세스로 배치하는 단계를 포함할 수 있다.
상기 데이터 스트림 분산 병렬 처리 서비스 관리 방법은, 상기 서비스 품질 모니터링부가 상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 태스크 간 입출력 과부하 발생 여부 및 태스크 CPU 과부하 발생 여부를 포함하는 서비스 품질을 판단하는 단계; 및 태스크 간 입출력 과부하 또는 태스크 CPU 과부하가 발생하여 서비스 품질이 불만족인 것으로 판단되는 경우, 상기 복수의 태스크들을 상기 복수의 노드들에 재배치하도록 재배치 요청을 상기 스케쥴링부에 송신하는 단계를 더 포함할 수 있다.
상기 데이터 스트림 분산 병렬 처리 서비스 관리 방법은, 상기 스케쥴링부가 상기 서비스 품질 모니터링부로부터 상기 재배치 요청을 수신한 경우, 상기 태스크 간 입출력 과부하 또는 태스크 CPU 과부하의 발생으로 인한 과부하 오버헤드(overhead)와 상기 복수의 태스크들의 재배치로 인한 재배치 오버헤드를 비교하는 단계; 및 상기 스케쥴링부가 상기 재배치 오버헤드에 대한 상기 과부하 오버헤드의 비율이 소정의 설정값을 초과하는 경우에만 재배치를 수행하는 단계를 더 포함할 수 있다.
본 발명의 일 측면에 따르면, 복수의 태스크를 분산 병렬 실행하여 복수의 입력 데이터 스트림을 연속 처리 시에, 복수의 태스크를 각 부하 특성에 맞게 효율적으로 배치하고 태스크 배치 구조에 적절한 통신 수단을 사용함으로써, 서비스를 구성하는 태스크의 입력 데이터 스트림의 폭증으로 인한 서비스의 태스크 간 데이터 입출력 부하를 감소시키고 입출력 성능 및 데이터 처리 성능을 향상시킬 수 있는 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법을 제공할 수 있다.
도 1은 종래의 분산 병렬 처리 서비스의 일 예를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에서 데이터 스트림 분산 병렬 처리 서비스를 구성하는 태스크의 구조의 일 예를 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에서 데이터 스트림 분산 병렬 처리 서비스의 구조의 일 예를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치를 포함하는 데이터 스트림 분산 병렬 처리 시스템을 도시한 도면이다.
도 5a 및 도 5b는 네트워크 통신과 메모리 통신의 프로세스 구조를 설명하기 위한 도면이다.
도 6a 및 도 6b는 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에 의한 재배치 전 및 재배치 후의 태스크 간 입출력 부하 상태를 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법을 설명하기 위한 순서도이다.
도 8은 본 발명의 다른 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법을 설명하기 위한 순서도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에서 데이터 스트림 분산 병렬 처리 서비스를 구성하는 태스크의 구조의 일 예를 도시한 도면이다.
도 2를 참조하면, 데이터 스트림 분산 병렬 처리 서비스를 구성하는 태스크(200)는 기본적으로 N개의 입력 데이터 스트림을 입력 받아서 처리하는 입력 모듈(210, 220)을 포함한다. 태스크의 각 입력 데이터 스트림에 대한 입력 모듈(210, 220)은 리더(reader)(211), 포맷터(formatter)(212), 윈도우바인더(window binder)(213)로 구성될 수 있다.
리더(211)는 해당 태스크의 입력 데이터 스트림 소스에 대한 정보를 나타내며, 입력 데이터 스트림 소스와 해당 태스크가 어떤 통신 수단을 사용해서 데이터를 주고 받는지에 대한 정보가 표현되고, 실제로 해당 통신 수단을 사용해서 데이터를 입력 받는 역할을 수행한다. 예를 들어, 전송 제어 프로토콜(Transmission Control Protocol; TCP)로 데이터를 주고 받는 경우 네트워크 통신 정보, 그리고, 메모리 통신을 하는 경우 메모리 주소, 그리고 파일 입출력 통신의 경우에는 관련 디렉토리 및 파일 이름 정보 등의 다양한 스트림 데이터 소스 정보가 저장되며, 리더(211)는 관련 통신 수단을 이용해서 데이터를 입력 받는 창구 역할을 하게 된다. 태스크와 입력 데이터 스트림 소스의 통신 수단에 대한 결정은 해당 태스크의 입력 데이터 스트림 소스가 전체 서비스의 입력 데이터 스트림 소스에 해당하는 경우(즉, 선행하는 다른 태스크가 없는 첫번째 단계의 태스크인 경우)에는 사용자의 서비스 정의 시에 사용자가 결정할 수 있으며, 선행 태스크로부터 처리 결과를 입력 받는 태스크인 경우에는 데이터 스트림 분산 병렬 처리 시스템에 서비스 등록 후 태스크 배치 시에 또는 노드 부하, 태스크 부하 및 태스크 간 입출력 부하에 따른 태스크 재배치 시에 동적으로 부하 특성을 고려하여 결정될 수 있다.
포맷터(212)는 입력 데이터 스트림의 형식에 관한 정보를 나타내며, 예를 들어, 구분자(delimiter) 혹은 길이 지시자(length indicator) 기반 레코드, 고정 길이 레코드, 사용자 정의 형식 등을 표현할 수 있다.
윈도우바인더(213)는 태스크가 한번 실행 시에 해당 입력 데이터 스트림 소스로부터 들어오는 데이터 스트림 중 한번에 처리할 양을 규정하기 위한 것으로, 데이터 개수 혹은 시간(초, 분, 시간 등)을 바탕으로 정의될 수 있다.
태스크는 N개의 입력 데이터 스트림 소스로부터 들어오는 데이터 스트림을 바탕으로 연산 모듈(230)을 통해 연산을 수행하여 처리 결과를 산출한다. 이때 연산 모듈(230)의 데이터 스트림 처리 연산에 대한 정의는 사용자가 직접 정의하거나, 데이터 스트림 분산 병렬 처리 시스템에 이미 등록된 연산을 지정함으로써 가능하다. 한편, 태스크는 데이터 스트림 처리 연산 결과로써 M개의 출력 데이터 스트림을 발생시킬 수 있다.
태스크의 각 출력 모듈(240, 250)은 네트워크, 메모리, 파일 등의 데이터 전송 수단을 포함하는 출력 데이터 스트림 소스 정보를 저장하는 라이터(writer)(241)와 데이터 스트림 형식을 나타내는 포맷터(formatter)(242)를 가질 수 있다. 태스크와 출력 데이터 스트림 소스의 통신 수단은 태스크의 출력 데이터 스트림 소스가 전체 서비스의 출력 데이터 스트림 소스에 해당하는 경우, 사용자가 서비스 정의 시에 결정할 수 있으며, 후행 태스크가 출력 소스가 되는 경우에는 태스크의 분산 배치 시에 또는 노드 부하, 태스크 부하, 그리고 태스크 간 입출력 부하에 따른 태스크 재배치 시에 동적으로 부하 특성을 고려하여 결정될 수 있다.
도 3은 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에서 데이터 스트림 분산 병렬 처리 서비스의 구조의 일 예를 도시한 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에서 데이터 스트림 분산 병렬 처리 서비스(300)는 복수 개의 태스크(301, 302, 303)로 구성될 수 있으며, 태스크 간에는 데이터 스트림의 흐름을 가진다. 도 3에서 데이터 스트림 분산 병렬 처리 서비스(300)의 태스크는 3개로 도시되었으나, 이는 일 실시예에 따른 것이며, 다른 실시예에서 태스크의 개수는 상이할 수 있다.
도 4는 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치를 포함하는 데이터 스트림 분산 병렬 처리 시스템을 도시한 도면이다.
도 4에 도시된 데이터 스트림 분산 병렬 처리 시스템은 도 3에 도시된 데이터 스트림 분산 병렬 처리 서비스를 대상으로 하며, 복수의 노드(node)(410, 420, 430, 440)를 포함하는 클러스터(cluster)로 구성될 수 있다. 도 4에서 데이터 스트림 분산 병렬 처리 시스템의 노드는 4개로 도시되었으나, 이는 일 실시예에 따른 것이며, 다른 실시예에서 태스크의 개수는 상이할 수 있다.
본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치(411) 및 태스크 실행 장치(421, 431, 441)는 도 4에 도시된 바와 같이 노드(410, 420, 430, 440)에 포함될 수 있다. 또는 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치(411) 및 태스크 실행 장치(421, 431, 441)는 노드 그 자체일 수 있다. 또한, 태스크 실행 장치(421, 431, 441)는 각 노드(420, 430, 440)에 하나씩 위치할 수 있다. 한편, 데이터 스트림 분산 병렬 처리 서비스 관리 장치(411)는 별도의 노드(410)에 위치하거나 혹은 태스크 실행 장치(421, 431, 441)가 위치하는 노드(320, 330, 340)에 함께 위치할 수 있다.
도 4를 참조하면, 데이터 스트림 분산 병렬 처리 서비스 관리 장치(411)는 서비스 관리부(412), 서비스 품질(Quality of Service; QoS) 모니터링부(413) 및 스케쥴링부(414)를 포함하여 구성될 수 있다. 도 4에 도시된 데이터 스트림 분산 병렬 처리 서비스 관리 장치(411)의 구성은 일 실시예에 따른 것이고 도 4에 도시된 블록들은 모든 블록이 필수 구성요소는 아니며, 다른 실시예에서 일부 블록이 추가, 변경 또는 삭제될 수 있다.
서비스 관리부(412)는 데이터 스트림 분산 병렬 처리 서비스를 구성하는 복수의 태스크들을 등록한다. 이외에도, 서비스 관리부(412)는 사용자의 요청을 받아 서비스의 등록, 삭제, 검색 등의 처리를 수행할 수 있다. 이때, 서비스의 등록은 도 3에서 데이터 스트림 분산 병렬 처리 서비스(300)를 구성하는 복수의 태스크들(301, 302, 303)을 등록하는 것을 의미하며, 일 실시예에서, 서비스의 등록은 데이터 스트림 분산 병렬 처리 서비스(300)를 구성하는 태스크들(301, 302, 303)을 복수의 태스크 실행 장치(421, 431, 441)에 분산 할당하여 실행하는 것을 포함할 수 있다. 또한, 서비스의 삭제는 다중 노드에서 실행 중인 관련 태스크들(301, 302, 303)의 실행을 종료하고 관련 정보를 모두 삭제하는 것을 의미한다. 한편, 서비스의 등록 시에 사용자는 서비스 별 혹은 태스크 별 서비스 품질 정보를 함께 등록할 수 있으며, 서비스 품질은 입력 데이터의 처리율 등으로 정의될 수 있다.
서비스 품질 모니터링부(413)는 복수의 태스크들(301, 302, 303)의 부하 정보 및 데이터 스트림 분산 병렬 처리 서비스(300)를 제공하는 클러스터를 구성하는 복수의 노드들(410, 420, 430, 440)의 부하 정보를 수집한다. 여기서, 복수의 태스크들의 부하 정보는, 태스크 중앙처리장치(Central Processing Unit; CPU) 부하 및 태스크 간 입출력 부하와 관련한 정보를 포함할 수 있다. 즉, 서비스 품질 모니터링부(413)는 태스크 실행 장치(421, 431, 441)의 지역 모니터링부(423, 433, 434)를 통해 주기적으로 태스크 별 입력 부하량, 출력 부하량, 데이터 처리 성능 정보 및 노드 별 자원 사용 상태 정보를 수집하여 서비스 품질 정보 및 태스크 재배치 정보를 구축하고 분석할 수 있다.
일 실시예에서, 서비스 품질 모니터링부(413)는 사용자로부터 입력 받은 서비스 처리 성능 임계치를 만족시키는지 여부를 검사하거나 시간 흐름에 따른 서비스 처리 성능 변동 추이를 분석함으로써, 서비스 혹은 서비스 내 태스크의 재배치 여부를 결정하고 이를 스케줄링부(414)에 요청할 수 있다. 또는, 서비스 품질 모니터링부(413)는 태스크 실행 장치(421, 431, 441) 내의 지역 모니터링부(423, 433, 434)로부터 특정 태스크의 재배치 요청이 있을 경우, 이를 스케줄링부(414)에 전달할 수도 있다.
스케쥴링부(414)는 복수의 태스크들(301, 302, 303)의 부하 정보 및 복수의 노드들(420, 430, 440)의 부하 정보에 근거하여 복수의 태스크들(301, 302, 303)을 상기 복수의 노드들(420, 430, 440)에 분산 배치한다. 스케쥴링부(414)는 서비스 관리부(412)로부터 서비스의 등록에 따른 태스크 배치 요청이나 서비스 품질 모니터링부(413)으로부터 서비스 혹은 태스크들의 재배치 요청이 들어오면 태스크의 배치를 수행한다. 스케쥴링부(414)는 태스크의 배치 요청 시에, 서비스 품질 모니터링부(413)에서 관리하는 노드 내 자원 정보 즉, 노드의 부하 정보를 바탕으로 여유 자원을 가지는 노드를 선정하고 해당 태스크 실행 장치에 하나 이상의 태스크를 할당할 수 있다. 한편, 스케쥴링부(414)는 재배치의 요청으로 태스크의 할당 자원 비율 조정 및 태스크의 이동, 태스크의 복제, 부하 차단(load shedding) 등의 정책을 결정할 수 있다. 특히, 태스크의 이동은 태스크 및 다른 태스크 간의 부하 특성을 고려하여 서로 간에 통신 부하가 높은 태스크들은 단일 노드(in a node)에 단일 프로세스(in a single process) 내의 별도 쓰레드(as separate threads)로 배치하여 메모리 접근(memory access)을 통한 데이터 전달을 하게 하거나 다른 태스크와 독립적으로 중앙처리장치(Central Processing Unit; CPU) 집중 연산을 수행하는 경우 다른 태스크와 분리하여 별도의 노드(in separate nodes)에 별도의 프로세스(as a task of separate processes)로서 배치하여 병렬 실행토록 한다.
다시 도 4를 참조하면, 태스크 실행 장치(421, 431, 441)는 태스크 관리부(422, 432, 442) 및 지역 모니터링부(423, 433, 443)를 포함하여 구성될 수 있다. 도 4에 도시된 태스크 실행 장치(421, 431, 441)의 구성은 일 실시예에 따른 것이고 도 4에 도시된 블록들은 모든 블록이 필수 구성요소는 아니며, 다른 실시예에서 일부 블록이 추가, 변경 또는 삭제될 수 있다.
태스크 관리부(422, 432, 442)는 데이터 스트림 분산 병렬 처리 서비스 관리 장치(411)의 스케쥴링부(414)로부터 태스크를 할당 받아 이에 대한 입력 데이터 스트림 소스 및 출력 데이터 스트림 소스를 바인딩하고, 태스크를 태스크 실행 장치(421, 431, 441)와는 별도의 프로세스로서 실행시키고 연속적으로 수행되도록 할 수 있다. 또한, 태스크 관리부(422, 432, 442)는 스케쥴링부(414)로부터 받은 태스크 실행의 할당, 중지, 태스크 실행의 자원 증대 등의 여러 제어 명령들을 해당 태스크를 대상으로 수행한다.
지역 모니터링부(423, 433, 443)는 실행 중인 태스크들의 자원 할당 및 사용 상태 정보, 데이터 스트림 처리 성능 정보를 주기적으로 수집하여, 데이터 스트림 분산 병렬 처리 서비스 관리 장치(411)의 서비스 품질 모니터링부(413)에 전송한다.
이와 같이, 도 3의 데이터 스트림 분산 병렬 처리 서비스(300)는 데이터 스트림 분산 병렬 처리 서비스 관리 장치(411)와 태스크 실행 장치(421, 431, 441)에 의해 태스크(301, 302, 303) 단위로 다중 노드들(420, 430, 440)에 할당되고, 입력 데이터 스트림 소스(350) 및 출력 데이터 스트림 소스(360)와 연동하여 연속적으로 데이터 스트림을 병렬 처리한다.
태스크가 다중 노드들에 할당되어 실행이 될 때, 태스크는 기본적으로 별도의 프로세스로 실행이 되며, 태스크 간에 통신은 아래의 표 1에서 보는 바와 같이 각각 장단점을 갖는 파일 입출력 통신, 네트워크 통신 및 메모리 통신을 노드 부하, 태스크 부하, 태스크 간 입출력 부하 등의 부하 특성을 고려하여 스케줄링부(414)가 최적의 태스크 배치 및 통신 수단을 선택하게 된다. 표 1은 태스크 간 통신 방법을 비교하는 표이다.
통신 방법 장점 및 단점 성능
파일 입출력 통신 장점 1: 기본적으로 단일 노드 상에 단일/다중 프로세스 간에 데이터 통신 가능
장점 2: 영속 저장소에 저장되어 오류 발생 시 복구 가능
단점: 저장/네트워크 계층 간에 데이터 복사가 발생
아주 느리다
네트워크 통신 장점: 단일/다중 프로세스, 다중 노드 간에 데이터 통신 가능
단점 1: 저장/네트워크 계층 간에 데이터 복사 발생
단점 2: 기본적으로 오류시 복구가 어려우나, 체크포인팅 방법 사용 가능
빠르다
메모리 통신 장점: 저장 계층 간에 데이터 복사가 발생하지 않는다.
단점 1: 기본적으로 단일 프로세스 내에서만 데이터 통신 가능
단점 2: 기본적으로 오류 시 복구가 어려우나, 체크포인팅 방법 사용 가능
아주 빠르다

표 1에 도시된 바에 따르면, 다른 노드 상에서 또는 같은 노드 상에서 실행되는 태스크 프로세스 간 통신은 보다 빠른 성능을 위해서는 소켓을 통한 네트워크 통신, 그리고 데이터가 아주 많거나 영속성을 보장하기 위해서는 지역 또는 분산 파일을 통한 파일 입출력 통신을 하게 된다.
도 5a 및 도 5b는 네트워크 통신과 메모리 통신의 프로세스 구조를 설명하기 위한 도면이다.
상기 기술한 소켓을 통한 네트워크 통신보다 더 빠른 성능을 위해서는 메모리 접근을 통한 메모리 통신을 사용해야 한다. 도 5a는 소켓을 통한 네트워크 통신의 프로세스 구조를 나타낸 도면이다. 네트워크 통신에서는 서로 다른 태스크(511, 521)를 별도의 프로세스(in separate processes)(510, 520)로 실행하고, 선행 태스크(511)는 로컬 메모리 버퍼(513)에 결과를 출력한 후 선행 태스크(511)의 출력 라이터(512)와 후행 태스크(521)의 입력 리더(522) 간에 네트워크 통신(530) 수단을 통해서 결과를 후행 태스크(521)의 로컬 메모리 버퍼(523)에 입력 받는 통신 수단을 사용한다. 이때, 선행 태스크(511)의 출력 라이터(512)는 소켓 라이터, 후행 태스크(521)의 입력 리더(522)는 소켓 리더일 수 있다.
도 5b는 메모리 접근을 통한 메모리 통신의 프로세스 구조를 나타낸 도면이다. 메모리 통신에서는 데이터를 주고 받는 두 태스크(550, 560)를 단일 프로세스(in a single process)(540)의 별도 쓰레드로 실행을 시키고, 두 태스크(550, 560) 쓰레드 간의 데이터 전달은 선행 태스크(550)의 출력 라이터(551)가 공유 메모리 버퍼(shared memory buffer)(570)에 데이터를 쓰고, 후행 태스크(560)의 입력 Reader(561)가 공유 메모리 버퍼(570)으로부터 데이터를 읽는 방식을 사용해야 한다. 이때, 선행 태스크(550)의 출력 라이터(551)는 메모리 라이터, 후행 태스크(560)의 입력 리더(561)는 메모리 리더일 수 있다. 이와 같은 방식을 통해서, 네트워크 통신에서 발생하는 각 태스크의 별도 로컬 메모리 버퍼(513, 523)의 유지, 커널 내 데이터 복사, 네트워크로의 데이터 복사(530)를 하지 않고 직접 하나의 공유 메모리 버퍼(570)에 쓰고, 직접 하나의 공유 메모리 버퍼(570)로부터 데이터를 읽어서 불필요한 오버헤드를 줄이는 방식으로 통신 성능을 향상시킬 수 있게 된다.
이를 위해서는 그림 5에서 보는 바와 같이 기종 네트워크 통신에서처럼 서로 다른 태스크(511, 521)를 별도의 프로세스(in separate processes)(510, 520)로 실행하고, 선행 태스크(511)는 로컬 메모리 버퍼(513)에 결과를 출력한 후 선행 태스크의 출력 소켓 Writer(512)와 후행 태스크의 입력 소켓 Reader(522) 간에 네트워크 통신(530) 수단을 통해서 결과를 후행 태스크의 로컬 메모리 버퍼(523)에 입력 받는 통신 수단을 사용하는 것이 아니라, 데이터를 주고 받는 두 태스크(550, 560)를 단일 프로세스(in a single process)(540)의 별도 쓰레드로 실행을 시키고, 두 태스크(550, 560) 쓰레드 간의 데이터 전달은 선행 태스크(550)의 메모리 출력 Writer(551)가 공유 메모리 버퍼(shared memory buffer)(570)에 데이터를 쓰고, 후행 태스크(560)의 메모리 입력 Reader(561)가 공유 메모리 버퍼(570)으로부터 데이터를 읽는 방식을 사용해야 한다. 이와 같은 방식을 통해서, 네트워크 통신에서 발생하는 각 태스크의 별도 메모리 버퍼(513, 523) 유지, 커널 내 데이터 복사, 네트워크로의 데이터 복사(530)를 하지 않고 직접 하나의 공유 메모리 버퍼(570)에 쓰고, 직접 하나의 공유 메모리 버퍼(570)로부터 데이터를 읽어서 불필요한 오버헤드를 줄이는 방식으로 통신 성능을 향상시킬 수 있게 된다.
연속 처리 태스크를 태스크 자체의 계산량, 그리고 선행 후행 태스크와의 부하 특성, 즉 서로 데이터를 주고 받는 데이터 부하량의 관계 측면에서 분류해 보면 표 2와 같이 분류할 수 있다.
태스크 유형 상세 분류 설명
IOIT (I/O Intensive Task, 입출력 집중 태스크) Input Intensive 입력 데이터 부하량이 많은 태스크
Output Intensive 출력 데이터 부하량이 많은 태스크
Input/Output
Intensive
입출력 데이터 부하량이 모두 많은 태스크
CIT (Compute Intensive Task, 연산 집중 태스크) 입출력 데이터 부하량이 별로 없이 계산량이 많은 태스크 또는 입출력 데이터 부하량 보다는 계산량에 의해서 성능이 제약되는 태스크

입출력에 비해 계산량이 많은 연산 집중 태스크(CIT)는 기본적으로 성능이 CPU의 속도, 그리고 CPU 코어의 개수에 의해 제약되므로, 배치 또는 재배치를 위한 스케줄링 시에는 각 노드 별 CPU 코어의 개수를 고려하여, 각 노드의 전체 CPU 성능을 넘지 않는 선에서 배치가 된다.
계산량에 비해 입출력량이 많은 입출력 집중 태스크(IOIT)는 태스크가 파일 시스템, 메모리, 네트워크 등의 통신 수단을 통해 데이터를 주고 받을 때의 통신 성능 즉, 파일 입출력 성능, 메모리 입출력 성능, 네트워크 대역폭/지연에 의해 성능이 제약 받게 되므로, 각 통신 방법의 기본 성능과 태스크 간의 입출력 관계 및 부하량을 고려하여 가능하면 통신량이 서로 많은 태스크는 보다 빠른 통신 수단을 사용하도록 배치해야 한다.
그런데, 파일 입출력 통신, 메모리 통신, 네트워크 통신 간에는 표 1에서 본 바와 같이, 상대적으로 파일 입출력 통신이 제일 느리고, 네트워크 통신이 그 다음으로 느리고, 그리고 메모리 통신이 제일 빠른 관계가 있으므로, 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치의 스케쥴링부는 가능하면, 입출력량이 많은 태스크들은 서로 메모리 통신을 하도록 배치하며, 메모리 입출력를 할 수 있도록 데이터를 주고 받는 선행/후행 태스크를 같은 프로세스의 별도의 쓰레드로 수행을 할 수 있다.
이와 같이, 스케줄링부는 앞에서 설명한 각 태스크 부하 특성에 따른 스케줄링 결정을 포함하여 클러스터를 구성하는 전체 노드 부하 상황 및 수행 중인 서비스/태스크의 수행 상황을 고려하여 최종 스케줄링 결정을 내리게 된다. 다시 도 4를 참조하여 이를 구체적으로 다시 설명하면 다음과 같다.
일 실시예에서, 스케쥴링부(414)는 복수의 노드들(420, 430, 440)의 부하 정보에 포함된 복수의 노드들(420, 430, 440)의 부하 상태에 비해 태스크 간 입출력 부하가 높아서 태스크 간 입출력 과부하가 발생한 경우, 태스크 간 입출력 과부하를 유발하는 태스크들을 입출력 과부하 태스크들로 선정하고, 복수의 태스크들의 부하 정보 및 태스크 간 입출력 부하에 근거하여 입출력 과부하 태스크들을 재배치할 수 있다.
이때, 스케쥴링부(414)는 입출력 과부하 태스크들을 단일 노드에 단일 프로세스의 별도 쓰레드(thread)로 배치한다. 이와 같이, 단일 프로세스의 별도 쓰레드로 새로 배치된 태스크들은 선행 태스크와 후행 태스크가 공유 메모리 버퍼를 두고 공유 메모리 버퍼를 통해 직접 통신하는 메모리 통신으로 데이터 통신을 수행하게 된다. 또한, 복수의 태스크들 중 단일 프로세스의 별도 쓰레드로 배치된 입출력 과부하 태스크들 이외의 태스크들은 선행 태스크와 후행 태스크가 소켓을 통하여 통신하는 네트워크 통신 또는 파일을 통하여 통신하는 파일 입출력 통신으로 데이터 통신을 수행하게 된다.
다른 실시예에서, 스케쥴링부(414)는 복수의 노드들(420, 430, 440)의 부하 정보에 포함된 복수의 노드들(420, 430, 440)의 부하 상태에 비해 태스크 CPU 부하가 높아서 태스크 CPU 과부하가 발생한 경우, 태스크 CPU 과부하를 유발하는 태스크들을 CPU 과부하 태스크들로 선정하고, 복수의 태스크들의 부하 정보 및 태스크 CPU 부하에 근거하여 CPU 과부하 태스크들을 재배치할 수 있다.
이 때, 스케쥴링부(414)는 복수의 노드들(420, 430, 440)에 장착된 코어의 속도 및 개수를 기반으로 CPU 과부하 태스크들을 별도의 노드에 별도의 프로세스로 배치한다.
도 6a 및 도 6b는 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법에 의한 재배치 전 및 재배치 후의 태스크 간 입출력 부하 상태를 도시한 도면이다.
도 6a는 재배치 전의 태스크 간 입출력 부하 상태로서, 특정 서비스 내 태스크들(601, 602, 603, 604, 605, 606, 607)이 여러 노드에 배치 되어 여러 프로세스(610,620,630)의 쓰레드로서 연속적으로 실행되는 도중에 측정한 태스크 간 입출력 부하 상태의 일 실시예를 나타낸다. 여기서 굵은 실선의 화살표는 입출력 부하가 높은 것을 나타내고, 가는 실선의 화살표는 입출력 부하가 낮은 것을 나타낸다. 이때, 스케줄링부의 초기 스케줄링 결정 시에 파악된 각 태스크들 간의 관계를 포함한 스케줄링 정보에 의해 프로세스(610)에는 태스크 T_1(601), T_2(602), T_3(603)이 할당되어 실행되고, 프로세스(620)에는 태스크 T_4(604), T_5(605)가 할당되어 실행되고, 프로세스(630)에는 태스크 T_6(606), T_7(607)이 할당되어 실행된다. 이후 상기 태스크들이 실행되어 입력 데이터 스트림을 처리하는 중간에 각 태스크 간의 입출력 부하를 측정하면 도 6a에서 보는 바와 같이 T_2(602)와 T_3(603) 간 통신, T_3(603)과 T_4(604) 간 통신, T_3(603)과 T_6(606) 간 통신 및 T_6(606)과 T_7(607) 간 통신에서 입출력량이 많이 발생하고 있음을 알 수 있으며, 그 중 T_3(603)과 T_4(604) 간 통신 및 T_3(603)과 T_6(606) 간 통신의 경우 서로 다른 프로세스 간에 통신량이 많으면서 성능이 좋지 않은 소켓 통신 수단을 사용하고 있음을 알 수 있다.
도 6b는 재배치 후의 태스크 간 입출력 부하 상태로서, 도 6a에서 파악한 입출력 부하 정보를 바탕으로 스케쥴링부가 서로 간에 입출력량이 많은 태스크를 하나의 프로세스로 재배치한 후의 태스크 배치 상태 및 부하 상태의 일 실시예를 나타낸다. 도 6b에서 보는 바와 같이 서로 간에 입출력량이 많은 태스크들(602, 603, 604, 606, 607)이 하나의 프로세스(650)로 몰아서 배치가 되고, 각 태스크들(602, 603, 604, 606, 607) 간에는 메모리 입출력을 통한 통신을 하도록 해서 통신 성능이 향상되었다. 그리고, 각 노드의 부하 상황을 포함한 전체적인 스케줄링 결정에 따라, 나머지 태스크 T_1(601)과 T_5(605)는 별도의 노드의 별도의 프로세스(640)과 프로세스(660)에 각각 배치되어 실행되고 있다.
본 발명의 일 실시예에 따르면, 도 6b에서와 같이 태스크 간의 입출력 부하가 증가할 때 관련 태스크들을 하나의 프로세스에 배치하고 서로 간에 메모리 입출력를 통한 메모리 통신을 하게 되면 서비스의 정확도는 저하시키지 않으면서 데이터 스트림 병렬 처리 성능을 보장 및 향상시킬 수 있다. 이때 서비스 내 태스크의 배치 구조 변경 시에 관련 태스크들의 일시적인 실행 중지 혹은 관련 태스크의 입출력 데이터 스트림의 버퍼링이 필요할 수 있다. 따라서 이러한 태스크의 실행 구조 변경은 본 발명의 일 실시예에 따른 시스템의 관리자가 배치 구조 변경이 발생하는 부하량에 대한 소정의 설정값를 설정하여 태스크 재배치 과정에서 발생하는 오버헤드와 태스크 재배치 후에 얻게 되는 성능 향상 간에 적당한 타협점을 찾을 필요가 있다.
이를 위해, 도 4의 서비스 품질 모니터링부(413)는 복수의 태스크들의 부하 정보 및 복수의 노드들의 부하 정보에 근거하여 태스크 간 입출력 과부하 발생 여부 및 태스크 CPU 과부하 발생 여부를 포함하는 서비스 품질을 판단하고, 태스크 간 입출력 과부하 또는 태스크 CPU 과부하가 발생하여 서비스 품질이 불만족인 것으로 판단되는 경우, 복수의 태스크들을 복수의 노드들에 재배치하도록 재배치 요청을 스케쥴링부(414)에 송신할 수 있다. 그리고 스케쥴링부(414)는 서비스 품질 모니터링부(413)로부터 재배치 요청을 수신한 경우, 태스크 간 입출력 과부하 또는 태스크 CPU 과부하의 발생으로 인한 과부하 오버헤드(overhead)와 복수의 태스크들의 재배치로 인한 재배치 오버헤드를 비교하여, 재배치 오버헤드에 대한 과부하 오버헤드의 비율이 소정의 설정값을 초과하는 경우에만 재배치를 수행할 수 있다. 이와 같은 구성에 대해서는 도 8에서 좀더 상세히 설명하도록 한다.
도 7은 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법을 설명하기 위한 순서도이다.
도 7을 참조하면, 먼저 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법이 시작되면, 서비스 관리부가 데이터 스트림 분산 병렬 처리 서비스를 구성하는 복수의 태스크들을 등록한다(S701).
그리고 서비스 품질 모니터링부가 상기 복수의 태스크들의 부하 정보 및 상기 데이터 스트림 분산 병렬 처리 서비스를 제공하는 클러스터를 구성하는 복수의 노드들의 부하 정보를 수집한다(S702). 이 때, 상기 복수의 태스크들의 부하 정보는 태스크 CPU 부하 및 태스크 간 입출력 부하와 관련한 정보를 포함할 수 있다.
서비스 품질 모니터링부가 복수의 태스크들의 부하 정보 및 복수의 노드들의 부하 정보를 수집하고 나면(S702), 스케쥴링부가 상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 상기 복수의 태스크들을 상기 복수의 노드들에 분산 배치한다(S703).
일 실시예에서, 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법에서, 상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 간 입출력 부하가 높아서 태스크 간 입출력 과부하가 발생한 경우, 상기 스케쥴링부는 상기 태스크 간 입출력 과부하를 유발하는 태스크들을 입출력 과부하 태스크들로 선정하고, 상기 복수의 태스크들의 부하 정보 및 상기 태스크 간 입출력 부하에 근거하여 상기 입출력 과부하 태스크들을 재배치할 수 있다.
이 때, 상기 스케쥴링부는 상기 입출력 과부하 태스크들을 단일 노드에 단일 프로세스의 별도 쓰레드로 배치한다. 이와 같이, 단일 프로세스의 별도 쓰레드로 새로 배치된 태스크들은 선행 태스크와 후행 태스크가 공유 메모리 버퍼를 두고 공유 메모리 버퍼를 통해 직접 통신하는 메모리 통신으로 데이터 통신을 수행하게 된다. 또한, 복수의 태스크들 중 단일 프로세스의 별도 쓰레드로 배치된 입출력 과부하 태스크들 이외의 태스크들은 선행 태스크와 후행 태스크가 소켓을 통하여 통신하는 네트워크 통신 또는 파일을 통하여 통신하는 파일 입출력 통신으로 데이터 통신을 수행하게 된다.
다른 실시예에서, 본 발명의 일 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법에서, 상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 CPU 부하가 높아서 태스크 CPU 과부하가 발생한 경우, 상기 스케쥴링부는 상기 태스크 CPU 과부하를 유발하는 태스크들을 CPU 과부하 태스크들로 선정하고, 상기 복수의 태스크들의 부하 정보 및 상기 태스크 CPU 부하에 근거하여 상기 CPU 과부하 태스크들을 재배치할 수 있다.
이 때, 상기 스케쥴링부는 상기 복수의 노드들에 장착된 코어의 속도 및 개수를 기반으로 상기 CPU 과부하 태스크들을 별도의 노드에 별도의 프로세스로 배치한다.
도 8은 본 발명의 다른 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법을 설명하기 위한 순서도이다.
상기 기술된 바와 같이, 본 발명의 다른 실시예에 따른 데이터 스트림 분산 병렬 처리 서비스 관리 방법에서는, 태스크 재배치 과정에서 발생하는 오버헤드와 태스크 재배치 후에 얻게 되는 성능 향상 간에 적당한 타협점을 찾기 위하여 다음과 같은 구성을 가질 수 있다.
즉, 서비스 품질 모니터링부가 복수의 태스크들의 부하 정보 및 복수의 노드들의 부하 정보에 근거하여 태스크 간 입출력 과부하 발생 여부 및 태스크 CPU 과부하 발생 여부를 포함하는 서비스 품질을 판단하고, 태스크 간 입출력 과부하 또는 태스크 CPU 과부하가 발생하여 서비스 품질이 불만족인 것으로 판단되는 경우, 복수의 태스크들을 복수의 노드들에 재배치하도록 재배치 요청을 스케쥴링부에 송신하는 구성을 가질 수 있다. 또한, 스케쥴링부가 서비스 품질 모니터링부로부터 재배치 요청을 수신한 경우, 태스크 간 입출력 과부하 또는 태스크 CPU 과부하의 발생으로 인한 과부하 오버헤드(overhead)와 복수의 태스크들의 재배치로 인한 재배치 오버헤드를 비교하여, 재배치 오버헤드에 대한 과부하 오버헤드의 비율이 소정의 설정값을 초과하는 경우에만 재배치를 수행하는 구성을 가질 수 있다.
도 8은 상기와 같은 구성을 설명하기 위한 순서도이다. 먼저 스케쥴링부가 복수의 태스크들의 부하 정보 및 복수의 노드들의 부하 정보를 포함하는 부하 정보를 수집한다(S801). 이때 만일 서비스 품질의 불만족 여부를 판단해서(S802), 그런 서비스가 존재하지 않으면, 다시 처음 단계(S801)로 돌아 간다. 만일 서비스 품질 만족하지 못 하는 서비스가 존재하면, 서비스 품질 불만족 원인을 판단한다(S803). 서비스 품질 불만족 원인이 CPU 과부하라면, CPU 과부하를 유발하는 CPU 과부하 태스크를 선정하고(S804), 서비스 품질 불만족 원인이 태스크 간 입출력 과부하라면, 서로 간에 입출력 과부하를 초래하는 태스크를 태스크 재배치 후보로 선정한다(S805). 이때 전술한 바와 같이 태스크 재배치는 관련 태스크의 일시 정지 및 입출력 데이터 스트림의 버퍼링 등의 재배치 오버헤드가 필요하게 되며, 스케줄링부는 입출력 과부하 또는 CPU 과부하에 따른 과부하 오버헤드와 태스크 재배치에 따른 재배치 오버헤드의 상대적인 크기를 비교하여(S806), 재배치 오버헤드에 대한 과부하 오버헤드의 비율이 소정의 설정값을 초과하게 되면, 즉 재배치 오버헤드에도 불구하고 재배치를 하는 것이 더 효율적인 상황이 되면 앞서 선정된 입출력 과부하 또는 CPU 과부하 태스크 정보를 태스크 재배치 정보 생성 단계(S809)로 넘기게 된다. 만일 재배치 오버헤드에 대한 과부하 오버헤드의 비율이 소정의 설정값 이하라면, 즉 재배치 오버헤드가 커서 재배치를 하는 것이 오히려 손해가 된다면 재배치할 태스크 중 일부 즉, 상대적으로 과부하가 적은 태스크를 재배치 대상에서 제외(S808)해서 재배치 오버헤드에 대한 과부하 오버헤드의 비율이 소정의 설정값을 초과하록 수정한 후 과부하가 심한 태스크 만을 태스크 재배치 정보 생성(S809)에 사용한다. 최종적으로 스케줄링부는 이렇게 수집된 태스크 재배치 정보를 이용해서 각 노드의 각 프로세스에 태스크 재배치를 실행한다(S810).
이상 본 발명의 특정 실시예를 도시하고 설명하였으나, 본 발명의 기술사상은 첨부된 도면과 상기한 설명내용에 한정하지 않으며 본 발명의 사상을 벗어나지 않는 범위 내에서 다양한 형태의 변형이 가능함은 이 분야의 통상의 지식을 가진 자에게는 자명한 사실이며, 이러한 형태의 변형은, 본 발명의 정신에 위배되지 않는 범위 내에서 본 발명의 특허청구범위에 속한다고 볼 것이다.

Claims (20)

  1. 데이터 스트림 분산 병렬 처리 서비스를 구성하는 복수의 태스크들을 등록하는 서비스 관리부;
    상기 복수의 태스크들의 부하 정보 및 상기 데이터 스트림 분산 병렬 처리 서비스를 제공하는 클러스터를 구성하는 복수의 노드들의 부하 정보를 수집하는 서비스 품질 모니터링부; 및
    상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 상기 복수의 태스크들을 상기 복수의 노드들에 분산 배치하는 스케쥴링부를 포함하고,
    상기 복수의 태스크들의 부하 정보는,
    태스크 중앙처리장치(Central Processing Unit; CPU) 부하 및 태스크 간 입출력 부하와 관련한 정보를 포함하고,
    상기 스케쥴링부는
    상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 간 입출력 부하가 높아서 태스크 간 입출력 과부하가 발생한 경우, 상기 태스크 간 입출력 과부하를 유발하는 태스크들을 입출력 과부하 태스크들로 선정하고, 상기 복수의 태스크들의 부하 정보 및 상기 태스크 간 입출력 부하에 근거하여 상기 입출력 과부하 태스크들을 재배치하고, 상기 입출력 과부하 태스크들을 단일 노드에 단일 프로세스의 별도 쓰레드(thread)로 배치하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 청구항 1에 있어서,
    상기 단일 프로세스의 별도 쓰레드로 배치된 상기 입출력 과부하 태스크들은,
    선행 태스크와 후행 태스크가 공유 메모리 버퍼를 두고 상기 공유 메모리 버퍼를 통해 직접 통신하는 메모리 통신으로 데이터 통신을 수행하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 장치.
  6. 청구항 5에 있어서,
    상기 복수의 태스크들 중 상기 단일 프로세스의 별도 쓰레드로 배치된 상기 입출력 과부하 태스크들 이외의 태스크들은,
    선행 태스크와 후행 태스크가 소켓을 통하여 통신하는 네트워크 통신 또는 파일을 통하여 통신하는 파일 입출력 통신으로 데이터 통신을 수행하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 장치.
  7. 청구항 1에 있어서,
    상기 스케쥴링부는,
    상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 CPU 부하가 높아서 태스크 CPU 과부하가 발생한 경우, 상기 태스크 CPU 과부하를 유발하는 태스크들을 CPU 과부하 태스크들로 선정하고, 상기 복수의 태스크들의 부하 정보 및 상기 태스크 CPU 부하에 근거하여 상기 CPU 과부하 태스크들을 재배치하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 장치.
  8. 청구항 7에 있어서,
    상기 스케쥴링부는,
    상기 복수의 노드들에 장착된 코어의 속도 및 개수를 기반으로 상기 CPU 과부하 태스크들을 별도의 노드에 별도의 프로세스로 배치하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 장치.
  9. 청구항 1에 있어서,
    상기 서비스 품질 모니터링부는,
    상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 태스크 간 입출력 과부하 발생 여부 및 태스크 CPU 과부하 발생 여부를 포함하는 서비스 품질을 판단하고, 태스크 간 입출력 과부하 또는 태스크 CPU 과부하가 발생하여 서비스 품질이 불만족인 것으로 판단되는 경우, 상기 복수의 태스크들을 상기 복수의 노드들에 재배치하도록 재배치 요청을 상기 스케쥴링부에 송신하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 장치.
  10. 청구항 9에 있어서,
    상기 스케쥴링부는,
    상기 서비스 품질 모니터링부로부터 상기 재배치 요청을 수신한 경우, 상기 태스크 간 입출력 과부하 또는 태스크 CPU 과부하의 발생으로 인한 과부하 오버헤드(overhead)와 상기 복수의 태스크들의 재배치로 인한 재배치 오버헤드를 비교하여, 상기 재배치 오버헤드에 대한 상기 과부하 오버헤드의 비율이 소정의 설정값을 초과하는 경우에만 재배치를 수행하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 장치.
  11. 서비스 관리부가 데이터 스트림 분산 병렬 처리 서비스를 구성하는 복수의 태스크들을 등록하는 단계;
    서비스 품질 모니터링부가 상기 복수의 태스크들의 부하 정보 및 상기 데이터 스트림 분산 병렬 처리 서비스를 제공하는 클러스터를 구성하는 복수의 노드들의 부하 정보를 수집하는 단계; 및
    스케쥴링부가 상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 상기 복수의 태스크들을 상기 복수의 노드들에 분산 배치하는 단계를 포함하고,
    상기 복수의 태스크들의 부하 정보는
    태스크 중앙처리장치(Central Processing Unit; CPU) 부하 및 태스크 간 입출력 부하와 관련한 정보를 포함하고,
    상기 분산 배치하는 단계는
    상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 간 입출력 부하가 높아서 태스크 간 입출력 과부하가 발생한 경우, 상기 스케쥴링부가 상기 태스크 간 입출력 과부하를 유발하는 태스크들을 입출력 과부하 태스크들로 선정하는 단계; 및
    상기 스케쥴링부가 상기 복수의 태스크들의 부하 정보 및 상기 태스크 간 입출력 부하에 근거하여 상기 입출력 과부하 태스크들을 재배치하는 단계를 포함하고,
    상기 입출력 과부하 태스크들을 재배치하는 단계는
    상기 스케쥴링부가 상기 입출력 과부하 태스크들을 단일 노드에 단일 프로세스의 별도 쓰레드(thread)로 배치하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 방법.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 청구항 11에 있어서,
    상기 단일 프로세스의 별도 쓰레드로 배치된 상기 입출력 과부하 태스크들이 선행 태스크와 후행 태스크가 공유 메모리 버퍼를 두고 상기 공유 메모리 버퍼를 통해 직접 통신하는 메모리 통신으로 데이터 통신을 수행하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 방법.
  16. 청구항 15에 있어서,
    상기 복수의 태스크들 중 상기 단일 프로세스의 별도 쓰레드로 배치된 상기 입출력 과부하 태스크들 이외의 태스크들이 선행 태스크와 후행 태스크가 소켓을 통하여 통신하는 네트워크 통신 또는 파일을 통하여 통신하는 파일 입출력 통신으로 데이터 통신을 수행하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 방법.
  17. 청구항 11에 있어서,
    상기 분산 배치하는 단계는
    상기 복수의 노드들의 부하 정보에 포함된 상기 복수의 노드들의 부하 상태에 비해 상기 태스크 CPU 부하가 높아서 태스크 CPU 과부하가 발생한 경우, 상기 스케쥴링부가 상기 태스크 CPU 과부하를 유발하는 태스크들을 CPU 과부하 태스크들로 선정하는 단계; 및
    상기 스케쥴링부가 상기 복수의 태스크들의 부하 정보 및 상기 태스크 CPU 부하에 근거하여 상기 CPU 과부하 태스크들을 재배치하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 방법.
  18. 청구항 17에 있어서,
    상기 CPU 과부하 태스크들을 재배치하는 단계는,
    상기 스케쥴링부가, 상기 복수의 노드들에 장착된 코어의 속도 및 개수를 기반으로 상기 CPU 과부하 태스크들을 별도의 노드에 별도의 프로세스로 배치하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 방법.
  19. 청구항 11에 있어서,
    상기 부하 정보를 수집하는 단계는
    상기 서비스 품질 모니터링부가 상기 복수의 태스크들의 부하 정보 및 상기 복수의 노드들의 부하 정보에 근거하여 태스크 간 입출력 과부하 발생 여부 및 태스크 CPU 과부하 발생 여부를 포함하는 서비스 품질을 판단하는 단계; 및
    태스크 간 입출력 과부하 또는 태스크 CPU 과부하가 발생하여 서비스 품질이 불만족인 것으로 판단되는 경우, 상기 복수의 태스크들을 상기 복수의 노드들에 재배치하도록 재배치 요청을 상기 스케쥴링부에 송신하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 방법.
  20. 청구항 19에 있어서,
    상기 스케쥴링부가 상기 서비스 품질 모니터링부로부터 상기 재배치 요청을 수신한 경우, 상기 태스크 간 입출력 과부하 또는 태스크 CPU 과부하의 발생으로 인한 과부하 오버헤드(overhead)와 상기 복수의 태스크들의 재배치로 인한 재배치 오버헤드를 비교하는 단계; 및
    상기 스케쥴링부가 상기 재배치 오버헤드에 대한 상기 과부하 오버헤드의 비율이 소정의 설정값을 초과하는 경우에만 재배치를 수행하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스트림 분산 병렬 처리 서비스 관리 방법.
KR1020120017309A 2012-02-21 2012-02-21 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법 KR101827369B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120017309A KR101827369B1 (ko) 2012-02-21 2012-02-21 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법
US13/585,252 US8997109B2 (en) 2012-02-21 2012-08-14 Apparatus and method for managing data stream distributed parallel processing service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120017309A KR101827369B1 (ko) 2012-02-21 2012-02-21 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20130095910A KR20130095910A (ko) 2013-08-29
KR101827369B1 true KR101827369B1 (ko) 2018-02-09

Family

ID=48983381

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120017309A KR101827369B1 (ko) 2012-02-21 2012-02-21 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법

Country Status (2)

Country Link
US (1) US8997109B2 (ko)
KR (1) KR101827369B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102132877B1 (ko) 2019-01-25 2020-07-10 주식회사 리얼타임테크 분산 데이터베이스 시스템의 대용량 텍스트 로그 데이터 분산 처리 방법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014102691A (ja) * 2012-11-20 2014-06-05 Toshiba Corp 情報処理装置、通信機能を持つカメラ、および情報処理方法
US9773014B2 (en) * 2014-06-03 2017-09-26 Samsung Electronics Co., Ltd. Heterogeneous distributed file system using different types of storage mediums
KR102237373B1 (ko) * 2014-07-02 2021-04-07 삼성전자 주식회사 전자 장치의 태스크 스케줄링 방법 및 이를 사용하는 전자 장치
US9826011B2 (en) * 2014-07-31 2017-11-21 Istreamplanet Co. Method and system for coordinating stream processing at a video streaming platform
US9912707B2 (en) 2014-07-31 2018-03-06 Istreamplanet Co. Method and system for ensuring reliability of unicast video streaming at a video streaming platform
CN105740063A (zh) * 2014-12-08 2016-07-06 杭州华为数字技术有限公司 一种数据处理方法及装置
US9686576B2 (en) 2015-05-08 2017-06-20 Istreamplanet Co. Coordination of video stream timing in cloud-based video streaming system
US9967160B2 (en) * 2015-05-21 2018-05-08 International Business Machines Corporation Rerouting data of a streaming application
US10164853B2 (en) 2015-05-29 2018-12-25 Istreamplanet Co., Llc Real-time anomaly mitigation in a cloud-based video streaming system
CN105677484A (zh) * 2016-01-08 2016-06-15 国家计算机网络与信息安全管理中心 一种自动负载均衡的多核cpu实时数据处理方法
US10367914B2 (en) * 2016-01-12 2019-07-30 Cisco Technology, Inc. Attaching service level agreements to application containers and enabling service assurance
KR102025801B1 (ko) 2016-01-26 2019-09-26 한국전자통신연구원 분산 파일 시스템 및 이의 데이터 내결함성 지원 방법
US10541939B2 (en) * 2017-08-15 2020-01-21 Google Llc Systems and methods for provision of a guaranteed batch
US10705882B2 (en) * 2017-12-21 2020-07-07 Cisco Technology, Inc. System and method for resource placement across clouds for data intensive workloads
CN110225082B (zh) * 2019-04-30 2021-12-10 北京奇艺世纪科技有限公司 任务处理方法、装置、电子设备和计算机可读介质
US11126472B2 (en) 2019-06-05 2021-09-21 LogsHero Ltd. System and method for managing shared computer resources
US11210094B2 (en) * 2019-09-27 2021-12-28 Intel Corporation Method and apparatus for minimally intrusive instruction pointer-aware processing resource activity profiling

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779181B1 (en) * 1999-07-10 2004-08-17 Samsung Electronics Co., Ltd. Micro-scheduling method and operating system kernel
US20090328050A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Automatic load balancing, such as for hosted applications
JP2010204880A (ja) 2009-03-03 2010-09-16 Hitachi Ltd ストリームデータ処理方法、ストリームデータ処理プログラム、および、ストリームデータ処理装置
US20100333113A1 (en) * 2009-06-29 2010-12-30 Sun Microsystems, Inc. Method and system for heuristics-based task scheduling
US20110282832A1 (en) * 2010-05-14 2011-11-17 Rishel William S Load balancing in parallel database systems using multi-reordering

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4687253B2 (ja) 2005-06-03 2011-05-25 株式会社日立製作所 ストリームデータ処理システムのクエリ処理方法
JP4308241B2 (ja) * 2006-11-10 2009-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
US7827286B1 (en) * 2007-06-15 2010-11-02 Amazon Technologies, Inc. Providing enhanced access to stored data
US8255908B2 (en) * 2007-12-19 2012-08-28 Nokia Corporation Managing tasks in a distributed system
US9235396B2 (en) * 2011-12-13 2016-01-12 Microsoft Technology Licensing, Llc Optimizing data partitioning for data-parallel computing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779181B1 (en) * 1999-07-10 2004-08-17 Samsung Electronics Co., Ltd. Micro-scheduling method and operating system kernel
US20090328050A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Automatic load balancing, such as for hosted applications
JP2010204880A (ja) 2009-03-03 2010-09-16 Hitachi Ltd ストリームデータ処理方法、ストリームデータ処理プログラム、および、ストリームデータ処理装置
US20100333113A1 (en) * 2009-06-29 2010-12-30 Sun Microsystems, Inc. Method and system for heuristics-based task scheduling
US20110282832A1 (en) * 2010-05-14 2011-11-17 Rishel William S Load balancing in parallel database systems using multi-reordering

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102132877B1 (ko) 2019-01-25 2020-07-10 주식회사 리얼타임테크 분산 데이터베이스 시스템의 대용량 텍스트 로그 데이터 분산 처리 방법

Also Published As

Publication number Publication date
US8997109B2 (en) 2015-03-31
US20130219405A1 (en) 2013-08-22
KR20130095910A (ko) 2013-08-29

Similar Documents

Publication Publication Date Title
KR101827369B1 (ko) 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법
US10387202B2 (en) Quality of service implementation in a networked storage system with hierarchical schedulers
US9197703B2 (en) System and method to maximize server resource utilization and performance of metadata operations
US10534542B2 (en) Dynamic core allocation for consistent performance in a non-preemptive scheduling environment
Hu et al. Flutter: Scheduling tasks closer to data across geo-distributed datacenters
US7739331B2 (en) Method and apparatus for providing load diffusion in data stream correlations
US10394606B2 (en) Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy
US20190245924A1 (en) Three-stage cost-efficient disaggregation for high-performance computation, high-capacity storage with online expansion flexibility
US10545791B2 (en) Methods to apply IOPS and MBPS limits independently using cross charging and global cost synchronization
US8898422B2 (en) Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration
US10387051B2 (en) Acquisition of IOPS and MBPS limits independently at a scheduler in a scheduler hierarchy
Yildirim et al. End-to-end data-flow parallelism for throughput optimization in high-speed networks
CN107273200B (zh) 一种针对异构存储的任务调度方法
US11329890B2 (en) Network-aware workload management using artificial intelligence and exploitation of asymmetric link for allocating network resources
JP2017037492A (ja) 分散処理プログラム、分散処理方法および分散処理装置
Liu et al. Optimizing shuffle in wide-area data analytics
WO2016197706A1 (zh) 数据的迁移方法及装置
JP5810918B2 (ja) スケジューリング装置、スケジューリング方法及びプログラム
Thamsen et al. Continuously improving the resource utilization of iterative parallel dataflows
He et al. Firebird: Network-aware task scheduling for spark using sdns
US8918555B1 (en) Adaptive and prioritized replication scheduling in storage clusters
US10824640B1 (en) Framework for scheduling concurrent replication cycles
JP2012038275A (ja) 取引計算シミュレーションシステム、方法及びプログラム
KR101752699B1 (ko) 폭증 데이터 스트림 처리 방법 및 장치
Yu et al. Analysis of CPU pinning and storage configuration in 100 Gbps network data transfer

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant