KR20130137503A - 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법 - Google Patents

리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법 Download PDF

Info

Publication number
KR20130137503A
KR20130137503A KR1020120061182A KR20120061182A KR20130137503A KR 20130137503 A KR20130137503 A KR 20130137503A KR 1020120061182 A KR1020120061182 A KR 1020120061182A KR 20120061182 A KR20120061182 A KR 20120061182A KR 20130137503 A KR20130137503 A KR 20130137503A
Authority
KR
South Korea
Prior art keywords
thread
unit
data
thread process
resource monitoring
Prior art date
Application number
KR1020120061182A
Other languages
English (en)
Other versions
KR101392584B1 (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 KR1020120061182A priority Critical patent/KR101392584B1/ko
Publication of KR20130137503A publication Critical patent/KR20130137503A/ko
Application granted granted Critical
Publication of KR101392584B1 publication Critical patent/KR101392584B1/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/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

Abstract

본 발명은 데이터 병렬 처리 기술에 관한 것으로, 본 발명의 일 실시예에 따른 데이터 처리 장치는 다중 쓰레드를 기반으로 데이터를 처리한다. 상기 데이터 처리 장치는 리소스 모니터링부, 쓰레드 관리부 및 잡 관리부를 포함한다. 상기 리소스 모니터링부는 시스템 자원을 확인하여 자원 모니터링 정보를 생성한다. 상기 쓰레드 관리부는 상기 자원 모니터링 정보를 이용하여 쓰레드 프로세스의 수를 결정하고, 결정된 개수에 따라 복수의 쓰레드 프로세스들을 생성한다. 상기 잡 관리부는 처리할 데이터를 복수개로 분할하여 상기 복수의 쓰레드 프로세스들에게 제공한다. 본 발명에 따르면, 시스템의 자원에 대한 모니터링을 기반으로 쓰레드의 수를 조절하고 쓰레드 수 및 모니터링 정보를 이용하여 처리할 데이터를 분할하여 동적으로 쓰레드에 제공함으로써 데이터 병렬 처리의 효과를 증대시킬 수 있는 효과가 있다.

Description

리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법 {APPARATUS FOR DYNAMIC DATA PROCESSING USING RESOURCE MONITORING AND METHOD THEREOF}
본 발명은 데이터 병렬 처리 기술에 관한 것으로, 보다 상세하게는, 시스템의 자원에 대한 모니터링을 기반으로 쓰레드의 수를 조절하고 쓰레드 수 및 모니터링 정보를 이용하여 처리할 데이터를 분할하여 동적으로 쓰레드에 제공함으로써 데이터 병렬 처리의 효과를 증대시킨 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법에 관한 것이다.
컴퓨팅 기술의 발전에 따라, 매우 다양한 분야에서 컴퓨팅 시스템이 적용되고 있다. 이러한 컴퓨팅 시스템에서 성능을 효율적으로 관리하는 것은 매우 중요한 이슈이며, 이를 위하여 다양한 기술들이 개발되어지고 있다.
그러한 성능 이슈 중의 하나로서, 컴퓨팅 디바이스의 데이터 처리 상의 효율성은 매우 중요한 문제이다. 이러한 데이터 처리에 있어서, 입출력 작업 수행에 가장 많은 병목 현상이 일어나기 때문에 데이터 처리 작업의 속도를 향상시키기 위해서는 입출력 처리의 속도의 향상이 필수적이다.
입출력 처리 속도의 향상을 위한 기술로서 다중 쓰레드 기술이 있다. 다중 쓰레드 기술은 데이터를 처리할 객체로서 복수의 쓰레드를 생성하여 병렬적으로 데이터를 처리하는 기술을 의미한다. 종래의 다중 쓰레드 기술은 데이터의 크기를 바탕으로 사용자가 직접 실행에 적절한 쓰레드 개수를 지정하여 병렬 처리를 수행하거나, 사용자가 미리 시스템에 적절한 쓰레드 한도 수를 지정하여 한도 수만큼의 병렬 처리를 수행하도록 하였다.
그러나, 병렬 처리 수행 시 미리 실행 개수나 쓰레드 한도수를 지정하여 수행하게 되면 시스템의 상황에 따른 적절한 쓰레드의 동적인 활용을 기대하기 어려운 한계성을 가지고 있다.
이러한 종래 기술로서 대한민국 공개특허 제2009-0076168호가 있다. 공개특허 제2009-0076168호는 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법에 관한 것으로, 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 쓰레드로부터의 입출력 이벤트 요청 시 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 입출력 이벤트의 처리 작업을 관리할 수 있다. 공개특허 제2009-0076168호는 비동기 입출력 시스템상에서 동시에 처리되는 쓰레드의 수를 실행 쓰레드 한도만큼으로 제한함으로써, 쓰레드의 콘텍스트 스위칭 오버헤드에 따른 성능 저하를 방지하는 것을 목적으로 한다.
그러나 이러한 종래 기술은 한번 작업이 할당된 쓰레드는 작업 실행 속도가 느려지더라도 동적으로 재분배할 수가 없어 리소스를 최적으로 활용하지 못하는 한계를 가지고 있다. 또한 현재 실행 쓰레드의 한도를 넘지 않았더라도 실행 중인 입출력 이벤트의 부하가 크면 쓰레드 1개를 더 할당한다 하더라도 실제적으로 성능 향상이 이루지지 못하는 한계성을 가지고 있다.
다른 종래 기술로서 다중 쓰레드를 사용하되 작업의 세분화 측면을 강화한 기술들이 있다. 예를 들어, 태스크를 divide-and-conquer 알고리즘을 이용하여 세밀하게 세분화하고(fine-grained), 나눈 작업들을 쓰레드에 할당하여 실행하되 먼저 할당된 작업이 끝난 쓰레드가 실행중인 쓰레드에 할당된 작업을 일부 가져와 실행하는 방식으로 작업 분배를 하는 Work-stealing framework을 제공하는 종래 기술이 있다.
그러나 이러한 종래 기술의 경우에도, 작업을 세밀하게 세분화하게 되면(fine-grained) 처리할 작업이 없어 조기에 쓰레드가 종료되는 현상을 막을 수 는 있지만, 작업이 세분화되면 다른 쓰레드의 작업을 가져오는 횟수가 크게 증가하게 되고, 그러한 쓰레드에서 작업을 가져오는 것은 그 자체로서의 비용이 높아 횟수가 증가하면 그만큼 작업 실행 속도 영향을 주게되어 결과적으로 성능이 저하되는 문제를 가지고 있었다.
공개특허 제2009-0076168호
본 발명은, 시스템의 자원에 대한 모니터링을 기반으로 쓰레드의 수를 조절하고 쓰레드 수 및 모니터링 정보를 이용하여 처리할 데이터를 분할하여 쓰레드에 제공함으로써 데이터 병렬 처리의 효과를 증대시킬 수 있는 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법을 제공하고자 한다.
또한, 본 발명은 시스템의 리소스 상황에 맞춰 동적으로 쓰레드를 생성하거나 제거함으로써 잉여 리소스를 최적화하여 사용하며 향상된 작업 실행 속도를 보장할 수 있는 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법을 제공하고자 한다.
또한, 본 발명은 복수의 쓰레드들 중에서 작업을 완료한 특정 쓰레드는 타 쓰레드의 작업 목록에 저장된 가장 큰 작업을 가져오고, 작업 수행 시 지수 분할을 수행하도록 함으로써 쓰레드들 간의 작업 교류를 효율적으로 제공하여 전체 쓰레드의 사용성을 향상시킬 수 있는 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법을 제공하고자 한다.
실시예들 중에서, 데이터 처리 장치는 다중 쓰레드를 기반으로 데이터를 처리한다. 상기 데이터 처리 장치는 리소스 모니터링부, 쓰레드 관리부 및 잡 관리부를 포함한다. 상기 리소스 모니터링부는 시스템 자원을 확인하여 자원 모니터링 정보를 생성한다. 상기 쓰레드 관리부는 상기 자원 모니터링 정보를 이용하여 쓰레드 프로세스의 수를 결정하고, 결정된 개수에 따라 복수의 쓰레드 프로세스들을 생성한다. 상기 잡 관리부는 처리할 데이터를 복수개로 분할하여 상기 복수의 쓰레드 프로세스들에게 제공한다.
일 실시예에서, 상기 쓰레드 관리부는 상기 처리할 데이터의 크기 정보를 더 이용하여 상기 쓰레드 프로세스의 수를 결정할 수 있다.
일 실시예에서, 상기 잡 관리부는 상기 처리할 데이터를 소정의 크기로 분할하여 복수의 단위 작업을 생성하고, 생성된 복수의 단위 작업을 상기 복수의 쓰레드 프로세스들에게 균등한 개수로 분배하여 제공할 수 있다.
일 실시예에서, 상기 잡 관리부는 상기 처리할 데이터를 상기 복수의 쓰레드 프로세스들의 수에 상응하는 개수로 균등하게 분할하여 상기 복수의 쓰레드 프로세스들에게 각각 제공하고, 상기 복수의 쓰레드 프로세스들은 자신에게 제공된 단위 작업을 최대 단위 작업 개수가 될 때까지 서로 다른 크기로 각각 분할할 수 있다.
일 실시예에서, 상기 복수의 쓰레드 프로세스 객체들은 상기 자신에게 제공된 단위 작업을 최대 단위 작업 개수가 될 때까지 각각 지수 분할할 수 있다.
일 실시예에서, 상기 데이터 처리 장치는 상기 복수의 쓰레드 프로세스들의 작업 처리 현황을 확인하여 작업 처리 현황 정보를 생성하는 쓰레드 옵저버부를 더 포함할 수 있다.
일 실시예에서, 상기 쓰레드 관리부는 상기 작업 처리 현황 정보를 이용하여 자신에게 할당된 단위 작업이 완료된 제1 쓰레드 프로세스가 존재하는지 여부를 확인하고, 그 결과에 따라 자신에게 할당된 단위 작업이 완료되지 않은 제2 쓰레드 프로세스에게 할당된 가장 큰 크기의 단위 작업을 상기 제1 쓰레드 프로세스에게 동적으로 재할당할 수 있다.
일 실시예에서, 상기 리소스 모니터링부는 주기적으로 상기 시스템 자원을 확인하여 상기 자원 모니터링 정보를 갱신할 수 있다.
일 실시예에서, 상기 쓰레드 관리부는 갱신된 자원 모니터링 정보를 반영하여 상기 쓰레드 프로세스의 수를 재결정하고, 재결정된 개수에 따라 적어도 하나의 쓰레드 프로세스를 생성 또는 삭제할 수 있다.
실시예들 중에서, 데이터 처리 방법은 다중 쓰레드를 기반으로 데이터를 처리하는 데이터 처리 장치에서 수행된다. 상기 데이터 처리 방법은 (a) 시스템 자원을 확인하여 자원 모니터링 정보를 생성하는 단계, (b) 상기 자원 모니터링 정보를 이용하여 쓰레드 프로세스의 수를 결정하고, 결정된 개수에 따라 복수의 쓰레드 프로세스들을 생성하는 단계 및 (c) 처리할 데이터를 복수개로 분할하여 상기 복수의 쓰레드 프로세스들에게 제공하는 단계를 포함한다.
일 실시예에서, 상기 (b) 단계는 처리할 데이터의 크기 정보를 더 이용하여 상기 쓰레드 프로세스 객체의 수를 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 (c) 단계는 상기 처리할 데이터를 소정의 크기로 분할하여 복수의 단위 작업을 생성하고, 생성된 복수의 단위 작업을 상기 복수의 쓰레드 프로세스들에게 균등한 개수로 분배하여 제공하는 단계를 포함할 수 있다.
일 실시예에서, 상기 (c) 단계는 상기 처리할 데이터를 상기 복수의 쓰레드 프로세스들의 수에 상응하는 개수로 균등하게 분할하여 상기 복수의 쓰레드 프로세스들에게 각각 제공하는 단계 및 상기 복수의 쓰레드 프로세스들 각각에 대하여, 해당 쓰레드 프로세스에 제공된 단위 작업을 최대 단위 작업 개수가 될 때까지 각각 지수 분할하는 단계를 포함할 수 있다.
일 실시예에서, 상기 (c) 단계는 상기 복수의 쓰레드 프로세스들의 작업 처리 현황을 확인하여 작업 처리 현황 정보를 생성하는 단계를 포함할 수 있다.
일 실시예에서, 상기 (d) 단계는 상기 작업 처리 현황 정보를 이용하여 자신에게 할당된 단위 작업이 완료된 제1 쓰레드 프로세스가 존재하는지 확인하는 단계 및 상기 확인한 결과에 따라, 자신에게 할당된 단위 작업이 완료되지 않은 제2 쓰레드 프로세스에게 할당된 적어도 하나의 단위 작업 중 어느 하나를 상기 제1 쓰레드 프로세스에게 동적으로 재할당하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 데이터 처리 방법은 (d) 주기적으로 상기 시스템 자원을 재확인하여 상기 자원 모니터링 정보를 갱신하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 (d) 단계는 갱신된 자원 모니터링 정보를 이용하여 상기 쓰레드 프로세스의 수를 재결정하는 단계 및 상기 재결정된 개수에 따라 적어도 하나의 쓰레드 프로세스를 생성 또는 삭제하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 적어도 하나의 단위 작업 중 어느 하나는 상기 제2 쓰레드 프로세스에게 현재 할당된 적어도 하나의 단위 작업 중에서 가장 크기가 큰 것일 수 있다.
실시예들 중에서, 기록매체는 다중 쓰레드를 기반으로 데이터를 처리하는 데이터 처리 장치에서 수행되는 데이터 처리 방법을 실행시키기 위한 프로그램을 기록한다. 상기 프로그램은 (a) 시스템 자원을 확인하여 자원 모니터링 정보를 생성하는 기능, (b) 상기 자원 모니터링 정보를 이용하여 쓰레드 프로세스의 수를 결정하고, 결정된 개수에 따라 복수의 쓰레드 프로세스들을 생성하는 기능 및 (c) 처리할 데이터를 복수개로 분할하여 상기 복수의 쓰레드 프로세스들에게 제공하는 기능을 포함한다.
일 실시예에서, 상기 (b) 기능은 처리할 데이터의 크기 정보를 더 이용하여 상기 쓰레드 프로세스 객체의 수를 결정할 수 있다.
본 발명에 따르면, 시스템의 자원에 대한 모니터링을 기반으로 쓰레드의 수를 조절하고 쓰레드 수 및 모니터링 정보를 이용하여 처리할 데이터를 분할하여 동적으로 쓰레드에 제공함으로써 데이터 병렬 처리의 효과를 증대시킬 수 있는 효과가 있다.
또한 본 발명에 따르면, 시스템의 리소스 상황에 맞춰 동적으로 쓰레드를 생성하거나 제거함으로써 잉여 리소스를 최적화하여 사용하며 향상된 작업 실행 속도를 보장할 수 있는 효과가 있다.
또한 본 발명에 따르면, 복수의 쓰레드들 중에서 작업을 완료한 특정 쓰레드는 타 쓰레드의 작업 목록에 저장된 가장 큰 작업을 가져오고, 작업 수행 시 지수 분할을 수행하도록 함으로써 쓰레드들 간의 작업 교류를 효율적으로 제공하여 전체 쓰레드의 사용성을 향상시킬 수 있는 효과가 있다.
도 1은 개시된 기술에 따른 동적 데이터 처리 장치의 일 실시예를 설명하기 위한 참고도이다.
도 2는 본 발명에 따른 데이터 처리 장치 의 각 구성 요소 간의 기능을 설명하기 위한 참고도이다.
도 3은 본 발명에 따른 데이터 처리 방법의 일 실시예를 설명하는 순서도이다.
도 4는 본 발명에 따른 데이터 처리 방법의 다른 일 실시예를 설명하는 순서도이다.
도 5는 본 발명에 의한 쓰레드 분배 과정의 일 실시예를 설명하는 순서도이다.
도 6 내지 도 11은 본 발명에 따라 전체 데이터를 각 쓰레드에 분할하는 예를 설명하기 위한 참고도들이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다.
한편, 본 발명에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한, 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 개시된 기술에 따른 동적 데이터 처리 장치의 일 실시예를 설명하기 위한 참고도이다.
도 1을 참조하면, 데이터 처리 장치(100)는 리소스 모니터링부(110), 쓰레드 관리부(120) 및 잡 관리부(130)를 포함할 수 있다. 일 실시예에서, 데이터 처리 장치(100)는 쓰레드 옵저버부(140)를 더 포함할 수 있다.
리소스 모니터링부(110)는 시스템 자원을 확인하여 자원 모니터링 정보를 생성할 수 있다.
일 실시예에서, 리소스 모니터링부(110)는 주기적으로 시스템 자원을 확인하여 자원 모니터링 정보를 갱신할 수 있다.
리소스 모니터링부(110)는 생성한 자원 모니터링 정보를 쓰레드 관리부(120)에 제공할 수 있다. 쓰레드 관리부(120)는 자원 모니터링 정보를 이용하여 쓰레드 프로세스의 수를 조절하거나 작업 범위의 할당을 조절하는 것을 결정할 수 있다.
쓰레드 관리부(120)는 쓰레드 프로세스를 관리할 수 있다.
예를 들어, 쓰레드 관리부(120)는 시스템 자원 또는 잡(Job, 데이터를 처리하는 것)에 따라 복수의 쓰레드 프로세스를 생성할 수 있고, 모든 쓰레드 프로세스의 작업이 종료되었는지를 확인하여 잡이 완료되었는지 판단할 수 있다. 쓰레드 관리부(120)는 작업 처리 도중, 리소스 모니터링부(110)로부터 자원 모니터링 정보가 갱신되면, 갱신된 자원 모니터링 정보와 각 쓰레드 프로세스의 작업 진척 현황을 바탕으로 쓰레드 프로세스의 개수를 조절시키고 각 쓰레드 프로세스의 작업 처리량을 조절할 수 있다.
쓰레드 프로세스는 실제로 작업을 처리하는 객체이다. 본 발명에서는 시스템의 현재 상황 또는 잡을 바탕으로 복수의 쓰레드 프로세스들이 생성될 수 있고, 생성된 복수의 쓰레드 프로세스들이 동시에 작업 처리를 수행함으로써 잡을 완료할 수 있다.
여기에서, 쓰레드 프로세스에게 할당되는 처리할 데이터(잡)의 적어도 일부를 이하에서는 단위 작업이라 칭한다. 쓰레드 프로세스는 할당받은 단위 작업을 복수 개로 분할(예컨대, 할당받은 단위 작업을 복수 개의 단위 작업으로 분할)할 수 있다.
일 실시예에서, 각 쓰레드 프로세스는 고유의 작업 처리 범위(단위 작업으로 표현될 수 있음)를 가질 수 있다. 쓰레드 프로세스는 자신에게 할당된 단위 작업을 자신의 작업 큐(Task Queue)를 이용하여 저장할 수 있다. 즉, 쓰레드 프로세스는 자신의 작업 큐(Task Queue)에 저장된 단위 작업을 수행할 수 있으며, 이러한 작업 큐(Task Queue)에 대한 단위 작업의 조절은 다른 구성요소(예컨대, 쓰레드 관리부 등)에 의하여 조절될 수도 있다.
일 실시예에서, 쓰레드 프로세스는 자신에게 부여된 복수의 단위 작업들을 처리함에 있어서, 그 크기가 작은 순서대로 단위 작업들을 처리할 수 있다.
일 실시예에서, 쓰레드 프로세스는 자신에게 단위 작업이 최초로 부여되면 이를 분할한 후 작업을 수행할 수 있다. 예를 들어, 일 실시예에서, 쓰레드 프로세스는 자신에게 부여된 단위 작업의 개수가 기 설정된 n개 이하이면, n개가 될 때까지 자신에게 부여된 단위 작업 중 적어도 하나를 분할 할 수 있다.
일 실시예에서, 쓰레드 프로세스는 자신에게 부여된 단위 작업을 서로 다른 크기의 단위 작업들(서브 단위 작업들)로 분할 할 수 있다. 예를 들어, 난수를 이용하여 결정된 크기로 단위 작업을 서브 단위 작업의 최대 개수로 분할할 수 있다. 다른 예를 들어, 난수에 따라 결정된 크기로 단위 작업을 소정 개수의 서브 단위 작업으로 분할하고 최대 개수가 될 때 까지 이러한 분할 과정을 반복적으로 수행할 수 있다. 이는 쓰레드 프로세스가 (i) 자신에게 부여된 단위 작업들을 수행함에 있어서 그 크기가 작은 순서대로 처리하도록 하는 실시예나 또는 (ii) 단위 작업의 재 분배를 수행함에 있어서 제일 큰 단위 작업을 재분배(stealing)하도록 하는 실시예에 있어서 보다 효율적인 결과를 제공하기 위함이다.
일 실시예에서, 쓰레드 프로세스는 자신에게 부여된 단위 작업을 분할함에 있어서 지수분할 방식을 이용할 수 있다. 이에 대해서는 도 7을 참조하여 보다 상세히 후술하나, 이러한 지수 분할 방식을 이용함으로써 쓰레드 프로세스 간 작업 조율을 매우 효율적으로 수행할 수 있다. 즉, 쓰레드 프로세스 간의 작업 조율 횟수를 최소한으로 하여 성능 저하를 방지할 수 있다.
일 실시예에서, 쓰레드 관리부(120)는 자원 모니터링 정보를 이용하여 쓰레드 프로세스의 수를 결정하고, 결정된 개수에 따라 복수의 쓰레드 프로세스들을 생성할 수 있다.
일 실시예에서, 쓰레드 관리부(120)는 자원 모니터링 정보의 갱신이 발생하면 현재 운영 중인 쓰레드 프로세스의 수를 변경하여 조절할 수 있다. 예를 들어, 쓰레드 관리부(120)는 자원 모니터링 정보가 갱신될 때마다, 갱신된 자원 모니터링 정보를 반영하여 쓰레드 프로세스의 수를 재결정하고, 재결정된 개수에 따라 적어도 하나의 쓰레드 프로세스를 생성 또는 삭제할 수 있다.
일 실시예에서, 쓰레드 관리부(120)는 자원 모니터링 정보 뿐만 아니라 잡의 상태를 더 반영하여 생성 또는 운영할 쓰레드 프로세스의 수를 결정할 수 있다. 예를 들어, 쓰레드 관리부(120)는 자원 모니터링 정보에 처리할 데이터의 크기(잡의 크기)를 더 반영하여 쓰레드 프로세스의 수를 결정할 수 있다.
일 실시예에서, 쓰레드 관리부(120)는 쓰레드 프로세스 각각에 단위 작업을 저장할 수 있는 작업 큐를 설정할 수 있다. 여기에서, 쓰레드 관리부(120)는 쓰레드 프로세스의 작업 큐에 작업을 빼오거나(스틸링, Stealing) 더 부여함으로써 복수의 쓰레드 프로세스 간의 작업 분배를 수행할 수 있다.
일 실시예에서, 쓰레드 관리부(120)는 복수의 쓰레드 프로세스 간의 작업 분배를 수행할 수 있다. 예를 들어, 쓰레드 옵저버부(140)에 의하여 복수의 쓰레드 프로세스 각각에 대한 작업 정보(작업 처리 현황 정보)를 제공받으면, 쓰레드 관리부(120)는 자신에게 할당된 단위 작업이 완료된 제1 쓰레드 프로세스가 존재하는지 여부를 확인하고, 만약 존재하면 자신에게 할당된 단위 작업이 완료되지 않은 제2 쓰레드 프로세스의 단위 작업을 제1 쓰레드 프로세스에게 제공함으로써 쓰레드 프로세스 간의 작업 조절을 수행할 수 있다.
일 실시예에서, 쓰레드 관리부(120)는 작업 분배를 수행함에 있어서, 미완료된 단위 작업 중에서 가장 큰 단위 작업을 조절함으로써 작업 분배를 보다 효율적으로 수행할 수 있다. 전술한 예를 들면, 쓰레드 관리부(120)는 자신에게 할당된 단위 작업이 완료되지 않은 제2 쓰레드 프로세스에게 할당된 단위 작업 중 가장 큰 크기의 단위 작업(제1 단위 작업)을 제1 쓰레드 프로세스에게 동적으로 재할당할 수 있다. 여기에서, 제1 쓰레드 프로세스는 자신에게 재할당된 제1 단위 작업을 분할(예컨대, 지수 분할)하여 작업을 수행할 수 있으며, 이러한 지수 분할 및 가장 큰 크기의 단위 작업 재분배를 이용하여 쓰레드 프로세스 간의 작업 분배를 효율적으로 수행할 수 있다.
잡(Job) 관리부(130)는 처리할 데이터를 복수 개로 분할하여 복수의 쓰레드 프로세스들에게 제공할 수 있다.
일 실시예에서, 잡 관리부(130)는 해당 쓰레드 프로세스의 작업 큐에 해당 단위 작업을 적재함으로써 단위 작업을 제공할 수 있다.
일 실시예에서, 잡 관리부(130)는 처리할 데이터를 소정의 크기로 분할하여 복수의 단위 작업을 생성하고, 생성된 복수의 단위 작업을 복수의 쓰레드 프로세스들에게 균등한 개수로 분배하여 제공할 수 있다. 예를 들어, 잡 관리부(130)가 10개의 단위 작업을 생성하고 쓰레드 프로세스가 5개라고 가정하면, 잡 관리부(130)는 각 쓰레드 프로세스 마다 2개의 단위 작업을 제공할 수 있다.
일 실시예에서, 잡 관리부(130)는 처리할 데이터를 복수의 쓰레드 프로세스들의 수에 상응하는 개수로 균등하게 분할하여 복수의 쓰레드 프로세스들에게 각각 제공할 수 있다. 예를 들어, 쓰레드 프로세스가 5개이면, 잡 관리부(130)는 처리할 데이터를 5개의 단위 작업으로 균등하게 분할하여 제공할 수 있다. 이러한 실시예의 경우, 쓰레드 프로세스는 자신에게 제공된 단위 작업을 최대 단위 작업 개수가 될 때까지 각각 지수 분할할 수 있다.
쓰레드 옵저버부(140)는 복수의 쓰레드 프로세스들의 작업 처리 현황을 확인하여 작업 처리 현황 정보를 생성할 수 있다.
일 실시예에서, 쓰레드 옵저버부(140)는 주기적으로 작업 처리 현황을 체크함으로써 데이터 처리 장치(100)가 작업 처리의 분배를 동적으로 조절할 수 있도록 할 수 있다.
일 실시예에서, 쓰레드 옵저버부(140)는 쓰레드 프로세스의 개수와 작업 범위를 조절하도록 결정할 수 있고, 이렇게 결정된 쓰레드 프로세스의 개수와 작업 범위를 쓰레드 관리부(120)에 제공하여 작업 처리의 분배를 동적으로 조절할 수 있도록 할 수 있다. 예를 들어, 쓰레드 옵저버부(140)는 (i) 스스로 생성한 쓰레드 프로세스의 시작과 종료 등의 생명주기(Life Cycle)의 모니터링 결과와 (ii) 리소스 모니터링부(110)로부터 제공된 시스템 자원 현황 정보를 주기적으로 받아 전술한 예 등과 같은 쓰레드 프로세스 개수 조절 정책에 따라 쓰레드 프로세스의 개수와 작업 범위를 결정하여 쓰레드 관리부(120)에게 제공할 수 있다. 이러한 실시예의 경우, 쓰레드 관리부(120)는 자체적인 연산 없이 쓰레드 옵저버부(140)에서 제공된 정보에 따라 쓰레드 프로세스의 개수 만을 변경할 수 있다.
이하에서는, 도 2 내지 도 4를 참조하여 데이터 처리 방법의 다양한 실시예들에 대하여 설명한다. 이하에서 설명 할 실시예들은 전술한 데이터 처리 장치(100)에서 수행되므로, 서로 상응하는 내용에 대해서는 중복하여 설명하지 않으나, 당업자는 전술한 기재로부터 후술할 데이터 처리 방법의 실시예들을 보다 명확하게 이해할 수 있을 것이다.
도 2는 본 발명에 따른 데이터 처리 장치 의 각 구성 요소 간의 기능을 설명하기 위한 참고도이다. 도 2에 도시된 예는 쓰레드 프로세스 간의 작업의 분할 또는 재할당이 쓰레드 옵저버부(140)에 의하여 수행되는 실시예를 가정하여 설명하나, 전술한 바와 같이 해당 기능은 쓰레드 관리부(120)에 의하여 수행될 수 있음은 물론이다.
도 2를 참조하면, 잡 관리부(130)는 정의된 내용의 작업, 즉 잡(처리할 데이터)에 대한 분할 처리를 쓰레드 관리부(120)에 요청할 수 있다.
쓰레드 관리부(120)는 작업을 수행하기 위한 복수의 쓰레드 프로세스를 생성할 수 있다. 여기에서, 쓰레드 관리부(120)는 전술한 바와 같이, (i) 시스템의 모니터링 정보만을 또는 (ii) 시스템의 모니터링 정보와 잡에 대한 정보를 모두 이용하여 생성할 쓰레드 프로세스의 수를 결정할 수 있다.
쓰레드 관리부(120)는 생성한 복수의 쓰레드 프로세스들에 대하여 작업 범위를 할당하고, 각 쓰레드 프로세스에 대하여 모니터링을 수행하도록 쓰레드 옵저버부(140)를 등록시킬 수 있다.
쓰레드 옵저버부(140)는 각 쓰레드 프로세스를 모니터링하고, 특정 쓰레드 프로세스가 종료되는지 확인할 수 있다.
쓰레드 관리부(120)는 복수의 쓰레드 프로세스들을 이용하여 분할 처리를 수행할 수 있고, 리소스 모니터링부(110)는 모니터링 정보가 갱신되면 쓰레드 옵저버부(140)에 이를 제공할 수 있다
쓰레드 옵저버부(140)는 갱신된 모니터링 정보를 이용하여 복수의 쓰레드 프로세스 간의 작업 분배/할당 정책을 결정하여 쓰레드 관리부(120)에 제공하고, 쓰레드 관리부(120)는 제공된 작업 분배/할당 정책에 따라 쓰레드 프로세스에 대한 작업 수정을 수행할 수 있다.
쓰레드 관리부(120)는 모든 쓰레드 프로세스가 작업을 종료하였는지 확인할 수 있다.
도 3은 본 발명에 따른 데이터 처리 방법의 일 실시예를 설명하는 순서도이다.
도 3을 참조하면, 데이터 처리 장치(100)는 시스템 자원을 확인하여 자원 모니터링 정보를 생성할 수 있다(단계 S310).
데이터 처리 장치(100)는 자원 모니터링 정보를 이용하여 쓰레드 프로세스 객체의 수를 결정할 수 있고(단계 S320), 결정된 개수에 따라 복수의 쓰레드 프로세스 객체들을 생성할 수 있다(단계 S330).
데이터 처리 장치(100)는 처리할 데이터를 복수개로 분할하여 복수의 쓰레드 프로세스 객체들에게 제공할 수 있다(단계 S340).
일 실시예예서, 데이터 처리 장치(100)는 주기적으로 상기 시스템 자원을 재확인하여 상기 자원 모니터링 정보를 갱신할 수 있다.
일 실시예예서, 데이터 처리 장치(100)는 자원 모니터링 정보가 갱신될 때마다 갱신된 자원 모니터링 정보를 반영하여 쓰레드 프로세스 객체의 수를 재결정하고, 재결정된 개수에 따라 적어도 하나의 쓰레드 프로세스 객체를 생성 또는 삭제할 수 있다.
단계 S340에 대한 일 실시예예서, 데이터 처리 장치(100)는 처리할 데이터를 소정의 크기로 분할하여 복수의 단위 작업을 생성하고, 생성된 복수의 단위 작업을 복수의 쓰레드 프로세스 객체들에게 균등한 개수로 분배하여 제공할 수 있다.
단계 S340에 대한 일 실시예예서, 데이터 처리 장치(100)는 처리할 데이터를 복수의 쓰레드 프로세스 객체들의 수에 상응하는 개수로 균등하게 분할하여 복수의 쓰레드 프로세스 객체들에게 각각 제공하고, 복수의 쓰레드 프로세스 객체들 각각에 대하여 해당 쓰레드 프로세스 객체에 제공된 단위 작업을 최대 단위 작업 개수가 될 때까지 각각 지수 분할할 수 있다.
단계 S340에 대한 일 실시예예서, 데이터 처리 장치(100)는 복수의 쓰레드 프로세스 객체들의 작업 처리 현황을 확인하여 작업 처리 현황 정보를 생성할 수 있다.
일 실시예예서, 데이터 처리 장치(100)는 작업 처리 현황 정보를 이용하여 자신에게 할당된 단위 작업이 완료된 제1 쓰레드 프로세스 객체가 존재하는지 여부를 확인하고, 확인한 결과 만약 존재하면 자신에게 할당된 단위 작업이 완료되지 않은 제2 쓰레드 프로세스 객체에게 할당된 적어도 하나의 단위 작업 중 어느 하나를 제1 쓰레드 프로세스 객체에게 동적으로 재할당할 수 있다.
여기에서, 동적으로 재할당되는 적어도 하나의 단위 작업 중 어느 하나는 제2 쓰레드 프로세스 객체에게 현재 할당된 적어도 하나의 단위 작업 중에서 가장 크기가 큰 것일 수 있다.
도 4는 본 발명에 따른 데이터 처리 방법의 다른 일 실시예를 설명하는 순서도이다. 도 4에 개시된 다른 일 실시예는 처리할 데이터(잡)의 크기를 더 반영하여 쓰레드 프로세스를 생성하거나 조절하는 실시예에 관한 것이다.
도 4를 참조하면, 데이터 처리 장치(100)는 시스템 자원을 확인하여 자원 모니터링 정보를 생성할 수 있다(단계 S410).
데이터 처리 장치(100)는 자원 모니터링 정보 및 처리할 데이터의 크기를 반영하여 쓰레드 프로세스 객체의 수를 결정할 수 있고(단계 S420), 결정된 개수에 따라 복수의 쓰레드 프로세스 객체들을 생성할 수 있다(단계 S430).
데이터 처리 장치(100)는 처리할 데이터를 복수개의 단위 작업들로 분할하고, 분할된 복수개의 단위 작업들을 복수의 쓰레드 프로세스 객체들에게 제공하여 데이터를 처리할 수 있다(단계 S440).
자원 모니터링 정보가 갱신되면(단계 S450, 예), 데이터 처리 장치(100)는 갱신된 자원 모니터링 정보를 이용하여 현재의 쓰레드 프로세스 객체들의 개수를 변경하고(단계 S460), 복수의 쓰레드 프로세스 객체에게 각각 할당된 단위 작업을 조정할 수 있다(단계 S470).
도 5는 본 발명에 의한 쓰레드 분배 과정의 일 실시예를 설명하는 순서도이다.
도 5를 참조하면, 데이터 처리 장치(100)는 처리할 데이터를 복수의 쓰레드 프로세스에 할당할 수 있다(단계 S510).
데이터 처리 장치(100)는 복수의 쓰레드 프로세스들을 실행할 수 있다(단계 S520).
데이터 처리 장치(100)는 종료된 쓰레드 프로세스가 있는지 확인하고(단계 S530), 만약 존재하면 아직도 실행 중인 쓰레드 프로세스가 있는지 확인할 수 있다(단계 S540).
실행 중인 쓰레드 프로세스가 있으면, 데이터 처리 장치(100)는 실행 중인 쓰레드 프로세스의 단위 작업을 종료된 쓰레드 프로세스에 분배하고(단계 S550), 모든 쓰레드 프로세스가 종료되었는지 확인하여(단계 S560) 단계 S540 내지 S560을 반복적으로 수행할 수 있다.
도 6 내지 도 11은 본 발명에 따라 전체 데이터를 각 쓰레드 프로세스에 분할하는 예를 설명하기 위한 참고도들이다. 도 6 내지 도 11에 도시된 예는 2개의 쓰레드 프로세스를 가정하여 설명한다.
도 6에서, 데이터 처리 장치(100)는 처리할 전체 데이터를 각 쓰레드에 동등하게 분할할 수 있다.
도 7에서, 쓰레드 프로세스는 자신에게 분배된 단위 작업을 소정 개수로 지수(exponential) 분할할 수 있다.
예를 들어, 쓰레드 프로세스는 자신에게 할당된 단위 작업을 두 개의 제1 서브 단위 작업들로 나누고, 두 개의 제1 서브 단위 작업들 중 어느 하나를 또 다시 2개의 서브 단위 작업들로 나눌 수 있다. 쓰레드 프로세스는 단위 작업이 소정의 임계수치(최대 단위 작업 개수)에 이를 때 까지 이와 같은 반복적인 분할 과정을 반복할 수 있다. 여기에서, 지수 분할을 위한 최대 단위 작업 개수(threshold)는 아래의 수학식 1과 같이 계산될 수 있다.
Figure pat00001
여기서 지수 분할 하는 것은, 이후의 작업 분배의 조정에 있어서 가장 큰 단위 작업을 스틸 및 재분배하기 위함이며, 이와 같이 가장 큰 단위 작업을 기준으로 재분배를 수행하는 것은 재분배의 횟수를 줄이는 효과를 얻게 되어 보다 높은 효율성을 가져올 수 있다.
도 8에서, 분할된 복수의 단위 작업들은 각 쓰레드 프로세스의 작업 큐에 저장될 수 있고, 각 쓰레드 프로세스는 자신의 작업 큐에 저장된 단위작업들을 크기가 작은 작업을 먼저 처리하는 순서로 처리할 수 있다.
이를 위하여 데이터 처리 장치(100)는 복수의 단위 작업들은 각 쓰레드 프로세스의 작업 큐에 저장할 때 작은 크기의 단위 작업부터 입력시킬 수 있다.
도 9에서, 1번 쓰레드 프로세스는 자신에게 할당된 모든 단위 작업을 완료하였음을 알 수 있고, 따라서, 데이터 처리 장치(100)는 제2 쓰레드 프로세스의 작업 큐에 저장된 단위 작업 중 가장 큰 단위 작업을 1번 쓰레드 프로세스에게 재할당(Stealing)할 수 있다.
도 10에서, 1번 쓰레드 프로세스에 재할당(Stealing)된 단위 작업을 다시 지수 분할하여 저장되었음을 알 수 있고, 도 11에서, 2번 쓰레드 프로세스가 자신에게 할당된 단위 작업을 완료하는 경우, 1번 쓰레드 프로세스로부터 가장 큰 단위 작업을 다시 재할당하는 것을 알 수 있다.
이와 같이, 본 발명은 다중 쓰레드 처리 환경에서 모든 쓰레드가 매 순간 동시에 작업을 처리해야 자원을 낭비하지 않고 최대의 효율을 얻을 수 있도록 할 수 있다. 실제적으로 모든 쓰레드가 동일한 속도로 작업을 처리할 수는 없기 때문에 먼저 종료된 쓰레드는 다른 쓰레드의 남는 작업을 가져와(stealing) 처리를 계속해야 하며, 이 때 stealing이 자주 발생하면 성능을 저하시키기 때문에 stealing을 줄이면서 쓰레드 자원 사용을 최대화하는 것은 매우 중요한 요소이다. 본 발명은 이러한 부분을 개선하기 위해 단위 작업 분할 시, 기존의 동등 분할 대신 지수 분할(exponential splitting)을 적용함으로써 높은 효율을 가질 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100 : 데이터 처리 장치
110 : 리소스 모니터링부 120 : 쓰레드 관리부
130 : 잡 관리부 140 : 쓰레드 옵저버부

Claims (20)

  1. 다중 쓰레드를 기반으로 데이터를 처리하는 데이터 처리 장치에 있어서,
    시스템 자원을 확인하여 자원 모니터링 정보를 생성하는 리소스 모니터링부;
    상기 자원 모니터링 정보를 이용하여 쓰레드 프로세스 객체의 수를 결정하고, 결정된 개수에 따라 복수의 쓰레드 프로세스 객체들을 생성하는 쓰레드 관리부; 및
    처리할 데이터를 복수개로 분할하여 상기 복수의 쓰레드 프로세스 객체들에게 제공하는 잡 관리부를 포함하는 데이터 처리 장치.
  2. 제1항에 있어서, 상기 쓰레드 관리부는
    상기 처리할 데이터의 크기 정보를 더 이용하여 상기 쓰레드 프로세스 객체의 수를 결정하는 것을 특징으로 하는 데이터 처리 장치.
  3. 제1항에 있어서, 상기 잡 관리부는
    상기 처리할 데이터를 소정의 크기로 분할하여 복수의 단위 작업을 생성하고, 생성된 복수의 단위 작업을 상기 복수의 쓰레드 프로세스 객체들에게 균등한 개수로 분배하여 제공하는 것을 특징으로 하는 데이터 처리 장치.
  4. 제1항에 있어서, 상기 잡 관리부는
    상기 처리할 데이터를 상기 복수의 쓰레드 프로세스 객체들의 수에 상응하는 개수로 균등하게 분할하여 상기 복수의 쓰레드 프로세스 객체들에게 각각 제공하고,
    상기 복수의 쓰레드 프로세스 객체들은
    자신에게 제공된 단위 작업을 최대 단위 작업 개수가 될 때까지 서로 다른 크기로 각각 분할하는 것을 특징으로 하는 데이터 처리 장치.
  5. 제4항에 있어서, 상기 복수의 쓰레드 프로세스 객체들은
    상기 자신에게 제공된 단위 작업을 최대 단위 작업 개수가 될 때까지 각각 지수 분할 하는 것을 특징으로 하는 데이터 처리 장치.
  6. 제1항에 있어서, 상기 리소스 모니터링부는
    주기적으로 상기 시스템 자원을 확인하여 상기 자원 모니터링 정보를 갱신하는 것을 특징으로 하는 데이터 처리 장치.
  7. 제6항에 있어서, 상기 쓰레드 관리부는
    상기 갱신된 자원 모니터링 정보를 반영하여 상기 쓰레드 프로세스 객체의 수를 재결정하고, 재결정된 개수에 따라 적어도 하나의 쓰레드 프로세스 객체를 생성 또는 삭제하는 것을 특징으로 하는 데이터 처리 장치.
  8. 제1항에 있어서, 상기 데이터 처리 장치는
    상기 복수의 쓰레드 프로세스 객체들의 작업 처리 현황을 확인하여 작업 처리 현황 정보를 생성하는 쓰레드 옵저버부를 더 포함하는 것을 특징으로 하는 데이터 처리 장치.
  9. 제8항에 있어서, 상기 쓰레드 관리부는
    상기 작업 처리 현황 정보를 이용하여 자신에게 할당된 단위 작업이 완료된 제1 쓰레드 프로세스 객체가 존재하는지 여부를 확인하고, 그 결과에 따라 자신에게 할당된 단위 작업이 완료되지 않은 제2 쓰레드 프로세스 객체에게 할당된 가장 큰 크기의 단위 작업을 상기 제1 쓰레드 프로세스 객체에게 동적으로 재할당하는 것을 특징으로 하는 데이터 처리 장치.
  10. 다중 쓰레드를 기반으로 데이터를 처리하는 데이터 처리 장치에서 수행되는 데이터 처리 방법에 있어서,
    (a) 시스템 자원을 확인하여 자원 모니터링 정보를 생성하는 단계;
    (b) 상기 자원 모니터링 정보를 이용하여 쓰레드 프로세스 객체의 수를 결정하고, 결정된 개수에 따라 복수의 쓰레드 프로세스 객체들을 생성하는 단계; 및
    (c) 처리할 데이터를 복수개로 분할하여 상기 복수의 쓰레드 프로세스 객체들에게 제공하는 단계를 포함하는 데이터 처리 방법.
  11. 제10항에 있어서, 상기 (b) 단계는
    처리할 데이터의 크기 정보를 더 이용하여 상기 쓰레드 프로세스 객체의 수를 결정하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  12. 제10항에 있어서, 상기 (c) 단계는
    상기 처리할 데이터를 소정의 크기로 분할하여 복수의 단위 작업을 생성하고, 생성된 복수의 단위 작업을 상기 복수의 쓰레드 프로세스 객체들에게 균등한 개수로 분배하여 제공하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  13. 제10항에 있어서, 상기 (c) 단계는
    상기 처리할 데이터를 상기 복수의 쓰레드 프로세스 객체들의 수에 상응하는 개수로 균등하게 분할하여 상기 복수의 쓰레드 프로세스 객체들에게 각각 제공하는 단계; 및
    상기 복수의 쓰레드 프로세스 객체들 각각에 대하여, 해당 쓰레드 프로세스 객체에 제공된 단위 작업을 최대 단위 작업 개수가 될 때까지 각각 지수 분할하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  14. 제13항에 있어서, 상기 (c) 단계는
    상기 복수의 쓰레드 프로세스 객체들의 작업 처리 현황을 확인하여 작업 처리 현황 정보를 생성하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  15. 제10항에 있어서, 상기 데이터 처리 방법은
    (d) 주기적으로 상기 시스템 자원을 재확인하여 상기 자원 모니터링 정보를 갱신하는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  16. 제15항에 있어서, 상기 (d) 단계는
    상기 갱신된 자원 모니터링 정보를 이용하여 상기 쓰레드 프로세스 객체의 수를 재결정하는 단계; 및
    상기 재결정된 개수에 따라 적어도 하나의 쓰레드 프로세스 객체를 생성 또는 삭제하는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  17. 제14항 또는 제 16항에 있어서, 상기 (d) 단계는
    상기 작업 처리 현황 정보를 이용하여 자신에게 할당된 단위 작업이 완료된 제1 쓰레드 프로세스 객체가 존재하는지 확인하는 단계; 및
    상기 확인한 결과에 따라, 자신에게 할당된 단위 작업이 완료되지 않은 제2 쓰레드 프로세스 객체에게 할당된 적어도 하나의 단위 작업 중 어느 하나를 상기 제1 쓰레드 프로세스 객체에게 동적으로 재할당하는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  18. 제17항에 있어서, 상기 적어도 하나의 단위 작업 중 어느 하나는
    상기 제2 쓰레드 프로세스 객체에게 현재 할당된 적어도 하나의 단위 작업 중에서 가장 크기가 큰 것인 것을 특징으로 하는 데이터 처리 방법.
  19. 다중 쓰레드를 기반으로 데이터를 처리하는 데이터 처리 장치에서 수행되는 데이터 처리 방법을 실행시키기 위한 프로그램을 기록한 기록매체에 있어서, 상기 프로그램은
    (a) 시스템 자원을 확인하여 자원 모니터링 정보를 생성하는 기능;
    (b) 상기 자원 모니터링 정보를 이용하여 쓰레드 프로세스 객체의 수를 결정하고, 결정된 개수에 따라 복수의 쓰레드 프로세스 객체들을 생성하는 기능; 및
    (c) 처리할 데이터를 복수개로 분할하여 상기 복수의 쓰레드 프로세스 객체들에게 제공하는 기능을 포함하는 것을 특징으로 하는 기록매체.
  20. 제19항에 있어서, 상기 (b) 기능은
    처리할 데이터의 크기 정보를 더 이용하여 상기 쓰레드 프로세스 객체의 수를 결정하는 것을 특징으로 하는 기록매체.
KR1020120061182A 2012-06-07 2012-06-07 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법 KR101392584B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120061182A KR101392584B1 (ko) 2012-06-07 2012-06-07 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120061182A KR101392584B1 (ko) 2012-06-07 2012-06-07 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20130137503A true KR20130137503A (ko) 2013-12-17
KR101392584B1 KR101392584B1 (ko) 2014-05-27

Family

ID=49983724

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120061182A KR101392584B1 (ko) 2012-06-07 2012-06-07 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101392584B1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101692964B1 (ko) * 2016-07-11 2017-01-05 주식회사 넷츠 프로비저닝 장치 및 그 방법
KR20170103462A (ko) * 2016-03-04 2017-09-13 엘에스산전 주식회사 에너지관리시스템에서의 서버장치 및 이의 동작방법
KR20180018302A (ko) * 2016-08-11 2018-02-21 삼성전자주식회사 데이터 프로세싱 엔진 및 그것의 리소스 관리 방법
KR20180031481A (ko) * 2016-09-20 2018-03-28 국방과학연구소 동적 재구성이 가능한 다중 데이터 링크 처리기
KR20200020485A (ko) * 2018-08-17 2020-02-26 주식회사 한컴엠디에스 운영체제 시스템의 자원 관리 장치 및 방법
KR102207370B1 (ko) * 2020-08-04 2021-01-27 이쎌 주식회사 실시간 객체 추적 방법 및 이러한 방법을 사용하는 장치
KR102453343B1 (ko) * 2022-07-26 2022-10-11 (주)나래데이터 데이터 이관 작업에 대한 스케줄링을 통해 빠른 데이터 이관을 가능하게 하는 전자 장치 및 그 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090081749A (ko) * 2008-01-25 2009-07-29 삼성전자주식회사 응용프로그램의 자원 모니터링 방법 및 그 장치
KR101572879B1 (ko) * 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170103462A (ko) * 2016-03-04 2017-09-13 엘에스산전 주식회사 에너지관리시스템에서의 서버장치 및 이의 동작방법
KR101692964B1 (ko) * 2016-07-11 2017-01-05 주식회사 넷츠 프로비저닝 장치 및 그 방법
KR20180018302A (ko) * 2016-08-11 2018-02-21 삼성전자주식회사 데이터 프로세싱 엔진 및 그것의 리소스 관리 방법
KR20180031481A (ko) * 2016-09-20 2018-03-28 국방과학연구소 동적 재구성이 가능한 다중 데이터 링크 처리기
KR20200020485A (ko) * 2018-08-17 2020-02-26 주식회사 한컴엠디에스 운영체제 시스템의 자원 관리 장치 및 방법
KR102207370B1 (ko) * 2020-08-04 2021-01-27 이쎌 주식회사 실시간 객체 추적 방법 및 이러한 방법을 사용하는 장치
KR102453343B1 (ko) * 2022-07-26 2022-10-11 (주)나래데이터 데이터 이관 작업에 대한 스케줄링을 통해 빠른 데이터 이관을 가능하게 하는 전자 장치 및 그 동작 방법

Also Published As

Publication number Publication date
KR101392584B1 (ko) 2014-05-27

Similar Documents

Publication Publication Date Title
KR101392584B1 (ko) 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법
EP3104274B1 (en) Systems and methods for scheduling tasks using sliding time windows
US8499010B2 (en) Garbage collection in a multiple virtual machine environment
US9619263B2 (en) Using cooperative greedy ballooning to reduce second level paging activity
US20070204268A1 (en) Methods and systems for scheduling processes in a multi-core processor environment
JP2009528610A (ja) タスクの実行フェーズに基づいてキャッシュパーティションを動的にリサイズする方法及び装置
US20150186184A1 (en) Apparatus and method for optimizing system performance of multi-core system
KR102110812B1 (ko) 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
KR20130011491A (ko) 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
US20090019439A1 (en) Thread pool management apparatus and method
JP2008257572A (ja) 論理区画に動的に資源割り当てを行うストレージシステム及びストレージシステムの論理分割方法
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
US9471387B2 (en) Scheduling in job execution
KR20130019698A (ko) 사용자 스케줄러와 마이그레이션(Migration)을 통한 자원 최적화 방법 및 시스템
KR20110075296A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US8352702B2 (en) Data processing system memory allocation
Liu et al. Supporting soft real-time parallel applications on multicore processors
KR20130080663A (ko) 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
CN111352735A (zh) 数据加速方法、装置、存储介质及设备
US9740530B2 (en) Decreasing the priority of a user based on an allocation ratio
US8977752B2 (en) Event-based dynamic resource provisioning
CN110795323A (zh) 负载统计方法、装置、存储介质及电子设备
JP6239400B2 (ja) 制御装置
JP4409568B2 (ja) 帯域制御プログラム及びマルチプロセッサシステム
Gouasmi et al. Cost-efficient distributed MapReduce job scheduling across cloud federation

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
FPAY Annual fee payment

Payment date: 20170403

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180404

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 6