KR101286700B1 - 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법 - Google Patents

멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법 Download PDF

Info

Publication number
KR101286700B1
KR101286700B1 KR1020060109136A KR20060109136A KR101286700B1 KR 101286700 B1 KR101286700 B1 KR 101286700B1 KR 1020060109136 A KR1020060109136 A KR 1020060109136A KR 20060109136 A KR20060109136 A KR 20060109136A KR 101286700 B1 KR101286700 B1 KR 101286700B1
Authority
KR
South Korea
Prior art keywords
data channel
state
thread
queue
scheduler
Prior art date
Application number
KR1020060109136A
Other languages
English (en)
Other versions
KR20080041047A (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 KR1020060109136A priority Critical patent/KR101286700B1/ko
Priority to US11/832,732 priority patent/US8307370B2/en
Publication of KR20080041047A publication Critical patent/KR20080041047A/ko
Application granted granted Critical
Publication of KR101286700B1 publication Critical patent/KR101286700B1/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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • 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
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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

Abstract

멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치 및 방법이 제공된다. 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치는 소정의 크기를 갖는 큐(Queue)로 구성되어 쓰레드(Thread) 간 데이터를 전달하며 상기 큐의 상태 정보를 전송하는 데이터 채널 모듈 및 상기 전송된 큐의 상태를 소정의 시간 간격으로 파악하여 상기 쓰레드 간 데이터 전달량을 분석하고 상기 분석된 전달량을 기초로 각 쓰레드의 업무비중(Load)을 조절하는 정보를 생성하는 데이터 채널 관리 모듈을 포함한다.
멀티 코어(Multi-Core), CPU, 쓰레드(Thread), 스케쥴러(Scheduler), 로드 밸런싱(Loading Balancing)

Description

멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치 및 방법 {Apparatus and method for load balancing in multi core processor system}
도 1은 종래의 스케쥴러에 의한 각 쓰레드의 업무 처리를 도시한 도면이다.
도 2는 본 발명의 실시예에 따른 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치의 구성을 도시한 블록도이다.
도 3은 본 발명의 실시예에 따른 데이터 채널 모듈 및 데이터 채널 관리 모듈의 관계를 상세히 설명한 도면이다.
도 4는 본 발명의 실시예에 따른 각 쓰레드의 로드 밸런싱을 수행하는 과정을 도시한 흐름도이다.
도 5는 본 발명의 다른 실시예에 따른 각 쓰레드의 로드 밸런싱을 수행하는 과정을 도시한 흐름도이다.
<도면의 주요 부분에 관한 부호의 설명>
201 : 쓰레드
202 : 태스크
203 : 데이터 채널 모듈
204 : 데이터 채널 관리 모듈
205 : 스케쥴러
206 : 워크 로드 프로파일
207 : 멀티 코어 프로세서
208 : 운영체제
본 발명은 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치 및 방법에 관한 것으로서, 더욱 상세하게는 멀티 코어 프로세서 시스템에서 실시간으로 각 쓰레드 간의 데이터 전달량(Traffic)을 분석하고 이를 스케쥴러에 반영함으로써 스케쥴러가 시스템 내에서 동작하는 쓰레드의 업무비중을 조절하도록 하는 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치 및 방법에 관한 것이다.
프로세스란 일종의 동작중인 프로그램으로서, 끊임없이 변화하는 동적인 존재이다.
프로세스는 살아있는 동안 많은 자원을 사용하며 운영체제는 여러 시스템의 자원을 관리하고 프로세스들을 공평하게 관리하기 위해서 프로세스 자신과 프로세스가 가지고 있는 시스템의 자원에 대해 계속 추적하고 있어야 한다.
과거에는 상술한 프로세스를 처리하기 위해 하나의 컴퓨터 시스템에 하나의 프로세서만 장착되어 사용되는 것이 일반적이었으나, 다양한 분야에서 처리해야 할 데이터가 대규모화 되고, 단일 코어 CPU의 클럭속도 가속을 통한 성능향상이 전력소모량ㆍ발열량의 증가로 벽에 부딪침에 따라, 최근에는 하나의 컴퓨터 시스템에 다수개의 프로세서를 장착하는 멀티프로세서 시스템이 점차 늘고 있다.
도 1은 종래의 스케쥴러에 의한 각 쓰레드의 업무 처리를 도시한 도면이다.
하나의 태스크(110)를 다수의 쓰레드(111~114)가 구성하고 있으며 OS(120) 커널의 스케쥴러(121)는 쓰레드(111~114)간의 우선순위에 따라 시스템의 부하를 고려하여 다수의 프로세서(131~134) 중 최적의 CPU에 쓰레드를 할당한다.
도 1에서는 쓰레드 1(111)의 업무를 프로세서 1(131)에서 처리하며, 처리비중이 다른 쓰레드에 비해 큰 쓰레드 2(112)의 업무는 프로세서 2(132)와 프로세서 3(133)이 처리한다.
또한, 다른 쓰레드에 비해 비교적 처리비중이 낮은 쓰레드 3(113)과 쓰레드 4(114)는 프로세서 4(134)에서 동시에 처리하는 내용이 도시되어 있다.
이론적으로, 다수 개의 프로세서(즉, 멀티 프로세서)를 사용할 경우, 작업 속도가 프로세서의 수에 비례해서 향상되어야 하지만, 현실적으로 작업을 여러 개의 프로세서에 효율적으로 분배하는 과정이 주로 수동으로 이루어져 효율적으로 분배하는 일이 쉽지가 않기 때문에, 프로세서들을 효과적으로 사용하지 못해 시스템의 최대 성능을 발휘하지 못하는 문제점이 있었다.
본 발명은 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치 및 방법을 통해 실시간으로 각 쓰레드 간의 데이터 전달량을 분석하고 이를 스케쥴러에 반영함으로써 스케쥴러가 시스템 내에서 동작하는 쓰레드의 업무비중을 조절하여 멀티 코어 프로세서 시스템의 성능을 높이는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치는 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치는 소정의 크기를 갖는 큐(Queue)로 구성되어 쓰레드(Thread) 간 데이터를 전달하며 상기 큐의 상태 정보를 전송하는 데이터 채널 모듈 및 상기 전송된 큐의 상태를 소정의 시간 간격으로 파악하여 상기 쓰레드 간 데이터 전달량을 분석하고 상기 분석된 전달량을 기초로 각 쓰레드의 업무비중(Load)을 조절하는 정보를 생성하는 데이터 채널 관리 모듈을 포함한다.
상기 목적을 달성하기 위하여, 본 발명의 다른 실시예에 따른 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 방법은 소정의 크기를 갖는 큐(Queue)로 구성되어 쓰레드(Thread) 간 데이터를 전달하며 상기 큐의 상태 정보를 전송하는 데이터 채널 처리 단계 및 상기 전송된 큐의 상태를 소정의 시간 간격으로 파악하여 상기 쓰레드 간 데이터 전달량을 분석하고 상기 분석된 전달량을 기초로 각 쓰레드의 업무비중(Load)을 조절하는 정보를 생성하는 데이터 채널 관리 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는
도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다.
그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의한 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치 및 방법을 설명하기 위한 구성도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
이때, 처리 흐름도 도면들의 각 구성과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다.
이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 구성(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다.
이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 구성(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다.
컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 구성(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 구성은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다.
또, 몇 가지 대체 실행예들에서는 구성들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다.
예컨대, 잇달아 도시되어 있는 두 개의 구성들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 구성들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 2는 본 발명의 실시예에 따른 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치의 구성을 도시한 블록도이다.
멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치(200)는 CPU를 점유하여 사용자가 원하는 작업을 수행하고 스왑(Swap)되는 최소 단위인 쓰레드(231~234), 하나 이상 다수의 쓰레드로 구성된 태스크(220), 소정의 크기를 갖는 큐(Queue)로 구성되어 쓰레드 간 데이터를 전달하며 큐의 상태 정보를 전송하는 데이터 채널 모듈(241~243), 전송된 큐의 상태를 소정의 시간 간격으로 파악하여 쓰레드 간 데이터 전달량을 분석하고 분석된 전달량을 기초로 각 쓰레드의 업무비중을 조절하는 정보를 생성하는 데이터 채널 관리 모듈(210), 쓰레드 간의 처리 우선순위에 따라 각 CPU에 로딩될 쓰레드를 선정하고, 선정된 쓰레드를 정해진 시간만큼 CPU에 로딩하거나 언로딩하는 스케쥴러(251), 사용자가 명시한 디스크립션(Description)으로서 전체 태스크에서 차지하는 CPU 시간 점유비율을 표현하는 워크 로드 프로파일(Work Load Profile)(252), 하나의 회로에 독립적인 프로세서들이 함께 존재하며 쓰레드 레벨(Thread- Level)의 작업 구현이 가능한 멀티 코어 프로세서(261~264) 및 어플리케이션이 수행되는 환경으로서 멀티 코어 프로세서 상에서 입력, 출력 및 스케쥴링을 관리하는 운영체제(OS)(250)를 포함한다.
본 발명의 실시예에서 사용되는 '~모듈'이라는 용어는 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 구성요소를 의미하며, '~모듈'은 어떤 역할들을 수행한다.
그렇지만 '~모듈'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다.
'~모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.
따라서, 일 예로서 '~모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~모듈'들로 결합되거나 추가적인 구성요소들과 '~모듈'들로 더 분리될 수 있다.
참고로, 본 발명의 동작을 위해 전제되어야 하는 내용은 다음과 같다.
(1)사용자는 워크 로드 프로파일에 각각의 쓰레드 마다 하나의 쓰레드
Ti가 점유할 수 있는 CPU 개수 Ki와 전체 태스크 내에서의 쓰레드 점유비율 Pi를 명시한다.
(2)스케쥴러는 워크 로드 프로파일에 명시된 Ki와 Pi에 따라 쓰레드 간
스케쥴링을 수행한다.
(3)사용자는 데이터 채널 모듈의 큐가 비어있는 상태가 되거나 가득찬 상태가 되는 횟수의 평균에 대해, 스케쥴러가 로드 밸런싱을 수행하는 기준을 평균에 대한 표준편차와 수치로 표현하고 반영할 수 있다.
(4) 사용자는 스케쥴러가 로드 밸런싱을 수행할 때, CPU 개수 Ki와 전체 태스크 내에서의 쓰레드 점유율 Pi이 변화하는 폭을 데이터 채널 관리 모듈을 통해서 설정(Setting)할 수 있다.
(5) 사용자는 각 데이터 채널 모듈이 해당 큐의 상태를 데이터 채널 관리 모듈에 전달하는 소정의 시간 간격을 설정할 수 있으며, 또한 데이터 채널 관리 모듈이 각 데이터 채널 모듈의 큐 상태를 파악하는 소정의 시간 간격을 설정할 수 있다.
한편, 도 2에 도시된 장치(200)의 데이터 채널 모듈(241~243)은 소정의 크기를 갖는 큐로 이루어져 있으며, 각 쓰레드(231~234)는 각 데이터 채널 모듈(241~243)을 통해 데이터를 전달한다.
이때, 데이터 채널 모듈(241~243)을 구성하는 큐의 크기는 각 데이터 채널 모듈(241~243)마다 가변적일 수 있다.
또한 데이터 채널 모듈(241~243)은 큐가 가득찬(Full) 상태 및 비어있는(Empty) 상태 중 어느 하나의 상태가 되면 해당 상태를 나타내는 정보를 데이터 채널 관리 모듈(210)로 전송한다.
이하, 설명의 편의상 큐가 가득찬 상태를 제 1 상태(Full), 큐가 비어있는 상태를 제 2 상태(Empty)로 정의하도록 하며, 데이터 채널 모듈(203)은 소정의 크기를 갖는 큐로 구성되어 있으므로, 이하 '데이터 채널 모듈의 큐의 상태'라는 표현을 '데이터 채널 모듈의 상태'로 표현하도록 한다.
데이터 채널 관리 모듈(210)은 데이터 채널 모듈(241~243)에서 전송된 큐의 상태를 소정의 시간 간격으로 파악하여 쓰레드(231~234) 간 데이터 전달량을 분석하고 분석된 전달량을 기초로 각 쓰레드(231~234)의 업무비중을 조절하는 정보를 생성한다.
즉, 데이터 채널 관리 모듈(210)은 하나의 쓰레드(231) Ti가 점유할 수 있는 CPU 점유개수 Ki와 태스크(220) 상에서 하나의 쓰레드(231) Ti가 점유하는 점유비율 Pi를 실시간으로 스케쥴러(251)에 반영하여 하나의 쓰레드(231) Ti의 스케쥴링 우선순위를 동적으로 조정할 수 있다.
또한 데이터 채널 관리 모듈(210)은 각 데이터 채널 모듈(241~243)이 상술한 제 1 상태(Full)가 되거나 상술한 제 2 상태(Empty)가 되는 횟수를 카운트(Count)하여 그 평균을 계산한다.
도 3은 본 발명의 실시예에 따른 데이터 채널 모듈 및 데이터 채널 관리 모듈의 관계를 상세히 설명한 도면이다.
하나의 태스크를 구성하는 세개의 쓰레드(321~323)가 존재하고 각각을 Ti(321), Ti+1(322), Ti+2(323)라고 하면, Ti(321) 와 Ti+1(322)은 데이터 채널 모듈 Qi(331)를 통해 데이터를 전달하고 Ti+1(322)과 Ti+2(323)는 데이터 채널 모듈 Qi+1(332)을 통해 데이터를 전달한다.
이때, 데이터 전달과정에 있어서 데이터를 제공하는 쓰레드를 소스(Source) 쓰레드, 데이터를 제공 받는 쓰레드를 싱크(Sink) 쓰레드라고 하며, 데이터의 전달 방향이 Ti(321)에서 Ti +1(322)으로, 다시 Ti +1(322)에서 Ti+2(323)로 진행된다고 가정하면, 도 3에 도시된 Ti(321) 와 Ti +1(322)의 경우는 Ti(321)가 소스 쓰레드 가 되고 Ti+1(322)이 싱크 쓰레드가 된다.
또한 Ti+1(322)과 Ti+2(323)의 경우에서는 Ti+1(322)이 소스 쓰레드가 되고 Ti+2(323)가 싱크 쓰레드가 된다.
여기에서 만일, 소스 쓰레드 Ti(321) 와 싱크 쓰레드 Ti+1(322) 사이에서 데이터를 전달하는 데이터 채널 모듈 Qi(331)가 제 1 상태(Full)가 된다면, 소스 쓰레드인 Ti(321)는 더 이상 데이터 채널 모듈 Qi(331)로 데이터를 제공하지 못하게 되며, 싱크 쓰레드인 Ti+1(322)은 제 1 상태(Full)인 데이터 채널 모듈 Qi(331)에서 계속해서 데이터를 제공받는 상황이 발생한다.
또한, 소스 쓰레드 Ti(321) 와 싱크 쓰레드 Ti+1(322) 사이에서 데이터를 전달하는 데이터 채널 모듈 Qi(331)가 제 2 상태(Empty)가 된다면, 소스 쓰레드인 Ti(321)는 계속해서 데이터 채널 모듈 Qi(331)로 데이터를 제공할 수 있지만, 싱크 쓰레드인 Ti+1(322)은 제 2 상태(Empty)인 데이터 채널 모듈 Qi(331)에서 더 이상 데이터를 제공받지 못하는 상황이 발생하게 된다.
Ti+1(322)과 Ti+2(323)도 데이터 채널 모듈 Qi+1(332)의 상태에 따라 상술한 Ti(321) 와 Ti+1(322)의 경우처럼 동일한 상황이 발생할 수 있다.
데이터 채널 모듈 Qi(331), Qi+1(332)이 상술한 제 1 상태(Full) 또는 제 2 상태(Empty)가 되는 경우, 해당 소스 쓰레드나 싱크 쓰레드는 상술한 상황으로 인해 스케쥴러 상에서 불균형적인 점유율을 나타내게 되며, 이는 시스템이 최대 성능을 발휘할 수 없도록 하는 중요한 이유가 될 수 있다.
본 발명의 실시예에 따른 데이터 채널 모듈(331, 332)은 해당 큐가 제 1 상 태(Full) 및 제 2 상태(Empty) 중 어느 하나의 상태가 되면 해당 상태 정보를 테이터 채널 관리 모듈(310)로 전송한다.
데이터 채널 관리 모듈(310)은 데이터 채널 모듈(331, 332)로부터 전송 받은 해당 큐의 상태를 나타내는 정보를 기초로, 사용자가 지정한 소정의 시간 간격마다 전체 데이터 채널 모듈(331, 332)이 제 1 상태(Full)가 되는 횟수 및 제 2 상태(Empty)가 되는 횟수를 카운트하여 각각 평균을 계산한다.
설명의 편의상, 상술한 제 1 상태(Full)가 되는 횟수의 평균을 제 1 상태(Full) 평균이라 하고, 상술한 제 2 상태(Empty)가 되는 횟수의 평균을 제 2 상태(Empty) 평균이라 칭하도록 한다.
참고로, 사용자가 지정한 소정의 시간 간격으로 데이터 채널 관리 모듈(310)이 데이터 채널 모듈(331, 332)의 큐의 상태를 직접 체크할 수도 있다.
데이터 채널 관리 모듈(310)은 상술한 전체 큐의 제 1 상태(Full) 평균과 각 데이터 채널 모듈(331, 332)이 제 1 상태(Full)가 되는 횟수, 그리고 상술한 전체 큐의 제 2 상태 평균과 각 데이터 채널 모듈(331, 332)이 제 2 상태(Empty)가 되는 횟수를 비교하여 데이터 채널 모듈(331, 332)의 데이터 전달량에 따른 쓰레드의 로드 밸런싱를 조정한다.
예를 들어, 데이터의 소스가 되는 쓰레드를 Ti(321), 싱크가 되는 쓰레드를 Ti+1(322), Ti(321)와 Ti+1(322)의 데이터를 전달하는 데이터 채널 모듈을 Qi(331)라고 하면, 데이터 채널 관리 모듈(310)은 소정의 시간 간격마다 데이터 채널 모듈 Qi(331)가 제 1 상태(Full)가 되는 횟수와 전체 데이터 채널 모듈(331, 332)의 제 1 상태(Full) 평균을 비교하여, 비교 결과 데이터 채널 모듈 Qi(331)가 제 1 상태(Full)가 되는 횟수가 전체 데이터 채널 모듈(331, 332)의 제 1 상태(Full) 평균보다 크다면 데이터 채널 관리 모듈(310)은 소스 쓰레드 Ti(321)의 처리 속도가 싱크 쓰레드 Ti+1(322)의 처리속도보다 빠르다고 판단한다.
즉, 데이터 채널 모듈 Qi(331)가 제 1 상태(Full)가 되는 횟수가 전체 데이터 채널 모듈(331, 332)이 제 1 상태(Full)가 되는 횟수의 평균보다 크다는 의미는 데이터를 제공하는 소스 쓰레드 Ti(321)의 처리 속도가 데이터를 제공 받는 싱크 쓰레드 Ti+1(322)의 처리 속도보다 빠르기 때문에 데이터 채널 모듈 Qi(331)가 제 1 상태(Full)가 되는 횟수, 다시 말해 제 1 상태(Full)가 되는 빈도가 더 높다는 의미이다.
또한, 데이터 채널 관리 모듈(310)은 소정의 시간 간격마다 데이터 채널 모듈 Qi(331)가 제 2 상태(Empty)가 되는 횟수와 전체 큐의 제 2 상태(Empty) 평균을 비교하여, 비교 결과 데이터 채널 모듈 Qi(331)가 제 2 상태(Empty)가 되는 횟수가 전체 큐의 제 2 상태(Empty) 평균보다 크다면 데이터 채널 관리 모듈(310)은 소스 쓰레드 Ti(321)의 처리 속도가 싱크 쓰레드 Ti+1(322)의 처리속도보다 느리다고 판단한다.
즉, 데이터 채널 모듈 Qi(331)가 제 2 상태(Empty)가 되는 횟수가 전체 데이터 채널 모듈(331, 332)이 제 2 상태(Empty)가 되는 횟수의 평균보다 크다는 의미는 데이터를 제공받는 싱크 쓰레드 Ti+1(322)의 처리 속도가 데이터를 제공하는 싱크 쓰레드 Ti(321)의 처리 속도보다 빠르기 때문에 데이터 채널 모듈 Qi(331)가 제 2 상태(Empty)가 되는 횟수, 다시 말해 제 2 상태(Empty)가 되는 빈도가 더 높다는 의미이다.
상술한 바와 같은 판단 알고리즘에 의해, 데이터 채널 관리 모듈(310)은 소스 쓰레드 Ti(321)의 처리 속도가 싱크 쓰레드 Ti+1(322)의 처리속도보다 빠르다고 판단하면 소스 쓰레드 Ti(321)의 점유 CPU 개수를 줄이거나 소스 쓰레드 Ti(321)의 스케쥴러(340) 상에서의 점유비율을 낮추도록 스케쥴러(340)에 요청할 수 있으며, 이와는 다른 방법으로 데이터 채널 관리 모듈(310)은 싱크 쓰레드 Ti+1(322)의 점유 CPU 개수를 늘리거나 싱크 쓰레드 Ti+1(322)의 스케쥴러(340) 상에서의 점유비율을 높이도록 요청할 수도 있다.
또한 데이터 채널 관리 모듈(310)은 소스 쓰레드 Ti(321)의 처리 속도가 싱크 쓰레드 Ti+1(322)의 처리속도보다 느리다고 판단하면 소스 쓰레드 Ti(321)의 점유 CPU 개수를 늘리거나 소스 쓰레드 Ti(321)의 스케쥴러(340) 상에서의 점유비율을 높이도록 스케쥴러(340)에 요청할 수 있으며, 이와는 다른 방법으로 데이터 채널 관리 모듈(310)은 싱크 쓰레드 Ti+1(322)의 점유 CPU 개수를 줄이거나 싱크 쓰레드 Ti+1(322)의 스케쥴러(340) 상에서의 점유비율을 낮추도록 요청할 수도 있다.
도 4는 본 발명의 실시예에 따른 각 쓰레드의 로드 밸런싱을 수행하는 과정을 도시한 흐름도이며, 설명의 편의상 도 3을 참조하여 설명하도록 한다.
도 3을 통해 설명한 것처럼, 소스 쓰레드 Ti(321)는 데이터 채널 모듈 Qi(331)를 통해 싱크 쓰레드 Ti+1(322)으로 데이터를 전달한다(S401).
데이터 채널 모듈 Qi(331)는 제 1 상태(Full) 및 제 2 상태(Empty) 중 어느 하나의 상태가 되면 해당 상태를 나타내는 정보를 데이터 채널 관리 모듈(310)로 전송한다.
먼저, 데이터 채널 모듈 Qi(331)가 제 1 상태(Full)가 되는 경우를 설명하고, 데이터 채널 모듈 Qi(331)가 제 2 상태(Full)가 되는 경우는 도 5를 참조하여 후술하도록 한다.
S401 후, 데이터 채널 모듈 Qi(331)가 제 1 상태가 되면(S402), 해당 상태를 나타내는 정보를 데이터 채널 관리 모듈(310)로 전송한다(S403).
이때, 소스 쓰레드인 Ti(321)는 더 이상 데이터 채널 모듈 Qi(331)로 데이터를 제공하지 못하게 되며, 싱크 쓰레드인 Ti+1(322)은 제 1 상태(Full)인 데이터 채널 모듈 Qi(331)에서 계속해서 데이터를 제공받게 된다.
S403 후, 데이터 채널 관리 모듈(310)은 각 데이터 채널 모듈(331, 332)에서 전송된 큐의 상태를 사용자가 설정한 소정의 시간 간격마다 파악하여 제 1 상태(Full)가 되는 횟수를 카운트(Count)하고 그 평균을 계산한다(S404).
S404 후, 데이터 채널 관리 모듈(310)은 사용자가 설정한 소정의 시간 간격마다 데이터 채널 모듈 Qi(331)의 제 1 상태(Full)가 되는 횟수를 카운트하여, S404에서 계산된 전체 데이터 채널 모듈(331, 332)의 제 1 상태가 되는 횟수의 평균과 비교한다(S405).
비교 결과, 데이터 채널 모듈 Qi(331)의 제 1 상태(Full)가 되는 횟수가 전체 데이터 채널 모듈(331, 332)의 제 1 상태가 되는 횟수의 평균보다 크다면(S406), 데이터 채널 관리 모듈(310)은 소스 쓰레드 Ti(321)가 싱크 쓰레드 Ti+1(322)보다 처리속도가 빠르다고 판단하여(S407) 소스 쓰레드 Ti(321)의 점유 CPU 개수를 줄이거나 소스 쓰레드 Ti(321)의 스케쥴러(340) 상에서의 점유비율을 낮추도록 스케쥴러(340)에 요청할 수 있으며, 이와는 다른 방법으로 데이터 채널 관리 모듈(310)은 싱크 쓰레드 Ti+1(322)의 점유 CPU 개수를 늘리거나 싱크 쓰레드 Ti+1(322)의 스케쥴러(340) 상에서의 점유비율을 높이도록 스케쥴러(340)에 요청할 수도 있다(S408).
S408 후, 스케쥴러(340)는 데이터 채널 관리 모듈(310)의 요청에 따라 각 쓰레드(321,322)의 업무비중을 시스템의 상황에 맞게 실시간으로 조절한다(S409).
만일 S405 결과, 데이터 채널 모듈 Qi(331)의 제 1 상태(Full)가 되는 횟수가 전체 데이터 채널 모듈(331, 332)의 제 1 상태가 되는 횟수의 평균보다 작다면 데이터 채널 관리 모듈(310)은 소스 쓰레드 Ti(321)와 싱크 쓰레드 Ti+1(322)의 CPU 점유 개수 및 스케쥴러(340) 상에서의 점유비율이 안정적인 것으로 판단한다(S410).
참고로, S409 또는 S411 후 데이터 채널 관리 모듈(340)은 S404 이후의 과정을 반복한다.
도 5는 본 발명의 다른 실시예에 따른 각 쓰레드의 로드 밸런싱을 수행하는 과정을 도시한 흐름도로서 도 4에 도시된 S401 이후의 다른 과정, 즉 데이터 채널 모듈 Qi(331)가 제 2 상태(Empty)가 되는 경우를 도시한 도면이다.
도 4의 S401 후, 데이터 채널 모듈 Qi(331)가 제 2 상태(Empty)가 되면(S501), 해당 상태 정보를 데이터 채널 관리 모듈(310)로 전송한다(S501).
이때, 소스 쓰레드인 Ti(321)는 계속해서 데이터 채널 모듈 Qi(331)로 데이터를 제공할 수 있지만, 싱크 쓰레드인 Ti+1(322)은 제 2 상태(Empty)인 데이터 채널 모듈 Qi(331)에서 더 이상 데이터를 제공받지 못하는 상황이 발행하게 된다.
S501 후, 데이터 채널 관리 모듈(310)은 각 데이터 채널 모듈(331, 332)에서 전송된 큐의 상태를 사용자가 설정한 소정의 시간 간격마다 파악하여 제 2 상태(Empty)가 되는 횟수를 카운트(Count)하고 그 평균을 계산한다(S502).
S502 후, 데이터 채널 관리 모듈(310)은 사용자가 설정한 소정의 시간 간격마다 데이터 채널 모듈 Qi(331)의 제 2 상태(Empty)가 되는 횟수를 카운트하여, S502에서 계산된 전체 데이터 채널 모듈(331, 332)의 제 2 상태(Empty)가 되는 횟수의 평균과 비교한다(S503).
비교 결과, 데이터 채널 모듈 Qi(331)의 제 2 상태(Empty)가 되는 횟수가 전체 데이터 채널 모듈(331, 332)의 제 2 상태(Empty)가 되는 횟수의 평균보다 크다면(S504), 데이터 채널 관리 모듈(310)은 소스 쓰레드 Ti(321)가 싱크 쓰레드 Ti+1(322)보다 처리속도가 느리다고 판단하여(S505) 소스 쓰레드 Ti(321)의 점유 CPU 개수를 늘리거나 소스 쓰레드 Ti(321)의 스케쥴러(340) 상에서의 점유비율을 높이도록 스케쥴러(340)에 요청할 수 있으며, 이와는 다른 방법으로 데이터 채널 관리 모듈(310)은 싱크 쓰레드 Ti+1(322)의 점유 CPU 개수를 줄이거나 싱크 쓰레드 Ti+1(322)의 스케쥴러(340) 상에서의 점유비율을 낮추도록 스케쥴러(340)에 요청할 수도 있다(S506).
S507 후, 스케쥴러(340)는 데이터 채널 관리 모듈(310)의 요청에 따라 각 쓰 레드(321, 322)의 업무 로드를 시스템의 상황에 맞게 실시간으로 조절한다(S507)
만일 S504 결과, 데이터 채널 모듈 Qi(331)의 제 2 상태(Empty)가 되는 횟수가 전체 데이터 채널 모듈(331, 332)의 제 2 상태(Empty)가 되는 횟수의 평균보다 작다면(S508) 데이터 채널 관리 모듈(310)은 소스 쓰레드 Ti(321)와 싱크 쓰레드 Ti+1(322)의 CPU 점유 개수 및 스케쥴러(340) 상에서의 점유비율이 안정적인 것으로 판단한다(S509).
참고로, S507 또는 S509 후 데이터 채널 관리 모듈(310)은 S503 이후의 과정을 반복한다.
도 4 내지 도 5를 참조하여 설명한 바와 같이, 데이터 채널 관리 모듈(310)은 쓰레드(321, 322) 간 데이터 전달량을 분석하고 분석된 전달량을 기초로 각 쓰레드(321, 322)의 업무 비중을 조절하는 정보를 생성한다.
즉, 데이터 채널 관리 모듈(310)은 하나의 쓰레드 Ti(321)가 점유할 수 있는 CPU 점유개수 Ki와 태스크 상에서 하나의 쓰레드 Ti(321)가 점유하는 점유비율 Pi를 실시간으로 스케쥴러(340)에 반영하여 하나의 쓰레드 Ti(321)의 스케쥴링 우선순위를 동적으로 조정할 수 있다.
이상과 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치 및 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
시스템의 상황에 맞게 실시간으로 각 쓰레드가 CPU를 점유하는 비율을 조정하여 시스템의 성능을 높이는 장점이 있다.

Claims (14)

  1. 소정의 크기를 갖는 큐(Queue)로 구성되어 쓰레드(Thread) 간 데이터를 전달하며 상기 큐의 상태 정보를 전송하는 데이터 채널 모듈; 및
    상기 전송된 큐의 상태를 소정의 시간 간격으로 파악하여 상기 쓰레드 간 데이터 전달량을 분석하고 상기 분석된 전달량을 기초로 각 쓰레드의 로드(Load)를 조절하는 정보를 생성하는 데이터 채널 관리 모듈을 포함하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 장치.
  2. 제 1항에 있어서,
    상기 데이터 채널 관리 모듈이 생성한 상기 정보를 제공받고, 제공받은 상기 정보에 따라 각 CPU에 로딩(Loading)될 쓰레드를 선정하고, 상기 선정된 쓰레드를 정해진 시간만큼 상기 CPU에 로딩하거나 언로딩(Unloading)하는 스케쥴러(Scheduler)를 더 포함하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 장치.
  3. 제 1항에 있어서,
    상기 데이터 채널 모듈은 상기 큐가 가득찬(Full) 제 1 상태 및 상기 큐가 비어있는(Empty) 제 2 상태 중 어느 하나의 상태 정보를 전송하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 장치.
  4. 제 2항에 있어서,
    상기 데이터 채널 관리 모듈은 상기 쓰레드가 점유할 수 있는 CPU 점유 개수 및 태스크(Task) 상에서 상기 쓰레드가 점유하는 점유율 중 하나 이상의 정보를 실시간으로 상기 스케쥴러에 반영하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 장치.
  5. 제 4항에 있어서,
    상기 데이터 채널 관리 모듈은 소정의 시간 간격으로 적어도 하나의 상기 소정 크기의 큐가 상기 제 1 상태 및 제 2 상태 중 어느 하나의 상태가 되는 횟수를 카운트(Count)하여 평균을 계산하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 장치.
  6. 제 5항에 있어서,
    상기 데이터 채널 관리 모듈은 상기 소정 크기의 큐가 제 1 상태가 되는 횟수와 적어도 하나의 상기 소정 크기의 큐가 제 1 상태가 되는 횟수의 평균을 비교하여 해당 쓰레드의 점유 CPU 개수 조정 및 상기 스케쥴러 상에서 해당 쓰레드의 점유비율 조정 중 어느 하나를 스케쥴러에 반영하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 장치.
  7. 제 5항에 있어서,
    상기 데이터 채널 관리 모듈은 상기 소정 크기의 큐가 제 2 상태가 되는 횟수와 적어도 하나의 상기 소정 크기의 큐가 제 2 상태가 되는 횟수의 평균을 비교하여 해당 쓰레드의 점유 CPU 개수 조정 및 상기 스케쥴러 상에서 해당 쓰레드의 점유비율 조정 중 어느 하나를 스케쥴러에 반영하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 장치.
  8. 데이터 채널 모듈, 데이터 채널 관리 모듈 및 스케쥴러를 통해 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 방법에 있어서,
    상기 데이터 채널 모듈이, 소정의 크기를 갖는 큐(Queue)로 구성되어 쓰레드(Thread) 간 데이터를 전달하며 상기 큐의 상태 정보를 전송하는 데이터 채널 처리 단계; 및
    상기 데이터 채널 관리 모듈이, 상기 전송된 큐의 상태를 소정의 시간 간격으로 파악하여 상기 쓰레드 간 데이터 전달량을 분석하고 상기 분석된 전달량을 기초로 각 쓰레드의 로드(Load)를 조절하는 정보를 생성하는 데이터 채널 관리 단계를 포함하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 방법.
  9. 제 8항에 있어서,
    상기 스케쥴러가, 상기 데이터 채널 관리 모듈이 생성한 상기 정보를 제공받고, 제공받은 상기 정보에 따라 각 CPU에 로딩(Loading)될 쓰레드를 선정하고, 상기 선정된 쓰레드를 정해진 시간만큼 상기 CPU에 로딩하거나 언로딩(Unlading)하는 스케쥴러(Scheduler) 처리 단계를 더 포함하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 방법.
  10. 제 8항에 있어서,
    상기 데이터 채널 처리 단계는 상기 큐가 가득찬(Full) 제 1 상태 및 상기 큐가 비어있는(Empty) 제 2 상태 중 어느 하나의 상태 정보를 전송하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 방법.
  11. 제 9항에 있어서,
    상기 데이터 채널 관리 단계는 상기 쓰레드가 점유할 수 있는 CPU 점유 개수 및 태스크(Task) 상에서 상기 쓰레드가 점유하는 점유율 중 하나 이상의 정보를 실시간으로 상기 스케쥴러에 반영하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 방법.
  12. 제 11항에 있어서,
    상기 데이터 채널 관리 단계는 소정의 시간 간격으로 적어도 하나의 상기 소정 크기의 큐가 상기 제 1 상태 및 제 2 상태 중 어느 하나의 상태가 되는 횟수를 카운트(Count)하여 평균을 계산하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 방법.
  13. 제 12항에 있어서,
    상기 데이터 채널 관리 단계는 상기 소정 크기의 큐가 제 1 상태가 되는 횟수와 적어도 하나의 상기 소정 크기의 큐가 제 1 상태가 되는 횟수의 평균을 비교하여 해당 쓰레드의 점유 CPU 개수 조정 및 상기 스케쥴러 상에서 해당 쓰레드의 점유비율 조정 중 어느 하나를 상기 스케쥴러에 반영하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 방법.
  14. 제 12항에 있어서,
    상기 데이터 채널 관리 단계는 상기 소정 크기의 큐가 제 2 상태가 되는 횟수와 적어도 하나의 상기 소정 크기의 큐가 제 2 상태가 되는 횟수의 평균을 비교하여 해당 쓰레드의 점유 CPU 개수 조정 및 상기 스케쥴러 상에서 해당 쓰레드의 점유비율 조정 중 어느 하나를 스케쥴러에 반영하는 멀티 코어 프로세서 시스템에서 로드 밸런싱하는 방법.
KR1020060109136A 2006-11-06 2006-11-06 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법 KR101286700B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060109136A KR101286700B1 (ko) 2006-11-06 2006-11-06 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
US11/832,732 US8307370B2 (en) 2006-11-06 2007-08-02 Apparatus and method for balancing load in multi-core processor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060109136A KR101286700B1 (ko) 2006-11-06 2006-11-06 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법

Publications (2)

Publication Number Publication Date
KR20080041047A KR20080041047A (ko) 2008-05-09
KR101286700B1 true KR101286700B1 (ko) 2013-07-16

Family

ID=39361140

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060109136A KR101286700B1 (ko) 2006-11-06 2006-11-06 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법

Country Status (2)

Country Link
US (1) US8307370B2 (ko)
KR (1) KR101286700B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190012742A (ko) * 2017-07-28 2019-02-11 한화테크윈 주식회사 웹 브라우저 상에서 멀티 쓰레드를 이용하여 데이터를 처리하는 방법

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8365184B2 (en) 2007-08-31 2013-01-29 Apple Inc. Multi-core resource utilization planning
KR20100035394A (ko) 2008-09-26 2010-04-05 삼성전자주식회사 멀티 프로세싱에서의 메모리 관리장치 및 그 방법
KR101519825B1 (ko) 2008-12-05 2015-05-13 삼성전자주식회사 데이터 처리 장치 및 그 제어 방법
US20100161938A1 (en) * 2008-12-23 2010-06-24 Marco Heddes System-On-A-Chip Supporting A Networked Array Of Configurable Symmetric Multiprocessing Nodes
KR101640848B1 (ko) * 2009-12-28 2016-07-29 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR101651871B1 (ko) * 2009-12-28 2016-09-09 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US8910176B2 (en) * 2010-01-15 2014-12-09 International Business Machines Corporation System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance
KR101651114B1 (ko) * 2010-02-18 2016-09-05 삼성전자주식회사 로드 밸런싱 장치
KR101641541B1 (ko) 2010-03-31 2016-07-22 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
KR101647818B1 (ko) * 2010-04-13 2016-08-12 삼성전자주식회사 멀티 코어 사이의 데이터 전송 장치 및 방법
US20120109852A1 (en) * 2010-10-27 2012-05-03 Microsoft Corporation Reactive load balancing for distributed systems
KR101703328B1 (ko) 2010-11-23 2017-02-07 삼성전자 주식회사 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
US8935550B2 (en) * 2011-01-21 2015-01-13 Broadcom Corporation System and method for selectively placing portions of a physical layer into low power mode
US20130060555A1 (en) * 2011-06-10 2013-03-07 Qualcomm Incorporated System and Apparatus Modeling Processor Workloads Using Virtual Pulse Chains
US9086883B2 (en) 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
CN102833035B (zh) * 2011-06-16 2017-02-01 中兴通讯股份有限公司 一种基于多核处理器的上行控制信道信息处理方法和装置
US9021237B2 (en) * 2011-12-20 2015-04-28 International Business Machines Corporation Low latency variable transfer network communicating variable written to source processing core variable register allocated to destination thread to destination processing core variable register allocated to source thread
KR101869939B1 (ko) 2012-01-05 2018-06-21 삼성전자주식회사 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
KR101834195B1 (ko) 2012-03-15 2018-04-13 삼성전자주식회사 다중코어 시스템 및 로드 밸런싱 방법
CN102855218A (zh) * 2012-05-14 2013-01-02 中兴通讯股份有限公司 数据处理系统、方法及装置
CN102779075B (zh) 2012-06-28 2014-12-24 华为技术有限公司 一种在多处理器核系统中进行调度的方法、装置及系统
DE102013206114B3 (de) * 2013-04-08 2014-07-24 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Übertragung von Datenelementen zwischen Threads eines parallelen Rechnersystems
KR102280170B1 (ko) * 2013-10-04 2021-07-21 삼성전자주식회사 프레임의 특성에 따라 부하를 분배하는 방법 및 장치
US20170286168A1 (en) * 2014-11-11 2017-10-05 Hewlett Packard Enterprise Development Lp Balancing thread groups
US20160301632A1 (en) * 2015-04-08 2016-10-13 Telefonaktiebolaget L M Ericsson (Publ) Method and system for burst based packet processing
KR102553966B1 (ko) * 2016-03-04 2023-07-11 엘에스일렉트릭(주) 에너지관리시스템에서의 서버장치 및 이의 동작방법
US10521271B2 (en) 2017-04-01 2019-12-31 Intel Corporation Hybrid low power homogenous grapics processing units
CN107870818B (zh) * 2017-10-19 2021-03-02 瑞芯微电子股份有限公司 多核处理器中断动态响应方法及存储介质
CN108549574B (zh) * 2018-03-12 2022-03-15 深圳市万普拉斯科技有限公司 线程调度管理方法、装置、计算机设备和存储介质
US11388074B2 (en) * 2018-04-12 2022-07-12 Intel Corporation Technologies for performance monitoring and management with empty polling

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11249913A (ja) * 1998-01-05 1999-09-17 Lucent Technol Inc タイムシェアリングシステムにおける非通信プロセス間のプライオリティに基づく負荷分散
JPH11312149A (ja) * 1998-04-28 1999-11-09 Hitachi Ltd 負荷分散制御方式及び装置
KR100261376B1 (ko) 1996-10-01 2000-07-01 포만 제프리 엘 분산컴퓨터엔터프라이즈환경에서의로드균형유지방법및시스템
JP2004030663A (ja) 2002-06-20 2004-01-29 Internatl Business Mach Corp <Ibm> ワークロード・マネージャをシステム・タスク・スケジューラと統合する装置および方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289369B1 (en) * 1998-08-25 2001-09-11 International Business Machines Corporation Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
US6842655B1 (en) * 2000-09-07 2005-01-11 Donald W. Collins Method and apparatus for processing an object
US7207043B2 (en) 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US20070276973A1 (en) * 2004-09-30 2007-11-29 Intel Corporation Managing queues
US7493406B2 (en) * 2006-06-13 2009-02-17 International Business Machines Corporation Maximal flow scheduling for a stream processing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100261376B1 (ko) 1996-10-01 2000-07-01 포만 제프리 엘 분산컴퓨터엔터프라이즈환경에서의로드균형유지방법및시스템
JPH11249913A (ja) * 1998-01-05 1999-09-17 Lucent Technol Inc タイムシェアリングシステムにおける非通信プロセス間のプライオリティに基づく負荷分散
JPH11312149A (ja) * 1998-04-28 1999-11-09 Hitachi Ltd 負荷分散制御方式及び装置
JP2004030663A (ja) 2002-06-20 2004-01-29 Internatl Business Mach Corp <Ibm> ワークロード・マネージャをシステム・タスク・スケジューラと統合する装置および方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190012742A (ko) * 2017-07-28 2019-02-11 한화테크윈 주식회사 웹 브라우저 상에서 멀티 쓰레드를 이용하여 데이터를 처리하는 방법
KR102384249B1 (ko) * 2017-07-28 2022-04-08 한화테크윈 주식회사 웹 브라우저 상에서 멀티 쓰레드를 이용하여 데이터를 처리하는 방법

Also Published As

Publication number Publication date
KR20080041047A (ko) 2008-05-09
US8307370B2 (en) 2012-11-06
US20080109814A1 (en) 2008-05-08

Similar Documents

Publication Publication Date Title
KR101286700B1 (ko) 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
US11036556B1 (en) Concurrent program execution optimization
US10331492B2 (en) Techniques to dynamically allocate resources of configurable computing resources
US9841998B2 (en) Processor power optimization with response time assurance
Yang et al. A framework for partitioning and execution of data stream applications in mobile cloud computing
Kayıran et al. Neither more nor less: Optimizing thread-level parallelism for GPGPUs
Reda et al. Rein: Taming tail latency in key-value stores via multiget scheduling
US8707314B2 (en) Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
Verner et al. Scheduling processing of real-time data streams on heterogeneous multi-GPU systems
WO2022111453A1 (zh) 任务处理方法及装置、任务分配方法、电子设备、介质
US20120297216A1 (en) Dynamically selecting active polling or timed waits
US10733022B2 (en) Method of managing dedicated processing resources, server system and computer program product
US9952900B1 (en) Run time task scheduling based on metrics calculated by micro code engine in a socket
US9471387B2 (en) Scheduling in job execution
US11593175B2 (en) Normalizing target utilization rates of a cross-application table of concurrently executing applications to schedule work on a command queue of a graphics processors
KR102052964B1 (ko) 컴퓨팅 스케줄링 방법 및 시스템
US20140259022A1 (en) Apparatus and method for managing heterogeneous multi-core processor system
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
CN111045800A (zh) 一种基于短作业优先的优化gpu性能的方法及系统
Komarasamy et al. Deadline constrained adaptive multilevel scheduling system in cloud environment
Pang et al. Efficient CUDA stream management for multi-DNN real-time inference on embedded GPUs
Lu et al. Aggregate flow-based performance fairness in CMPs
Paranjape et al. Optimal workload allocation for performance evaluation on multi-core automotive ECUs
Fukuda et al. Decentralized Hardware Scheduler for Self-Timed Data-Driven Multiprocessor

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: 20160617

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170619

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180620

Year of fee payment: 6