KR20130049110A - 인터럽트 할당 방법 및 장치 - Google Patents
인터럽트 할당 방법 및 장치 Download PDFInfo
- Publication number
- KR20130049110A KR20130049110A KR1020110114165A KR20110114165A KR20130049110A KR 20130049110 A KR20130049110 A KR 20130049110A KR 1020110114165 A KR1020110114165 A KR 1020110114165A KR 20110114165 A KR20110114165 A KR 20110114165A KR 20130049110 A KR20130049110 A KR 20130049110A
- Authority
- KR
- South Korea
- Prior art keywords
- interrupt
- load
- core
- task
- extracting
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/24—Interrupt
- G06F2213/2414—Routing of interrupt among interrupt handlers in processor system or interrupt controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 멀티 코어 시스템에서 인터럽트 할당 방법 및 장치에 관한 것으로, 본 발명의 일 실시 예에 따르는 멀티 코어 시스템에서 인터럽트 할당 방법은, 각 인터럽트 유형의 인터럽트 로드를 추출하는 인터럽트 로드 추출 단계, 각 코어의 태스크 로드를 추출하는 단계, 상기 각 코어의 태스크 로드 사이의 차이를 이용하여 웨이팅 팩터를 결정하는 웨이팅 팩터 결정 단계, 웨이팅 팩터를 반영하여 인터럽트 로드의 환산값을 추출하는 단계 및 상기 각 코어에 할당된 인터럽트 로드의 환산값 및 할당된 태스크 로드의 합이 균일하도록 각 인터럽트 유형을 코어에 할당하는 인터럽트 할당 단계를 포함할 수 있다. 본 발명의 일 실시 예에 따르면 태스크 처리 및 인터럽트 처리가 모두 효율적으로 되도록 인터럽트를 할당할 수 있다.
Description
본 발명은 인터럽트 할당 방법 및 장치에 관한 것으로, 보다 상세하게는 멀티 코어 시스템에서 인터럽트를 효과적으로 할당하는 방법 및 장치에 관한 것이다.
최근 휴대전화, 태블릿 피씨(Tablet PC) 등과 같은 임베디드(embedded) 시스템에서 고성능 연산(High Performance Computing)을 위한 멀티 코어 프로세서(Multi core Processor)가 널리 사용되고 있다. 멀티 코어 시스템은 고성능 임베디드 애플리케이션(Application)을 처리하기 위하여 사용된다. 멀티 코어 시스템은 주변 장치들과 코어들 사이에서 발생하는 여러 인터럽트(Interrupt) 요청들을 처리해야 한다. 또한 멀티 코어 시스템의 성능을 향상시키기 위해 코어들 사이의 로드(Load)를 균일하게 분배(distribute)하는 것이 큰 과제 중의 하나이다.
그런데 인터럽트는 일반적인 운영 체제(Operating System)의 스케줄링(Scheduling)에 의해 제어받지 않는다. 따라서, 코어들 사이의 인터럽트 로드 불균형(Imbalance)은 시스템에 병목(Bottleneck) 현상을 일으킬 수 있다. 그러므로 멀티 코어 시스템에서 처리(Processing) 성능을 향상시키기 위한 효율적인 인터럽트 처리 기법이 필요하다.
멀티 코어 시스템에서 코어에 인터럽트들을 할당하는 기법에 대해 많은 연구가 진행되어 왔다. 아래에서 인터럽트 핸들링 관련 종래기술을 몇 가지 설명한다.
첫 번째 분배 방식은 코어가 처리한 인터럽트 개수를 기준으로 인터럽트를 분배하는 방식이다. 인터럽트 할당 장치는 일정 시간 동안 하나의 코어가 처리한 인터럽트 개수에 기초하여 인터럽트 로드 지표를 계산한다. 인터럽트 할당 장치는 처리한 인터럽트의 수가 가장 낮은 코어에 발생 빈도가 가장 높은 인터럽트를 할당한다. 인터럽트 할당 장치는 이러한 방식으로 각 코어가 처리하는 인터럽트의 수를 조절한다.
첫 번째 분배 방식에 따르면 처리한 인터럽트의 개수를 기준으로 인터럽트가 분배되므로 다음과 같은 문제가 발생할 수 있다. 인터럽트 핸들링은 인터럽트 서비스 루틴에 따라 그 수행 시간이 달라진다. 그러므로 단순히 각 코어의 인터럽트 처리 횟수를 동일하게 유지하더라도 로드가 균일하게 분산되지 않을 수 있다.
두 번째 분배 방식은 특정 시간 동안 발생하는 인터럽트들을 하나의 코어에만 할당하는 방식이다. 예를 들어 인터럽트 할당 장치는 시간 구간 t0에 발생한 인터럽트는 모두 코어 0에 할당하고, 시간 구간 t1에 발생한 인터럽트는 모두 코어 1에 할당할 수 있다. 인터럽트 할당 장치는 일정 시간마다 인터럽트를 할당받을 코어를 변경한다. 인터럽트 할당 장치는 특정 시간 구간에 발생하는 인터럽트를 그에 상응하는 코어에만 할당하여 각 코어에 할당되는 인터럽트의 수를 조절한다.
두 번째 분배 방식에 따르면 여러 인터럽트가 동시에 발생할 경우 특정 코어에 인터럽트가 집중될 수 있다. 이 경우 인터럽트 응답 시간(Interrupt Response Time)이 늘어나 시스템 성능이 저하될 수 있는 문제가 있다.
세 번째 분배 방식은 장치 드라이버(Device Driver)가 인터럽트를 처리할 코어를 결정하는 방식이다. 장치 드라이버는 주기적으로 코어의 사용량(Usage)을 모니터링(Monitoring)한다. 이전에 특정 인터럽트를 할당해 놓은 코어의 사용량과 사용량이 가장 낮은 코어의 사용량의 차이가 미리 정해 놓은 한도(Margin)보다 클 경우, 장치 드라이버는 해당 인터럽트를 사용량이 가장 낮은 코어에 할당한다.
세 번째 분배 방식에 따르면, 장치 드라이버가 각 코어의 사용량을 모니터링한 후, 사용량이 가장 낮은 코어에 인터럽트를 할당한다. 이 경우 여러 인터럽트가 가장 낮은 사용량을 가지는 코어에 집중되어 인터럽트 응답 시간이 증가할 수 있는 문제가 있다. 또한 일반적인 운영 체제의 스케줄러는 코어의 사용량이 서로 균형을 이루도록 로드 의 균형을 잡는다(Load Balancing). 이 때 장치 드라이버가 인터럽트를 할당하는 과정과 스케줄러가 로드 균형을 잡는 과정이 서로 상충되어 시스템 성능이 저하될 가능성이 있다.
네 번째 분배 방식은 토큰(Token)을 기반으로 인터럽트를 분배하는 방식이다. 외부에서 인터럽트가 발생할 경우, 인터럽트 할당 장치는 토큰을 발생시킨다. 이후 인터럽트 할당 장치는 해당 인터럽트를 우선적으로 할당된 핫 그룹(Hot Group)으로 전달한다. 핫 그룹의 첫 번째 코어가 해당 인터럽트를 처리할 수 있는 경우 해당 인터럽트를 처리한다. 핫 그룹의 첫 번째 코어가 해당 인터럽트를 처리할 수 없는 경우 해당 코어는 해당 인터럽트를 다른 코어로 전달하며 이 때 토큰을 1씩 감소시킨다. 인터럽트 처리 장치는 토큰이 0이 될 때까지 인터럽트를 처리할 수 있는 코어를 찾는 작업을 수행한다. 만일 토큰이 0이 되면 토큰이 0이 되는 때에 해당 인터럽트를 전달받은 코어가 해당 인터럽트를 처리한다.
네 번째 분배 방식에 따르면, 인터럽트를 할당하여 처리하는 과정까지 소요되는 지연시간이 길어질 가능성이 있다. 이를 방지하기 위하여 토큰의 값을 작게 할 경우 핫 그룹의 첫 번째 코어가 주로 인터럽트를 처리하게 된다. 결국 인터럽트 처리가 특정 코어에 집중될 수 있다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로 인터럽트가 빨리 처리되면서도 태스크 수행에 방해를 적게 주는 인터럽트 할당 장치 및 방법을 제공하는데 그 목적이 있다.
상술한 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따르는 멀티 코어 시스템에서 인터럽트 할당 방법은, 각 인터럽트 유형의 인터럽트 로드를 추출하는 인터럽트 로드 추출 단계, 각 코어의 태스크 로드를 추출하는 단계, 상기 각 코어의 태스크 로드 사이의 차이를 이용하여 웨이팅 팩터를 결정하는 웨이팅 팩터 결정 단계, 웨이팅 팩터를 반영하여 인터럽트 로드의 환산값을 추출하는 단계 및 상기 각 코어에 할당된 인터럽트 로드의 환산값 및 할당된 태스크 로드의 합이 균일하도록 각 인터럽트 유형을 코어에 할당하는 인터럽트 할당 단계를 포함할 수 있다.
상술한 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따르는 멀티 코어 시스템에서 인터럽트 할당 장치는, 인터럽트를 수신하는 수신부, 각 인터럽트 유형의 인터럽트 로드를 추출하여 저장하는 저장부 및 각 코어의 태스크 로드를 추출하여 저장하고, 상기 각 코어의 태스크 로드 사이의 차이를 이용하여 웨이팅 팩터를 결정하고, 웨이팅 팩터를 반영하여 인터럽트 로드의 환산값을 추출하며, 상기 각 코어에 할당된 인터럽트 로드의 환산값 및 할당된 태스크 로드의 합이 균일하도록 각 인터럽트 유형을 코어에 할당하는 분배부를 포함할 수 있다.
본 발명의 일 실시 예에 따르면 인터럽트가 빨리 처리되면서도 태스크 수행에 방해를 적게 주도록 인터럽트를 할당하는 효과가 있다.
도 1은 본 발명의 일 실시 예에 따른 인터럽트 분배 방식의 개념도이다.
도 2는 본 발명의 일 실시 예에 따르는 인터럽트 할당 장치(200)의 블록구성도이다.
도 3은 인터럽트가 발생한 후 처리가 종료되는 시점까지의 과정을 나타낸 도면이다.
도 4는 본 발명의 일 실시 예에 따르는 인터럽트 발생 횟수, 인터럽트 핸들러 수행 및 인터럽트 분배에 소요된 시간을 기록하는 과정을 나타낸 순서도(400)이다.
도 5는 본 발명의 일 실시 예에 따르는 인터럽트 서비스 태스크 수행 시간을 기록하는 과정의 순서도(500)이다.
도 6은 코어의 태스크 로드를 측정하는 과정의 순서도(600)이다.
도 7은 인터럽트 로드 LI와 코어의 태스크 로드 LC를 모두 고려하여 인터럽트를 분배하는 방식을 나타낸 도면이다.
도 8은 본 발명의 일 실시 예에 따르는 인터럽트 할당 과정의 순서도이다.
도 9는 본 발명의 일 실시 예에 따르는 인터럽트 응답 시간 실험 결과 그래프이다.
도 10은 본 발명의 일 실시 예에 따르는 태스크 수행 시간 실험 결과 그래프이다.
도 2는 본 발명의 일 실시 예에 따르는 인터럽트 할당 장치(200)의 블록구성도이다.
도 3은 인터럽트가 발생한 후 처리가 종료되는 시점까지의 과정을 나타낸 도면이다.
도 4는 본 발명의 일 실시 예에 따르는 인터럽트 발생 횟수, 인터럽트 핸들러 수행 및 인터럽트 분배에 소요된 시간을 기록하는 과정을 나타낸 순서도(400)이다.
도 5는 본 발명의 일 실시 예에 따르는 인터럽트 서비스 태스크 수행 시간을 기록하는 과정의 순서도(500)이다.
도 6은 코어의 태스크 로드를 측정하는 과정의 순서도(600)이다.
도 7은 인터럽트 로드 LI와 코어의 태스크 로드 LC를 모두 고려하여 인터럽트를 분배하는 방식을 나타낸 도면이다.
도 8은 본 발명의 일 실시 예에 따르는 인터럽트 할당 과정의 순서도이다.
도 9는 본 발명의 일 실시 예에 따르는 인터럽트 응답 시간 실험 결과 그래프이다.
도 10은 본 발명의 일 실시 예에 따르는 태스크 수행 시간 실험 결과 그래프이다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
이하, 본 발명의 실시 예들에 의하여 인터럽트 할당 방법 및 장치를 설명하기 위한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
이하의 설명에서 인터럽트 로드는 특정 인터럽트 유형의 인터럽트를 단위 시간 동안 처리하기 위하여 필요한 로드를 말한다.
또한 이하의 설명에서 태스크 로드는 특정 코어에 할당된 태스크에 의한 로드를 말한다.
도 1은 본 발명의 일 실시 예에 따른 인터럽트 분배 방식의 개념도이다.
멀티 코어 시스템에서 인터럽트 요청이 자주 발생할 경우 각 코어의 로드에 영향을 주게 된다. 또한 멀티 코어 시스템을 위한 일반적인 운영 체제에서 스케줄러는 각 코어의 로드를 조절한다. 따라서 인터럽트를 분배하는 것과 스케줄러에서 로드를 조정하는 것은 동시에 고려되어야 한다. 본 발명에서는 인터럽트 할당 장치는 하드웨어(110)가 측정한 인터럽트 로드(112)와 소프트웨어(120) 부분의 스케줄러가 측정한 코어의 로드(122)를 함께 고려하여 인터럽트를 코어에 분배한다(130).
도 2는 본 발명의 일 실시 예에 따르는 인터럽트 할당 장치(200)의 블록구성도이다. 인터럽트 할당 장치(200)는 분배부(210), 저장부(220) 및 수신부(230)를 포함한다. 인터럽트 할당 장치(200)는 코어 0(292), 코어 1(294), 코어 2(296) 및 코어 3(298)을 포함하는 코어들(290)에 인터럽트를 할당한다.
수신부(230)는 발생한 인터럽트를 수신하여 분배부(210)로 전달한다.
저장부(220)는 인터럽트 할당에 필요한 정보를 저장한다. 인터럽트 할당에 필요한 정보는 예를 들어 일정 시간 간격 동안의 인터럽트의 발생 횟수, 인터럽트의 처리에 소요된 시간 중 어느 하나 이상을 포함할 수 있다. 인터럽트의 처리에 소요된 시간은 상세하게는 인터럽트 핸들러(IH; Interrupt Handler) 수행시간 및 인터럽트 서비스 태스크(ISR; Interrupt Service Task) 수행시간을 포함할 수 있다. 저장부(220)는 기타 발명의 실시에 따라 필요한 정보를 추가로 저장할 수도 있다.
분배부(210)는 수신부(230)로부터 전달받은 인터럽트를 코어들(290) 중 어느 하나292, 294, 296 또는 298)에 할당한다. 분배부(210)는 발생한 인터럽트의 로드 및 각 코어에 할당된 태스크의 로드를 고려하여 인터럽트를 할당한다. 분배부(210) 및 인터럽트 할당 장치(200)의 기타 구성부의 구체적 동작 방식은 도 3 내지 도 10을 참조하여 상세히 후술한다.
도 3은 인터럽트가 발생한 후 처리가 종료되는 시점까지의 과정을 나타낸 도면이다.
단계 310에서 인터럽트 요청이 발생한다. 이후 단계 320에서 인터럽트 할당 장치(200)가 인터럽트를 인지하기 전까지 시간 TIW가 소요된다. 단계 330에서 인터럽트 할당 장치(200)의 수신부(230)는 인터럽트 요청을 인지 및 수신하고 이에 대하여 응답한다. 수신부(230)는 수신한 인터럽트 요청을 분배부(210)로 전달한다. 이후 인터럽트 할당 장치(200)의 분배부(210)는 단계 340에서 인터럽트를 분배한다. 인터럽트 분배에 소요되는 시간은 TID이다. 이후 단계 350에서 TIH 동안 인터럽트 핸들러(IH; Interrupt Handler)가 수행된다. 지연시간 τ 이후에 단계 360에서 운영 체제의 스케줄러가 인터럽트 서비스 태스크(ISR; Interrupt Service Task)를 스케줄링한다. 단계 370에서 TIST 동안 서비스 태스크가 수행된다. 이후 단계 380에서 인터럽트 처리가 종료된다.
수학식 1은 인터럽트 i의 인터럽트 처리 시간(Interrupt Processing Time) TI i를 정의한다.
상기에서 설명한 바와 같이 TID i는 인터럽트 할당 장치(200)가 인터럽트 i의 발생을 인지한 시점부터 인터럽트 i에 대한 인터럽트 서비스 루틴이 시작하는 시점 사이의 시간이다. TISR i은 인터럽트 i에 대한 인터럽트 서비스 루틴이 수행되는 데 소요되는 시간을 의미한다. 인터럽트 서비스 루틴은 인터럽트 핸들러와 인터럽트 서비스 태스크로 구성된다. 또한 운영 체제의 스케줄러는 인터럽트 서비스 태스크를 일반 태스크로 분류하여 처리한다. 따라서 인터럽트 핸들러가 완료된 후 서비스 태스크가 실행되기 전까지 지연시간 τ가 있을 수 있다. 따라서 인터럽트 i의 인터럽트 처리 시간 TI i 은 수학식 2와 같이 정의된다.
TIH i는 인터럽트 i에 대한 인터럽트 핸들러의 수행 시간이다. TIST i 는 인터럽트 서비스 태스크의 수행 시간이다. 인터럽트 처리 시간은 캐시(Cache), 메모리 액세스 패턴(Memory Access Pattern) 및 트래픽(Traffic) 발생량과 같은 시스템 조건에 따라 달라질 수 있다. 인터럽트 할당 장치(200)는 각 인터럽트에 대한 인터럽트 핸들러의 수행 시간 및/또는 인터럽트 서비스 태스크의 수행 시간을 저장해 둘 수 있다. 인터럽트 핸들러의 수행 시간 및/또는 인터럽트 서비스 태스크의 수행 시간의 측정 및 저장에 대해서는 도 4 및 도 5를 참조하여 후술한다. 이후 저장된 인터럽트 핸들러의 수행 시간 및/또는 인터럽트 서비스 태스크의 수행 시간을 기초로 인터럽트 할당이 수행될 수 있다. 시스템 레벨 분석을 통해 획득된 평균 값 등이 각 인터럽트의 인터럽트 핸들러의 수행 시간 및/또는 인터럽트 서비스 태스크의 수행 시간을 대체할 수 있다.
인터럽트 i의 인터럽트 발생 빈도(Arrival Rate) λI i는 일정 시간단위 동안 발생한 인터럽트의 개수로 정의된다. 주기적으로 발생하는 인터럽트의 발생 빈도는 발생 주기를 기초로 계산할 수 있다. 비주기적으로 발생하는 발생 빈도는 일정 시간단위 동안 해당 인터럽트의 발생 횟수를 기록하여 발생 횟수를 기초로 계산할 수 있다. 인터럽트의 발생 횟수 기록에 대해서는 도 4 및 도 5를 참조하여 후술한다.
도 4는 본 발명의 일 실시 예에 따르는 인터럽트 발생 횟수, 인터럽트 핸들러 수행 및 인터럽트 분배에 소요된 시간을 기록하는 과정을 나타낸 순서도(400)이다.
단계 410에서 수신부(230)는 인터럽트 요청을 수신한다. 수신부(430)는 수신한 인터럽트 요청을 분배부(210)에 전달한다. 단계 420에서 저장부(220)는 인터럽트 요청이 처리되기 시작한 시작 시각을 저장한다. 단계 430에서 분배부(210)는 본 발명의 방식에 따라 인터럽트를 분배한다. 자세한 분배 방식은 본 명세서 전체에서 설명된다. 단계 440에서 분배부(440)는 수신한 인터럽트의 유형을 확인한다. 인터럽트의 유형은 예를 들어 IRQ(Interrupt ReQuest) 식별자(ID)가 될 수 있다. 즉, 동일한 IRQ ID를 가지는 인터럽트는 동일한 유형의 인터럽트로 취급할 수 있다.
단계 440에서 인터럽트를 할당받은 코어는 해당 인터럽트에 대한 인터럽트 핸들러를 수행한다. 인터럽트 핸들러의 수행이 종료되면 저장부(220)는 종료 시간을 저장한다.
단계 450에서 저장부(220)는 단계 440에서 확인된 인터럽트 유형을 기준으로 해당 인터럽트의 발생횟수를 증가시킨다. 또한 저장부(220)는 단계 460의 종료 시각에서 단계 420의 시작 시각을 뺀 처리시간을 저장한다. 단계 470에서 구해진 처리시간은 인터럽트의 분배 및 인터럽트 핸들러의 수행에 소요되는 시간, 즉 TID i+TIH i에 해당한다.
분배부(210)는 일정 시간 간격마다 인터럽트 발생횟수를 기초로 인터럽트 발생 빈도를 계산할 수 있다. 인터럽트 발생 빈도가 계산된 후에 인터럽트 발생횟수는 리셋(reset)될 수 있다.
이렇게 계산된 인터럽트 발생 빈도 및 인터럽트의 분배 및 인터럽트 핸들러의 수행에 소요되는 시간은 평균값 산출 기타 추가적 가공을 거쳐서 해당 유형의 인터럽트의 로드를 추정하는데 사용될 수 있다.
도 5는 본 발명의 일 실시 예에 따르는 인터럽트 서비스 태스크 수행 시간을 기록하는 과정의 순서도(500)이다. 인터럽트 서비스 태크스의 수행이 요구되는 인터럽트 요청이 처리될 때에 도 5의 과정은 필수적으로 도 4의 과정에 이어 수행된다. 다만, 인터럽트 서비스 태스크의 수행이 필요 없는 인터럽트 요청에 대해서 도 5의 과정은 생략될 수 있다.
단계 510에서 인터럽트 서비스 태스크가 스케줄링된다. 단계 520에서 저장부(230)는 인터럽트 서비스 태스크가 시작되는 시작 시각을 저장한다. 단계 530에서 인터럽트 서비스 태스크를 할당받은 코어가 해당 인터럽트 서비스 태스크를 수행한다. 인터럽트 서비스 태스크가 종료되면, 단계 540에서 저장부(230)는 인터럽트 서비스 태스크가 종료된 종료 시각을 저장한다. 단계 550에서 저장부(230)는 단계 540의 종료 시각에서 단계 520의 시작 시각을 뺀 처리시간을 해당 인터럽트 유형에 대한 인터럽트 서비스 태스크 수행 시간, 즉, TIST i으로서 저장한다.
상술한 도 4 및 도 5의 과정은 각 인터럽트의 처리에 소요되는 시간 TI i 및 발생 빈도 λI i를 추정하기 위한 것이다. 각 인터럽트의 처리에 소요되는 시간 TI i 및 발생 빈도 λI i를 다른 방식으로 추정할 수 있는 경우 그 다른 방식을 활용할 수도 있다.
수학식 3은 인터럽트 i에 의한 로드 LI i를 정의한다.
멀티 코어 프로세서를 위한 운영 체제는 코어 사이의 로드 밸런싱(Load Balancing)을 수행할 수 있다. 운영 체제의 스케줄러는 각 코어의 런 큐(Run Queue)에 대기중인 태스크의 수를 동일하게 유지하도록 노력한다. 수학식 4는 코어 j의 태스크 로드 LC j를 정의한다.
NC j는 코어 j의 런 큐에 대기중인 태스크의 수이다.
도 6은 코어의 태스크 로드를 측정하는 과정의 순서도(600)이다.
단계 610에서 분배부(210)는 각 코어의 런 큐에서 대기중인 태스크의 수 NC j 를 확인한다. 단계 620에서 저장부(230)는 확인된 태스크의 수 NC j 를 저장한다.
이렇게 저장된 각 코어의 태스크의 수 NC j는 인터럽트 분배를 위해 활용될 수 있다.
도 7은 인터럽트 로드 LI와 코어의 태스크 로드 LC를 모두 고려하여 인터럽트를 분배하는 방식을 나타낸 도면이다. 수학식 5는 인터럽트가 분배된 후 코어 j의 태스크 로드 L'C j를 정의한다.
Sj는 코어 j에 할당된 인터럽트의 집합이다. 인터럽트 할당 장치(200)는 기본적으로는 인터럽트를 고려한 각 코어의 로드 L'C j가 모두 동일하도록 인터럽트들을 각 코어에 할당한다. 다만, 이하의 설명에 따라 변형된 분배가 가능하다.
운영체제의 스케줄러는 코어 사이의 태스크 로드 밸런싱을 수행한다. 다만, 태스크 로드 밸런싱에도 불구하고 각 코어의 태스크 로드가 서로 다를 수도 있다. 또한 태스크 로드가 가장 작은 코어와 다른 코어들 사이의 로드 차이의 합이 모든 인터럽트들의 로드의 합보다 더 클 수 있다. 이 경우 특정 코어에 인터럽트가 집중되어 인터럽트 처리 능력이 저하될 수 있다. 수학식 6은 코어의 태스크 로드에 대한 인터럽트 로드의 환산값을 계산하기 위한 웨이팅 팩터(Weighting Factor) WI를 정의한다.
UC는 코어의 전체집합이다. UI는 인터럽트의 전체집합이다. 웨이팅 팩터 WI가 1이하인 경우 웨이팅 팩터 WI가 1인 것으로 계산하여 인터럽트 로드 LI i 자체를 환산값으로서 추출한다. 웨이팅 팩터 WI가 1을 초과하는 경우 인터럽트 로드 LI i에 웨이팅 팩터 WI를 곱한 값을 인터럽트 로드의 환산값으로서 추출한다. α는 실험에 의하여 결정될 수 있는 상수이다. 수학식 7은 웨이팅 팩터 WI를 고려한 전체 로드 L''C j를 정의한다.
분배부(210)는 각 코어의 전체 로드 L''C j가 평준화되도록 인터럽트를 할당할 수 있다.
도 8은 본 발명의 일 실시 예에 따르는 인터럽트 할당 과정의 순서도이다. 도 8의 단계는 이전에 도 4 및 도 5의 과정을 통해 특정 인터럽트 유형(예를 들면, IRQ)의 로드를 추출한 뒤 수행된다고 가정한다. 이하의 과정에서 인터럽트는 유형에 따라 각 코어에 할당된다. 예를 들어 IRQ 3을 가진 인터럽트는 코어 2에 할당된다거나, IRQ 1을 가진 인터럽트는 코어 0에 할당 될 수 있다.
단계 810에서 분배부(210)는 각 인터럽트 유형의 로드를 저장부(230)에 기록한다. 도 4 및 도 5를 참조하여 상술한 바와 같이 분배부(210)는 특정 유형의 인터럽트의 로드가 어떠한 값을 가지는지를 추출할 수 있다. 분배부(210)는 이러한 정보를 저장부(230)에 저장한다. 예를 들어 IRQ 1에 해당하는 인터럽트는 3의 로드를 가지고 IRQ 3에 해당하는 인터럽트는 9의 로드를 가질 수 있다.
단계 820에서 분배부(210)는 각 코어의 태스크 로드를 계산한다. 각 코어의 태스크 로드는 수학식 3을 참조하여 상술하였다. 단계 830에서 분배부(210)는 코어를 태스크 로드 기준으로 정렬한다.
단계 840에서 분배부(210)는 최대 태스크 로드에서 최소 태스크 로드를 뺀 값이 미리 설정된 문턱값 미만인지 판단한다. 최대 태스크 로드에서 최소 태스크 로드를 뺀 값이 문턱값 미만인 경우, 전체 코어의 태스크 로드가 균등하게 배분된 경우에는 본 발명의 방식을 적용할 필요가 없으므로 과정은 단계 842로 진행하여 분배부(210)는 종래의 방식에 따라 인터럽트를 할당한다. 종래의 방식의 할당 방법은 예를 들어 [발명의 배경이 되는 기술] 부분에서 언급한 첫 번째 내지 네 번째 분배 방식을 포함할 수 있다. 최대 태스크 로드에서 최소 태스크 로드를 뺀 값이 문턱값 이상인 경우 과정은 단계 850으로 진행한다.
단계 850에서 분배부(210)는 최대 태스크 로드와 다른 태스크 로드 사이의 차이의 합이 전체 인터럽트 로드의 합 이상인지 판단한다. 최대 태스크 로드와 다른 태스크 로드 사이의 차이의 합이 전체 인터럽트 로드의 합 이상인 경우 특정 코어에 인터럽트가 집중되어 인터럽트 처리 능력이 저하될 수 있다. 따라서 이 경우에는 과정은 854로 진행하여 웨이팅 팩터 WI를 수학식 6에 따라 계산한다. 반대의 경우, 즉 최대 태스크 로드와 다른 태스크 로드 사이의 차이의 합이 전체 인터럽트 로드의 합 미만인 경우 웨이팅 팩터 WI를 1로 설정한다. 웨이팅 팩터는 수학식 6에 따라 계산될 수도 있지만, 변형 예에 따르면, 코어들 사이의 태스크 로드 차이가 클 수록 웨이팅 팩터가 커지도록 하는 다른 계산 방식이 활용될 수도 있다. 이 경우에도 태스크 로드 차이는 웨이팅 팩터를 결정하는 데 활용된다.
단계 860에서 분배부(210)는 인터럽트 유형들을 인터럽트 로드가 큰 순서대로 정렬한다. 단계 870에서 분배부(210)는 모든 유형의 인터럽트가 코어에 할당됐는지 판단한다. 아직 할당되지 않은 인터럽트가 있으면 과정은 단계 880으로 진행한다. 모든 인터럽트가 코어에 할당되면 과정은 종료된다.
단계 880에서 분배부(210)는 전체 로드가 작은 순서대로 코어를 정렬한다. 전체 로드는 수학식 7에서 언급한 바와 같이 웨이팅 팩터를 고려한 L''C j값이다. 단계 890에서 분배부(210)는 할당되지 않은 인터럽트 유형 중 로드가 가장 큰 인터럽트 유형을 전체 로드 L''C j값이 가장 작은 코어에 할당한다. 단계 870 내지 단계 890의 과정은 모든 인터럽트가 코어에 할당될 때까지 반복된다. 단계 870 내지 단계 890의 과정은 각 코어에 대해 웨이팅 팩터를 반영한 인터럽트 로드와 태스크 로드의 합이 균등하도록 할당하기 위한 것이다. 변형 예에 따르면, 웨이팅 팩터를 반영한 인터럽트 로드와 태스크 로드의 합이 균등하도록 할 수 있는 다른 방식이 단계 870 내지 단계 890의 과정을 대체할 수도 있다.
단계 830, 860 및 880의 정렬 과정은 최대/최소값을 효과적으로 찾기 위하여 수행된다. 다만 다른 방식으로 최대/최소값을 찾을 수 있다면 정렬 과정을 수행하지 않을 수도 있다.
상술한 과정을 통해 각 인터럽트 유형이 코어에 할당된다. 이후에 인터럽트가 발생되면 분배부(210)가 발생한 인터럽트의 유형에 상응하는 코어에서 처리되도록 인터럽트를 할당할 수 있다.
상술한 과정을 통해 인터럽트가 적절히 할당될 수 있다.
도 9는 본 발명의 일 실시 예에 따르는 인터럽트 응답 시간 실험 결과 그래프이다.
도 10은 본 발명의 일 실시 예에 따르는 태스크 수행 시간 실험 결과 그래프이다.
도 9 및 도 10의 실험은 듀얼 코어 프로세서와 리눅스 커널을 기반으로 구성된 멀티 코어 환경에서 수행되었다. 각 코어에는 1개의 태스크가 실행되는 도중 4개의 인터럽트가 동시에 발생하도록 설정하여 실험하였다. 참조를 위해 인터럽트가 없는 경우의 그래프도 제시하였다. 기본-기반 분배 방식은 모든 인터럽트를 코어 0에 할당하는 방식이다. 횟수-기반 분배 방식은 인터럽트 발생 횟수를 기준으로 각 코어에 균등하게 인터럽트를 할당한 방식이다. 각 코어에는 2개의 인터럽트가 할당된다.
도 9를 참조하면 본원 발명의 방식에 따를 때 다른 방식들에 비해 인터럽트 응답 시간이 더 작음을 알 수 있다. 또한 도 10을 참조하면, 본원 발명의 방식에 따를 때 다른 방식들에 비해 태스크 수행 시간 역시 더 작음을 알 수 있다. 따라서 본원 발명에 따르면 인터럽트를 빠른 시간 내에 처리하면서 태스크 수행 역시 빠른 속도로 처리될 수 있다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
Claims (12)
- 멀티 코어 시스템에서 인터럽트 할당 방법에 있어서,
각 인터럽트 유형의 인터럽트 로드를 추출하는 인터럽트 로드 추출 단계;
각 코어의 태스크 로드를 추출하는 단계;
상기 각 코어의 태스크 로드 사이의 차이를 이용하여 웨이팅 팩터를 결정하는 웨이팅 팩터 결정 단계;
웨이팅 팩터를 반영하여 인터럽트 로드의 환산값을 추출하는 단계; 및
상기 각 코어에 할당된 인터럽트 로드의 환산값 및 할당된 태스크 로드의 합이 균일하도록 각 인터럽트 유형을 코어에 할당하는 인터럽트 할당 단계를 포함하는 인터럽트 할당 방법. - 제1항에 있어서,
상기 인터럽트 로드 추출 단계는,
상기 각 인터럽트 유형의 발생 빈도를 추출하는 단계;
상기 각 인터럽트 유형의 처리 시간을 추출하는 처리시간 추출 단계; 및
상기 발생 빈도와 상기 처리 시간을 곱하여 상기 각 인터럽트 유형의 인터럽트 로드를 추출하는 단계를 포함하는 인터럽트 할당 방법. - 제2항에 있어서,
상기 처리시간 추출 단계는, 상기 각 인터럽트의 인터럽트 분배 및 핸들러 수행에 소요되는 시간과 상기 각 인터럽트의 인터럽트 서비스 태스크에 소요되는 시간을 더하여 상기 처리 시간을 추출하는 단계를 포함하는 인터럽트 할당 방법. - 제4항에 있어서,
상기 웨이팅 팩터 결정 단계는, 최대 태스크 로드를 가지는 코어의 태스크 로드와 다른 태스크 로드 사이의 차이의 합이 전체 인터럽트 로드의 합보다 작으면 상기 웨이팅 팩터를 1로 결정하는 단계를 더 포함하는 인터럽트 할당 방법. - 제1항에 있어서,
상기 인터럽트 할당 단계는,
각 코어에 할당된 인터럽트 로드의 환산값 및 할당된 태스크 로드의 각 코어의 태스크 로드를 합한 값을 각 코어의 전체 로드로서 추출하는 전체 로드 추출 단계;
할당되지 않은 인터럽트 유형 중 인터럽트 로드가 가장 큰 인터럽트 유형을 전체 로드가 가장 작은 코어에 할당하는 최소 코어 할당 단계; 및
상기 로드 추출 단계 및 상기 코어 할당 단계를 모든 인터럽트 유형이 할당될 때까지 반복하는 단계를 포함하는 인터럽트 할당 방법. - 멀티 코어 시스템에서 인터럽트 할당 장치에 있어서,
인터럽트를 수신하는 수신부;
각 인터럽트 유형의 인터럽트 로드를 추출하여 저장하는 저장부; 및
각 코어의 태스크 로드를 추출하여 저장하고, 상기 각 코어의 태스크 로드 사이의 차이를 이용하여 웨이팅 팩터를 결정하고, 웨이팅 팩터를 반영하여 인터럽트 로드의 환산값을 추출하며, 상기 각 코어에 할당된 인터럽트 로드의 환산값 및 할당된 태스크 로드의 합이 균일하도록 각 인터럽트 유형을 코어에 할당하는 인터럽트 할당 단계를 포함하는 인터럽트 할당 장치. - 제7항에 있어서,
상기 분배부는,
상기 각 인터럽트 유형의 발생 빈도를 추출하고, 상기 각 인터럽트 유형의 처리 시간을 추출하고, 상기 발생 빈도와 상기 처리 시간을 곱하여 상기 각 인터럽트 유형의 인터럽트 로드를 추출하는 것을 특징으로 하는 인터럽트 할당 장치. - 제8항에 있어서,
상기 분배부는, 상기 각 인터럽트의 인터럽트 분배 및 핸들러 수행에 소요되는 시간과 상기 각 인터럽트의 인터럽트 서비스 태스크에 소요되는 시간을 더하여 상기 처리 시간을 추출하는 것을 특징으로 하는 인터럽트 할당 장치. - 제9항에 있어서,
상기 분배부는, 최대 태스크 로드를 가지는 코어의 태스크 로드와 다른 태스크 로드 사이의 차이의 합이 전체 인터럽트 로드의 합보다 작으면 상기 웨이팅 팩터를 1로 결정하는 것을 특징으로 하는 인터럽트 할당 장치. - 제7항에 있어서,
상기 분배부는,
각 코어에 할당된 인터럽트 로드의 환산값 및 할당된 태스크 로드의 각 코어의 태스크 로드를 합한 값을 각 코어의 전체 로드로서 추출하는 과정, 및 할당되지 않은 인터럽트 유형 중 인터럽트 로드가 가장 큰 인터럽트 유형을 전체 로드가 가장 작은 코어에 할당하는 과정을 모든 인터럽트 유형이 할당될 때까지 반복하는 것을 특징으로 하는 인터럽트 할당 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110114165A KR20130049110A (ko) | 2011-11-03 | 2011-11-03 | 인터럽트 할당 방법 및 장치 |
US14/356,128 US9626314B2 (en) | 2011-11-03 | 2012-11-05 | Method and apparatus for allocating interruptions |
PCT/KR2012/009224 WO2013066124A1 (ko) | 2011-11-03 | 2012-11-05 | 인터럽트 할당 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110114165A KR20130049110A (ko) | 2011-11-03 | 2011-11-03 | 인터럽트 할당 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130049110A true KR20130049110A (ko) | 2013-05-13 |
Family
ID=48192400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110114165A KR20130049110A (ko) | 2011-11-03 | 2011-11-03 | 인터럽트 할당 방법 및 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9626314B2 (ko) |
KR (1) | KR20130049110A (ko) |
WO (1) | WO2013066124A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102419015B1 (ko) | 2021-12-22 | 2022-07-08 | 한화시스템 주식회사 | Numa 기반 장비의 인터럽트 분배방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터 프로그램 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424212B2 (en) | 2013-06-13 | 2016-08-23 | Microsoft Technology Licensing, Llc | Operating system-managed interrupt steering in multiprocessor systems |
CN103685015B (zh) * | 2013-12-17 | 2016-08-17 | 清华大学 | 基于构件的可扩展路由器任务分派方法 |
FR3033427B1 (fr) * | 2015-03-03 | 2018-05-18 | Zodiac Aerotechnics | Procede de sequencement de commandes d'execution, procede d'execution, programme d'ordinateur et circuit integre |
CN107102966B (zh) * | 2016-02-22 | 2020-03-13 | 龙芯中科技术有限公司 | 多核处理器芯片、中断控制方法及控制器 |
JP6955858B2 (ja) * | 2016-10-17 | 2021-10-27 | オークマ株式会社 | 制御装置 |
CN106648892A (zh) * | 2016-12-12 | 2017-05-10 | 深圳市元征软件开发有限公司 | 检测线程的分配处理方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100321408B1 (ko) * | 1998-12-31 | 2002-06-24 | 서평원 | 처리기한에따른데이터처리순서에의한실시간다중처리시스템및그처리방법 |
US7444639B2 (en) | 2001-12-20 | 2008-10-28 | Texas Insturments Incorporated | Load balanced interrupt handling in an embedded symmetric multiprocessor system |
US20070005742A1 (en) | 2005-06-30 | 2007-01-04 | Avigdor Eldar | Efficient network communications via directed processor interrupts |
US7581052B1 (en) | 2005-08-22 | 2009-08-25 | Sun Microsystems, Inc. | Approach for distributing multiple interrupts among multiple processors |
-
2011
- 2011-11-03 KR KR1020110114165A patent/KR20130049110A/ko active IP Right Grant
-
2012
- 2012-11-05 WO PCT/KR2012/009224 patent/WO2013066124A1/ko active Application Filing
- 2012-11-05 US US14/356,128 patent/US9626314B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102419015B1 (ko) | 2021-12-22 | 2022-07-08 | 한화시스템 주식회사 | Numa 기반 장비의 인터럽트 분배방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터 프로그램 |
Also Published As
Publication number | Publication date |
---|---|
WO2013066124A1 (ko) | 2013-05-10 |
US20140359184A1 (en) | 2014-12-04 |
US9626314B2 (en) | 2017-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20130049110A (ko) | 인터럽트 할당 방법 및 장치 | |
US9448864B2 (en) | Method and apparatus for processing message between processors | |
CN105988872B (zh) | 一种cpu资源分配的方法、装置及电子设备 | |
TWI755415B (zh) | 雲端環境下應用集群資源分配的方法、裝置和系統 | |
US8756600B2 (en) | Judging apparatus, method, and recording medium of program for estimating the effect of deployment of an application in a virtual machine environment | |
US20190196969A1 (en) | Method and apparatus for adaptive cache load balancing for ssd-based cloud computing storage system | |
US9632836B2 (en) | Scheduling applications in a clustered computer system | |
US8479205B2 (en) | Schedule control program and schedule control method | |
US10884779B2 (en) | Systems and methods for selecting virtual machines to be migrated | |
JP6172649B2 (ja) | 情報処理装置、プログラム、及び、情報処理方法 | |
US10157155B2 (en) | Operating system-managed interrupt steering in multiprocessor systems | |
KR20110075295A (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
US10089155B2 (en) | Power aware work stealing | |
JP2008191949A (ja) | マルチコアシステムおよびマルチコアシステムの負荷分散方法 | |
KR20100074920A (ko) | 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법 | |
US9069613B2 (en) | Processing batch database workload while avoiding overload | |
US9983911B2 (en) | Analysis controller, analysis control method and computer-readable medium | |
US20110191094A1 (en) | System and method to evaluate and size relative system performance | |
JP4121525B2 (ja) | リソース利用率を制御する方法およびコンピュータシステム | |
US20140047454A1 (en) | Load balancing in an sap system | |
US8245229B2 (en) | Temporal batching of I/O jobs | |
KR101639947B1 (ko) | 하둡 선점 데드라인 제약 스케줄링 방법 및 그 방법을 수행하는 컴퓨터프로그램과, 그 프로그램이 기록된 매체 | |
US9298576B2 (en) | Collecting processor usage statistics | |
CN112114967B (zh) | 一种基于服务优先级的gpu资源预留方法 |
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 |