KR100901286B1 - 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법 - Google Patents

다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법 Download PDF

Info

Publication number
KR100901286B1
KR100901286B1 KR1020080132377A KR20080132377A KR100901286B1 KR 100901286 B1 KR100901286 B1 KR 100901286B1 KR 1020080132377 A KR1020080132377 A KR 1020080132377A KR 20080132377 A KR20080132377 A KR 20080132377A KR 100901286 B1 KR100901286 B1 KR 100901286B1
Authority
KR
South Korea
Prior art keywords
core
unit
performance
processes
availability
Prior art date
Application number
KR1020080132377A
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 KR1020080132377A priority Critical patent/KR100901286B1/ko
Application granted granted Critical
Publication of KR100901286B1 publication Critical patent/KR100901286B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은 초기에는 하나 또는 다수의 프로세서를 사용함에 있어서 각 코어별로 계획된 프로세스들이 동작되도록 할당할 수 있도록 하고, 시스템이 계속 운영 중인 상태에서 각 프로세스에서의 처리 성능과 코어별 가용도를 주기적으로 측정하여, 여유 있는 코어와 더 처리 성능을 뒷 받쳐 주어야 하는 프로세스를 판별하고, 성능을 더 받쳐주어야 하는 프로세스가 있을 경우 가장 여유 있는 코어에서 동작하는 프로세스는 정지시키고, 두 번째로 여유 있는 다른 코어로 할당을 변경하고, 처리 성능을 더 내야 하는 프로세스를 가장 여유 있는 코어로 할당할 수 있도록 실시간적으로 동적 변경시켜서, 모든 코어들이 항시 최고의 성능을 발휘하도록 함과 동시에 모든 프로세스들이 항시 최고의 처리 성능을 낼 수 있도록 한 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법에 관한 것이다.
Figure R1020080132377
다중 프로세서, 다중 코어, 동적 할당, 임계치, 가용도 변화, 가용율

Description

다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법{Running and dynamically process real located system and method by changing load of individual core at the multi-core processor}
본 발명은 2개 이상의 다중 코어(Multi core)로 이루어진 범용 CPU(Central Processor Unit) 또는 NPU(Network Processor Unit)를 한 개, 또는 다수개로 병렬 구성하고 사용할 수 있도록 한 시스템에 있어서, 각각의 코어별로 프로세스를 동적으로 할당함으로써 각 코어들의 사용 효율을 극대화하고, 이를 통해서 개별적인 프로세스들의 요구 성능을 최대한 만족할 수 있도록 하기 위한 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법에 관한 것으로, 더욱 상세하게는 단일 또는 다중 프로세서 내에 존재하는 각각의 코어별로 하나 또는 다수의 프로세스를 실행시키는 상태에서 각 프로세스별 성능과 코어별 가용도를 주기적으로 측정하여 할당된 코어가 부족하여 한계 성능을 초과하거나 최저 보장 성능 미만이 되는 경우, 그리고 가용율 산정을 통해 한계 임계치를 초과하였는지를 판별하여 특정 프로세스 또는 특정 코어에 걸린 부하 과다 또는 부하 이상 징후 상태를 탐지함으로써, 여유 있는 코어를 찾아서 성능을 더 필요로 하는 프로 세스에 추가 할당하는 방식의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법에 관한 것이다.
현재 인텔(Intel)이나 AMD와 같은 제조사에서 제조되고 있는 범용 CPU 중에서 둘 이상의 코어를 갖는 제품군과 Cavium, EZchip Technologies, RMI Corporation, Marvell Technology Group과 같은 제조사에서 제조되고 있는 NPU 제품들은 다수의 코어들을 가진 프로세서라고 하여 다중 코어 프로세서(Multi core processor)로 통칭하고 있는데, 이런 제품들은 하나의 코어만 가진 프로세서에 비해 더 높은 처리 성능을 내어줄 수 있으며, 필요에 따라 보다 더 높은 성능의 하드웨어 시스템을 구현하기 위하여 여러 개의 다중 코어 프로세서를 한 시스템 내에서 동작하도록 구성하기도 한다.
그런데 이와는 조금 다른 개념으로 하나의 소프트웨어 프로그램 상에서 여러 개의 프로세스(Process)가 다중으로 동작하는 것을 다중 프로세싱(Multi processing)이라고 부르는데, 각각의 프로세스들은 그 프로세스가 수행하는 작업이 다를 경우에 처리 속도와 성능이 각각 다른 특징을 가지고 있다. 그렇기 때문에 어떤 프로세스는 같은 시간에 다른 프로세스들에 비해 월등히 많은 횟수로 반복 처리가 되는 경우도 있으며, 이에 대한 성능 보장을 위해서 더 높은 하드웨어 처리 성능의 뒷받침을 요구하는 경우도 있다.
전술한 다중 코어 프로세서(Multi core processor)에 대해 다중 프로세싱(Multi processing)을 하는 소프트웨어 프로그램을 사용하는 종래의 방법들은 크 게 두 가지 방법을 따르고 있다.
그 첫 번째 방법은 소프트웨어 프로그램에서는 코어 제어에 대해서는 일체 관여를 하지 않고, 전적으로 운영체계 또는 BIOS(Basic Input & Output System)나 펌웨어(Firmware)에 해당되는 코어 인터페이스 및 제어부에 전적으로 맡김으로써 개별적인 코어의 동작 제어는 알아서 처리되도록 하는 코어 제어부 의존 방식이고, 두 번째 방법은 몇몇 프로세스를 특정 코어에 할당하여 동작되도록 초기에 할당해 놓고 프로그램 종료 시까지 그대로 사용하는 정적 할당 방식이다.
먼저, 상기 코어 제어부 의존 방식은 도 1에 도시된 바와 같이, 다중 코어 프로세서(10)를 제어해 주는 코어 인터페이스 및 제어부(11)가 알아서 필요한 코어를 할당하여 쓰도록 일괄 위임하고, 소프트웨어 프로그램(20)에서는 이에 대해 직접적인 관여를 하지 않으면서 작업을 수행하는 방식이다.
이러한 방식의 장점은 각 다중 코어 프로세서(10)안에 있는 각각의 코어(12-1~12-n)에 대해서 어떤 프로세스(22-1~22-n)가 할당되어 사용될 지, 또는 모두 공동으로 분할 사용하게 될 지는 전적으로 운영체계 또는 코어 인터페이스 및 제어부(11)가 알아서 처리하도록 하기 때문에, 소프트웨어 프로그램(20)에서는 어떤 프로세스(22-1~22-n)가 어느 기간 동안 어떤 코어(12-1~12-n)를 통해서 수행될 지 등에 대한 처리 흐름을 직접적으로 구현하지 않아도 되어 비교적 쉽게 개발할 수 있는 장점이 있다.
그러나 각 코어를 제어하는 코어 인터페이스 및 제어부(11)는 소프트웨어가 전체적으로 적당한 처리 속도를 낼 수 있도록 만들어져 있어서, 여러 개의 프로세 스가 동작되어야 하는 소프트웨어 프로그램(20)중에서 더 처리율이 높아야 하는 프로세스와 낮아도 되는 프로세스는 구분하지 않고 전체적으로 균일한 처리를 하기 때문에, 전반적인 성능은 나오지만 하나의 프로그램 안에서 각 프로세스별로 최적화된 성능을 구별해서 나올 수 없는 문제점이 있다. 이 때문에 이런 방식의 소프트웨어에는 프로세서를 여러 개 사용해도, 그 숫자의 배승만큼 성능 향상이 나타나지 않는다.
예를 들어, 도 1에서 프로세스1(22-1)은 100의 성능이 필요하고, 프로세스2(22-2)는 10의 성능만 있어도 되는 소프트웨어 프로그램(20)이라고 가정하는 경우에, 프로세서의 최고 성능이 100을 낼 수 있는 프로세서라면, 전반적인 성능을 내도록 수행되기 때문에 프로그램에 따라서는 낮은 성능 쪽에 맞춰져서 둘 다 10의 성능 밖에 나오지 않거나, 혹은 둘의 평균인 55나 그 보다 약간 상회하는 성능이 나오게 된다.
따라서 프로세스2(22-2)는 불필요하게 당초 원했던 성능 보다 더 나오게 되지만, 프로세스1(22-1)은 당초 원했던 100보다 현저히 낮은 성능이 나오게 되는 등 서로 다른 성능을 요구하는 다중 프로세스의 소프트웨어 프로그램(20)은 비효율적인 처리로 인한 성능상의 문제점이 있다.
또한, 상기 정적 할당 방법은 도 2에서와 같이 코어 제어부 의존 방식의 불합리한 방법을 약간 개선한 방법으로, 어떤 프로세스(22-1~22-n)는 하나 이상의 코어(12-1~12-n)를 할당하고, 또 하나의 코어에 여러 개의 프로세스를 할당하는 것을 사전에 지정함으로써, 각 프로세스별로 할당되는 코어 수를 다르게 함으로써 성능을 달리할 수 있는 장점을 제공해 준다.
하지만 이러한 정적 할당 방법은 운영 중 특정 프로세스의 성능이 부족한 경우에, 다른 쪽 코어가 성능이 남아돌아가더라도 그 할당이 변경되지 않는 관계로 이 역시 코어 사용상 최고의 효율을 낼 수 없는 문제점이 여전히 있다.
이러한 성능 상 비효율성 문제를 해결하기 위한 또 다른 방법으로 국내특허등록 10-807039(비대칭 다중 프로세싱 시스템 및 그 방법)이 개시된 바 있다.
이 기술에서는 각각의 코어 보다는 단순히 다수의 프로세서에 대해서 특화 작업과 일반 작업을 선별하여 각각 서로 다른 프로세서에서 작업을 처리하도록 하고, 일반 작업이 완료될 경우만 그 프로세서에 특화작업이 추가로 수행될 수 있도록 하여 특화 작업만의 수행 속도를 개선하는 해법을 찾고자 한 것이다.
그러나 이 방법 역시 특화 작업은 붐비는 상태이고 일반 작업은 좀 한가한 편일지라도, 일반 작업이 완료되지 않는 일반 작업을 수행하던 프로세서에 특화 작업을 배정하지 않기 때문에, 또한 다중 코어 프로세서 상에서 코어별로 세분하여 할당하는 방법 역시 아니기 때문에 상기 코어 제어부 의존 방식에 의해 전체적인 처리 성능이 낮은 쪽 프로세스에 의해 저하되는 문제도 여전히 존재하면서, 동시에 상기 정적 할당 방법의 운영 중 어떤 코어가 성능이 남아돌아가더라도 성능이 부족한 프로세스로 할당하지 않기 때문에 코어 사용상 최고의 효율을 낼 수 없는 문제점을 완벽히 해결하는 방법은 아니었다.
본 발명은 상기한 문제점을 해결하기 위하여 창안된 것으로, 본 발명의 목적은 초기에는 하나 또는 다수의 프로세서를 사용함에 있어서 각 코어별로 계획된 프로세스들이 동작되도록 할당할 수 있도록 하고, 시스템이 계속 운영 중인 상태에서 각 프로세스에서의 처리 성능과 코어별 가용도를 주기적으로 측정하여, 여유 있는 코어와 더 처리 성능을 뒷 받쳐 주어야 하는 프로세스를 판별하고, 성능을 더 받쳐주어야 하는 프로세스가 있을 경우 가장 여유 있는 코어에서 동작하는 프로세스는 정지시키고, 두 번째로 여유 있는 다른 코어로 할당을 변경하고, 처리 성능을 더 내야 하는 프로세스를 가장 여유 있는 코어로 할당할 수 있도록 실시간적으로 동적 변경시켜서, 모든 코어들이 항시 최고의 성능을 발휘하도록 함과 동시에 모든 프로세스들이 항시 최고의 처리 성능을 낼 수 있도록 한 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법을 제공하는 것에 있다.
이와 같은 목적을 달성하기 위한 본 발명은, 코어 인터페이스 및 제어부와, 코어1 내지 코어n으로 이루어진 하나의 다중 코어프로세서, 또는 코어 인터페이스 및 제어부와, 코어1 내지 코어n으로 이루어진 둘 이상의 다중 코어프로세서1 내지 다중 코어프로세서n에 적용되며,
상기 각 코어에 대응되는 다수개의 프로세스1 내지 프로세스n과, 다수개의 공용메모리1 내지 공용메모리n을 포함하는 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템에 있어서,
사전에 프로세서의 개수와 프로세서의 코어 개수, 프로세스들의 우선순위 정보를 설정해 놓은 프로세스 및 코어 수 환경정보파일과, 사전에 각 코어별로 프로세스를 어떻게 배치시킬 것인지를 설정해 놓은 프로세스별 코어 할당 환경정보파일과, 사전에 동적 할당 수행여부, 프로세스 사전 로딩 방식 또는 프로세스 실시간 최적 로딩 방식 중에서의 선택 정보, 동적 할당을 위한 정보 수집 주기, 프로세스별 과부하 성능 임계치와 권장 성능 임계치, 코어별 가용도 임계치에 대한 기준을 설정해 놓은 동적 제어 환경정보파일을 생성 및 기록하는 입력부와;
소프트웨어 프로그램이 실행되면서 프로세스를 생성하는 프로세스 생성부와, 프로세스 기능을 할당하는 프로세스 기능 할당부와, 상기 프로세스 기능 할당부로부터 할당된 프로세스 개수가 만족되면 그에 따른 동작환경을 관리 제어하는 동작환경 관리부와, 각각의 기능들을 수행하는 S/W(소프트웨어) 기능 수행부와, S/W 기능을 수행하다가 프로그램을 종료할 경우에 최종 동적 환경 정보를 프로세스별 코어 할당 환경정보파일과 동적 제어 환경정보파일에 저장함으로써 차후 다시 실행 시 최종 상태를 그대로 유지시킬 수 있도록 하는 최종환경정보 저장부와, 각 코어별로 할당되었던 프로세스들을 종료 처리하고 프로그램을 종료하는 프로세스종료 처리부로 구성되어 프로그램의 시작과 동시에 각각의 프로세스들을 생성하는 프로세서관리부와;
상기 프로세스 및 코어 수 환경정보파일과 프로세스별 코어 할당정보파일, 그리고 동적제어 환경정보파일로부터 동적할당을 위한 각종 정보를 로딩 하는 초기 환경 판독부와, 각 코어별로 프로세스를 할당하는 초기 할당부와, 소프트웨어 프로그램의 수행 중 환경 조건으로 정의되었던 수집 주기에 따라서 프로세스별 성능과 코어별 가용도를 측정하는 상태수집부와, 측정 결과를 토대로 성능이 부족한 프로세스를 판별하거나 코어의 가용도가 부족한지 여부를 판별하고 성능 보완이 필요한 프로세스와 여유 있는 코어를 판정하여 코어 조정을 지시하는 조정판정부로 이루어진 상태관리부와;
코어를 조정할 프로세스의 수행을 정지하고 코어 조정을 지시하는 제어관리부와, 코어를 재할당하고 정지된 프로세스의 수행을 재개하고, 조정 정보를 프로세스별 코어 할당 정보에 저장하는 조정처리부로 구성된 동적제어부를 더 포함하여 된 것을 특징으로 한다.
또한, 본 발명은, 코어 인터페이스 및 제어부와, 코어1 내지 코어n으로 이루어진 하나의 다중 코어프로세서, 또는 코어 인터페이스 및 제어부와, 코어1 내지 코어n으로 이루어진 둘 이상의 다중 코어프로세서1 내지 다중 코어프로세서n에 적용되며,
상기 각 코어에 대응되는 다수개의 프로세스1 내지 프로세스n과, 다수개의 공용메모리1 내지 공용메모리n과, 입력부와, 프로그램의 시작과 동시에 각각의 프로세스들을 생성하는 프로세서관리부와, 상태관리부 및 동적관리부를 포함하는 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 방법에 있어서,
(a) 입력부에 의해서 사전에 프로세서의 개수와 프로세서의 코어 개수, 프로세스들의 우선순위 정보를 정해서 프로세스 및 코어 수 환경정보파일에 기록하는 제1 과정;
(b) 입력부에 의해서 사전에 각 코어별로 프로세스를 어떻게 배치시킬 것인지를 정해서 프로세스별 코어 할당 환경정보파일에 기록하는 제2 과정;
(c) 입력부에 의해서 사전에 동적 할당 수행여부, 프로세스 사전 로딩 방식이나 프로세스 실시간 최적 로딩 방식 중에서의 선택 정보, 동적 할당을 위한 정보 수집 주기, 프로세스별 과부하 성능 임계치와 권장 성능 임계치, 코어별 가용도 임계치에 대한 기준을 정해서 동적 제어 환경정보파일에 기록하는 제 3과정;
(d) 프로그램의 시작과 동시에 프로세스 관리부에 의해 각각의 프로세스들을 생성하고 상태 관리부로 넘어가서 초기 환경 판독부에 의하여 사전 정의 되었던 환경정보파일들로 부터 동적 할당을 위한 각종 정보를 로딩하는 제4 과정;
(e) 초기 할당부에 의해서 각 코어별로 프로세스를 할당하고, 프로세스 관리부로 다시 제어가 넘겨져 S/W 기능 수행부에 의해서 각각의 기능들이 수행되는 제5 과정;
(f) 소프트웨어 프로그램의 수행 중 환경 조건으로 정의되었던 수집 주기에 따라서 상태 수집부에서 프로세스별 성능과 코어별 가용도를 측정하는 제6 과정;
(g) 측정 결과를 토대로 성능이 부족한 프로세스를 판별하거나 코어의 가용도가 부족한지 여부를 판별하고 성능 보완이 필요한 프로세스와 여유 있는 코어를 판정하여 코어 조정을 지시하는 조정 판정부에 의해 조정을 지시하는 제7 과정;
(h) 동적 제어부의 제어 관리부에 의해 코어를 조정할 프로세스의 수행을 정지하고 코어 조정을 지시하는 제8 과정;
(g) 조정 처리부에 의해서 코어를 재할당하고 정지된 프로세스의 수행을 재개하고, 조정 정보를 프로세스별 코어 할당 정보에 저장하는 제9 과정;
(h) S/W 기능을 수행하다가 최종 환경 정보 저장부를 통해 프로그램을 종료할 경우에 최종 동적 환경 정보를 환경정보파일에 저장함으로써 차후 다시 실행 시 최종 상태를 그대로 유지시킬 수 있도록 하는 제10 과정; 및
(i) 각 코어별로 할당되었던 프로세스들을 종료 처리하고 프로그램을 종료하는 제11 과정을 포함하여 된 것을 특징으로 한다.
이와 같은 본 발명은 다중 코어 프로세서(Multi core processor)를 하나 또는 그 이상 사용하는 시스템 상에서, 소프트웨어 프로그램 상에서 여러 개의 프로세스가 다중으로 동작하는 경우에 각 프로세서 내의 코어에 특정 프로세스를 할당하고, 운영 중 프로세스의 성능과 코어의 가용도를 측정하여 성능이 부족하거나 가용도가 남는 코어를 판별하여 가용도가 남는 코어에 성능 보강을 필요로 하는 프로세스를 할당할 수 있도록 동적으로 실시간 조정하여 모든 코어가 항시 최고의 가동율을 보일 수 있도록 함과 동시에 각각 처리 성능 차가 있는 프로세스들이 최고의 성능을 낼 수 있도록 함으로써, 동일한 시스템에서 기존의 코어 제어부 의존 방식이나 정적 할당 방식보다도 전반적인 처리 성능의 향상을 이룰 수 있는 장점이 있다.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들은 상세히 설명한다.
도 3은 본 발명의 일실시 예에 따른 하나의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템의 구성도이고, 도 4는 본 발명의 다른 실시 예에 따른 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템의 구성도이다.
또한, 도 5는 본 발명에 따른 하나 또는 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템의 상세 구성도, 도 6은 본 발명에 따른 상태 관리부의 상세 구성도, 도 7은 본 발명에 따른 동적 제어부의 상세 구성도이다.
도시된 바와 같이, 본 발명 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템은,
코어 인터페이스 및 제어부(110)와, 코어1 내지 코어n(120-1~120-n)으로 이루어진 하나의 다중 코어프로세서(100), 또는 코어 인터페이스 및 제어부(110,111)와, 코어1 내지 코어n으로 이루어진 둘 이상의 다중 코어프로세서1 내지 다중 코어프로세서n(100-1~100-n)에 적용되며,
상기 각 코어에 대응되는 다수개의 프로세스1 내지 프로세스n(220-1~220-n)과, 다수개의 공용메모리1 내지 공용메모리n(230-1~230n)을 포함하는 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템에 있어 서,
사전에 프로세서의 개수와 프로세서의 코어 개수, 프로세스들의 우선순위 정보를 설정해 놓은 프로세스 및 코어 수 환경정보파일(950)과, 사전에 각 코어별로 프로세스를 어떻게 배치시킬 것인지를 설정해 놓은 프로세스별 코어 할당 환경정보파일(951)과, 사전에 동적 할당 수행여부, 프로세스 사전 로딩 방식 또는 프로세스 실시간 최적 로딩 방식 중에서의 선택 정보, 동적 할당을 위한 정보 수집 주기, 프로세스별 과부하 성능 임계치와 권장 성능 임계치, 코어별 가용도 임계치에 대한 기준을 설정해 놓은 동적 제어 환경정보파일(952)을 생성 및 기록하는 입력부(240)와;
프로그램이 실행된 후 원하는 기능이 수행될 각 프로세스들을 생성하는 프로세스 생성부(211)와, 프로세스에 기능을 할당하는 프로세스 기능 할당부(212)와, 상기 프로세스 기능 할당부(211)로부터 할당된 프로세스 개수가 만족되면 그에 따른 동작환경을 관리 제어하는 동작환경 관리부(213)와, 각각의 기능들을 수행하는 S/W(소프트웨어) 기능 수행부(214)와, S/W 기능을 수행하다가 프로그램을 종료할 경우에 최종 동적 환경 정보를 상기 프로세스별 코어 할당 환경정보파일과 동적 제어 환경정보파일(952)에 저장함으로써 차후 다시 실행 시 최종 상태를 그대로 유지시킬 수 있도록 하는 최종환경정보 저장부(215)와, 각 코어별로 할당되었던 프로세스들을 종료 처리하고 프로그램을 종료(910)하는 프로세스종료 처리부(216)로 구성되어 프로그램의 시작(900)과 동시에 각각의 프로세스들을 생성하는 프로세서관리부(210)와;
상기 프로세스 및 코어 수 환경정보파일과 프로세스별 코어 할당 환경정보파일, 그리고 동적 제어 환경정보파일(950, 951, 952)로 부터 동적 할당을 위한 각종 정보를 로딩 하는 초기 환경 판독부(310)와, 각 코어별로 프로세스를 할당하는 초기 할당부(320)와, 소프트웨어 프로그램의 수행 중 환경 조건으로 정의되었던 수집 주기에 따라서 프로세스별 성능과 코어별 가용도를 측정하는 상태수집부(330)와, 측정 결과를 토대로 성능이 부족한 프로세스를 판별하거나 코어의 가용도가 부족한지 여부를 판별하고 성능 보완이 필요한 프로세스와 여유 있는 코어를 판정하여 코어 조정을 지시하는 조정판정부(340)로 이루어진 상태관리부(300)와;
코어를 조정할 프로세스의 수행을 정지하고 코어 조정을 지시하는 제어관리부(410)와, 코어를 재할당하고 정지된 프로세스의 수행을 재개하고, 조정 정보를 프로세스별 코어 할당 정보(953)에 저장하는 조정처리부(420)로 구성된 동적제어부(400)를 더 포함하여 된 것이다.
여기서, 도 6에 도시된 바와 같이, 상기 상태관리부(300)의 초기 환경 판독부(310)는 프로세스 및 코어 수 환경정보파일(950)로 부터 프로세서의 개수와 코어의 개수, 그리고 소프트웨어 프로그램(200) 내의 프로세스 수 등의 정보를 읽어오고, 프로세스별 코어 할당 환경정보파일(951)로 부터 어떤 프로세스가 어느 코어에 할당 될지에 대한 정보를 읽어오고, 동적 제어 환경정보파일(952)로 부터 동적 할당 수행 여부와 동적 할당을 위한 정보 수집 주기, 프로세스별 과부하 성능 임계치와 권장 성능 임계치, 그리고 코어별 가용도 임계치에 대한 기준을 읽어온다.
또한, 상기 초기 할당부(320)는 다중 코어 프로세서들(100, 101)에 대해 코어 인터페이스 및 제어부(110, 111)를 통해 지정된 코어에 지정된 프로세스들이 동작 되도록 초기 할당하고, 이에 대한 임시 정보는 메모리상의 프로세스별 코어 할당 정보(953) 영역에 기록을 해둔다. 이때 각 프로세스들은 여러 개의 코어에 나뉘 어져서 동작하더라도 공통적인 메모리를 사용할 수 있도록 하여 각각의 메모리 공간 사용에 따른 낭비를 막도록 한다.
또한, 상기 상태수집부(330)는 환경정보를 통해 확인된 주기에 따라서 스스로 정보 수집 처리 명령을 코어별 가용도 수집부(333)에 전달하는 수집주기관리부(331)와, 수행중인 프로세스의 성능값을 측정하는 프로세스성능 수집부(332)와, 다중 코어 프로세서들(100, 101)내의 각 코어들에 대한 가용도를 측정한 후, 상기 프로세스 성능 수집부(332)를 통해서 수행중인 프로세스들의 성능 값을 측정한 후에 조정 판정부(340)로 제어를 넘겨주는 코어별 가용도 수집부(333)로 구성된다.
또한 상기 조정판정부(340)는, 과부하 성능 임계치를 이용하여 성능 초과율을 산정하고, 권장 성능 임계치 이하이면서 코어 가용율이 낮은 프로세스를 구분해 내는 성능 초과율 산정부(341)와, 코어별 가용율 값을 산출하는 코어 가용율 산정부(342)와, 상기 코어 가용율 산정부(342)를 거쳐 산출된 코어 가용율들을 비교해 보고 그 중에서 가용율이 가장 낮아서 성능 보강이 필요한 프로세스가 있는지 확인 및 판단하는 순위별 성능 판독부(343)와, 상기 순위별 성능 판독부(343)를 통해 성능이 부족한 프로세스가 없다고 판정되는 경우, 가용도가 부족한 코어가 있는지 확인 및 판단하여 가용도가 부족한 코어가 없는 경우에는 추가 진행을 마쳐서 코어 조정을 하지 않고 다음 수집 주기가 될 때까지 그 상태를 유지하는 코어 가용도 판독부(344)와, 상기 순위별 성능 판독부(343)를 통해 성능이 부족한 프로세스가 있거나, 상기 코어 가용도 판독부(344)를 통해 가용도가 부족한 코어가 있는 경우에, 여유있는 코어가 있는지를 확인하여 여유있는 코어가 있는 경우 이를 판정하는 여유 코어 판정부(345)와, 상기 여유코어 판정부(345)를 통해 판정된 여유 코어 확인에 따른 코어에 대한 할당 조정 명령 및 제어권을 동적제어부(400)로 넘겨주는 코어 조정 지시부(346)로 구성된다.
또한, 도 7에 도시된 바와 같이, 상기 동적제어부(400)의 제어관리부(410)는 상태 관리부(300)내의 코어 조정 지시부(349)로 부터 코어 조정 명령이 전달되면, 여유 코어 판정에 따른 수행 정지 대상 프로세스를 구분해 내는 수행정지 대상 판정부(411)와, 해당 코어들에서 동작되던 하나 또는 그 이상의 프로세스들의 동작을 잠시 멈추도록 프로세스 관리부(210)의 S/W 기능 수행부(214)로 명령을 전달하고, 조정을 해야 하는 대상 프로세스들의 동작이 정지 완료 상태라는 정보를 수신하는 수행정지 관리부(412)와, 상기 수행정지 관리부(412)로 동작이 정지 완료 상태 정보가 수신되면 조정 처리부(420)의 코어 재할당 부(421)로 제어를 넘어주는 코어조정 지시부(413)로 구성된다.
또한, 상기 조정처리부(420)는 다중 코어 프로세서들(100, 101) 중에서 조정 대상 코어들에게 조정이 될 프로세스들을 코어 인터페이스 및 제어부(110, 111)를 통해서 재 할당 되도록 세팅하는 코어 재할당 부(421)와, 상기 코어 재할당 부(421)의 세팅 후, 동작을 멈추게 했던 프로세스들이 수행을 재개하도록 프로세스 관리부(210)의 S/W 기능 수행부(215)로 명령을 전달하고, 수행을 재개해야 하는 대상 프로세스들의 동작 재개 완료 상태 정보가 입력되면 프로세스별 코어 할당 정보(953)로 저장하고 동적 조정을 종료하는 수행 재개 관리부(422)와, 상기 프로세스별 코어 할당 정보(953)를 저장하는 조정 정보 저장부(423)로 구성된다.
이와 같이 구성되는 본 발명 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 방법은,
(a) 입력부(290)에 의해서 사전에 프로세서의 개수와 프로세서의 코어 개수, 프로세스들의 우선순위 정보를 정해서 프로세스 및 코어 수 환경정보파일(950)에 기록하는 제1 과정;
(b) 입력부(290)에 의해서 사전에 각 코어별로 프로세스를 어떻게 배치시킬 것인지를 정해서 프로세스별 코어 할당 환경정보파일(951)에 기록하는 제2 과정;
(c) 입력부(290)에 의해서 사전에 동적 할당 수행여부, 프로세스 사전 로딩 방식이나 프로세스 실시간 최적 로딩 방식 중에서의 선택 정보, 동적 할당을 위한 정보 수집 주기, 프로세스별 과부하 성능 임계치와 권장 성능 임계치, 코어별 가용도 임계치에 대한 기준을 정해서 동적 제어 환경정보파일(952)에 기록하는 제 3과정;
(d) 프로그램의 시작(900)과 동시에 프로세스 관리부(210)에 의해 각각의 프로세스들을 생성하고 상태 관리부(300)로 넘어가서 초기 환경 판독부(310)에 의하여 사전 정의 되었던 환경정보파일들(950, 951, 952)로 부터 동적 할당을 위한 각종 정보를 로딩하는 제4 과정;
(e) 초기 할당부(320)에 의해서 각 코어별로 프로세스를 할당하고, 프로세스 관리부(210)로 다시 제어가 넘겨져 S/W 기능 수행부(215)에 의해서 각각의 기능들이 수행되는 제5 과정;
(f) 소프트웨어 프로그램의 수행 중 환경 조건으로 정의되었던 수집 주기에 따라서 상태 수집부(330)에서 프로세스별 성능과 코어별 가용도를 측정하는 제6 과정;
(g) 측정 결과를 토대로 성능이 부족한 프로세스를 판별하거나 코어의 가용도가 부족한지 여부를 판별하고 성능 보완이 필요한 프로세스와 여유 있는 코어를 판정하여 코어 조정을 지시하는 조정 판정부(340)에 의해 조정을 지시하는 제7 과정;
(h) 동적 제어부(400)의 제어 관리부(410)에 의해 코어를 조정할 프로세스의 수행을 정지하고 코어 조정을 지시하는 제8 과정;
(g) 조정 처리부(420)에 의해서 코어를 재할당하고 정지된 프로세스의 수행을 재개하고, 조정 정보를 프로세스별 코어 할당 정보(953)에 저장하는 제9 과정;
(h) S/W 기능을 수행하다가 최종 환경 정보 저장부(216)를 통해 프로그램을 종료할 경우에 최종 동적 환경 정보를 환경정보파일(952)에 저장함으로써 차후 다시 실행 시 최종 상태를 그대로 유지시킬 수 있도록 하는 제10 과정;
(i) 각 코어별로 할당되었던 프로세스들을 종료 처리하고 프로그램을 종료(910)하는 제11 과정을 포함한다.
여기서, 상기 제3 과정에서 상기 프로세스 사전 로딩 방식은,
소정의 순서로 프로그램 수행 초기에 각 코어별로 프로세스들을 모두 미리 로딩 하여 필요한 프로세스만 수행을 하도록 하는 단계와, 운영 중 실시간적으로 특정 프로세스의 성능 부족이나 특정 코어의 가용율을 조사하고, 성능 부족 프로세스가 있거나 가용도가 남아도는 코어가 있을 경우에 기존에 동작 중인 프로세스는 정지 시키는 단계와, 성능이 부족하다 판별 했던 프로세스를 해당 코어에서 동작하도록 수행시키는 단계로 이루어진다.
또한, 상기 제3 과정에서 상기 프로세스 실시간 최적 로딩 방식은,
소정의 순서로 프로그램 수행 초기에 각 코어별로 지정된 프로세스들을 로딩하여 수행을 하도록 하는 단계와, 운영 중 실시간적으로 특정 프로세스의 성능 부족이나 특정 코어의 가용율을 조사하고, 성능 부족 프로세스가 있거나 가용도가 남아도는 코어가 있을 경우에 기존에 동작 중인 프로세스는 정지 시키는 단계와, 성능이 부족한 프로세스를 할당하도록 하는 단계로 이루어진다.
이와 같이 구성된 본 발명 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법의 구체적인 동작을 이하 설명한다.
본 발명은 다중 코어를 가진 단일 또는 다중 프로세서의 코어들에 서로 다른 일로 각각의 처리 성능이 다른 프로세스들이 할당되어 실행되고 있는 상태에서, 각 프로세스의 성능과 코어의 가용도들을 정해진 주기로 측정하여 부하가 과중되어 있거나 또는 부하 이상 징후가 판단되는 경우를 판별하고, 여유 있는 코어에 성능 보완이 필요한 프로세스를 동적으로 할당함으로써 코어 사용을 극대화함으로써 관련된 프로세스의 성능을 향상 시키고, 나아가 전체적인 프로그램 수행 성능을 극대화 시킬 수 있도록 하는 특징을 가진 시스템과 그 방법에 관한 것이다.
도 3은 하나의 다중 코어 프로세서(100)에서 동적으로 프로세스들을 할당하는 경우에 대한 구성도이며, 도 4는 둘 이상의 다중 코어 프로세서(100-1~100-n)에서 동적으로 프로세스들(220-1~220-n)을 할당하는 경우에 대한 구성도로, 각각의 프로세스별로 하나 또는 여러 개의 코어들(120-1~120-n)에서 병렬로 수행될 수 있기 때문에, 동일한 프로세스가 여러 개의 코어에서도 동작하더라도 공용 메모리들(230-1~230-n) 중에서 정해진 공용 메모리를 공통적으로 사용하게 하여 불필요한 메모리 낭비를 막도록 하는 구성을 보여준다.
먼저, 도 5에서, 프로그램이 시작(900)되면, 프로세스 관리부(210)의 동작 환경 관리부(213)에 의해서 상태 관리부(300)의 초기 환경 판독부(310)로 제어가 넘어오면, 프로세스 및 코어 수 환경정보파일(950)로 부터 프로세서의 개수와 코어의 개수, 그리고 소프트웨어 프로그램 내의 프로세스 수 등의 정보를 읽어오고, 프로세스별 코어 할당 환경정보파일(951)로 부터 어떤 프로세스가 어느 코어에 할당 될지에 대한 정보를 읽어오고, 동적 제어 환경정보파일(952)로 부터 동적 할당 수행 여부와 동적 할당을 위한 정보 수집 주기, 프로세스별 과부하 성능 임계치와 권장 성능 임계치, 그리고 코어별 가용도 임계치에 대한 기준을 읽어온다.
그런 직후에 코어 초기 할당부(320)를 통해서 다중 코어 프로세서들(100-1~100-n)에 대해 코어 인터페이스 및 제어부(110, 111)를 통해 지정된 코어에 지정된 프로세스들이 동작 되도록 초기 할당하고, 이에 대한 임시 정보는 메모리상의 프로세스별 코어 할당 정보(953) 영역에 기록을 해둔다.
이때 각 프로세스들은 여러 개의 코어에 나뉘어져서 동작하더라도 공통적인 메모리(230-1~230-n)를 사용할 수 있도록 하여 각각의 메모리 공간 사용에 따른 낭비를 막도록 한다.
이와 같은 초기 할당이 끝나면 도 6의 수집주기 관리부(331)에 수행 개시 상태임을 알리고, 프로세스 관리부(210)의 S/W 기능 수행부(214)에 기능 수행 시작을 할 수 있도록 제어를 넘긴다. 이후 수집주기 관리부(331)는 환경정보를 통해 확인된 주기에 따라서 스스로 정보 수집 처리 명령을 코어별 가용도 수집부(333)에 전달하며, 코어별 가용도 수집부(333)는 다중 코어 프로세서들(100-1~100-n)내의 각 코어들에 대한 가용도를 측정한 후, 프로세스 성능 수집부(332)를 통해서 수행중인 프로세스들의 성능 값을 측정한 후에 조정 판정부(340)로 제어를 넘긴다.
상기 조정 판정부(340)에서는 성능 초과율 산정부(341)를 거쳐서 과부하 성능 임계치를 이용하여 성능 초과율을 산정하고, 권장 성능 임계치 이하이면서 코어 가용율이 낮은 프로세스를 구분해 내고, 코어 가용율 산정부(342)를 통해서 코어별 가용율 값을 산출해 낸 후에 순위별 성능 판독부(343)를 거쳐서 우선순위에 따라 성능 보강이 필요한 프로세스가 있는지 확인하고, 만일 성능이 부족한 프로세스가 있을 경우에는 여유 코어 판정부(345)로 제어권을 넘긴다.
만일 성능이 부족한 프로세스가 없다면, 코어 가용도 판독부(344)를 거쳐서 가용도가 부족한 코어가 있는지 확인을 하는데, 이때 만일 가용도가 부족한 코어가 없는 경우에는 추가 진행을 마쳐서 코어 조정을 하지 않고 다음 수집 주기가 될 때 까지 그 상태를 유지하고, 만일 가용도가 부족한 코어가 있을 경우에는 여유코어 판정부(345)를 통해 여유 코어를 판정 한 후에 코어 조정 지시부(346)로 제어가 이동되어, 동적 제어부(400)를 거쳐서 코어 조정이 이루어지게 된다.
상기 상태 관리부(300)내의 코어 조정 지시부(346)로부터 코어 조정 명령이 전달되면, 도 7의 동적제어부(400)의 수행정지 대상 판정부(411)를 통해서 여유 코어 판정에 따른 수행 정지 대상 프로세스를 구분해 내고, 수행정지 관리부(412)를 통해서 해당 코어들에서 동작되던 하나 또는 그 이상의 프로세스들의 동작을 잠시 멈추도록 프로세스 관리부(210)의 S/W 기능 수행부(213)로 명령을 전달하고, 조정을 해야 하는 대상 프로세스들의 동작이 정지 완료 상태라는 정보가 수행정지 관리부(412)로 전달되면, 코어조정 지시부(413)를 거쳐서 조정 처리부(420)의 코어 재할당 부(421)로 제어가 넘어가게 된다.
코어 재할당 부(421)에서는 다중 코어 프로세서들(100-1~100-n) 중에서 조정 대상 코어들에게 조정이 될 프로세스들을 코어 인터페이스 및 제어부(110, 111)를 통해서 재할당 되도록 세팅을 한 후에 수행 재개 관리부(422)로 제어권을 넘긴다.
상기 수행 재개 관리부(422)에서는 동작을 멈추게 했던 프로세스들이 수행을 재개하도록 프로세스 관리부(210)의 S/W 기능 수행부(213)로 명령을 전달하고, 수행을 재개해야 하는 대상 프로세스들의 동작 재개 완료 상태 정보가 수행 재개 관리부(422)로 돌아오면 조정 정보 저장부(423)를 통해서 프로세스별 코어 할당 정보(953)로 저장을 하고 동적 조정 진행을 종료한다.
이렇게 동적 조정이 끝난 이후에는, 정해진 주기에 따라서 도 5의 상태수집 주기 관리부(331)에서 다시 상태 수집 진행이 될 때까지 기다린다.
도 8은 본 발명에 따른 프로세스 사전 로딩 방식에 의한 동적 코어 할당 변경 과정을 일례로 설명하기 위한 구성도이다.
도 5, 도 6 및 도 7에 의한 동적 할당 진행에 있어서, n개의 다중 코어 프로세서를 사용할 경우에 먼저 필요한 프로세스들을 모두 로딩해 놓고 필요한 것만 수행 하도록 하고, 필요하지 않은 것들은 로딩은 하되 동작은 하지 않도록 하는 방법을 활용하여 코어를 변경하는 과정을 나타내고 있다.
도시된 바와 같이, 우선, 수행 전(980, 981) 상태에서는 각 프로세서별로 16개의 코어가 있다는 것을 가정하여 그에 대한 구분을 표시해 놓았다고 가정한다. 초기 코어별 기능 할당 상태(982, 983)에서는 각 코어별로 수행 대상이 될 모든 프로세스들(A, B, C, D, E, F, G)을 미리 각 코어에 맞춰서 로딩 시켜 놓은 상태를 표시하기 위해 각 코어 해당되는 숫자 밑쪽에 프로세스들을 블록으로 표시해 놓았다.
그 다음에 코어별로 필요한 기능들만 수행하도록 한 상태(984, 985)에서는 각 프로세스들(A, B, C, D, E, F, G) 중에서 수행되도록 한 프로세스들만 연두 색상으로 표시하고, 로딩은 했지만 수행은 시키지 않은 프로세스는 하얀색으로 표시하여 구분 실행되고 있음을 나타내었다.
그 다음에 만일 운영 중에 C 프로세스가 성능 부족으로 판별되는 경우(986, 987)로 보고 짙은 색상(빨강)으로 표기하였고, 이에 대해서 프로세스와 코어를 조 정한 상태(988, 989)를 굵은 테두리로 표시해 놓았다.
즉, 다중 코어 프로세서1의 13번과 14번 코어에 있던 B 프로세스는 오프(Off)시키고 C 프로세스를 온(On) 시키고, 다중 코어 프로세서 n번의 D 프로세스는 오프(Off) 시키고 C 프로세스를 온(On) 시킴으로써, 전체적으로 B 프로세스가 돌던 코어는 2개를 줄이고, 또 D 프로세스가 돌던 코어를 1개 줄임으로써, 결과적으로 C 프로세스에 3개의 코어를 추가 할당하여 동작하고 있는 상태를 나타내고 있는 것이다.
또한, 도 9는 본 발명에 따른 프로세스 실시간 최적 로딩 방식에 의한 동적 코어 할당 변경 과정을 일례로 설명하기 위한 구성도이다.
도 5, 도 6 및 도 7에 의한 동적 할당 진행에 있어서 n개의 다중 코어 프로세서를 사용할 경우에 동작을 시킬 프로세스들을 운영 중인 상태에서 그때그때 실시간으로 올려주는 방법을 표시하고 있다.
도시된 바와 같이, 다중 코어프로세서의 종류는 현재 코어가 2개, 4개, 8개, 12개, 16개 등과 같이 여러 가지 종류가 있지만 그 중에서 16개의 코어가 있는 경우를 기준으로 설명을 하면, 우선 수행 전(990, 991) 상태에서는 각 프로세서별로 16개의 코어가 있다는 것을 표기해 주고 있으며, 초기 코어별 기능 할당 및 수행 개시 상태(992, 993)에서는 각 코어별로 수행 대상이 될 모든 프로세스들(A, B, C, D, E, F, G)만을 로딩하고 수행을 시켜 놓았다는 것을 각 코어 숫자 밑쪽에 연한 색상(연두색)으로써 표시해 놓았다.
그 다음에 만일 운영 중에 C 프로세스가 성능 부족으로 판별되는 경우(994, 995)를 짙은 색상(빨강)으로 표기하였고, 이에 대해서 프로세스와 코어를 조정한 상태(996, 997)를 굵은 테두리로 표시해 놓았다.
즉, 다중 코어 프로세서1의 13번과 14번 코어에 있던 B 프로세스는 내리고, C 프로세스를 로딩 후에 수행 개시 시키고, 다중 코어 프로세서 n번의 D 프로세스는 내리고 C 프로세스를 로딩하고 수행 개시시킴으로써, 전체적으로 B 프로세스가 돌던 코어는 2개를 줄이고, 또 D 프로세스가 돌던 코어를 1개 줄여서, C 프로세스에 3개의 코어를 추가 할당하여 동작하고 있는 상태를 나타내고 있는 것이다.
도 1은 종래의 다중 코어 프로세서에 있어서, 코어 제어부 의존에 의한 다중 코어를 사용하는 구성도.
도 2는 종래의 다중 코어 프로세서에 있어서, 정적으로 코어를 할당하고 사용하는 구성도.
도 3은 본 발명의 일실시 예에 따른 하나의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템의 구성도,
도 4는 본 발명의 다른 실시 예에 따른 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템의 구성도,
도 5는 본 발명에 따른 하나 또는 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템의 상세 구성도,
도 6은 본 발명에 따른 상태 관리부의 상세 구성도,
도 7은 본 발명에 따른 동적 제어부의 상세 구성도,
도 8은 본 발명에 따른 프로세스 사전 로딩 방식에 의한 동적 코어 할당 변경 과정을 일례로 설명하기 위한 구성도,
도 9는 본 발명에 따른 프로세스 실시간 최적 로딩 방식에 의한 동적 코어 할당 변경 과정을 일례로 설명하기 위한 구성도이다.
<도면의 주요부분에 대한 부호의 설명>
100, 100-1, 100-n: 다중코어 프로세서
110,111: 코어 인터페이스 및 제어부 120-1~120-n: 코어
200: 소프트웨어 프로그램 210:프로세스 관리부
220-1~220-n: 프로세스 230-1~230-n: 공용메모리
240: 입력부 300: 상태관리부
400: 동적제어부

Claims (8)

  1. 코어 인터페이스 및 제어부와, 코어1 내지 코어n으로 이루어진 하나의 다중 코어프로세서, 또는 코어 인터페이스 및 제어부와, 코어1 내지 코어n으로 이루어진 둘 이상의 다중 코어프로세서1 내지 다중 코어프로세서n에 적용되며,
    상기 각 코어에 대응되는 다수개의 프로세스1 내지 프로세스n과, 다수개의 공용메모리1 내지 공용메모리n을 포함하는 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템에 있어서,
    사전에 프로세서의 개수와 프로세서의 코어 개수, 프로세스들의 우선순위 정보를 설정해 놓은 프로세스 및 코어 수 환경정보파일과, 사전에 각 코어별로 프로세스를 어떻게 배치시킬 것인지를 설정해 놓은 프로세스별 코어 할당 환경정보파일과, 사전에 동적 할당 수행여부, 프로세스 사전 로딩 방식 또는 프로세스 실시간 최적 로딩 방식 중에서의 선택 정보, 동적 할당을 위한 정보 수집 주기, 프로세스별 과부하 성능 임계치와 권장 성능 임계치, 코어별 가용도 임계치에 대한 기준을 설정해 놓은 동적 제어 환경정보파일을 생성 및 기록하는 입력부와;
    프로그램이 실행된 후 원하는 기능이 수행될 각 프로세스들을 생성하는 프로세스 생성부와, 프로세스에 기능을 할당하는 프로세스 기능 할당부와, 상기 프로세스 기능 할당부로부터 할당된 프로세스 개수가 만족되면 그에 따른 동작환경을 관리 제어하는 동작환경 관리부와, 각각의 기능들을 수행하는 S/W(소프트웨어) 기능 수행부와, S/W 기능을 수행하다가 프로그램을 종료할 경우에 최종 동적 환경 정보를 프로세스별 코어 할당 환경정보파일과 동적 제어 환경정보파일에 저장함으로써 차후 다시 실행 시 최종 상태를 그대로 유지시킬 수 있도록 하는 최종환경정보 저장부와, 각 코어별로 할당되었던 프로세스들을 종료 처리하고 프로그램을 종료하는 프로세스종료 처리부로 구성되어 프로그램의 시작과 동시에 각각의 프로세스들을 생성하는 프로세서관리부와;
    프로세스 및 코어 수 환경정보파일과 프로세스별 코어 할당 환경정보파일, 그리고 동적 제어 환경정보파일로 부터 동적 할당을 위한 각종 정보를 로딩 하는 초기 환경 판독부와, 각 코어별로 프로세스를 할당하는 초기 할당부와, 소프트웨어 프로그램의 수행 중 환경 조건으로 정의되었던 수집 주기에 따라서 프로세스별 성능과 코어별 가용도를 측정하는 상태수집부와, 측정 결과를 토대로 성능이 부족한 프로세스를 판별하거나 코어의 가용도가 부족한지 여부를 판별하고 성능 보완이 필요한 프로세스와 여유 있는 코어를 판정하여 코어 조정을 지시하는 조정판정부로 이루어진 상태관리부와;
    코어를 조정할 프로세스의 수행을 정지하고 코어 조정을 지시하는 제어관리부와, 코어를 재할당하고 정지된 프로세스의 수행을 재개하고, 조정 정보를 프로세스별 코어 할당 정보에 저장하는 조정처리부로 구성된 동적제어부를 포함하는 것을 특징으로 하는 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템.
  2. 제 1 항에 있어서,
    상기 상태수집부는 환경정보를 통해 확인된 주기에 따라서 스스로 정보 수집 처리 명령을 코어별 가용도 수집부에 전달하는 수집주기관리부와, 수행중인 프로세스의 성능값을 측정하는 프로세스성능 수집부와, 다중 코어 프로세서들내의 각 코어들에 대한 가용도를 측정한 후, 상기 프로세스 성능 수집부를 통해서 수행중인 프로세스들의 성능 값을 측정한 후에 조정 판정부로 제어를 넘겨주는 코어별 가용도 수집부로 구성된 것을 특징으로 하는 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템.
  3. 제 1 항에 있어서,
    상기 조정판정부는 과부하 성능 임계치를 이용하여 성능 초과율을 산정하고, 권장 성능 임계치 이하이면서 코어 가용율이 낮은 프로세스를 구분해 내는 성능 초과율 산정부와, 코어별 가용율 값을 산출하는 코어 가용율 산정부와, 상기 코어 가용율 산정부를 거쳐 산출된 코어 가용율들을 비교해 보고 그 중에서 가용율이 가장 낮아서 성능 보강이 필요한 프로세스가 있는지 확인 및 판단하는 순위별 성능 판독부와, 상기 순위별 성능 판독부를 통해 성능이 부족한 프로세스가 없다고 판정되는 경우, 다시 가용도가 부족한 코어가 있는지 확인 및 판단하여 가용도가 부족한 코어가 없는 경우에는 추가 진행을 마쳐서 코어 조정을 하지 않고 다음 수집 주기가 될 때까지 그 상태를 유지하는 코어 가용도 판독부와, 상기 순위별 성능 판독부를 통해 성능이 부족한 프로세스가 있거나, 상기 코어 가용도 판독부를 통해 가용도가 부족한 코어가 있는 경우에, 여유있는 코어가 있는지를 확인하여 여유있는 코어가 있을 경우 이를 판정하는 여유 코어 판정부와, 상기 여유코드 판정부를 통해 판정된 여유 코어 확인에 따른 코어에 대한 할당 조정 명령 및 제어권을 동적제어부로 넘겨주는 코어 조정 지시부로 구성된 것을 특징으로 하는 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템.
  4. 제 1 항에 있어서,
    상기 제어관리부는 상태 관리부내의 코어 조정 지시부로 부터 코어 조정 명령이 전달되면, 여유 코어 판정에 따른 수행 정지 대상 프로세스를 구분해 내는 수행정지 대상 판정부와, 해당 코어들에서 동작되던 하나 또는 그 이상의 프로세스들의 동작을 잠시 멈추도록 프로세스 관리부의 S/W 기능 수행부로 명령을 전달하고, 조정을 해야 하는 대상 프로세스들의 동작이 정지 완료 상태라는 정보를 수신하는 수행정지 관리부와, 상기 수행정지 관리부로 동작이 정지 완료 상태 정보가 수신되면 조정 처리부의 코어 재할당 부로 제어를 넘어주는 코어조정 지시부로 구성된 것을 특징으로 하는 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템.
  5. 제 1 항에 있어서,
    상기 조정처리부는 다중 코어 프로세서들 중에서 조정 대상 코어들에게 조정이 될 프로세스들을 코어 인터페이스 및 제어부를 통해서 재 할당 되도록 세팅하는 코어 재할당 부와, 상기 코어 재할당 부의 세팅 후, 동작을 멈추게 했던 프로세스들이 수행을 재개하도록 프로세스 관리부의 S/W 기능 수행부로 명령을 전달하고, 수행을 재개해야 하는 대상 프로세스들의 동작 재개 완료 상태 정보가 입력되면 프로세스별 코어 할당 정보로 저장하고 동적 조정을 종료하는 수행 재개 관리부와, 상기 프로세스별 코어 할당 정보를 저장하는 조정 정보 저장부로 구성된 것을 특징으로 하는 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템.
  6. 코어 인터페이스 및 제어부와, 코어1 내지 코어n으로 이루어진 하나의 다중 코어프로세서, 또는 코어 인터페이스 및 제어부와, 코어1 내지 코어n으로 이루어진 둘 이상의 다중 코어프로세서1 내지 다중 코어프로세서n에 적용되며,
    상기 각 코어에 대응되는 다수개의 프로세스1 내지 프로세스n과, 다수개의 공용메모리1 내지 공용메모리n과, 입력부와, 프로그램의 시작과 동시에 각각의 프로세스들을 생성하는 프로세서관리부와, 상태관리부 및 동적관리부를 포함하는 다수의 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 방법에 있어서,
    (a) 입력부에 의해서 사전에 프로세서의 개수와 프로세서의 코어 개수, 프로세스들의 우선순위 정보를 정해서 프로세스 및 코어 수 환경정보파일에 기록하는 제1 과정;
    (b) 입력부에 의해서 사전에 각 코어별로 프로세스를 어떻게 배치시킬 것인지를 정해서 프로세스별 코어 할당 환경정보파일에 기록하는 제2 과정;
    (c) 입력부에 의해서 사전에 동적 할당 수행여부, 프로세스 사전 로딩 방식이나 프로세스 실시간 최적 로딩 방식 중에서의 선택 정보, 동적 할당을 위한 정보 수집 주기, 프로세스별 과부하 성능 임계치와 권장 성능 임계치, 코어별 가용도 임계치에 대한 기준을 정해서 동적 제어 환경정보파일에 기록하는 제 3과정;
    (d) 프로그램의 시작과 동시에 프로세스 관리부에 의해 각각의 프로세스들을 생성하고 상태 관리부로 넘어가서 초기 환경 판독부에 의하여 사전 정의 되었던 환경정보파일들로 부터 동적 할당을 위한 각종 정보를 로딩하는 제4 과정;
    (e) 초기 할당부에 의해서 각 코어별로 프로세스를 할당하고, 프로세스 관리부로 다시 제어가 넘겨져 S/W 기능 수행부에 의해서 각각의 기능들이 수행되는 제5 과정;
    (f) 소프트웨어 프로그램의 수행 중 환경 조건으로 정의되었던 수집 주기에 따라서 상태 수집부에서 프로세스별 성능과 코어별 가용도를 측정하는 제6 과정;
    (g) 측정 결과를 토대로 성능이 부족한 프로세스를 판별하거나 코어의 가용도가 부족한지 여부를 판별하고 성능 보완이 필요한 프로세스와 여유 있는 코어를 판정하여 코어 조정을 지시하는 조정 판정부에 의해 조정을 지시하는 제7 과정;
    (h) 동적 제어부의 제어 관리부에 의해 코어를 조정할 프로세스의 수행을 정지하고 코어 조정을 지시하는 제8 과정;
    (g) 조정 처리부에 의해서 코어를 재할당하고 정지된 프로세스의 수행을 재 개하고, 조정 정보를 프로세스별 코어 할당 정보에 저장하는 제9 과정;
    (h) S/W 기능을 수행하다가 최종 환경 정보 저장부를 통해 프로그램을 종료할 경우에 최종 동적 환경 정보를 환경정보파일에 저장함으로써 차후 다시 실행 시 최종 상태를 그대로 유지시킬 수 있도록 하는 제10 과정; 및
    (i) 각 코어별로 할당되었던 프로세스들을 종료 처리하고 프로그램을 종료하는 제11 과정을 포함하여 된 것을 특징으로 하는 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 방법.
  7. 제 6 항에 있어서,
    상기 제3 과정에서 상기 프로세스 사전 로딩 방식은,
    소정의 순서로 프로그램 수행 초기에 각 코어별로 프로세스들을 모두 미리 로딩 하여 필요한 프로세스만 수행을 하도록 하는 단계와, 운영 중 실시간적으로 특정 프로세스의 성능 부족이나 특정 코어의 가용율을 조사하고, 성능 부족 프로세스가 있거나 가용도가 남아도는 코어가 있을 경우에 기존에 동작 중인 프로세스는 정지 시키는 단계와, 성능이 부족하다 판별 했던 프로세스를 해당 코어에서 동작하도록 수행시키는 단계로 이루어진 것을 특징으로 하는 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 방법.
  8. 제 6 항에 있어서,
    상기 제3 과정에서 상기 프로세스 실시간 최적 로딩 방식은,
    소정의 순서로 프로그램 수행 초기에 각 코어별로 지정된 프로세스들을 로딩하여 수행을 하도록 하는 단계와, 운영 중 실시간적으로 특정 프로세스의 성능 부족이나 특정 코어의 가용율을 조사하고, 성능 부족 프로세스가 있거나 가용도가 남아도는 코어가 있을 경우에 기존에 동작 중인 프로세스는 정지 시키는 단계와, 성능이 부족한 프로세스를 할당하도록 하는 단계로 이루어진 것을 특징으로 하는 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 방법.
KR1020080132377A 2008-12-23 2008-12-23 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법 KR100901286B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080132377A KR100901286B1 (ko) 2008-12-23 2008-12-23 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080132377A KR100901286B1 (ko) 2008-12-23 2008-12-23 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법

Publications (1)

Publication Number Publication Date
KR100901286B1 true KR100901286B1 (ko) 2009-06-09

Family

ID=40982347

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080132377A KR100901286B1 (ko) 2008-12-23 2008-12-23 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR100901286B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101084876B1 (ko) * 2009-12-10 2011-11-21 주식회사 케이티네트웍스 운영서버에 구성된 cpu의 전체전력소모를 절감하는 방법
US9342365B2 (en) 2012-03-15 2016-05-17 Samsung Electronics Co., Ltd. Multi-core system for balancing tasks by simultaneously comparing at least three core loads in parallel
KR20200102526A (ko) * 2018-02-28 2020-08-31 미쓰비시덴키 가부시키가이샤 리소스 제어 장치, 리소스 제어 방법 및 기록 매체에 저장된 리소스 제어 프로그램
CN112068965A (zh) * 2020-09-23 2020-12-11 Oppo广东移动通信有限公司 数据处理方法、装置、电子设备和可读存储介质
KR102406483B1 (ko) * 2022-02-14 2022-06-10 주식회사 넷아스 멀티 프로세서의 동작 방법 및 제어 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080228755A1 (en) 2007-03-14 2008-09-18 Futoshi Haga Policy creation support method, policy creation support system, and program therefor
US20090007121A1 (en) 2007-06-30 2009-01-01 Koichi Yamada Method And Apparatus To Enable Runtime Processor Migration With Operating System Assistance

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080228755A1 (en) 2007-03-14 2008-09-18 Futoshi Haga Policy creation support method, policy creation support system, and program therefor
US20090007121A1 (en) 2007-06-30 2009-01-01 Koichi Yamada Method And Apparatus To Enable Runtime Processor Migration With Operating System Assistance

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE trans. on Paralle and distributed systems, vol.16, no.7, 2005.07, Julita Corbalan외2인, "Performance-Driven Processor Allocation"

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101084876B1 (ko) * 2009-12-10 2011-11-21 주식회사 케이티네트웍스 운영서버에 구성된 cpu의 전체전력소모를 절감하는 방법
US9342365B2 (en) 2012-03-15 2016-05-17 Samsung Electronics Co., Ltd. Multi-core system for balancing tasks by simultaneously comparing at least three core loads in parallel
KR20200102526A (ko) * 2018-02-28 2020-08-31 미쓰비시덴키 가부시키가이샤 리소스 제어 장치, 리소스 제어 방법 및 기록 매체에 저장된 리소스 제어 프로그램
KR102254797B1 (ko) 2018-02-28 2021-05-21 미쓰비시덴키 가부시키가이샤 리소스 제어 장치, 리소스 제어 방법 및 기록 매체에 저장된 리소스 제어 프로그램
CN112068965A (zh) * 2020-09-23 2020-12-11 Oppo广东移动通信有限公司 数据处理方法、装置、电子设备和可读存储介质
KR102406483B1 (ko) * 2022-02-14 2022-06-10 주식회사 넷아스 멀티 프로세서의 동작 방법 및 제어 시스템

Similar Documents

Publication Publication Date Title
KR100901286B1 (ko) 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법
CN111767134B (zh) 一种多任务动态资源调度方法
KR101629155B1 (ko) 전력-인식 스레드 스케줄링 및 프로세서들의 동적 사용
Polo et al. Resource-aware adaptive scheduling for mapreduce clusters
EP2176751B1 (en) Scheduling by growing and shrinking resource allocation
US5301324A (en) Method and apparatus for dynamic work reassignment among asymmetric, coupled processors
CN102388381B (zh) 用于分配共享存储资源的系统和方法
US20130167152A1 (en) Multi-core-based computing apparatus having hierarchical scheduler and hierarchical scheduling method
US7673305B2 (en) System and method of expediting certain jobs in a computer processing system
KR20190084203A (ko) Ssd기반 클라우드 계산 스토리지 시스템을 위한 aclb를 위한 방법 및 장치
KR20080041047A (ko) 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
US9158713B1 (en) Packet processing with dynamic load balancing
US20080104428A1 (en) Inter-die power manager and power management method
US20110083134A1 (en) Apparatus and method for managing virtual processing unit
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
US11775191B2 (en) Host load based dynamic storage system for configuration for increased performance
CN103443771A (zh) 一种数据中心间资源调度方法和设备
CN111352735A (zh) 数据加速方法、装置、存储介质及设备
JP2009175850A (ja) マルチ演算処理システム、マルチ演算処理方法、およびマルチ演算処理プログラム
KR20080024681A (ko) 분산처리시스템에서의 태스크 할당방법 및 시스템
JP2006195985A (ja) リソース利用率を制御する方法およびコンピュータシステム
CN116302327A (zh) 资源调度方法及相关设备
JPH08152903A (ja) マルチプロセッサシステム
US20160110221A1 (en) Scheduling system, scheduling method, and recording medium
KR101568204B1 (ko) Cpu/gpu 기반 매니코어 시스템 및 cpu/gpu의 동시처리를 위한 멀티코어 cpu의 코어 개수 결정 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20120531

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131202

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee