KR20090006572A - 쓰레드 풀 관리 장치 및 방법 - Google Patents

쓰레드 풀 관리 장치 및 방법 Download PDF

Info

Publication number
KR20090006572A
KR20090006572A KR1020070070032A KR20070070032A KR20090006572A KR 20090006572 A KR20090006572 A KR 20090006572A KR 1020070070032 A KR1020070070032 A KR 1020070070032A KR 20070070032 A KR20070070032 A KR 20070070032A KR 20090006572 A KR20090006572 A KR 20090006572A
Authority
KR
South Korea
Prior art keywords
thread
work
idle
threads
pool
Prior art date
Application number
KR1020070070032A
Other languages
English (en)
Inventor
권자근
정승범
이형주
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020070070032A priority Critical patent/KR20090006572A/ko
Priority to US11/871,443 priority patent/US20090019439A1/en
Publication of KR20090006572A publication Critical patent/KR20090006572A/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명은 쓰레드 풀 관리 장치 및 방법에 관한 것으로서, 본 발명에 따른 쓰레드 풀 관리 장치 및 방법은 쓰레드 풀을 관리하는 소정의 관리 정책을 설정하는 단계 및 상기 관리 정책에 따라 상기 쓰레드 풀을 관리하는 단계를 포함한다.
쓰레드(thread), 쓰레드 풀, 피보나치 수열

Description

쓰레드 풀 관리 장치 및 방법{Apparatus and method for managing thread pool}
본 발명은 쓰레드 풀 관리 장치 및 방법에 관한 것으로, 보다 상세하게는 쓰레드 풀을 관리하는 소정의 정책을 설정하고, 설정된 정책에 따라 상기 쓰레드 풀 및 워크 쓰레드를 관리하는 장치 및 방법에 관한 것이다.
도 1은 종래기술에 따른 쓰레드 풀 관리 방법을 나타내는 도면이다.
도 1을 참조하면, 클라이언트(Client)(10)가 쓰레드 풀(Thread pool)(20)에 어플리케이션 쓰레드의 수행을 요청하면, 쓰레드 풀(20)은 어플리케이션 쓰레드의 요청을 큐(Queue)(30)에 저장한다. 큐(30)에 저장한 후, 쓰레드 풀(20)은 큐(30)에 저장되어 있는 어플리케이션 쓰레드의 요청을 아이들(idle) 상태에 있는 워크(work) 쓰레드(40)에 할당한다. 할당 받은 워크 쓰레드(40)는 어플리케이션 쓰레드의 요청을 수행한다.
전술한 바와 같은, 종래의 쓰레드 풀 관리방법은 쓰레드 풀의 크기, 즉, 워 크 쓰레드의 개수를 변경하지 못하는 문제점이 있다.
또한, 쓰레드 풀이 API(Application Program Interface)레벨에서 구현되어 쓰레드 로직(logic)에 많은 제약이 있다. 특히, 특정 쓰레드를 제어하는 방법이 없기 때문에, 쓰레드 풀의 성능이 저하되는 문제점이 있다.
따라서, 쓰레드 풀의 크기 즉, 워크 쓰레드의 개수를 동적으로 할당하는 쓰리드 풀 관리 방법이 필요하다.
본 발명은 상기와 같은 문제점을 해결하기 위해 창안된 것으로써, 본 발명이 이루고자 하는 기술적 과제는, 기 설정된 쓰레드 풀이 처리할 수 있는 용량 보다 많은 요청이 있는 경우 새로운 워크 쓰레드를 생성하여 요청을 처리하고, 아이들 쓰레드가 일정 개수 이상인 경우 아이들 워크 쓰레드를 제거하여 동적으로 쓰레드 풀을 관리하는 장치 및 방법을 제공하는 것이다.
또한, 본 발명이 이루고자 하는 또 다른 기술적 과제는, 워크 쓰레드를 옵저버(Observer)로 변형하여, 아이들 워크 쓰레드를 관리하는 장치 및 방법을 제공하는 것이다.
또한, 본 발명이 이루고자 하는 또 다른 기술적 과제는, 가상 머신 레벨에 쓰레드 풀이 구현되어, 쓰레드 로직에 제약없이 워크 쓰레드를 관리하는 장치 및 방법을 제공하는 것이다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 쓰레드 풀 관리 장치는 소정의 관리 정책을 설정하는 기준 설정 모듈, 상기 관리 정책에 따라 워크 쓰레드를 생성하는 워크 쓰레드 생성 모듈 및 상기 관리 정책에 따라 쓰레드 풀을 관리하는 제어 모듈을 포함한다.
또한, 본 발명의 일 실시예에 따라 쓰레드 풀 관리 방법은 쓰레드 풀을 관리하는 소정의 관리 정책을 설정하는 단계 및 상기 관리 정책에 따라 상기 쓰레드 풀을 관리하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
상기한 바와 같은 본 발명의 쓰레드 풀 관리 장치 및 방법에 따르면, 쓰레드 풀이 워크 쓰레드를 동적으로 증감할 수 있어, 어플리케이션 쓰레드의 처리 속도를 증가시키는 장점이 있다.
또한, 옵저버를 이용하여 아이들 워크 쓰레드를 관리하여 어플리케이션 쓰레드의 처리 속도를 증가시키는 장점이 있다.
또한, 쓰레드 풀이 가상 머신 레벨에서 구현되어, 쓰레드 로직에 제약없이 워크 쓰레드를 관리하여 어플리케이션 쓰레드의 처리 속도를 증가시키는 장점이 있다.
또한, 쓰레드 풀이 가상 머신 레벨에서 구현되어, 자바 프로그램과 완전히 호환되는 장점이 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 어플리케이션 쓰레드의 요청 및 요청을 수행하는 쓰레드 풀의 구성요소를 계층별로 나타내는 도면이다.
도 2를 참조하면, 클라이언트(Client)는 특정 작업 수행을 요청하는 어플리케이션 쓰레드(210)를 쓰레드 API(Application Program Interface)(220)에 전달한다. 여기서, APIs(230)는 다양한 기능을 수행하는 함수들을 지원한다. 특히, 쓰레드 API(220)는 어플리케이션 쓰레드(210)를 수행하는데 필요한 함수들을 지원한다. 쓰레드 API(220)를 지원하는 함수 및 함수에 대응하는 기능은 도 3을 참조하여 후술하기로 한다.
가상 머신(Virtual Machine)(250)은 특정 컴퓨터 언어로 작성된 프로그램을 해석해서 실행하는 가상적 컴퓨터 언어로 기술된 프로그램을 컴파일러에 의해 바이트 코드라는 중간 코드로 변환하고, 변환된 바이트 코드를 해석해서 실행하는 소프트웨어이다. 가상 머신을 설치한 컴퓨터라면, 컴퓨터의 명령 집합 아키텍처나 운영 시스템에 관계없이 같은 바이트를 변경하지 않고 실행할 수 있다.
쓰레드 풀 관리 장치(240)는 가상 머신(250) 계층에 위치하므로, 가상 머신(250)의 장점을 모두 가지고 있다. 따라서, 락(Lock) 등의 사용에 제약이 없어 쓰레드 간의 동기화 및 동기화된 쓰레드를 처리하는데 유용한 장점이 있다. 쓰레드 풀 관리 장치(240)의 구성 요소는 도 4를 참조하여 후술하기로 한다.
도 3은 쓰레드 풀 관리장치를 운영하는 프로그램의 함수 및 함수 기능의 예시를 나타내는 도표이다.
도 3을 참조하여 쓰레드 풀을 구현하는데 필요한 함수 및 함수의 기능을 정의한다.
addNativeThread(302)는 쓰레드 풀을 내부적으로 관리하는 워크 쓰레드 하나를 추가한다. getNextAvailThread(304)는 쓰레드 풀내에 워크 쓰레드를 반환한다. getNumAvailThreads(306)는 쓰레드 풀내에 사용 가능한 워크 쓰레드의 개수를 반환한다. removeNativeThread(308)는 쓰레드 풀 내에 등록된 특정 워크 쓰레드 한 개 및 관련 데이터를 제거한다. startObserverThread(310)는 쓰레드 풀 내에 특정 시간 동안 사용되지 않는 워크 쓰레드를 제거하여 자원을 반납하는 기능을 담당하는 옵저버를 실행 시킨다. enforceNTPPolicy(312)는 옵저버의 수행에 필요한 쓰레드 풀 관리 정책을 수행하는 기능을 한다. CreateThreadPool(314)는 쓰레드 풀 생성한 다. set/getPoolSize(316)는 쓰레드 풀의 크기를 설정한다. requestNativeThread(318)는 쓰레드 풀이 어플리케이션 쓰레드를 수행하기 위해 워크 쓰레드 요청한다. createNativeThread(320)는 워크 쓰레드를 새로이 생성하는 기능을 한다. getExecEnv(322)는 워크 쓰레드에서 수행되고 있는 어플리케이션 쓰레드의 실행 환경(Execution Environment) 구조를 불러오는 기능을 한다. terminateNTP(324)는 쓰레드 풀을 종료시키는 기능으로, 현재 어플리케이션 쓰레드를 수행중인 워크 쓰레드를 제외한 모든 쓰레드를 종료시킨다. 여기서, 함수 및 함수의 기능은 일 실시예에 불과하며, 쓰레드 풀 관리 장치(240)를 구현하기 위해 추가되거나 변경될 수 있다.
도 4는 본 발명의 일 실시예에 따라 쓰레드 풀 관리장치의 구성도이다.
도 4를 참조하면, 쓰레드 풀 관리 장치(240)는 기준 설정 모듈(410), 워크 쓰레드 생성 모듈(420), 제어 모듈(430), 워크 쓰레드 변형 모듈(440), 워크 쓰레드 제거 모듈(450), 저장 모듈(460) 및 수신 모듈(470)을 포함한다.
기준 설정 모듈(410)은 쓰레드 풀을 관리하는 관리 정책을 다음과 같이 설정할 수 있다.
첫째, 쓰레드 풀의 초기 설정 크기, 최소 설정 크기 및 최대 설정 크기를 결정한다. 여기서, 크기는 워크 쓰레드의 개수를 의미한다.
둘째, 쓰레드 풀이 워크 쓰레드를 추가로 생성할 때, 생성되는 워크 쓰레드의 개수를 결정한다. 사용 환경 또는 사용자의 설정에 따라, 한 번에 한 개 또는 여러 개의 워크 쓰레드를 생성할 수 있다.
셋째, 워크 쓰레드를 옵저버로 변형하는 기준 값을 제공한다. 여기서, 기준 값은 유용한 워크 쓰레드의 개수가 최소 설정크기와 한 번에 제거될 워크 쓰레드를 합친 값보다 큰 경우를 의미한다. 또한, 기준 값은 워크 쓰레드가 점유하는 메모리 값이 일정 기준 값을 초과하는 경우를 의미할 수 있다. 이에 한정되지 않으며, 기준 값은 사용자의 설정에 따라 정해질 수 있다.
넷째, 옵저버가 아이들 워크 쓰레드의 개수를 탐색하는 특정 주기를 결정한다. 여기서, 특정 주기는 아이들 워크 쓰레드의 개수에 의해 결정된다. 예를 들어, 아이들 워크 쓰레드가 100개 이상이면 특정 주기는 0.5초, 아이들 워크 쓰레드가 50개 미만이면 특정 주기는 2초로 설정될 수 있다. 이에 한정되지 않으며, 기준 값은 사용자의 설정 또는 피보나치(Fibonacci) 수열에 따라 정해질 수 있다.
다섯째, 옵저버가 아이들 워크 쓰레드의 제거 여부를 결정하는 기준 값을 설정한다. 여기서, 기준 값은 아이들 워크 쓰레드의 개수에 의존한다. 전술한 바와 같이, 예를 들어, 옵저버가 0.5초를 주기로 아이들 워크 쓰레드를 탐색하는 경우, 아이들 워크 쓰레드가 100개를 초과하면 워크 쓰레드 제거 모듈(450)을 이용하여 초과된 아이들 워크 쓰레드를 제거한다. 기준 값은 사용자의 설정에 따라 결정될 수 있을 뿐만 아니라 사용 환경에 따라 변경될 수 있다.
클라이언트의 요청에 따라 어플레케이션 쓰레드를 수행할 아이들 워크 쓰레드가 없는 경우, 워크 쓰레드 생성 모듈(420)은 제어 모듈(430)의 요청에 따라 워크 쓰레드를 생성하는 역할을 한다. 여기서, 생성될 워크 쓰레드는 기준 설정 모듈(410)이 설정한 개수만큼 생성된다.
워크 쓰레드 변형 모듈(440)은 워크 쓰레드를 옵저버로 변형하는 역할을 한다. 반대로, 옵저버를 워크 쓰레드로 변형하는 역할도 한다. 전술한 바와 같이, 기준 설정 모듈(410)의 관리정책에 따라 기준 값이 결정되면, 이 기준 값에 따라 워크 쓰레드 변형 모듈(440)이 동작한다.
워크 쓰레드 제거 모듈(450)은 옵저버가 아이들 워크 쓰레드를 탐색하여, 탐색한 아이들 워크 쓰레드가 기준 설정 모듈(410)의 관리정책에 따라 설정된 기준 값 이상인 경우, 아이들 워크 쓰레드를 제거하는 역할을 한다.
저장 모듈(460)은 기준 설정 모듈(460)이 설정한 관리 정책, 클라이언트로부터 요청받은 어플리케이션 쓰레드, 워크 쓰레드 및 아이들 워크 쓰레드 중 적어도 하나를 저장하는 역할을 한다.
수신 모듈(470)은 클라이언트로부터 요청 받은 어플리케이션 쓰레드의 수행을 요청받는 역할을 한다.
제어 모듈(430)은 쓰레드 관리장치(240)를 구성하는 모든 모듈을 관리하고 제어하며, 어플리케이션 쓰레드의 요청을 워크 쓰레드에 할당하는 역할을 한다.
도 5 및 도 6은 본 발명의 일 실시예에 따라 워크 쓰레드의 생성 및 수행요청을 하는 쓰레드 풀의 관리 방법을 나타내는 플로우 차트이다.
도 5 및 도 6을 참조하면, 클라이언트는 어플리케이션 쓰레드(210)를 생성한다(S510).
쓰레드 풀 관리 장치(240)는 어플리케이션 쓰레드(210)의 요청을 저장하고, 저장된 어플리케이션 쓰레드(210)의 요청을 수행할 워크 쓰레드를 요청한다(S520).
워크 쓰레드 요청을 받은 쓰레드 풀 관리 장치(240)는 유용한 워크 쓰레드가 존재하는지를 확인한다(S530).
유용한 워크 쓰레드가 존재하는 경우, 쓰레드 풀 관리 장치(240)는 유용한 워크 쓰레드에 어플리케이션 쓰레드(210)의 요청을 할당한다(S540). 할당을 받은 워크 쓰레드는 요청된 작업을 수행한다(S550).
유용한 워크 쓰레드가 존재하지 않는 경우, 쓰레드 풀 관리 장치(240)는 관리정책에 따라 쓰레드 풀이 최대 크기에 도달했는지를 확인한다(S610).
쓰레드 풀이 최대 크기에 도달한 경우, 일시적으로 사용할 워크 쓰레드를 생성한다(S640). 생성된 일시적으로 사용될 유용한 워크 쓰레드에 어플리케이션 쓰레드(210)의 요청을 할당한다(S540). 일시적으로 사용될 워크 쓰레드가 요청된 작업을 수행한다(S550). 여기서, 일시적으로 사용될 워크 쓰레드는 작업을 종료한 후 소멸되는 워크 쓰레드를 의미한다.
쓰레드 풀이 최대 크기에 도달하지 않은 경우, 워크 쓰레드를 생성(S620)한 후, 생성된 워크 쓰레드를 쓰레드 풀에 추가한다(S630). 생성된 워크 쓰레드에 어플리케이션 쓰레드의 요청을 할당하고(S540). 워크 쓰레드가 요청된 작업을 수행한다(S550).
도 7 및 도 8은 본 발명의 일 실시예에 따라 워크 쓰레드 및 옵저버가 요청된 작업을 수행하는 쓰레드 풀의 관리 방법을 나타내는 플로우 차트이다.
도 7 및 도 8을 참조하면, 워크 쓰레드가 쓰레드 풀에 대기 상태(S710)로 있을 때, 쓰레드 풀 관리장치(240)는 클라이언트로부터 어플리케이션 쓰레드(210)의 요청을 받는다(S720). 쓰레드 풀 관리장치(240)는 워크 쓰레드에 우선 순위를 설정한다(S730). 또한, 쓰레드 풀 관리장치(240)는 워크 쓰레드에 데몬(Daemon)을 설정할 수 도 있다. 여기서, 데몬은 컴퓨터 시스템의 운영에 관련된 작업을 후선(background) 상태로 동작하면서 실행하는 프로그램으로써, 처리해야 할 작업 조건이 발생하면 자동으로 작동하여 필요한 작업을 실행하는 역할을 한다.
우선 순위를 설정 받은 워크 쓰레드는 어플리케이션 쓰레드의 요청을 수행(S740)한다.
요청을 수행한 후, 쓰레드 풀 관리장치(240)는 워크 쓰레드 제거 요건을 만족하는지를 확인한다(S750). 여기서, 제거 요건은, 전술한 기준 설정 모듈(410)에 규정된 바와 같이, 쓰레드 풀을 구성하는 최대 쓰레드 개수를 초과하는 경우, 옵저버가 아이들 워크 쓰레드를 탐색한 후 탐색된 아이들 워크 쓰레드가 기준 값을 초과하는 경우 및 사용자 설정 중 적어도 하나의 요건을 만족하는 경우를 의미한다.
제거 요건을 만족하는 경우, 쓰레드 풀 관리장치(240)는 쓰레드 풀로부터 워크 쓰레드를 제거한다(S760).
그러나, 제거 요건을 만족하지 않는 경우, 쓰레드 풀 관리장치(240)는 옵저버가 활성화 되었는지를 확인한다(S820).
옵저버가 활성화 되어있는 경우, 쓰레드 풀 관리장치(240)는 워크 쓰레드를 초기화(S810)하여 쓰레드 풀로 복귀시킨다. 따라서. 워크 쓰레드는 쓰레드 풀 내에서 대기 상태에 있게 된다(S710).
옵저버가 활성화 되어 있지 않은 경우, 쓰레드 관리 장치(240)는 쓰레드 풀 이 관리 정책을 만족하는지를 확인한다(S830). 여기서, 관리 정책은, 전술한 바와 같이, 기준 설정 모듈(410)로부터 정의 되어진 관리 정책을 의미한다. 특히, 워크 쓰레드를 옵저버로 변형하는 기준값을 의미하는데, 기준 값은 유용 워크 쓰레드의 개수가 최소 설정크기와 한 번에 제거될 워크 쓰레드를 합친 값보다 큰 경우를 의미한다. 또한, 이에 한정되지 않으며 기준 값은 사용자의 설정에 따라 정해질 수 있다. 또한, 워크 쓰레드가 옵저버로 변형된 경우, 옵저버는 아이들 워크 쓰레드의 개수를 탐색하는 특정 주기를 결정한다. 여기서, 특정 주기는 아이들 워크 쓰레드의 개수에 의해 결정된다. 예를 들어, 아이들 워크 쓰레드가 100개 이상이면 특정 주기는 0.5초, 아이들 워크 쓰레드가 50개 미만이면 특정 주기는 2초로 설정할 수 있다. 또한, 이에 한정되지 않으며 기준 값은 사용자의 설정 또는 피보나치(Fibonacci) 수열에 따라 정해질 수 있다.
다시 S830과정으로 돌아가서 설명하면, 관리 정책을 만족하는 경우, 쓰레드 관리 장치(240)는 워크 쓰레드를 초기화(S810)하고 쓰레드 풀로 복귀시킨다. 따라서, 워크 쓰레드는 쓰레드 풀 내에서 대기 상태에 있게 된다(S710).
관리 정책을 만족하지 않은 경우, 쓰레드 관리 장치(240)는 워크 쓰레드를 옵저버로 활성화한다(S840). 활성화된 옵저버는 쓰레드 관리 장치(240)의 관리 정책에 따라 워크 쓰레드를 감시한다(S850). 옵저버는 워크 쓰레드 및 아이들 쓰레드를 감시하며, 아이들 쓰레드의 개수가 관리정책에 위반된 경우, 아이들 워크 쓰레드를 제거한다. 워크 쓰레드가 일정한 개수에 도달할 때가지, 반복하여 아이들 워크 쓰레드를 제거한다. 아이들 워크 쓰레드의 제거 단위는 사용자의 설정 또는 사 용환경에 따라 동적으로 결정된다. 예를 들어, 아이들 워크 쓰레드가 100 개이면, 10개 단위로 아이들 워크 쓰레드를 제거할 수 도 있다.
옵저버의 감시결과 아이들 쓰레드의 개수가 일정 개수 이하인 경우, 옵저버로부터 감시결과를 보고 받은 쓰레드 관리 장치(240)는 쓰레드 풀이 관리 정책을 만족하는지를 확인한다(S860).
관리 정책을 만족하는 경우, 쓰레드 관리 장치(240)는 옵저버를 워크 쓰레드로 변형하고, 변형된 워크 쓰레드를 초기화 한다(S710). 초기화 된 워크 쓰레드는 쓰레드 풀내에서 대기 상태에 있게 된다. 그러나, 관리 정책을 만족하지 않은 경우에는 S850으로 이동하여 옵저버가 관리 정책에 따라 워크 쓰레드를 감시한다. 이 과정을 관리 정책을 만족할 때까지 반복한다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
도 1은 종래기술에 따른 쓰레드 풀 관리 방법을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 어플리케이션 쓰레드의 요청 및 요청을 수행하는 쓰레드 풀의 구성요소를 계층별로 나타내는 도면이다.
도 3은 쓰레드 풀 관리장치를 운영하는 프로그램의 함수 및 함수에 대응되는 기능을 예시로 나타내는 도표이다.
도 4는 본 발명의 일 실시예에 따라 쓰레드 풀 관리장치의 구성도이다.
도 5 및 도 6은 본 발명의 일 실시예에 따라 작업 수행 요청을 받은 쓰레드 풀 및 워크 쓰레드의 생성 및 수행요청을 하는 쓰레드 풀의 관리 방법을 나타내는 플로우 차트이다.
도 7 및 도 8은 본 발명의 일 실시예에 따라 워크 쓰레드 및 옵저버가 요청된 작업을 수행하는 쓰레드 풀의 관리 방법을 나타내는 플로우 차트이다.
<도면의 주요 부분에 대한 설명>
210: 어플리케이션 쓰레드
220: 쓰레드 API
230: APIs
240: 쓰레드 풀 관리장치
250: 자바 가상 머신
410: 기준 설정 모듈
420: 워크 쓰레드 생성 모듈
430: 제어 모듈
440: 워크 쓰레드 변형 모듈
450: 워크 쓰레드 제거 모듈
460: 저장 모듈
470: 수신 모듈

Claims (22)

  1. 쓰레드 풀을 관리하는 소정의 관리 정책을 설정하는 단계; 및
    상기 관리 정책에 따라 상기 쓰레드 풀을 관리하는 단계를 포함하는 쓰레드 풀 관리 방법.
  2. 제 1항에 있어서,
    어플리케이션 쓰레드의 수행을 요청받는 단계;
    상기 요청을 워크 쓰레드에 할당하는 단계; 및
    상기 관리 정책에 따라 상기 워크 쓰레드가 상기 요청을 수행하는 단계를 더 포함하는 쓰레드 풀 관리 방법.
  3. 제 2항에 있어서,
    상기 요청을 수행한 워크 쓰레드가 상기 관리 정책에 따라 상기 쓰레드 풀로 복귀하는 단계를 더 포함하는 쓰레드 풀 관리 방법.
  4. 제 3항에 있어서,
    상기 복귀하는 단계는,
    상기 쓰레드 풀이 기 설정된 최대 허용 크기 이상 및 사용자가 설정한 최대 허용 크기 이상 중 적어도 하나인 경우, 상기 워크 쓰레드를 제거하는 단계를 더 포함하는 쓰레드 풀 관리 방법.
  5. 제 2항에 있어서,
    상기 관리 정책에 따라, 상기 요청을 수행한 워크 쓰레드가 옵저버로 변형되는 단계를 더 포함하는 쓰레드 풀 관리 방법.
  6. 제 5항에 있어서,
    상기 옵저버는 아이들 워크 쓰레드의 개수를 확인하고, 상기 관리 정책에 따라 상기 아이들 워크 쓰레드가 소정의 기준 값 이상인 경우, 상기 아이들 워크 쓰레드를 제거하는 쓰레드 풀 관리 방법.
  7. 제 5항에 있어서,
    상기 아이들 워크 쓰레드가 소정의 기준 값 이하인 경우, 상기 옵저버가 워크 쓰레드로 변형되는 단계를 더 포함하는 쓰레드 풀 관리 방법.
  8. 제 6항에 있어서,
    상기 기준 값은 사용자의 설정 및 상기 쓰레드 풀에서 기 설정된 최소 워크 쓰레드 개수 중 적어도 하나를 포함하는 쓰레드 풀 관리 방법.
  9. 제 7항에 있어서,
    상기 기준 값은 사용자의 설정 및 상기 쓰레드 풀에서 기 설정된 최소 워크 쓰레드 개수 중 적어도 하나를 포함하는 쓰레드 풀 관리 방법.
  10. 제 1항에 있어서,
    상기 쓰레드 풀은 상기 워크 쓰레드 및 아이들 워크 쓰레드 중 적어도 하나를 포함하는, 쓰레드 풀 관리 방법.
  11. 제 1항에 있어서,
    상기 관리 정책은, 기 설정된 상기 쓰레드 풀의 최대 크기, 최소 크기, 상기 워크 쓰레드의 생성 단위, 옵저버가 아이들 워크 쓰레드를 탐색하는 특정 주기, 아이들 워크 쓰레드의 제거 단위 및 사용자의 설정 중 적어도 하나를 포함하는, 쓰레드 풀 관리 방법.
  12. 제 2항에 있어서,
    상기 할당하는 단계는,
    상기 쓰레드 풀에 아이들 쓰레스가 존재하지 않는 경우, 워크 쓰레드를 생성하는 단계를 더 포함하는 쓰레드 풀 관리 방법.
  13. 소정의 관리 정책을 설정하는 기준 설정 모듈;
    상기 관리 정책에 따라 워크 쓰레드를 생성하는 워크 쓰레드 생성 모듈; 및
    상기 관리 정책에 따라 쓰레드 풀을 관리하는 제어 모듈을 포함하는 쓰레드 풀 관리 장치.
  14. 제 13항에 있어서,
    어플리케이션 쓰레드의 수행 요청을 받는 수신 모듈; 및
    상기 관리 정책, 상기 요청 및 상기 워크 쓰레드 중 적어도 하나를 저장하는 저장 모듈을 포함하며, 상기 제어 모듈은 상기 요청을 상기 워크 쓰레드에 할당하는 쓰레드 풀 관리 장치.
  15. 제 13항에 있어서,
    상기 워크 쓰레드가 상기 요청을 수행한 후, 상기 저장 모듈에 복귀하는 쓰레드 풀 관리 장치.
  16. 제 14항에 있어서,
    상기 워크 쓰레드가 상기 요청을 수행한 후, 상기 관리 정책에 따라 상기 워크 쓰레드를 제거하는 워크 쓰레드 제거 모듈을 더 포함하는 쓰레드 풀 관리 장치.
  17. 제 14항에 있어서,
    상기 워크 쓰레드가 상기 요청을 수행한 후, 상기 관리 정책에 따라 상기 워크 쓰레드를 옵저버로 변형하는 워크 쓰레드 변형 모듈을 더 포함하는 쓰레드 풀 관리 장치.
  18. 제 17항에 있어서,
    상기 옵저버는 아이들 워크 쓰레드의 개수를 확인하고, 상기 관리 정책에 따라 상기 아이들 워크 쓰레드가 소정의 기준 값 이상인 경우, 상기 아이들 워크 쓰레드를 제거하는 쓰레드 풀 관리 장치.
  19. 제 17항에 있어서,
    상기 쓰레드 변형 모듈은 상기 아이들 워크 쓰레드가 기준 값 이하인 경우, 상기 옵저버를 워크 쓰레드로 변형하는 쓰레드 풀 관리 장치.
  20. 제 18항에 있어서,
    상기 기준 값은 사용자의 설정 및 상기 쓰레드 풀에서 기 설정된 최소 워크 쓰레드 개수 중 적어도 하나를 포함하는 쓰레드 풀 관리 장치.
  21. 제 19항에 있어서,
    상기 기준 값은 사용자의 설정 및 상기 쓰레드 풀에서 기 설정된 최소 워크 쓰레드 개수 중 적어도 하나를 포함하는 쓰레드 풀 관리 장치.
  22. 제 13항에 있어서,
    상기 관리 정책은, 기 설정된 상기 쓰레드 풀의 최대 크기, 최소 크기, 상기 워크 쓰레드의 생성 단위, 옵저버의 아이들 쓰레드의 탐색 주기, 아이들 쓰레드의 제거 단위 및 사용자의 설정을 포함하는 쓰레드 풀 관리 장치.
KR1020070070032A 2007-07-12 2007-07-12 쓰레드 풀 관리 장치 및 방법 KR20090006572A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070070032A KR20090006572A (ko) 2007-07-12 2007-07-12 쓰레드 풀 관리 장치 및 방법
US11/871,443 US20090019439A1 (en) 2007-07-12 2007-10-12 Thread pool management apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070070032A KR20090006572A (ko) 2007-07-12 2007-07-12 쓰레드 풀 관리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20090006572A true KR20090006572A (ko) 2009-01-15

Family

ID=40254190

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070070032A KR20090006572A (ko) 2007-07-12 2007-07-12 쓰레드 풀 관리 장치 및 방법

Country Status (2)

Country Link
US (1) US20090019439A1 (ko)
KR (1) KR20090006572A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100978847B1 (ko) * 2010-04-12 2010-08-30 정병일 유비쿼터스 센서 네트워크망을 통한 보일러 나노연료첨가제 주입 원격자동조절장치 및 방법
KR20160123748A (ko) * 2015-04-17 2016-10-26 한국전자통신연구원 분산 파일 시스템에서의 파일 복제 제어 장치 및 방법
CN113448585A (zh) * 2020-12-11 2021-09-28 北京新氧科技有限公司 一种对线程池的优化方法、装置、电子设备和存储介质

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9563474B2 (en) * 2013-06-13 2017-02-07 Wipro Limited Methods for managing threads within an application and devices thereof
WO2015112614A1 (en) 2014-01-21 2015-07-30 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment
KR102375129B1 (ko) 2014-06-23 2022-03-16 오라클 인터내셔날 코포레이션 멀티테넌트 어플리케이션 서버 환경에서 작업 관리자를 제공하는 시스템 및 방법
CN106716360B (zh) 2014-09-24 2020-03-03 甲骨文国际公司 支持多租户应用服务器环境中的补丁修补的系统和方法
US10318280B2 (en) 2014-09-24 2019-06-11 Oracle International Corporation System and method for supporting patching in a multitenant application server environment
US10936369B2 (en) * 2014-11-18 2021-03-02 International Business Machines Corporation Maintenance of local and global lists of task control blocks in a processor-specific manner for allocation to tasks
US10250512B2 (en) 2015-01-21 2019-04-02 Oracle International Corporation System and method for traffic director support in a multitenant application server environment
US9582312B1 (en) 2015-02-04 2017-02-28 Amazon Technologies, Inc. Execution context trace for asynchronous tasks
CN107885590A (zh) * 2017-11-30 2018-04-06 百度在线网络技术(北京)有限公司 用于智能设备的任务处理方法和装置
US11340955B2 (en) * 2020-01-02 2022-05-24 International Business Machines Corporation Thread pool management for multiple applications

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895584B1 (en) * 1999-09-24 2005-05-17 Sun Microsystems, Inc. Mechanism for evaluating requests prior to disposition in a multi-threaded environment
EP1428142A2 (en) * 2000-03-22 2004-06-16 Sidestep, Inc. Method and apparatus for dynamic information connection engine
US20030061315A1 (en) * 2001-09-25 2003-03-27 Jin Frank Kui System and method for "Plug and Play" ability to broadband network based customer devices
US20030115168A1 (en) * 2001-12-17 2003-06-19 Terry Robison Methods and apparatus for database transaction queuing
US7436531B2 (en) * 2002-05-14 2008-10-14 Xerox Corporation Systems and methods for using multiple processors for imaging
US20060047794A1 (en) * 2004-09-02 2006-03-02 Microsoft Corporation Application of genetic algorithms to computer system tuning

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100978847B1 (ko) * 2010-04-12 2010-08-30 정병일 유비쿼터스 센서 네트워크망을 통한 보일러 나노연료첨가제 주입 원격자동조절장치 및 방법
KR20160123748A (ko) * 2015-04-17 2016-10-26 한국전자통신연구원 분산 파일 시스템에서의 파일 복제 제어 장치 및 방법
CN113448585A (zh) * 2020-12-11 2021-09-28 北京新氧科技有限公司 一种对线程池的优化方法、装置、电子设备和存储介质
CN113448585B (zh) * 2020-12-11 2024-01-16 北京新氧科技有限公司 一种线程池的编译方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
US20090019439A1 (en) 2009-01-15

Similar Documents

Publication Publication Date Title
KR20090006572A (ko) 쓰레드 풀 관리 장치 및 방법
JP3882930B2 (ja) 共用リソースを使用するための仮想計算機の管理
JP5939740B2 (ja) 動的にリソースを割り当てる方法、システム及びプログラム
US8631403B2 (en) Method and system for managing tasks by dynamically scaling centralized virtual center in virtual infrastructure
US9513962B2 (en) Migrating a running, preempted workload in a grid computing system
US9003410B2 (en) Abstracting a multithreaded processor core to a single threaded processor core
US8583756B2 (en) Dynamic configuration and self-tuning of inter-nodal communication resources in a database management system
US10204175B2 (en) Dynamic memory tuning for in-memory data analytic platforms
US9639576B2 (en) Database management system, computer, and database management method
US20150112966A1 (en) Database management system, computer, and database management method
US8291426B2 (en) Memory allocators corresponding to processor resources
Sharma et al. Resource deflation: A new approach for transient resource reclamation
US9898217B2 (en) Two stage memory allocation using a cache
US20220059093A1 (en) Proactive caching of assistant action content at a client device to enable on-device resolution of spoken or typed utterances
EP2375324A2 (en) Virtualization apparatus for providing a transactional input/output interface
GB2473136A (en) Allocating resources to partitions in a data processing system at start up according to a configuration profile
KR20110046719A (ko) 복수 코어 장치 및 그의 로드 조정 방법
US7219345B2 (en) System and method for terminating processes in a distributed computing system
CN112363820A (zh) 基于异构硬件的统一资源池化容器调度引擎及其调度方法
US20150160973A1 (en) Domain based resource isolation in multi-core systems
KR20140037749A (ko) 실행 제어 방법 및 멀티프로세서 시스템
KR101271211B1 (ko) 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법
CN108287762B (zh) 分布式计算交互式模式使用资源优化方法以及计算机设备
RU2450330C2 (ru) Аппаратно-реализуемый способ выполнения программ
US20150293783A1 (en) Scheduling identity manager reconciliation to execute at an optimal time

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid