KR101373786B1 - 자원-기반 스케쥴러 - Google Patents

자원-기반 스케쥴러 Download PDF

Info

Publication number
KR101373786B1
KR101373786B1 KR1020097000982A KR20097000982A KR101373786B1 KR 101373786 B1 KR101373786 B1 KR 101373786B1 KR 1020097000982 A KR1020097000982 A KR 1020097000982A KR 20097000982 A KR20097000982 A KR 20097000982A KR 101373786 B1 KR101373786 B1 KR 101373786B1
Authority
KR
South Korea
Prior art keywords
computer
resource
utilization
task
delete delete
Prior art date
Application number
KR1020097000982A
Other languages
English (en)
Other versions
KR20090029811A (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
Priority claimed from US11/471,466 external-priority patent/US8239869B2/en
Priority claimed from US11/546,514 external-priority patent/US9588809B2/en
Application filed by 콘두시브 테크놀로지스 코포레이션 filed Critical 콘두시브 테크놀로지스 코포레이션
Publication of KR20090029811A publication Critical patent/KR20090029811A/ko
Application granted granted Critical
Publication of KR101373786B1 publication Critical patent/KR101373786B1/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/5038Allocation 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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

컴퓨터 작업의 자원-기반 스케쥴링이 개시된다. 본 발명의 실시예에 따르면, 컴퓨터 작업은 자원의 이용도 및 상기 컴퓨터 작업이 상기 자원과 관련되는 이용도 기준을 기초로 스케쥴링된다.
컴퓨터 작업, 자원, 스케쥴링, 자원 이용도.

Description

자원-기반 스케쥴러{RESOURCE-BASED SCHEDULER}
본 발명은 컴퓨터 작업을 스케쥴링하는 것에 관한 것이다. 구체적으로, 본 발명의 실시예들은 특정 작업의 자원 이용도(utilization) 기준 및 상기 작업에 의해 사용되는 컴퓨터 자원의 이용도을 기초로 컴퓨터 작업을 스케쥴링하는 것에 관한 것이다.
오늘날의 컴퓨터 운영체제(O/S)는 하나 보다 많은 컴퓨터 작업들(예컨대, 프로세스)이 동시적으로 수행되는 모습을 가져다주는 멀티태스킹 스케쥴러를 사용한다. 수 많은 서로다른 스케쥴링 알고리즘들이 존재하지만, 일반적으로 이들의 기본 개념은 퀀텀(quantum)으로서 알려진 작은 타임 슬라이스(time slice)가 프로세스의 하나의 쓰레드(thread)에 주어진 후, 해당 프로세스 또는 다른 프로세스의 다른 쓰레드 등에 주어지는 것이다. 퀀텀의 길이는 매우 작은데, 일반적으로는 20 내지 120 밀리초의 범위를 갖는다. 인간의 시간 인지력으로 인하여, 작업들은 동시적으로 수행되는 것으로 나타난다.
중앙 처리 유닛(CPU)은 대부분의 컴퓨터 시스템의 가장 빠른 구성요소가 되려는 경향이 있는 반면에, 디스크 I/O, 네트워크 I/O, 및 심지어 메모리와 같은 다른 컴퓨터 자원들은 훨씬 느려지는 경향이 있다. 예를 들어, 디스크로부터의 데이터 전송과 CPU내의 데이터 전송의 관점에서 살펴보면 디스크 I/O는 CPU보다 대략 100만배 느릴 수 있다. 그 결과, CPU는 이러한 보다 느린 자원들을 종종 기다린다. 예를 들어, 3 기가헤르쯔 CPU는 디스크 드라이브가 수 밀리초의 평균 액세스 시간으로 데이터를 탐색하는 것을 기다리면서 종종 유휴(idle) 상태에 놓여 있는다.
여러 개의 서로다른 작업들이 종종 동일한 자원들을 놓고 경쟁하기 때문에, 작업들은 종종 서로 충돌하는데, 이로 인해 하나 이상의 작업들이 느려지는 결과를 초래한다. 사용자 관점에서, 작업 충돌은 무응답 애플리케이션, 커서의 갑작스러운 움직임 및 느리게 랜더링되는 그래픽으로서 나타난다.
스로틀링(Throttling)은 이러한 부정적 영향을 최소화해주는 기술이다. 스로틀링은 애플리케이션 또는 작업이 할당된 자원량을 초과하여 사용하지 못하도록 해준다. 스로틀링의 종류에는 디스크 I/O 스로틀링, CPU 스로틀링 및 네트워크 스로틀링이 포함된다. 예를 들어, CPU 스로틀링은 애플리케이션에 대해 CPU 이용도 목표 한도를 설정하고, 애플리케이션이 목표 한도를 초과하는 경우에 작업을 중단하게끔 하는 것을 포함할 수 있다. 스로틀링은 때때로 유지관리 애플리케이션 또는 덜 중요한 컴퓨터 작업을 위한 컴퓨터 자원에 적용된다. 스로틀링이 유익하기는 하지만, 컴퓨터 작업의 자원 이용은 기타의 작업과 애플리케이션에 대해 완전하게 투명하지는 않는다.
상기 문제점은 컴퓨터 자원이 일반적으로 24시간 내내 낭비되기 때문에 훨씬 더 복잡해진다. 예를 들어, 대부분의 데스크탑은 컴퓨터의 이용가능한 자원의 5% 미만을 사용하며, 높은 트래픽 서버는 종종 대략 20 %를 사용한다. 자원의 80-90 %를 사용하는 컴퓨터일지라도 여전히 10-20 %의 자원이 이용가능하다.
이렇게 기타 등등의 손실된 자원들을 복구하여 사용하기 위해, 하나 이상의 작업들이 다른 작업 또는 애플리케이션에 심각한 영향을 주는 것 없이 컴퓨터 시스템내에서 수행될 수 있도록 해주는 기술이 필요하다. 이러한 기술은 작업을 스케쥴링할 때에 사용자의 시간을 소비해서는 안되며 또한 작업이 수행될 때에 컴퓨터 시스템과 사용자의 상호작용에 부정적인 영향을 미쳐서도 안된다.
본 섹션에서 기술된 접근방안들은 실행될 수 있는 접근방안들이지만 반드시 이전에 구상되거나 실행되었던 접근방안들일 필요는 없다. 그러므로, 이와 달리 언급하지 않는 한, 본 섹션에서 기술된 임의의 접근방안들은 단지 본 섹션에서 포함되었다라는 이유만으로 종래 기술로서 자격을 갖는 것으로 간주되어서는 안된다.
이하의 기술에서는, 설명을 목적으로, 본 발명의 완전한 이해를 제공하고자 수 많은 특정한 상세사항들이 진술된다. 하지만, 본 발명은 이러한 특정한 상세사항들 없이도 실시될 수 있음은 자명할 것이다. 기타 예시들에서는, 본 발명을 불필요하게 불명확하게 하는 것을 회피하기 위하여 잘 알려진 구조물들 및 장치들이 블럭도 형태로 도시된다.
개관
대다수의 컴퓨터들은 자신의 모든 자원 용량을 100% 시간 활용하지 않는다. 이것은 일반적으로 매일 일정 시간동안만 턴온되는 컴퓨터뿐만이 아니라, 하루에 24시간, 일주일에 7일 정도로 많이 이용되는 것으로 보이는 컴퓨터에서도 적용된다. 그러므로, 컴퓨터 시간 및 자원은 낭비된다. 예를 들어, 24 시간 동안에 걸쳐, 매우 과중하게 사용되고, 단시간의 활동성 급증을 가질 수 있는 컴퓨터 시스템은 평균적으로 자신의 자원 중에서 고작 대략 5 내지 20 %만을 이용할 수 있다.
본 발명의 실시예에 따르면, 자원의 이용도 및 해당 자원과 관련하여 컴퓨터 작업이 갖는 이용도 기준을 기초로 컴퓨터 작업이 스케쥴링된다. 예를 들어, 컴퓨터 작업은 컴퓨터 작업이 스케쥴링되기 위하여 디스크 I/O 자원이 60%의 이용가능 용량을 갖는 이용도 기준을 가질 수 있다. 만약 디스크 I/O 자원의 이용가능한 용량이 60 % 보다 작으면, 본 실시예에서 컴퓨터 작업은 스케쥴링되지 않는다.
일 실시예에서, 자원-기반 스케쥴러(RBS)는 각각의 컴퓨터 작업을 여러 개의 서로다른 자원-기반 스케쥴링 작업리스트 중 적어도 하나의 작업리스트상에 올려놓는다. 이러한 자원-기반 스케쥴링 작업리스트는, 비제한적인 예시로서, 디스크 I/O 스케쥴링 작업리스트, CPU 스케쥴링 작업리스트, 및 네트워크 I/O 스케쥴링 작업리스트를 포함한다. 그러므로, 특정 스케쥴링 작업리스트는 특정 자원을 이용하기 위해 대기하는 컴퓨터 작업을 포함한다. 본 실시예에서, 각각의 컴퓨터 작업은 특정 자원에 관한 이용도 기준을 갖는다. RBS는 자원들 중에서 하나의 자원을 선택하고, 이어서 컴퓨터 작업을 스케쥴링한다. 일 실시예에서, 상기 선택은 자원의 우선순위에 기초한다. 예를 들어, 디스크 I/O 자원은 CPU 자원보다 높은 우선순위를 가질 수 있다. 일 실시예에서, 저속 자원으로서 지정된 자원은 고속 자원으로서 지정된 자원보다 높은 우선순위가 주어진다.
스케쥴링될 자원을 선택한 후에, RBS는 선택된 자원에 대응하는 작업리스트로부터 수행할 컴퓨터 작업 중 하나의 컴퓨터 작업을 선택한다. 일 실시예에서, RBS는 자원의 이용가능한 용량을 컴퓨터 작업의 이용도 기준과 정합시키는 기준을 기초로 컴퓨터 작업을 선택한다. 하지만, RBS는 컴퓨터 작업의 우선순위, 컴퓨터 작업의 필요한 실행 순서, 컴퓨터 작업이 작업리스트상에서 배치되었던 순서 등과 같은 다른 인자들을 이용할 수도 있다
일 실시예에서, RBS는 해당 컴퓨터 작업이 필요로 하지 않는 다른 자원들이 (완전하게 또는 부분적으로) 다른 작업들에 의해 사용될 지라도 해당 컴퓨터 작업에 의해 사용되는 자원들이 (완전하게 또는 부분적으로) 이용가능한 경우에 각각의 컴퓨터 작업을 스케쥴링함으로써 다수의 컴퓨터 자원의 효율적인 사용이 가능하도록 해주고 다른 작업들의 수행에 대한 영향을 줄여줌을 유념해둔다.
본 발명은 첨부된 도면들에서 예시를 통해 도해되고 있지만, 이러한 예시로 한정되는 것은 아니며, 도면에서 동일한 참조 부호는 유사한 구성요소를 가리킨다. 첨부된 도면들의 간단한 설명은 다음과 같다.
도 1a는 본 발명의 실시예에 따른, 자원-기반 스케쥴링 작업리스트를 갖는 자원-기반 스케쥴러의 도면이다.
도 1b는 본 발명의 다른 실시예에 따른, 자원-기반 스케쥴러의 도면이다.
도 2는 본 발명의 실시예에 따른, 자원-기반 스케쥴링의 흐름도이다.
도 3은 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템을 도해하는 블럭도이다.
자원 기반 스케쥴러
도 1a는 본 발명의 실시예에 따른, 자원-기반 스케쥴링 작업리스트(120)를 갖는 자원-기반 스케쥴러(RBS)(100)의 도면이다. RBS(100)는 서로다른 컴퓨터 자원들의 이용가능한 용량을 기초로 컴퓨터 작업을 능동적으로(pro-actively) 스케쥴링한다. 예를 들어, 서로다른 자원들에는, 비제한적인 예시로서, CPU, 디스크 I/O, 네트워크 I/O, 비디오, 메모리, 키보드, 네트워크 자원 등이 포함될 수 있다. 본 명세서에서 사용되고 있는, "컴퓨터 작업" 또는 "작업"은 비제한적인 예로서, 컴퓨터 프로세스, 쓰레드, 마이크로 작업(후술할 예정임), 또는 실행가능한 컴퓨터 코드 임의의 일부분을 포함한다. RBS(100)는 각각의 컴퓨터 작업들이 임의의 다른 작업들의 자원에 대한 요구조건과 충돌하지 않고 자신의 자원에 대한 요구조건을 수용할 수 있도록 할 수 있다. 일 실시예에서, RBS(100)는 특정 자원이 부분적으로만 사용되는 시기를 결정할 수 있고, 이미 그 자원을 사용하고 있는 임의의 다른 작업들에 대해 최소한으로 영향을 미치면서, 미사용된 부분을 선택된 작업에 할당할 수 있다.
일 실시예에서, RBS(100)는 서로다른 다양한 자원들에 대해 컴퓨터 작업을 스케쥴링한다. 서로다른 자원들은 RBS(100)와 동일한 컴퓨터 시스템상에 존재할 수 있거나 존재하지 않을 수 있다. 예를 들어, 일 실시예에서, RBS(100)는 네트워크를 경유하여 액세스되는 자원을 컴퓨터 작업이 사용하도록 스케쥴링한다. 특정한 예시로서, 자원은 인터넷을 경유하여 액세스될 수 있다.
그러므로, 일 실시예에서, RBS(100)는 다양한 자원들에 대한 액세스를 추구 하는 컴퓨터 작업을 수신하고, 어느 컴퓨터 작업이 어느 자원을 사용하도록 스케쥴링되어야 하는지 뿐만이 아니라 언제 컴퓨터 작업이 스케쥴링되어야 하는지에 대한 스케쥴링 결정을 내린다.
컴퓨터 자원 이용도
RBS(100)는 다양한 컴퓨터 자원의 이용도을 기술하는 자원 이용도 정보(105)를 입력한다. 이용도은 일정한 기간 또는 특정한 시점과 관련될 수 있다. 이용도은 특정 구간에 걸친 평균 이용도일 수 있다. 예를 들어, 자원의 이용도은 특정 기간에 걸친 평균 이용도로서 지정될 수 있다. 특정한 예시로서, 30% 이용도의 CPU 자원은 최근의 일정 기간에 걸친 평균 이용도에 관한 것일 수 있다. 일 실시예에서, 구간은 퀀텀단위로 측정된다.
일 실시예에서, 이용도은 수치를 기반으로 한다. 예를 들어, 이용도은 특정한 시점에서의 실행대기중인 오퍼레이션들의 갯수에 기초할 수 있다. 예를 들어, 만약 자원이 실행대기중인 "x"개의 오퍼레이션을 갖는 다면, 이용도은 "x" 일 수 있다. 자원의 수치 기반 이용도의 다른 예시로서, 이용도은 특정 자원을 사용하고자 하는 요청의 갯수에 기초할 수 있다. 예를 들어, 일 실시예에서, 이용도은 특정 자원을 사용하기 위해 각각의 프로세스가 갖는 요청의 총 갯수에 기초한다. 수치 기반 이용도은 일정한 시점 또는 구간과 관련될 수 있다. 예를 들어, 일 실시예에서 수치 기반 자원 이용도은 특정 기간에 걸쳐 실행대기중인 오퍼레이션들의 평균 갯수에 기초한다. 다른 실시예에서, 수치 기반 자원 이용도은 특정 시점에서 실행대기중인 오퍼레이션들의 갯수에 기초한다.
일 실시예에서, RBS(100)는 자원 이용도 정보(105)를 기초로, 미래의 자원 이용도을 추정한다. 예를 들어, 특정 자원을 사용하고자 하는 요청들의 갯수 (및 아마도 다른 인자들) 를 기초로, 미래의 자원 이용도에 대한 추정을 수행한다. 다른 예시로서, 특정 자원의 % 이용도 (및 아마도 다른 인자들) 을 기초로, 미래의 자원 이용도에 대한 추정을 수행한다.
컴퓨터 작업 이용도 기준
RBS(100)는 또한 스케쥴링되는 작업들에 대한 이용도 기준(118)을 입력한다. 이용도 기준(118)은 자원과 관련된다. 예를 들어, 자원 임계치가 사용될 수 있으며, 여기서 RBS(100)는 다른 작업들에 의한 자원 이용도이 임계치 미만인 경우에만 컴퓨터 작업을 스케쥴링한다. 자원 임계치를 이용하는 예시로서, RBS(100)는 디스크 I/O가 60% 보다 작은 이용가능한 용량을 갖는 경우에만 디스크 I/O를 이용하도록 특정 컴퓨터 작업을 스케쥴링한다. 일 실시예에서, RBS(100)는 이용도 기준(118)을 제공하는 컴퓨터 작업을 포함하는 애플리케이션을 위한 애플리케이션 프로그램 인터페이스(API)를 가진다. 본 명세서에서 하나의 예시적인 API가 제공된다.
일 실시예에서, 이용도 기준(118)은 시간에 기초한다. 이용도 기준(118)을 %에 기초하는 것이 시간 기반 기준의 예이다. 일 실시예에서, 이용도 기준(118)은 수치에 기초한다. 수치 기반 이용도 기준(118)의 예는 특정 자원상에서 실행대기중인 오퍼레이션의 갯수이다. 수치 기반 이용도 기준(118)의 다른 예는 자원을 이용하고자 수신되는 요청들의 갯수이다. 예를 들어, 특정 프로세스의 이용도 기준(118)은 특정 자원을 이용하고자 하는 요청들의 갯수에 기초한다.
일 실시예에서, RBS(100)는 이용도 이력 정보(116)를 저장한다. 이용도 이력 정보(116)는 하나 이상의 작업들에 의한 이전의 자원 이용도을 기술한다. 예를 들어, 컴퓨터 작업이 네트워크 I/O 자원의 30%를 사용하였다라는 사실이 장래의 참조를 위해 저장된다. 일 실시예에서, RBS(100)는 이용도 이력 정보(116)를 이용하여 스케쥴링되는 컴퓨터 작업에 대한 이용율 기준을 결정한다. 예를 들어, 컴퓨터 작업이 특정 자원을 사용하였던 하나 이상의 과거 시간들을 기초로, RBS(100)는 컴퓨터 작업이 특정 자원에 대해 "x"%의 이용도 기준을 갖는 것으로 결정내린다. 그 후 RBS(100)는 컴퓨터 작업을 스케쥴링할 때에 이 이용도 기준을 이용한다.
RBS(100)는 또한 스케쥴링되는 작업들의 실행가능 코드(108)를 입력하는데, RBS(100)는 이를 분석하여 이용도 기준을 결정한다.
스케쥴링 결정 연기
일 실시예에서, 컴퓨터 작업이 특정 자원을 사용할 수 있을지의 여부에 대한 결정이 연기될 수 있다. 예를 들어, 특정 컴퓨터 작업은 자원 기반 스케쥴러가 특정 컴퓨터 작업을 스케쥴링할지를 고려하기도 전에 다른 컴퓨터 작업들로부터의 특정 갯수의 요청들이 서비스되도록 해주는 이용도 기준을 가질 수 있다. 일 실시예에서, 자원의 이용도이 임계치 이상이면 RBS는 특정 컴퓨터 작업의 실행을 연기시킨다. 특정 컴퓨터 작업은 자신을 스케쥴링하기 전에 서비스될 수 있는 다른 컴퓨터 작업으로부터의 요청들의 갯수를 지정한다. 일 실시예에서, 상기 갯수의 요청이 서비스된 후, 다음으로 특정 컴퓨터 작업이 스케쥴링된다. 다른 실시예에서, 요청이 서비스된 후, RBS는 특정 컴퓨터 작업이 자원을 갖게 하도록 할 지의 여부를 결정한다.
일 실시예에서, 자원 기반 스케쥴러는 지연 없이 충족되어야 하는 자원 요청에 관한 정규 작업리스트와, 연기될 수 있는 자원 요청에 관한 연기 작업리스트를 갖는다. 요청이 연기 작업리스트상에 올려지는 경우 연기 작업리스트내의 각 목록은 현재의 요청 번호로 번호표시(stamped)될 수 있다. 이러한 연기된 요청들은 어느 연기된 요청이 맨먼저 서비스되어야 하는지에 기초하여 순서가 정해질 수 있다. 일 실시예에서는, 다수의 연기된 작업리스트들이 존재한다. RBS가 새로운 요청을 개시할 것을 결정한 경우, RBS는 우선, 연기된 작업리스트를 조사하여 임의의 요청들이 만료되었는지 알아낸 후에 이들을 정규 작업리스트와 대비하여, 다음순번으로 가져갈 수 있다.
자원 기반 스케쥴링 작업리스트
일 실시예에서, RBS(100)는 컴퓨터 작업이 사용하도록 스케쥴링될 수 있는 자원 각각에 대해 자원 기반 스케쥴링 작업리스트(120)를 갖는다. 예를 들어, RBS(100)는 CPU 자원 작업리스트[120(1)], 디스크 I/O 작업리스트[120(2)], 네트워크 I/O 작업리스트[120(3)] 및 기타 자원 작업리스트[120(n)]를 갖는다. 기타 자원 작업리스트들의 예시에는, 비제한적인 예로서, 네트워크 자원 작업리스트, 비디오 자원 작업리스트, 키보드 자원 작업리스트가 포함된다. 각각의 작업리스트(120)는 해당 자원에 대응하는 자원을 사용하기 위해 대기중인 작업들을 포함한다. 도면을 불명확하게 하지 않도록 하기 위해, 도 1a에서는 가능한 모든 자원-기반 스케쥴링 작업리스트가 도시되고 있지는 않다. 일 실시예에서, 특정 작업리스트는 자원들의 조합을 사용하는 컴퓨터 작업을 위한 것이다. 일 실시예에서는, 특정 자원에 대해 두 개 이상의 작업리스트들이 존재하며, 이 경우 각각의 작업리스트는 서로다른 우선순위에 대응한다. 예를 들어, 높은 우선순위를 갖는 컴퓨터 작업이 하나의 작업리스트에 올려지고, 중간 우선순위를 갖는 컴퓨터 작업은 다른 작업리스트 등에 올려진다. 작업리스트는 순서화되거나 또는 순서화되지 않을 수 있다.
일 실시예에서, RBS(100)는 실행가능 코드(108)의 분석을 기초로 어느 작업리스트에 컴퓨터 작업을 배치시킬지를 결정한다. 예를 들어, 일 실시예에서, RBS(100)는 컴퓨터 작업이 어떤 자원을 필요로 하는지를 결정하기 위해 컴퓨터 작업의 실행가능 코드(108)내의 명령어를 조사한다.
일 실시예에서, 컴퓨터 자원이 충분한 양만큼 이용가능한 경우, RBS(100)는 해당 자원에 대응하는 작업리스트내의 컴퓨터 작업 중 하나에 해당 자원을 제공한다. 예를 들어, 스케쥴링 논리부(112)는 이용가능한 자원량과 컴퓨터 작업의 이용도 기준을 기초로 작업리스트상의 컴퓨터 작업 중 하나를 선택한다. 다른 선택 기준이 사용될 수 있다. 선택 기준에는, 비제한적인 예시로서, 작업들이 작업리스트에 추가되었던 순서, 컴퓨터 작업 우선순위(예컨대, 프로세스 우선순위, 쓰레드 우선순위), 및 이용가능한 자원량과 작업의 자원 필요도와의 정합이 포함된다. 이러한 선택은 이러한 기준의 임의의 조합뿐만이 아니라, 구체적으로 언급하지 않은 다른 기준에 기초할 수 있다.
자원-기반 스케쥴링 작업리스트가 없는 자원 기반 스케쥴러
일 실시예에서, RBS(100)는 다양한 컴퓨터 자원에 대응하는 스케쥴링 작업리스트를 이용하지 않는다. 도 1b를 참조하면, RBS(100)는 특정 순서가 아닌, 진행과정에 따라 컴퓨터 작업을 스케쥴링하고자 하는 요청을 수신한다. 예를 들어, 애플리케이션이 컴퓨터 작업 또는 작업들을 수행하기를 희망할 때, 애플리케이션은 RBS(100)에게 하나 이상의 컴퓨터 작업을 스케쥴링하고자 하는 요청을 보낸다. RBS(100)은 어떤 자원 또는 자원들이 특정 컴퓨터 작업에 의해 사용되는지를 결정하거나 또는 이를 통지받는다. 자원들의 예시에는 프로세서(304), 저장 장치(310), 디스플레이(312), 입력 장치(314), 및 네트워크 통신 인터페이스(318), 및 네트워크(184)를 경유하여 액세스되는 네트워크 자원(182)이 포함된다.
RBS(100)는 특정 자원의 이용도을 결정하거나 또는 이에 대해 통지받는다. RBS(100)는 또한 컴퓨터 작업이 특정 자원과 관련하여 갖는 이용도 기준을 결정하거나 또는 이에 대해 통지받는다. 특정 자원의 이용도 및 이용도 기준을 기초로, RBS(100)는 특정 자원을 사용하도록 특정 컴퓨터 작업을 스케쥴링할지를 결정한다. 예를 들어, 만약 네트워크 통신 인터페이스(318)의 이용도이 컴퓨터 작업의 이용도 기준을 충족하면, RBS(100)는 네트워크 통신 인터페이스(318)를 이용하여 실행할 컴퓨터 작업을 스케쥴링한다. 만약 네트워크 통신 인터페이스(318)의 이용도이 컴퓨터 작업의 이용도 기준을 충족하지 않으면, RBS(100)는 네트워크 통신 인터페이스(318)를 이용하도록 컴퓨터 작업을 스케쥴링하지 않는다. 이와 달리, RBS(100)는 기다렸다가 네트워크 통신 인터페이스(318)의 이용도이 컴퓨터 작업의 이용도 기준을 충족할 때에 컴퓨터 작업을 스케쥴링할 수 있다.
자원 우선순위화
일 실시예에서, 컴퓨터 자원은 스케쥴링 목적으로 우선순위화된다. 예를 들어, CPU, 디스크 I/O, 네트워크 I/O, 및 기타 자원들이 자원의 상대적 속도에 기초하여 등급화될 수 있다. 예를 들어, 디스크 I/O는 CPU 자원보다 저속인 자원으로서 지정될 수 있고, 이에 따라 보다 높은 우선순위가 주어질 수 있다. 마찬가지로, 네트워크 I/O 자원은 디스크 I/O보다는 고속이지만 CPU보다는 저속일 수 있다. 따라서, 네트워크 자원은 CPU보다는 높지만 디스크 I/O보다는 낮은 우선순위가 주어질 것이다. 만약 RBS(100)가 저속 자원들을 고려하여 이들 자원들을 높은 우선순위로 스케쥴링한다면, CPU와 같은 고속 자원에 대한 지연은 최소화될 수 있다.
애플리케이션 기반 예시
이하는 애플리케이션에서의 자원-기반 스케쥴링의 예이다. 예로서, 애플리케이션은 조각모음기(defragmenter) 또는 바이러스 검사기일 수 있다. 이 예시에서, 컴퓨터 작업 A는 디스크 I/O 스케쥴링 작업리스트[120(2)]의 최상단에 위치하고, 60% 디스크 I/O 이용가능 용량의 이용도 기준을 가지며, 컴퓨터 작업 B는 디스크 I/O 스케쥴링 작업리스트[120(2)]상에서 다음번째에 위치하고, 20% 디스크 I/O 이용가능 용량의 이용도 기준을 갖는다. 만약 디스크 I/O가 30% 이용가능 용량을 갖는 다면, 디스크 I/O는 충분한 이용가능 용량을 갖지 않기 때문에 RBS(100)는 컴퓨터 작업 A를 스케쥴링하지 않을 것이다. 하지만, 컴퓨터 작업 B는 스케쥴링될 수 있다. 이 경우에서, 디스크 I/O를 낭비하는 것 대신에 이것을 사용하도록 적절한 컴퓨터 작업(컴퓨터 작업 B)을 스케쥴링함으로써 RBS(100)는 30 % 디스크 I/O 이용가능 용량을 이용한다. 만약, RBS(100)가 60% 디스크 I/O를 필요로 하는 컴퓨터 작업 A에게 디스크 I/O 자원을 제공했더라면, 이로 인해 100%를 넘는 디스크 I/O 자원이 할당되었을 것이기에 컴퓨터 작업 충돌을 야기시킬 수 있다.
커넬(KERNEL) 레벨 자원 기반 스케쥴러
일 실시예에서, RBS(100)는 커넬 레벨의 O/S에서 구현된다. 이와 같은 실시예에서, 커넬 레벨의 RBS(100)는 실행요청중인 컴퓨터 작업(예컨대, 쓰레드)의 전체 작업리스트를 완전히 알고 있다. 따라서, RBS(100)는 임의의 자원의 % 이용도을 결정할 필요없이 자원 이용가능성을 기초로 실행을 명령한다. 그 이유는 RBS(100)가 이미 다양한 자원들을 스케쥴링하기 위한 완전한 제어를 갖고 있기 때문이다. 여기서는 측정이 필요가 없으며, RBS(100)가 자원 할당 주체이므로 이미 알고 있는 상태다.
프로세스 흐름
도 2는 본 발명의 실시예에 따른, 자원-기반 스케쥴링에 관한 프로세스(200)의 단계들을 도해하는 흐름도이다. 설명의 편의를 위해 프로세스(200)의 단계들을 특정 순서로 설명한다. 하지만, 단계들은 이와 다른 순서로 발생될 수 있다. 또한, 단계들은 여러 번 반복될 수 있다. 단계 202에서, RBS(100)는 하나 이상의 작업들의 이용도 기준을 수신한다. 예를 들어, 애플리케이션 프로그램은 RBS(100)에게 이용도 기준을 제공한다. 애플리케이션은 서로다른 컴퓨터 작업에 대해 서로다른 기준을 지정할 수 있다. 애플리케이션이 자신의 컴퓨터 작업에 대한 이용도 기준을 지정하는 것은 필요하지 않다.
본 발명의 실시예에 따라, 애플리케이션은 자원 이용도을 제어하기 위한 파라미터를 RBS(100)에 보낸다. 자원 이용도의 제어에는, 비제한적인 예시로서, 디스크 I/O, CPU 및 네트워크가 포함된다. 예를 들어, 애플리케이션은 실행되는 컴퓨터 작업이 위의 세 개의 자원들 또는 다른 자원들의 임계치 레벨의 임의의 조합에 따를 것을 요청할 수 있다. 또한, 애플리케이션은 서로다른 컴퓨터 작업에 대해 서로다른 자원 임계치 레벨을 지정할 수 있다. 예를 들어, 일 실시예에 따라, 애플리케이션은 각각의 컴퓨터 작업마다 서로다른 자원 임계치 레벨을 지정한다. 그러므로, 세분화된 자원 관리가 가능하다.
단계 204에서, RBS(100)는 하나 이상의 작업들의 이용도 기준을 결정한다. 일 실시예에서, RBS(100)은 컴퓨터 작업에 의한 특정 자원의 예상된 이용도을 결정하며, 여기서 이용도 기준은 예상된 자원 이용도을 기초로 한다. 일 실시예에서, RBS(100)는 특정 컴퓨터 작업내의 명령어를 조사함으로써 특정 컴퓨터 작업의 예상된 이용도을 결정한다. 일 실시예에서, RBS(100)는 예상된 이용도이 특정 컴퓨터 작업에 의한 이전의 자원 이용도을 기술하는 저장된 값에 기초하도록 한다.
단계 206에서, 컴퓨터 작업이 자원-기반 스케쥴링 작업리스트에 추가된다. 예를 들어, 특정 프로세스 또는 적어도 특정 프로세스의 쓰레드가 적어도 하나의 자원-기반 스케쥴링 작업리스트상에 배치된다. 추가 작업들이 스케쥴링되도록 요청되면, 작업들은 자원-기반 스케쥴링 작업리스트에 추가된다. 일 실시예에서, 수 많은 서로다른 컴퓨터 작업들로부터의 요청이 작업리스트상에 배치된다. 일 실시예에서, 요청은 컴퓨터 작업이 특정 자원을 사용하도록 스케쥴링됨으로써 충족될 수 있 다. 일 실시예에서, 컴퓨터 작업은 자신의 우선순위를 기초로 작업리스트상의 위치에 삽입된다. 프로세스의 쓰레드가 실행되는 순서는 중요할 수 있기 때문에, 일 실시예에서, 희망하는 실행 순서가 유지되도록 컴퓨터 작업(예를 들어, 쓰레드)이 작업리스트상에 위치된다.
단계 208에서, 특정 컴퓨터 자원이 사용되도록 선택된다. 예를 들어, RBS(100)는 저속 자원으로서 지정된 컴퓨터 자원이 높은 우선순위를 갖도록 결정내릴 수 있다. 특정 예시로서, RBS(100)는 디스크 I/O 자원을 선택한다. 하지만, 선택은 쓰레드 흐름, 컴퓨터 작업 우선순위(예컨대, 프로세스 우선순위, 쓰레드 우선순위), 각각의 작업리스트상에서 수행대기중인 작업(예컨대, 쓰레드)의 갯수, 및 작업(예컨대, 쓰레드 또는 프로세스)이 필요로 하는 기타 자원들의 이용가능성과 같은 기타 인자들에 기초할 수 있다.
단계 210에서, RBS(100)는 선택된 컴퓨터 자원의 이용도을 결정한다. 이용도은 최근의 일정 구간에 걸친 활동에 기초할 수 있다. 예를 들어, 이용도은 최종 "x"개 퀀텀들, 또는 최근 기간과 같은 임의의 편리한 측정치에 기초할 수 있다. 하지만, 이용도은 일정한 구간에 기초할 필요는 없다. 예를 들어, 이용도은 특정 시점에서 실행되기 위해 대기중인 오퍼레이션의 갯수에 기초할 수 있다.
본 발명의 일 실시예에 따라, RBS(100)가 자원 이용도을 계산하는 경우, 이것은 측정되는 특정 애플리케이션과 관계된 작업들 이외의 다른 작업들의 자원 이용도이다. 아래에서는 CPU 이용도 임계치가 20%로 설정된 예시를 사용하여 설명한다. 특정 애플리케이션과 관계된 컴퓨터 작업이 실행되도록 하기 이전에 CPU 이용도이 20% 미만인 경우, 컴퓨터 작업이 실행되면 CPU 이용도은 20% 이상까지 증가할 수 있다. 본 예시에서, 이렇게 20%를 넘는 증가는 CPU 자원 이용도 위반으로 간주되지 않는다. 이와 마찬가지의 원리가 네트워크, 디스크 I/O 자원, 및 기타 자원들에게 적용될 수 있다.
일 실시예에서, RBS(100)는 선택된 컴퓨터 자원의 미래 일정 기간에 걸친 이용도을 추정한다. RBS(100)는 최근의 자원 이용도을 기초로 미래의 이용도을 추정할 수 있다. 특정 예로서, 네트워크 I/O의 최근 이용도이 측정(또는 이와 달리 습득)된다. 최근의 네트워크 I/O 이용도을 기초로, 근접한 미래에 대한 네트워크 I/O 이용도의 추정이 행해진다. 추정은 다른 인자들에도 기초할 수 있다.
단계 212에서, RBS(100)는 선택된 자원에 대응하는 작업리스트상의 컴퓨터 작업 중 하나를 선택한다. RBS(100)는 선택된 컴퓨터 자원을 이용하도록 실행하기 위한 선택된 컴퓨터 작업을 스케쥴링한다. RBS(100)는 특정 자원의 이용도 및 특정 컴퓨터 자원에 관한 작업리스트상의 컴퓨터 자원 중 적어도 하나의 컴퓨터 자원의 이용도 기준을 기초로 선택을 한다. 예를 들어, 만약 선택된 자원의 이용도이 60%이고, 선택된 자원이 40% 이용도보다 적은 것이 특정 컴퓨터 작업의 이용도 기준인 경우, 이용도 기준이 충족되지 않기 때문에, 특정 컴퓨터 작업은 스케쥴링되지 않는다. 이 경우, 다른 컴퓨터 작업의 이용도 기준이 상기 선택된 자원의 60% 이용도을 허용한다면, RBS(100)는 상기 다른 컴퓨터 작업을 선택하여 이 컴퓨터 작업을 스케쥴링할 수 있다.
컴퓨터 작업들을 차례차례로 스케쥴링하도록 프로세스(200)의 단계들의 적어 도 일부를 반복함으로써, RBS(100)는 컴퓨터 작업에 대한 스케쥴링 순서를 결정한다.
단계 214에서, RBS(100)는 방금 실행된 컴퓨터 작업에 대한 자원 이용도 정보를 저장한다. RBS(100)는 후에 이 컴퓨터 작업에 대한 이용도 기준을 결정하기 위해 이 자원 이용도 정보를 이용할 수 있다.
마이크로-작업들
일 실시예에서, RBS(100)는 마이크로-작업들을 스케쥴링한다. 일 실시예에서, 마이크로-작업들은 개개별 마이크로-작업들이 일정 할당 시간내에 완료될 수 있도록 하는 크기를 가지며, 개개별 마이크로-작업들은 이 일정 할당 시간 동안 처리 작업을 실행할 때에 사용하는 자원을 차지한다. 일 실시예에서, 각각의 마이크로-작업들은 이와 같은 크기를 가져서 자신의 할당 시간내에 완료될 것이다. 하지만, 마이크로-작업들 중 일부는 매우 커서 자신의 할당 시간내에 실행이 완료될 수 없을 수 있다.
일 실시예에서, 할당 시간은 퀀텀이다. 퀀텀은 컴퓨터 코드의 일부분(예컨대, 쓰레드)에 주어진 타임 슬라이스이며, 이 타임 슬라이스 기간 동안에 해당 코드의 일부분은 CPU 자원을 차지한다. 운영체제마다 서로다른 퀀텀들을 사용했다. 또한, 특정 코드 부분에 할당된 퀀텀은 런타임 동안의 환경에 따라 변경될 수 있다. 예를 들어, O/S는 쓰레드에 할당된 퀀텀의 크기를 증가시키거나 또는 감소시킬 수 있다. 일 실시예에서, 컴퓨터 작업은 자신에게 할당될 것으로 예상되는 퀀텀의 크기를 기초로 마이크로-작업들로 분할된다. 다른 실시예에서, 컴퓨터 작업은 자신 에게 할당되었던 퀀텀의 크기를 기초로 마이크로-작업들로 분할된다. 컴퓨터 작업의 어느 부분이 마이크로-작업들로서 분할되는지에 대한 결정은 런타임 이전 또는 런타임 동안에 행해질 수 있다.
일 실시예에 따르면, 마이크로-작업들은 다음 마이크로-작업이 실행될 때 까지 안전하게 실행 중지가능하면서 단일 단위로서 완료될 수 있는 사실상의 보다 작은(예컨대, 가장 작은) 작업 단위이다. 안전하게 실행 중지가능함으로써, 특정 마이크로-작업의 실행은 모든 마이크로-작업들의 실행으로부터 초래되는 결과물에 영향을 미치는 것 없이 지연될 수 있는 것으로 예상된다.
마이크로-작업은 쓰레드의 일부일 수 있다. 예를 들어, 쓰레드는 다수의 마이크로-작업들로 분할될 수 있다. 이러한 마이크로-작업들은 쓰레드가 스케쥴링되는 방법과 유사하게 스케쥴링될 수 있다. 하지만, 전술한 바와 같이, 일 실시예에서 마이크로-작업은 자신이 프로세싱 자원을 차지하는 퀀텀 또는 기타의 기간 동안에 실행되도록 허여되는 경우 자신의 실행을 완료할 것이다.
마이크로-작업은 임의의 일시점에서 매우 작은 양의 자원(예컨대, CPU 시간, 메모리 할당)만을 필요로 할 수 있다. 이와 같이 임의의 일시점에서의 자원의 최소 이용은 은밀한 프로세스를 초래할 수 있을 수 있다. 마이크로-작업들을 작게 유지하는 것은 컴퓨터 작업으로 하여금 임의의 일시점에서 작은 양의 컴퓨터 자원만을 이용할 수 있게 한다. 그러므로, 본 발명의 일 실시예에 따르면, 컴퓨터 시스템에서 다른 애플리케이션의 성능에 심각하게 영항을 주지 않도록 하기 위해 마이크로-작업의 실행은 상당히 작은 양의 자원들을 소비한다.
예시적인 API
본 발명의 실시예는 애플리케이션이 다양한 자원 이용도 파라미터를 지정할 수 있도록 해주는 API 이다. 일 실시예에서, RBS(100)는 이와 같은 API를 갖는다. 애플리케이션은 컴퓨터 작업(예컨대, 프로세스, 쓰레드, 마이크로-작업, 또는 기타 코드 부분)에 대한 이용도 기준을 지정하기 위해 API를 이용할 수 있다. 예시적인 API는 CPU, 디스크 및 네트워크에 대하여 다음과 같은 자원 임계치 파라미터를 갖는다.
* CPU 이용도 임계치
* 처리 중인 디스크 I/O 카운트 임계치
* 네트워크 이용도 임계치
위 파라미터들은 각각의 컴퓨터 작업마다 지정될 수 있다. 예를 들어, 네트워크를 이용하는 컴퓨터 작업에 대해, 네트워크 임계치가 이용될 수 있다. 하지만, 네트워크 임계치는 네트워크를 이용하지 않는 컴퓨터 작업에 대해 0일 수 있다. 그러므로, 본 발명의 실시예에 따르면, 세분화된 자원 관리가 제공된다.
특정 예시로서, 애플리케이션은 CPU 이용도이 50% 미만이고, I/O 디스크 이용도이 40% 미만이고, 네트워크 트래픽이 60% 미만인 경우에서만 특정 컴퓨터 작업이 실행되도록 요청할 수 있다. 자원 임계치를 전혀 이용하지 않는 것을 포함하여, 임의의 조합의 자원 임계치 계수들이 이용될 수 있다. 본 발명의 실시예에 따르면, CPU 이용도 임계치는 임의의 다른 작업의 임계치와는 대조적으로 CPU의 RBS 이용을 서로 구분시킨다.
다음의 두 개의 파라미터들은 이용도이 측정되어야 하는 구간을 지정하는데에 사용된다.
* CPU 이용도 윈도우
* 네트워크 이용도 윈도우
CPU 이용도 윈도우 파라미터는 CPU 이용도이 계산되는 타임 윈도우를 정의한다. 예를 들어, 최근의 n 밀리초 동안의 CPU 이용도이 평균화된다. 네트워크 이용도 윈도우 파라미터는 네트워크 이용도이 계산되는 타임 윈도우를 정의한다. 이 파라미터들은 RBS(100)에 내재될 수 있다. 그러나, 애플리케이션은 이러한 파라미터들을 무시할 수 있다. 처리 중인 디스크 I/O는 임의의 시점에서 절대적인 것으로서, 따라서 이것은 계산될 필요가 없다.
컴퓨터 작업들을 시간에 걸쳐 분배시키는 방법을 제어하기 위해 강제 유휴 시간 파라미터가 애플리케이션에서 RBS로 전달될 수 있다. 강제 유휴 시간 파라미터는 택일적 사항이다. 또한, 강제 유휴 시간 파라미터가 사용되는 경우, 강제 유휴 시간 파라미터는 0의 값을 가질 수 있다.
* 강제 유휴 시간
RBS는 모든 컴퓨터 작업들이 실행된 후 시스템 유휴 시간으로서 정의되는 "유휴 시간"을 지속적으로 파악한다. 예를 들어, 애플리케이션(들)은 컴퓨터 작업들을 RBS를 이용하여 작업리스트상에 올릴 수 있다. 자원-기반 작업리스트(120)상에 컴퓨터 작업들이 존재하지 않으면, RBS는 지정된 강제 유휴 시간 동안 대기하고 이후에 웨이크 업(wake up)하여 애플리케이션(들)이 추가적인 작업을 수행하도록 허 여한다. 예를 들어, 조각모음기는 먼저 디스크 드라이브를 조각모음하기 위해 복수의 컴퓨터 작업들을 실행할 수 있으며, 그 후 RBS 컴퓨터 작업 스케쥴러에 의해 중지될 수 있다. 지정된 강제 유휴 시간 이후, RBS는 조각모음기를 호출하여 추가 작업을 허여한다. 예를 들어, 조각모음기는 메모리를 해제하는 것과 같은, 소거 작업을 실행할 수 있다. 강제 유휴 시간은 애플리케이션에 의해 조정가능한 디폴트 파라미터일 수 있다.
다음의 파라미터들은 자원 이용도이 임계치 이상인 경우 컴퓨터 작업을 실행하기 위해 대기하는 것에 관한 것이다.
* 대기 시간
* 최대 대기 시간
만약 RBS가 현재 자원 이용도이 너무 높아 컴퓨터 작업을 실행할 수 없는 것으로 결정내리면, RBS는 지정된 대기 시간동안 대기하고, 그 후 자원 이용도을 재조사한다. 자원 이용도이 너무 높은 것으로 RBS가 결정내릴 때 마다 대기 시간 파라미터는 증가될 수 있다. 예를 들어, RBS는 최대 대기 시간에 도달될 때 까지 대기 시간 파라미터를 증가시킬 수 있다. 이 파라미터들은 애플리케이션이 처음 시작될 때에 애플리케이션에 의해 지정될 수 있다. 애플리케이션은 자신의 런타임 동안에 이 파라미터들을 조정할 수 있다.
예시적인 API가 다양한 파라미터들을 지정하기 위해 일정 시간(예컨대, ms)을 이용하였지만, 퀀텀과 같은 다른 기준을 이용할 수 있다.
변형
일 실시예에서, RBS(100)은 운영체제의 일부이다. 다른 실시예에서, RBS(100)는 다른 애플리케이션들을 위한 컴퓨터 작업의 스케쥴링을 용이하게 해주는 독립적인 애플리케이션이다. 또 다른 실시예에서, RBS(100)는 애플리케이션 프로그램 및 해당 특정 애플리케이션을 위한 스케쥴내로 통합된다. 예를 들어, RBS(100)는 디스크 조각모음 프로그램 또는 바이러스 검사 프로그램내로 통합될 수 있다.
일 실시예에서, 만약 RBS(100)가 운영체제의 외부에서 실행되면, RBS(100)는 자신의 자원 이용도 내로 스스로 제한된다. 예를 들어, RBS(100)는 자신의 자원 이용도을 모니터링하고, 만약 자신의 자원 이용도이 너무 높아지면, RBS(100)는 운영체제에게 일정 기간동안 RBS(100)을 스케쥴링하는 것을 중지하도록 요청한다.
추가 예시들
다음의 예시들은 RBS(100)가 동작할 수 있는 방법을 설명한다. 하지만, RBS(100)가 이러한 예시들에서 기술된 대로 동작할 필요는 없다. 하나의 예로서, RBS(100)는 특정 애플리케이션을 위해 다수의 컴퓨터 작업들을 스케쥴링한다. 이러한 컴퓨터 작업들 중 일부는 디스크 I/O를 필요로 할 수 있다. RBS(100)는 컴퓨터 작업을 스케쥴링하기 위한 조건으로서 디스크 이용도을 분석할 수 있다. 만약 디스크 이용도이 너무 높으면, RBS(100)는 디스크 이용도이 상기 애플리케이션의 특정 컴퓨터 작업을 스케쥴링하도록 내려갈 때까지 대기한다. RBS(100)는 디스크 I/O 이용도을 계속해서 모니터링하고, 다른 애플리케이션이 디스크 I/O로의 액세스를 얻고자 하지 않는 경우 다른 컴퓨터 작업이 스케쥴링될 수 있도록 한다. 하지만, 본 실시예에서, 다른 애플리케이션이 디스크 I/O의 이용도을 얻고자 하는 경우에는, RBS(100)는 다른 컴퓨터 작업이 스케쥴링되지 않도록 한다. 따라서, 다른 애플리케이션(들)은 디스크 I/O를 사용할 수 있다.
다른 예시로서, RBS(100)는 네트워크 활동을 분석할 수 있다. 네트워크 트래픽이 너무 높으면, RBS(100)는 트래픽이 낮아질 때 까지 애플리케이션의 임의의 컴퓨터 작업을 스케쥴링하지 않을 것이다. 만약 네트워크 트래픽이 충분히 낮으면, RBS(100)는 실행을 위한 컴퓨터 작업을 스케쥴링한다. RBS(100)는 네트워크 트래픽이 충분히 낮은 상태로 유지되고 있음을 확인하는 조사를 계속한다. 만약 네트워크 트래픽이 충분히 낮은 상태로 유지되고 있으면, 다른 컴퓨터 작업이 스케쥴링될 수 있다. 하지만, 트래픽이 너무 높게 되버리면, 어떠한 추가적인 컴퓨터 작업도 실행되도록 스케쥴링되지 않는다. 이러한 마지막 두 개의 예시들에서, 컴퓨터 작업은 마이크로-작업일 수 있다. 하지만, 이러한 사항이 반드시 요구되지는 않는다.
하드웨어 개관
도 3은 본 발명의 일 실시예가 구현될 수 있는 컴퓨터 시스템(300)을 나타내는 블록도이다. 프로세스(200)의 단계들은 시스템(300)의 하나 이상의 컴퓨터-판독가능 매체 상에 명령어로서 저장되고 컴퓨터 시스템(300)의 프로세서 상에서 실행된다. 컴퓨터 시스템(300)은 정보를 통신하기 위한 버스(302) 또는 다른 통신 메카니즘과, 정보를 처리하기 위하여 버스(302)와 결합된 프로세서(304)를 포함한다. 컴퓨터 시스템(300)은 또한 프로세서(304)에 의해 실행되는 명령어 및 정보를 저장하기 위해 버스(302)에 결합된, 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 장 치와 같은 메인 메모리(306)를 포함한다. 메인 메모리(306)는 또한 프로세서(304)에 의해 실행되는 명령어의 실행 동안에 임시 변수 또는 다른 매개 정보를 저장하는데에 이용될 수 있다. 컴퓨터 시스템(300)은 프로세서(304)와 관련된 정적 정보 및 명령어를 저장하기 위하여 버스(302)에 결합된 판독 전용 메모리(ROM; 308) 또는 다른 정적 저장 장치를 더 포함한다. 정보 및 명령어를 저장하기 위하여 자기 디스크 또는 광 디스크와 같은 저장 장치(310)가 제공되어 버스(302)에 결합된다. 컴퓨터 시스템(300)은 임의의 갯수의 프로세서(304)를 가질 수 있다. 예를 들어, 일 실시예에서, 컴퓨터 시스템(300)은 멀티-프로세서 시스템이다. 프로세서(304)는 임의의 갯수의 코어들을 가질 수 있다. 일 실시예에서, 프로세서(304)는 멀티-코어 프로세서(304)이다. 컴퓨터 시스템(300)은 하이퍼 쓰레디드 머쉰(hyper threaded machine)에서 이용될 수 있다.
컴퓨터 시스템(300)은 버스(302)를 경유하여 컴퓨터 사용자에게 정보를 디스플레이해주기 위한 음극선관(CRT)과 같은 디스플레이(312)에 결합될 수 있다. 영숫자 키 및 다른 키들을 포함한 입력 장치(314)는 프로세서(304)에게 정보 및 명령 선택들을 통신해주기 위하여 버스(302)에 결합된다. 다른 유형의 사용자 입력 장치는 프로세서(304)에게 방향 정보 및 명령 선택을 통신해주고 디스플레이(312) 상에서 커서 이동을 제어하기 위한 마우스, 트랙볼, 또는 커서 방향 키들과 같은 커서 제어부(316)이다. 이 입력 장치는 일반적으로 장치가 평면내에서 위치를 지정할 수 있도록 해주는 두 개의 축, 즉 제1 축(예를 들어, x) 및 제2 축(예를 들어, y)에서의 두 개의 자유도를 갖는다.
본 발명은 본 명세서에서 설명된 기술을 구현하기 위한 컴퓨터 시스템(300)의 이용에 관한 것이다. 본 발명의 일 실시예에 따르면, 이 기술들은 프로세서(304)가 메인 메모리(306)내에 포함된 하나 이상의 명령어들의 하나 이상의 시퀀스를 실행시키는 것에 응답하여 컴퓨터 시스템(300)에 의해 수행된다. 이와 같은 명령어는 저장 장치(310)와 같은 다른 머신-판독가능 매체로부터 메인 메모리(306) 내로 읽혀질 수 있다. 메인 메모리(306)내에 포함된 명령어들의 시퀀스의 실행은 프로세서(304)로 하여금 본 명세서에서 설명된 프로세스 단계들을 수행하도록 만든다. 대안적인 실시예들에서, 물리적 결선 회로(hard-wired circuitry)가 본 발명을 구현하기 위해 소프트웨어 명령어와 결합하여 또는 소프트웨어 명령어를 대신하여 이용될 수 있다. 따라서, 본 발명의 실시예들은 하드웨어 회로 및 소프트웨어의 임의의 특정 조합으로 한정되지 않는다.
본 명세서에서 이용된 용어 "머신-판독가능 매체"는 머신이 특정 방식으로 동작하도록 만드는 데이터를 제공하는데 참여하는 임의의 매체를 말한다. 컴퓨터 시스템(300)을 이용하여 구현된 일 실시예에서, 예를 들어, 실행을 위한 명령어들을 프로세서(504)에 제공할 때에 다양한 머신-판독가능 매체가 관여된다. 이와 같은 매체는 비제한적인 예들로서 비휘발성 매체, 휘발성 매체, 및 전송 매체를 포함하여 수 많은 형태를 취할 수 있다. 비휘발성 매체는 예를 들어, 저장 장치(310)와 같은 광 디스크 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(306)와 같은 동적 메모리를 포함한다. 전송 매체는 버스(302)로 구성된 배선을 포함하여, 동축 케이블, 구리선 및 광섬유를 포함한다. 전송 매체는 또한 무선파 데이터 통신 및 적외선 데이터 통신 동안에 발생되는 것과 같은 음향파 또는 광파들의 형태를 취할 수 있다. 이와 같은 모든 매체는 해당 매체에 의해 전달되는 명령어가 일정 머신내로 해당 명령어를 판독시키는 물리적 메카니즘에 의해 검출가능하도록 구현가능해야 한다.
예를 들어, 일반적 형태의 머신-판독가능 매체에는, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 또는 임의의 기타 자기 매체, CD-ROM, 임의의 기타 광학 매체, 펀치카드, 페이퍼테이프, 홀 패턴들을 가진 임의의 기타 물리적 매체, RAM, PROM, EPROM, FLASH-EPROM, 임의의 기타 메모리 칩 또는 카트리지, 이후에 설명될 바와 같은 반송파, 또는 컴퓨터가 판독할 수 있는 임의의 기타 매체가 포함한다.
여러 형태의 머신-판독가능 매체가 실행을 위한 하나 이상의 명령의 하나 이상의 시퀀스들을 프로세서(304)에 운송하는데에 관여될 수 있다. 예를 들어, 명령어는 초기에 원격 컴퓨터의 자기 디스크를 이용하여 운송될 수 있다. 원격 컴퓨터는 자신의 동적 메모리 내로 명령어를 로딩시킬 수 있고 모뎀을 이용하여 전화선을 통해 명령어를 전송할 수 있다. 컴퓨터 시스템(300)내에 위치하는 모뎀은 전화선을 통해 데이터를 수신할 수 있고, 적외선 송신기를 이용하여 데이터를 적외선 신호로 변환시킬 수 있다. 적외선 검출기는 적외선 신호로 운송된 데이터를 수신할 수 있고 적절한 회로는 버스(302) 상에 데이터를 위치시킬 수 있다. 버스(302)는 메인 메모리(306)로 데이터를 운송시키고, 프로세서(304)는 메모리(306)로부터 명령어를 검색하여 실행시킨다. 메인 메모리(306)에 의해 수신된 명령어는 프로세서(304)에 의한 실행 전에 또는 그 후에 저장 장치(310) 상에 선택적으로 저장될 수 있다.
컴퓨터 시스템(300)은 또한 버스(302)에 결합된 통신 인터페이스(318)를 포함한다. 통신 인터페이스(318)는 로컬 네트워크(322)에 접속된 네트워크 링크(320)에 결합한 양방향 데이터 통신을 제공한다. 예를 들어, 통신 인터페이스(318)는 대응하는 유형의 전화선으로의 데이터 통신 접속을 제공하기 위한 통합 정보 통신망(integrated services digital network; ISDN) 카드 또는 모뎀일 수 있다. 다른 예로서, 통신 인터페이스(318)는 호환가능 LAN으로의 데이터 통신 접속을 제공하기 위한 근거리 통신망(LAN) 카드일 수 있다. 무선 링크들이 또한 구현될 수 있다. 임의의 이와 같은 구현예에서, 통신 인터페이스(318)는 다양한 유형의 정보를 나타내는 디지털 데이터 스트림을 운송하는 전기 신호, 전자기 신호 또는 광학 신호를 송신 및 수신한다.
네트워크 링크(320)는 일반적으로 하나 이상의 네트워크를 통하여 다른 데이터 장치들에 대한 데이터 통신을 제공한다. 예를 들어, 네트워크 링크(320)는 호스트 컴퓨터(324) 또는 인터넷 서비스 공급자(ISP; 326)에 의해 작동되는 데이터 장비로의 접속을 로컬 네트워크(322)를 통해 제공할 수 있다. ISP(326)는 이어서 현재 "인터넷"(528)이라고 통상적으로 불리어지는 월드와이드 패킷 데이터 통신 네트워크를 통하여 데이터 통신 서비스들을 제공한다. 로컬 네트워크(322)와 인터넷(328) 양쪽 모두는 디지털 데이터 스트림을 운송해주는 전기 신호, 전자기 신호 또는 광학 신호를 이용한다. 다양한 네트워크를 통한 신호 및 네트워크 링크(320) 상의 신호 및 통신 인터페이스(318)를 통한 신호는 컴퓨터 시스템(300)으로부터 그 리고 컴퓨터 시스템(300)에 디지털 데이터를 운송해주며, 이 신호들은 정보를 전송하는 반송파의 예시적인 형태이다.
컴퓨터 시스템(300)은 네트워크(들), 네트워크 링크(320) 및 통신 인터페이스(318)를 통하여 메시지들을 송신하고, 프로그램 코드를 포함하는 데이터를 수신할 수 있다. 인터넷 예에서, 서버(330)는 인터넷(328), ISP(326), 로컬 네트워크(322) 및 통신 인터페이스(318)를 통하여 애플리케이션 프로그램을 위한 요청된 코드를 전송할 수 있다.
수신된 코드는 수신되면 프로세서(304)에 의해 실행될 수 있고, 및/또는 이후의 실행을 위하여 저장 장치(310) 또는 다른 비휘발성 저장소에 저장될 수 있다. 이러한 방식으로, 컴퓨터 시스템(300)은 반송파의 형태로 애플리케이션 코드를 획득할 수 있다.
상술한 설명에서, 본 발명의 실시예들은 구현예마다 다를 수 있는 복수의 특정한 세부 내용을 참조로 설명되었다. 따라서, 무엇이 본 발명인지 그리고 무엇이 출원인에 의해 본 발명인 것으로 의도되었는지에 관한 단 하나의 유일한 표시는 임의의 후속적인 수정안을 포함하여 본 출원에서 도출된 특정 형태의 청구범위 세트이다. 이와 같은 청구범위내에 수록된 용어들에 대해 상세한 설명에서 명백하게 기술한 임의의 정의들은 청구범위내에서 사용되는 이와 같은 용어들의 의미를 결정한다. 따라서, 청구범위에서 명백하게 언급하고 있지 않은 어떠한 제한, 구성요소, 특성, 특징, 이점 또는 속성도 상기 청구범위의 범위를 어떠한 방식으로든지 한정 시켜서는 안된다. 따라서, 본 명세서 및 도면은 본 발명 범위를 한정시키고자 제시된 것이기 보다는 본 발명의 설명을 목적으로 제시된 것으로서 간주되어야 한다.

Claims (41)

  1. 방법에 있어서,
    복수의 스케줄링 작업리스트들을 유지하는 단계로서, 각각의 스케줄링 작업리스트는 복수의 자원들 중 상이한 자원과 대응하고, 상기 각각의 스케줄링 작업리스트와 연관되는 대응 자원을 필요로 하는 컴퓨터 작업들만을 포함하는 것인, 복수의 스케줄링 작업리스트들을 유지하는 단계;
    복수의 컴퓨터 작업들 중 각각에 대한 이용도 기준을 결정하는 단계;
    상기 복수의 컴퓨터 작업들을 상기 복수의 컴퓨터 작업들이 필요로 하는 각각의 자원들과 대응하는 각각의 스케줄링 작업리스트들 상에 배치시키는 단계;
    스케줄링을 위해서 상기 복수의 자원들로부터 제1 자원을 선택하는 단계;
    상기 선택된 자원의 활동에 기초해서 상기 선택된 자원에 대한 자원 이용도를 결정하는 단계;
    상기 선택된 자원을 사용하기 위해서 상기 복수의 컴퓨터 작업들 중 하나의 컴퓨터 작업을 선택하는 단계; 및
    상기 선택된 자원을 사용하도록 상기 선택된 컴퓨터 작업을 스케줄링하는 단계로서, 상기 선택된 컴퓨터 작업의 상기 결정된 이용도 기준은 상기 선택된 자원의 상기 결정된 자원 이용도를 만족시키는 것인, 상기 선택된 컴퓨터 작업을 스케줄링하는 단계를 포함하며,
    상기 방법은 하나 이상의 프로세서들을 포함하는 컴퓨터 시스템에 의해 실행되는 것인, 방법.
  2. 제1항에 있어서,
    상기 선택된 컴퓨터 작업의 상기 결정된 이용도 기준이 상기 선택된 자원의 상기 결정된 자원 이용도보다 더 크면, 상기 선택된 자원을 사용하도록 상기 선택된 컴퓨터 작업을 스케줄링하는 것을 연기하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서,
    상기 복수의 컴퓨터 작업들 중 제2의 컴퓨터 작업의 상기 결정된 이용도 기준이 상기 선택된 자원의 상기 결정된 자원 이용도를 만족시킬 때, 상기 선택된 자원을 사용하도록 상기 복수의 컴퓨터 작업들 중 상기 제2의 컴퓨터 작업을 선택하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    복수의 컴퓨터 작업들 각각에 대한 상기 이용도 기준은, 상기 컴퓨터 작업을 소유하는 프로그램에 의해 결정되는, 대응하는 자원의 백분율 이용도, 각각의 자원을 사용하기 위해서 수신된 요청들의 수, 그리고 각각의 컴퓨터 작업에 의한 각각의 자원의 예상되는 이용도, 중 하나 이상을 포함하는 것인, 방법.
  5. 제1항에 있어서,
    상기 선택된 자원을 사용하도록 상기 복수의 컴퓨터 작업들 중 하나의 컴퓨터 작업을 선택하는 단계는, 상기 스케줄링 작업리스트에 상기 선택된 컴퓨터 작업이 추가되는 순서(order), 그리고 상기 스케줄링 작업리스트 안에서 각각의 컴퓨터 작업의 우선순위(priority) 중 하나 이상을 기초로 하는 것인, 방법.
  6. 제1항에 있어서,
    상기 선택된 자원을 위한 상기 자원 이용도의 결정하는 단계 및 상기 선택된 컴퓨터 작업을 스케줄링하는 단계는, 운영 체제(OS, operating system) 외부의 자원 기반 스케줄러에 의해, 또는 상기 운영 체제에 의해 실행되는 것인, 방법.
  7. 제1항에 있어서,
    제1 자원에 대응하는 하나 이상의 추가적인 스케줄링 작업리스트들을 유지하는 단계를 더 포함하며,
    컴퓨터 작업들을 각각의 스케줄링 작업리스트들 상에 배치시키는 단계는,
    상기 제1 자원에 대응하는 어느 스케줄링 작업리스트 상에 상기 컴퓨터 작업을 배치하는지 결정하는 단계; 및
    상기 컴퓨터 작업을 배치할 스케줄링 작업리스트를 선택하는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    상기 스케줄링을 위해서 상기 복수의 자원들로부터 제1 자원을 선택하는 단계는 상기 자원의 우선순위에 기초하는 것인, 방법.
  9. 제8항에 있어서,
    상기 자원의 상기 우선순위는,
    느린 자원들에 대해서는 더 높고 빠른 자원들에 대해서는 더 낮은 것인, 방법.
  10. 제1항에 있어서,
    상기 선택된 자원을 사용하도록 상기 복수의 컴퓨터 작업들 중 하나의 컴퓨터 작업을 선택하는 단계는,
    상기 자원의 이용가능한 용량(capacity)을 상기 컴퓨터 작업의 이용도 기준과 매칭시키는 것을 기초로 하는, 방법.
  11. 제1항에 있어서,
    상기 이용도 기준은 시간 기반인 것인, 방법.
  12. 제1항에 있어서,
    상기 이용도 기준은 숫자 기반인 것인, 방법.
  13. 제1항에 있어서,
    컴퓨터 작업에 대한 이용도 기준을 결정하는 단계는,
    상기 컴퓨터 작업에 의한 이전의 자원 이용도를 포함하는 과거의(historic) 이용도 정보를 기초로 하는 것인, 방법.
  14. 하나 이상의 컴퓨터 프로세서들에 의해 실행될 때, 상기 하나 이상의 컴퓨터 프로세서들이 청구항 1 내지 13 중 어느 하나의 항에 개시된 방법을 수행하도록 하는 하나 이상의 명령어들의 시퀀스들을 저장하는, 컴퓨터로 판독가능한 저장 매체.
  15. 시스템에 있어서,
    하나 이상의 컴퓨터 프로세서들; 및
    상기 하나 이상의 컴퓨터 프로세서들에 통신 가능하도록 연결된 컴퓨터로 판독가능한 매체를 포함하며,
    상기 컴퓨터로 판독가능한 매체는 그 위에, 상기 하나 이상의 컴퓨터 프로세서들에 의해 실행될 때, 상기 하나 이상의 컴퓨터 프로세서들이 청구항 1 내지 13 중 어느 하나의 항에 개시된 방법을 수행하도록 하는 하나 이상의 명령어들의 시퀀스들을 저장하는 것인, 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
KR1020097000982A 2006-06-19 2007-06-06 자원-기반 스케쥴러 KR101373786B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/471,466 US8239869B2 (en) 2006-06-19 2006-06-19 Method, system and apparatus for scheduling computer micro-jobs to execute at non-disruptive times and modifying a minimum wait time between the utilization windows for monitoring the resources
US11/471,466 2006-06-19
US11/546,514 US9588809B2 (en) 2006-10-10 2006-10-10 Resource-based scheduler
US11/546,514 2006-10-10
PCT/US2007/013394 WO2007149224A1 (en) 2006-06-19 2007-06-06 Resource-based scheduler

Publications (2)

Publication Number Publication Date
KR20090029811A KR20090029811A (ko) 2009-03-23
KR101373786B1 true KR101373786B1 (ko) 2014-03-13

Family

ID=38608779

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097000982A KR101373786B1 (ko) 2006-06-19 2007-06-06 자원-기반 스케쥴러

Country Status (8)

Country Link
EP (1) EP2038748A1 (ko)
JP (2) JP2009541851A (ko)
KR (1) KR101373786B1 (ko)
AU (1) AU2007261607B2 (ko)
CA (1) CA2654418A1 (ko)
RU (1) RU2453901C2 (ko)
TW (1) TW200813845A (ko)
WO (1) WO2007149224A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122537B2 (en) 2009-10-30 2015-09-01 Cisco Technology, Inc. Balancing server load according to availability of physical resources based on the detection of out-of-sequence packets
US8565685B2 (en) * 2011-01-28 2013-10-22 Nokia Corporation Utilization-based threshold for choosing dynamically between eager and lazy scheduling strategies in RF resource allocation
JP2013047892A (ja) * 2011-08-29 2013-03-07 Fujitsu Ltd 情報処理装置、スケジューリング方法およびプログラム
KR101694307B1 (ko) * 2012-02-29 2017-01-09 한국전자통신연구원 디스크 캐쉬 효과를 극대화하는 워크플로우 작업 스케줄링 장치 및 방법
KR101695013B1 (ko) * 2012-12-14 2017-01-10 한국전자통신연구원 적응형 자원 할당 및 관리 방법
US9652294B2 (en) * 2013-11-25 2017-05-16 International Business Machines Corporation Cross-platform workload processing
CN104657221B (zh) * 2015-03-12 2019-03-22 广东石油化工学院 一种云计算中基于任务分类的多队列错峰调度模型及方法
KR102585591B1 (ko) * 2021-06-23 2023-10-10 한국과학기술원 이기종 프로세서 기반 엣지 시스템에서 slo 달성을 위한 인공지능 추론 스케쥴러

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075832A (ja) * 1999-08-31 2001-03-23 Fujitsu Ltd システム診断装置、システム診断方法およびシステム診断プログラムを記録したコンピュータ読み取り可能な記録媒体
KR20040062941A (ko) * 2001-12-17 2004-07-09 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 자원을 관리하는 자동화된 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2027219C1 (ru) * 1990-12-17 1995-01-20 Грибков Владимир Александрович Устройство для распределения заданий процессорам
JPH06237348A (ja) * 1993-02-08 1994-08-23 Fuji Xerox Co Ltd メモリ制御装置
US5491810A (en) * 1994-03-01 1996-02-13 International Business Machines Corporation Method and system for automated data storage system space allocation utilizing prioritized data set parameters
JPH11184714A (ja) * 1997-12-18 1999-07-09 Nec Corp タスク管理システム
US7035808B1 (en) * 1999-10-20 2006-04-25 Avaya Technology Corp. Arrangement for resource and work-item selection
JP3936924B2 (ja) * 2003-06-18 2007-06-27 株式会社日立製作所 ジョブスケジューリング方法及びシステム
US7467102B2 (en) * 2003-09-11 2008-12-16 International Business Machines Corporation Request type grid computing
US20050240934A1 (en) * 2004-04-21 2005-10-27 Hewlett-Packard Development Company, L.P. Task management based on system utilization
US8856793B2 (en) * 2004-05-11 2014-10-07 International Business Machines Corporation System, method and program for scheduling computer program jobs

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075832A (ja) * 1999-08-31 2001-03-23 Fujitsu Ltd システム診断装置、システム診断方法およびシステム診断プログラムを記録したコンピュータ読み取り可能な記録媒体
KR20040062941A (ko) * 2001-12-17 2004-07-09 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 자원을 관리하는 자동화된 방법

Also Published As

Publication number Publication date
KR20090029811A (ko) 2009-03-23
AU2007261607B2 (en) 2012-11-01
AU2007261607A1 (en) 2007-12-27
WO2007149224A1 (en) 2007-12-27
EP2038748A1 (en) 2009-03-25
CA2654418A1 (en) 2007-12-27
JP2013218744A (ja) 2013-10-24
JP2009541851A (ja) 2009-11-26
AU2007261607A2 (en) 2009-06-25
TW200813845A (en) 2008-03-16
RU2008149050A (ru) 2010-07-27
RU2453901C2 (ru) 2012-06-20

Similar Documents

Publication Publication Date Title
US9588809B2 (en) Resource-based scheduler
US9727372B2 (en) Scheduling computer jobs for execution
KR101373786B1 (ko) 자원-기반 스케쥴러
US8056083B2 (en) Dividing a computer job into micro-jobs for execution
US7752622B1 (en) Method and apparatus for flexible job pre-emption
JP2003298599A (ja) 分散制御方法及び装置
US20140137122A1 (en) Modified backfill scheduler and a method employing frequency control to reduce peak cluster power requirements
KR101377195B1 (ko) 컴퓨터 마이크로 작업
JP4048638B2 (ja) スケジューリング装置及び方法並びに記録媒体
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
EP2595057B1 (en) Modified backfill scheduler and a method employing frequency control to reduce peak cluster power requirements
Rao et al. A Simplistic Study of Scheduler for Real-Time and Embedded System Domain

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee