KR20140022963A - 비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치 - Google Patents

비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치 Download PDF

Info

Publication number
KR20140022963A
KR20140022963A KR1020147002683A KR20147002683A KR20140022963A KR 20140022963 A KR20140022963 A KR 20140022963A KR 1020147002683 A KR1020147002683 A KR 1020147002683A KR 20147002683 A KR20147002683 A KR 20147002683A KR 20140022963 A KR20140022963 A KR 20140022963A
Authority
KR
South Korea
Prior art keywords
micro
mjs
tasks
utilization
task
Prior art date
Application number
KR1020147002683A
Other languages
English (en)
Other versions
KR101471394B1 (ko
Inventor
크래이그 젠센
앤드류 스태퍼
바실 토마스
Original Assignee
콘두시브 테크놀로지스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 콘두시브 테크놀로지스 코포레이션 filed Critical 콘두시브 테크놀로지스 코포레이션
Publication of KR20140022963A publication Critical patent/KR20140022963A/ko
Application granted granted Critical
Publication of KR101471394B1 publication Critical patent/KR101471394B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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
    • 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/505Allocation 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 load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

컴퓨팅 작업을 마이크로-작업들로 분할하고 마이크로-작업들의 실행을, 필요한 자원이 하나 이상의 유휴 기준에 따를 때의 시간들에 할당하는 방법, 시스템 및 장치가 제공된다. 마이크로-작업들은 진행 과정에 맞춰 실행되지만, 마이크로-작업들에 의해 필요한 자원들이 다른 작업에 의해 필요하지 않을 때에만 실행된다. 이러한 방법론을 이용하는 소프트웨어 프로그램은 컴퓨터가 파워업되는 동안 동일한 컴퓨터 시스템 상에서 실행하는 다른 소프트웨어 프로그램들의 성능에 충격을 주지 않고 항상 실행될 수 있다.

Description

비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치{METHOD, SYSTEM, AND APPARATUS FOR SCHEDULING COMPUTER MICRO-JOBS TO EXECUTE AT NON-DISRUPTIVE TIMES}
본 발명은 컴퓨팅 환경에서 소프트웨어 애플리케이션들을 실행하는 것에 관한 것이다. 보다 자세하게는, 본 발명의 실시예들은 마이크로-작업들의 실행이 다른 애플리케이션들 및 작업들의 실행에 상당히 충격을 주지 않도록, 애플리케이션의 컴퓨팅 작업 또는 입력-출력 작업을 마이크로-작업들로 분할하고 낮은 컴퓨터 자원 이용의 기간들(period)에 마이크로-작업들의 실행을 할당하는 것에 관한 것이다.
메인프레임 컴퓨터의 초기에는, 작업들의 묶음들로 소프트웨어 프로그램들을 실행시키는 개념이 표준이였다. 컴퓨터의 수가 제한되었기 때문에, 사용자들은 컴퓨터가 일부 다른 더 중요한 작업들에 이용되지 않았을 때 컴퓨터 상에서 실행하도록 자신들의 작업(들)을 스케쥴링해야 했다. 이러한 시스템에서, 각각의 작업은 다음 작업에 이어지고 그 후 그 다음 작업이 이어져 중단 없이 완료될 때까지 실행하도록 스케쥴링되었다. 제한된 이용가능 컴퓨터 시간은 더 높은 우선 순위 애플리케이션들을 지연시키지 않도록 더 낮은 우선 순위 작업들을 "비번시(off-hours)"에 실행시킬 것을 요한다.
보다 최근에는, 멀티-태스킹(multi-tasking) 컴퓨터 시스템들이 단일의 CPU에 의해 2이상의 작업들의 동시 실행 또는 인터리브된 실행을 가능하게 하였다. 멀티-태스킹 컴퓨터 시스템은 많은 애플리케이션들이 동일한 일반 기간에 실행할 수 있도록 한다. 통상적으로, 멀티-태스킹 시스템들은 복잡한 내부 스케쥴링 알고리즘들을 갖고 있으며, 여기서, 프로세스들이 할당된 우선순위들에 따라 스케쥴링된다. 그러나, 이 애플리케이션들은 여전히 컴퓨팅 자원들에 대해 경합한다. 자원 경합을 완화시키기 위해, 멀티-태스킹 시스템에서의 애플리케이션이 오퍼레이터 스케쥴링에 맞춰 "비번시"에 런오프될 수 있다.
비번시에 실행되는 애플리케이션들은 백업, 인덱싱, 소프트웨어 업데이트, 바이러스 및 악성 소프트웨어 스캔 및 조각 모으기와 같은 메인터넌스 작업들을 포함할 수 있다. 비번시 프로세싱을 위한 후보들은 또한 리포트들을 실행시키고 금융 계산들을 수행하는 등의 소프트웨어 애플리케이션들을 포함할 수 있다. 그러나, 인덱서들과 같은 일부 애플리케이션들은 생산 시간 동안에 실행되어야 한다. 따라서, 모든 애플리케이션들이 비번시 실행을 위한 양호한 후보인 것은 아니다.
비번시에 실행하도록 작업을 스케쥴링하는데 있어 다른 문제는 작업이 실행하도록 스케쥴링된 시간에 컴퓨터가 꺼질 수 있다는 점이다. 추가의 문제는, 일부 머신들이 명확하게 식별된 비번시간을 갖지 못한다는 점이다. 예를 들어, 많은 컴퓨터 시스템들은 컴퓨팅 액티비티가 중요한 기간 동안에 인터럽트되지 않아야 할 정도로 충분히 중요하게 여겨지는 컴퓨팅 액티비티를 위해 하루에 24시간 동안 이용된다. 따라서, 어느 작업을 스케쥴링하는데 있어 "비번시간"이 없다. 다른 추가의 문제는, 일반적으로 작업이 비번시 컴퓨팅을 위해 스케쥴링되어야 할 때를 사용자가 결정해야 한다는 점이다. 따라서, 스케쥴을 설정하는 것은 사용자의 시간을 차지하고 사용자가 에러를 범하기 쉽다.
이전에 설명된 바와 같이, 컴퓨팅 작업을 실행하는 것은 컴퓨터를 이용하는 사용자의 능력과 상충할 수 있고 가능한 더 긴급한 다른 애플리케이션들 및 작업들로부터 자원을 가져올 수 있다. 스로틀링(Throttling)은 이들 부정적인 충격을 최소화하는 기술이다. 스로틀링은 애플리케이션 또는 작업이 할당된 양의 자원들 보다 더 많이 이용하는 것을 방지한다. 스로틀링의 유형들은 디스크 I/O 스로틀링, CPU 스로틀링 및 네트워크 스로틀링을 포함한다. 예를 들어, CPU 스로틀링은 애플리케이션에 대한 목표 CPU 이용 한계값을 설정하고, 애플리케이션들이 목표 한계값을 초과하는 경우에 애플리케이션이 작업하는 것을 중지하도록 하는 것을 포함할 수 있다. 스로틀링은 메인터넌스 애플리케이션들 또는 보다 덜 중요한 컴퓨팅 작업들을 위한 컴퓨터 자원들에 때때로 적용된다. 스로틀링이 이점을 갖고 있지만, 컴퓨팅 작업의 자원 이용은 다른 작업들 및 애플리케이션들에 대하여 전체적으로 투명하지 못하다.
동시에, 심지어 긴급한 최상 우선순위 작업의 처리 동안에도 상당한 컴퓨팅 자원들이 이용하지 않게 되는 것도 주목할만하다. CPU들, 메모리, 디스크 드라이브 및 네트워크들의 속도에서의 큰 차이는 일반적으로 이들 컴포넌트 중 하나 이상의 컴포넌트를 유휴상태로 놓여지게 하는 한편, 다른 컴포넌트들 중 하나는 완전하게 소모된다. 예를 들어, 3GHz CPU는 종종 밀리초 단위로 측정된 평균 액세스 시간에서 데이터를 검색하는 디스크 드라이브를 대기하는 동안 유휴 상태에 놓여있다.
그 외에 손실된 이들의 자원을 복구하여 이용하기 위해 필요한 것은 다른 작업들 또는 애플리케이션들에 상당히 충격을 주지 않고 컴퓨터 시스템에서 하나 이상의 작업들이 실행할 수 있도록 하는 기술이다. 이 기술은 작업을 스케쥴링하는데 있어 사용자의 시간을 소모하지 않아야 하거나 또는 작업이 실행중일 때 컴퓨터 시스템과의 사용자의 상호작용에 부정적으로 충격을 주지 않아야 한다. 이 기술은 비번시에 실행하도록 작업을 스케쥴링하는 것을 필요로 하지 않아야 한다. 이 기술은 비번시간을 갖지 않는 컴퓨터 시스템에 유리해야 하고 컴퓨터 시스템에 의해 이용가능해야 한다.
이 섹션에서 설명된 이 접근 방식들은 추구될 수 있는 접근 방식들이지만, 반드시 이전에 인식되거나 또는 추구되었던 접근방식일 필요가 있는 것은 아니다. 따라서, 달리 나타내어지지 않았다면, 이 섹션에서 설명된 접근 방식들 중 어느 것도 이 섹션에서의 접근 방식들의 포함에 의해 단지 종래 기술로서 간주되는 것으로서 추정되지 않아야 한다.
마이크로 작업을 실행시키는데 필요한 자원이 유휴 상태에 있을 때 컴퓨팅 작업을 마이크로-작업들로 분할하고 마이크로-작업들을 실행시킴으로써 이들의 이용되지 않는 컴퓨터 자원들을 이용하기 위한 방법, 시스템 및 장치가 개시된다.
본 발명은 첨부된 도면부의 도면들에서 제한이 아닌 일례로서 설명되어 있으며, 이 도면에서 동일한 도면 부호는 동일한 요소를 의미한다.
도 1은 본 발명의 일 실시예에 따라 마이크로-작업들을 실행시키기 위한 아키텍쳐도를 나타낸다.
도 2는 본 발명의 일 실시예에 따라 애플리케이션 메모리 풋프린트에 비교되는 통상의 애플리케이션 메모리 풋프린트의 비교를 나타낸다.
도 3은 본 발명의 일 실시예에 따라 마이크로-작업들을 이용하여 마이크로 작업 스케쥴러 실행가능 애플리케이션(micro-job scheduler enabled application)을 실행시키는 프로세스의 단계들을 나타내는 플로우차트이다.
도 4는 본 발명의 일 실시예에 따라 마이크로-작업들을 이용하여 저장 매체를 조각모으기하는 프로세스의 단계들을 나타낸다.
도 5는 본 발명의 일 실시예가 실시될 수 있는 컴퓨터 시스템을 나타내는 블록도이다.
다음 설명에서, 본 발명의 철저한 이해를 제공하기 위해 설명의 목적으로 다수의 특정 세부 내용이 설명된다. 그러나, 본 발명은 이들 특정 세부 내용 없이도 실시될 수 있음이 명백하다. 다른 경우에, 본 발명이 불필요하게 모호해지는 것을 피하기 위해 잘 알려진 구조 및 장치들이 블록도로 도시되어 있다.
개요
대부분의 컴퓨터들은 자신의 시간의 자원 용량 100% 모두를 이용하는 것은 아니다. 이것은 매일의 일부분 동안에만 켜져있는 컴퓨터 뿐만 아니라 하루에 24 시간, 일주일에 7일을 끊김없이 높게 이용하는 컴퓨터 조차도 실제 그러하다. 따라서, 컴퓨터 시간 및 자원이 낭비된다. 예를 들어, 24시간 기간에 걸쳐 매우 심하게 이용되고 액티비티시 잠깐의 스파이크를 가질 수 있는 컴퓨터 시스템은 자신의 자원의 약 5% 내지 20%만을 평균적으로 이용할 수 있다.
마이크로 작업을 실행시키는데 필요한 자원이 유휴 상태에 있을 때 컴퓨팅 작업을 마이크로-작업들로 분할하고 마이크로-작업들을 실행시킴으로써 이들의 이용되지 않는 컴퓨터 자원들을 이용하기 위한 방법, 시스템 및 장치가 여기에 개시된다. 여기에서 이용될 때, 용어, 마이크로-작업은 나머지 프로세스의 결과에 영향을 주지 않고 그 실행이 지연될 수 있는 컴퓨터 프로세스의 일부분이다. 여기에 이용될 때, "유휴 자원", "유휴 시간" 등은 자원이 100%보다 작게 이용될 때의 시간, 즉, 이용되고 있지 않는 자원의 일부가, 자원의 일부 다른 부분이 이용되는 경우에도, "유휴 상태"인 것으로 간주될 때의 시간을 의미한다.
따라서, 마이크로-작업들은 진행 과정에 맞춰 실행되지만, 가능한 빨리 완료하는 컴퓨팅 작업을 얻기 위한 시도 없이 실행된다. 이러한 방법론을 이용하는 소프트웨어 프로그램은, 동일한 컴퓨터 상에서 동시에 실행하는 다른 소프트웨어 프로그램들의 성능에 거의 무시할만한 충격으로 컴퓨터가 파워업된 상태에서 항상 실행될 수 있어, 상당히 더 유용한 작업이 시간 단위 당 행해지도록 한다.
다른 작업들 및 애플리케이션들에 상당히 충격을 주는 것을 피하기 위해, 주어진 현재 자원 구속조건에서 가능한 빨리 작업을 실행하도록 시도하는 것 또는 "비번시"에 실행하도록 작업을 스케쥴링하는 것과 대조적으로, 이 작업은 컴퓨터 상에서 진행 과정에 맞춰 실행되지만, 그 작업이 사용자 또는 다른 컴퓨터 작업들에 대해 인식불가능할 수 있는 미세한 피스들로 실행된다. 따라서, 작업은 다른 작업들 및 애플리케이션들에 대해 그리고 사용자에 대해 완전히 투명할 수 있다. 사용자는 작업을 스케쥴링할 필요가 없으며, 이러한 방법으로, 작업은 성능 결정적인 시간 동안을 포함한 어떠한 시간에도 실행될 수 있다.
이 설명에서 전반적으로 이용될 바와 같이, 다른 작업들, 프로세스들 및 애플리케이션들에 대한 용어 "투명한"은 다른 작업들 및 애플리케이션들이 마이크로-작업들의 실행으로 인한 상당히 부정적인 어떠한 성능 충격도 겪지 않고 실행할 수 있음을 의미한다. 부정적인 충격은 테스트 작업이 독립적으로 실행하는데 얼마나 오래 걸리는지와, 마이크로-작업들로 분할된 컴퓨팅 작업이 실행하는 동안을 비교하여 결정될 수 있다. 이들 2가지 경우에 대한 테스트 작업의 실행 시간에는 상당한 차이가 없어야 한다.
마이크로-작업 스케쥴러(MJS)는 본 발명의 일 실시예에 따라 마이크로-작업들이 실행되어야 하는 때를 판단한다. 일 실시예에서, 애플리케이션 프로그램은 자신의 컴퓨팅 작업들을 복수의 마이크로-작업들로 분할한다. 여기에 이용된 바와 같이, 용어, 복수는 1보다 큰 임의의 수를 의미한다. MJS는 마이크로-작업들이 실행해야 할 때를 판단한다. MJS로 작업하도록 실행되는 애플리케이션들은 여기서 MJS-실행가능 애플리케이션으로 언급된다.
일 실시예에서, MJS는 메모리 매니저를 갖는다. MJS-실행가능 애플리케이션은 운영 체제(OS, Operating System)로부터 메모리를 요청하는 것에 반대로, MJS 메모리 매니저로부터 메모리를 요청한다. 일 실시예에서, MJS-실행가능 애플리케이션은 (MJS-실행가능 애플리케이션에 할당되고, MJS-실행가능 애플리케이션이 실행하는 메모리의 양을 의미하는) 매우 작은 인-메모리 풋프린트를 갖고 있다. 작은 풋프린트를 실현하기 위해, MJS를 이용하는 프로그램이 이용하는 메모리의 양에 대해 한계값을 둔다.
다른 실시예에서, 컴퓨터 자원 이용률(utilization)은 자원 이용률이 하나 이상의 유휴 기준에 따르는지를 판단하기 위해 모니터링되고 분석된다. MJS는 하나 이상의 유휴 기준이 만족될 때 마이크로-작업들이 실행될 수 있게 한다. 특정 마이크로-작업이 실행하는데 필요한 시간이 특정 마이크로-작업에 의해 이용된 자원에 대한 유휴 시간의 통상의 윈도우보다 작기 때문에, 자원이 다른 작업에 필요해지기 전에 자원이 양도된다. 따라서, 마이크로-작업에 의한 자원 이용률은 통지되지 않은 상태로 될 수 있고 마이크로-작업은 자신의 애플리케이션 환경에 대해 가시가능하지 않을 수 있다.
MJS-실행가능 애플리케이션은 본 발명의 일 실시예에 따라 자신의 자원 이용률이 산출되어야 하는 조건들을 정의하기 위해 MJS에 자원 이용률 임계 파라미터들을 전송한다. 이들 자원은 이들로 한정되는 것은 아니지만, 디스크 I/O, CPU 및 네트워크 이용률을 포함한다. 예를 들어, MJS-실행가능 애플리케이션은 상기 3개의 자원들의 임의의 조합에 대한 최소 임계 레벨들까지 마이크로-작업이 실행될 것을 요청할 수 있다.
일 실시예에서, 애플리케이션은 저장 매체 디프래그멘터이다. 디프래그멘터는 일일 스케쥴링된 조각모으기 작업을 완료하는데 12분의 벽시간(wall clock time)이 걸릴 수 있다. MJS-실행가능한 디프래그멘터는 디프래그멘터에 의해 필요한 자원들이 임의의 다른 작업 또는 애플리케이션에 의해 이용되고 있지 않을 때의 시간들을 선택하여, 조각모으기 작업을 한번에 수 밀리초 실행될 수 있는 많은 마이크로-작업들로 분할한다. MJS-실행가능 디프래그멘터는 12분 작업을 더 오랜 기간에 걸쳐 실행하는 마이크로-작업들로 분할하여, 컴퓨터 시스템이 온 상태에 있을 때는 언제든지 실행할 수 있다.
특정예로서, MJS-실행가능 디프래그멘터는 제1 마이크로-작업을 실행시켜 파일이 조각화되었는지의 여부를 판단할 수 있다. 제1 마이크로-작업의 실행은 다른 유휴 자원들만을 소모한다. 즉, 이용률이 하나 이상의 유휴 기준에 따르는 자원들만을 소모한다. 그 결과, 마이크로-작업의 실행은 다른 애플리케이션들에 대하여 투명하다. 또한, 메모리 이용률은 낮게 유지되며, 디프래그멘터와 관련된 메모리 할당이 마이크로-작업의 실행 이전에 또는 실행에 뒤이어 변경될 필요가 없다.
각각의 마이크로-작업을 실행하기 전에, MJS-실행가능 디프래그멘터는 컴퓨터 자원 이용률이 하나 이상의 유휴 기준에 따르는지의 판단을 행한다. 따라서, MJS-실행가능 디프래그멘터는 컴퓨터 자원 이용률이 마이크로-작업이 진행될 수 있을 정도로 현재 충분히 낮은지를 판단하였다. 자원 이용률이 너무 높다면, 마이크로-작업의 실행은 연기된다. 제1 마이크로-작업이 실행된 후, MJS-실행가능 디프래그멘터는 제2 마이크로-작업을 반드시 즉시 실행할 필요가 있는 것은 아니다. 다만, 후속하는 마이크로-작업들의 실행은 다른 애플리케이션들이 동일한 자원을 필요로 하는 경우에 시간에 걸쳐 분산될 수 있다.
아키텍쳐 개요
도 1은 본 발명의 일 실시예에 따라 마이크로-작업들을 실행하기 위한 아키텍쳐(100)의 블록도를 나타낸다. 각각의 MJS-실행가능 애플리케이션(115(1) - 115(n))은 자신의 컴퓨팅 작업(또는 작업들)을 실행을 위한 마이크로-작업들(125)로 분할한다. 예를 들어, 애플리케이션 프로그래머는 마이크로-작업(125)을 실행시키기 위해 MJS(110)로부터의 허가를 요청하는 애플리케이션 코드에서의 적절한 위치들에 호출들(call)을 위치시킬 수 있으며, 이는 실제로 컴퓨팅 작업을 마이크로-작업들(125)로 분할한다. 마이크로-컴퓨팅 작업들은 일 실시예에 따라 다음의 마이크로-작업(125)이 실행할 때까지 실행 중 일시적인 중지에 대해 안전하게 허용하는 한편 단일 유닛으로서 완료될 수 있는 실질적으로 더 작은 (예를 들어, 최소의) 작업 유닛들이다. 실행시 중단에 대해 안전하게 허용함으로써, 마이크로-작업들 모두의 실행으로부터 야기되는 결과에 영향을 주지 않고 특정 마이크로-작업의 실행이 지연될 수 있음이 의미된다. 마이크로-작업들(125)을 작게 유지함으로써, MJS-실행가능 애플리케이션(115)이 한번에 작은 양의 컴퓨터 자원들만을 이용할 수 있게 된다. 따라서, 마이크로-작업(125)의 실행은 본 발명의 일 실시예에 따라 컴퓨터 시스템에서의 다른 애플리케이션의 성능에 상당한 충격을 주지 않도록 상당히 작은 양의 자원들을 소모한다. 예로서, MJS-실행가능 애플리케이션(115(1) - 115(n))은 백업, 인덱싱, 소프트웨어 업데이트, 바이러스 및 악성 소프트웨어 스캔, 및 조각 모으기와 같은 메인터넌스를 수행할 수 있다. 그러나, MJS-실행가능 애플리케이션(115(1) - 115(n))은 또한 메인터넌스 외의 소프트웨어일 수 있다.
마이크로-작업 스케쥴러(MJS; 110)는 마이크로-작업들(125)이 실행될 수 있을 때를 판단한다. 이 실시예에서, MJS(110)는 특정 MJS-실행가능 애플리케이션(예를 들어, 115(1))으로 하여금 하나 이상의 마이크로-작업들(125)이 실행을 허용받을 수 있도록 요청할 수 있게 하기 위한 애플리케이션 프로그램 인터페이스(API; 130)를 갖는다. API(130)는 또한, 아래 보다 자세히 설명될 바와 같이, MJS-실행가능 애플리케이션(115)으로 하여금 얼마나 많은 마이크로-작업들(125)이 분산될 수 있는지에 의해 특정할 수 있도록 한다. 예시적인 API가 여기서 아래에 포함된다. 그러나, 아키텍쳐(100)는 예시적인 API로 한정되지 않는다.
MJS(110)가 어느 마이크로-작업(125)이 다음에 실행되는 것을 허용받아야 하는지를 결정할 수 있도록 마이크로-작업 스케쥴러(110)는 마이크로-작업 대기열(queue)을 유지한다. 마이크로-작업들의 실행은 다른 애플리케이션에 무시가능한 충격을 주도록 MJS(110)에 의해 타이밍된다. 일 실시예에서, MJS(110)는 마이크로-작업들이 유휴 자원들만을 이용하도록 마이크로-작업들을 스케쥴링한다. MJS(110)는 스케쥴링 결정을 행하기 위해 자원 이용률이 하나 이상의 유휴 기준에 따르는지를 판단한다. 즉, 이 실시예에서, MJS(110)는 자원 기준으로 된다. 마이크로-작업들의 실행은 API 호출에서의 MJS-실행가능 애플리케이션에 의해 또는 애플리케이션과 MJS 사이의 다른 통신 방법에 의해 특정될 수 있다. 스케쥴러(105)가 다음 마이크로-작업(125)이 다른 작업들에 충격을 주지 않고 실행할 수 있다고 판단한 경우, MJS(110)는 MJS-실행가능 애플리케이션(115(1))에 마이크로-작업(125)을 실행하도록 명령함으로써 MJS-실행가능 애플리케이션(115)에 응답한다. MJS는 일 실시예에서, 자원 이용률에 기초하여 언제 작업들을 스케쥴링하는지에 대해 자신의 판단에 기초한다. 일례로서, MJS는 디스크 액티비티를 분석할 수 있다. 마이크로-작업을 가진 애플리케이션 외의 애플리케이션이 디스크를 이용하는 경우, MJS는 다른 애플리케이션이 마이크로-작업을 스케쥴링하는 것을 완료할 때까지 기다린다. MJS는 디스크 I/O 이용률을 모니터링하는 것을 계속하고, 다른 어떤 애플리케이션이 디스크 I/O에 액세스하는 것을 시도하지 않는다면 다른 마이크로-작업이 스케쥴링될 수 있게 한다. 그러나, 다른 애플리케이션이 디스크 I/O의 이용을 시도한다면, MJS는 다른 마이크로-작업이 스케쥴링될 수 없게 할 것이며, 여기서, 다른 애플리케이션이 디스크 I/O를 이용할 수 있다.
다른 예로서, MJS는 네트워크 액티비티를 분석할 수 있다. 네트워크 트래픽이 너무 높다면, 트래픽이 느려질(slow) 때까지, MJS는 어떠한 마이크로-작업들도 스케쥴링하지 않을 것이다. 네트워크 트래픽이 충분히 느려진다면, MJS가 실행을 위하여 마이크로-작업을 스케쥴링한다. MJS는 네트워크 트래픽이 충분히 느린 상태로 유지되는 것을 보장하도록 검사를 계속할 수 있다. 네트워크 트래픽이 충분히 느린 상태로 유지된다면, 다른 마이크로-작업이 스케쥴링될 수 있다. 그러나, 트래픽이 너무 높게 된다면, 추가의 마이크로-작업들이 실행하도록 스케쥴링되지 않는다.
MJS는 임의의 유형의 계산 자원들 및 자원들의 임의의 조합에 기초하여 자원 기반 스케쥴링 결정들을 행할 수 있다. 일 실시예에서, MJS는 실행에 대한 허가( permission)를 대기하는 마이크로-작업들의 복수의 대기열을 갖는다. 각각의 대기열은 특정 자원에 대응할 수 있다. 예를 들어, 디스크 I/O를 이용하는 것을 필요로 하는 마이크로-작업들에 대한 대기열, 네트워크를 이용하는 것을 필요로 하는 마이크로-작업들에 대한 대기열, CPU를 이용하는 것을 필요로 하는 마이크로-작업들에 대한 대기열 등이 있을 수 있다. 또한, 자원들의 조합을 이용하는 마이크로-작업들에 대한 하나 이상의 대기열이 있을 수 있다. MJS는 특정 자원 또는 자원들의 조합이 이용가능할 때 마이크로-작업들을 전개한다. 특정 마이크로-작업은 2개의 자원의 이용을 필요로 할 수 있다. 예를 들어, 특정 마이크로-작업이 네트워크 자원의 이용 및 디스크 자원의 이용을 필요로 할 수 있다. 그러나, 특정 마이크로-작업은 CPU 자원을 필요로 하지 않는다. 심지어 CPU 자원 이용률이 현재 높은 경우에도, 특정 마이크로-작업은 여전히 스케쥴링되어 실행될 수 있다.
MJS(110)가 도 1에서 MJS-실행가능 애플리케이션(115)과는 별도의 프로그램으로서 도시되어 있지만, MJS(110)는 MJS-실행가능 애플리케이션(115) 내에 통합될 수 있다. 따라서, MJS(110)는 일 실시예에 따라 마이크로-작업들(125)이 MJS-실행가능 애플리케이션(115(1))에 응답을 전송함이 없이 실행될 수 있게 한다. 따라서, API(130)는 선택적이다.
일 실시예에서, MJS(110)는 운영 체제(OS, Operating System)의 일부이다. 다른 실시예에서, MJS(100)는 운영 체제로부터 외부에서 실행한다. 일 실시예에서, MJS는 운영 체제 외부에서 실행하는 경우, MJS는 자신의 자원 이용률에서 자체적으로 한정한다. 예를 들어, MJS(110)는 자신의 자원 이용률을 모니터링하고, 자신의 자원 이용률이 너무 높게 되면 MJS(110)는 MJS(110)를 스케쥴링하는 것을 일정 기간 동안에 정지하도록 운영 체제에 요청을 행한다.
MJS-실행가능 애플리케이션(115)은 본 발명의 일 실시예에 따라 자원 이용률을 제어하도록 MJS(110)에 파라미터를 전송한다. 자원 이용률의 제어는 이들에 한정되는 것은 아니지만, 디스크 I/O, CPU 및 네트워크를 포함한다. 예를 들어, MJS-실행가능 애플리케이션(115)은 위의 3개의 자원들의 임계 레벨들의 임의의 조합 까지 실행된 마이크로-작업을 요청할 수 있다. 또한, MJS-실행가능 애플리케이션(115)은 서로 다른 마이크로-작업들(125)에 대하여 서로 다른 자원 임계 레벨들을 특정할 수 있다. 예를 들어, MJS-실행가능 애플리케이션(115)은 일 실시예에 따라 각각의 마이크로-작업(125)에서의 다른 자원 임계 레벨을 특정한다. 따라서, 미세-단위로 된(fine-grained) 자원 관리가 가능하다. MJS(110)가 자원 이용률을 계산하는 경우, 본 발명의 일 실시예에 따라, 이것은 측정된 MJS-실행가능 애플리케이션 외의 프로세스들의 자원 이용률이다. CPU 이용률 임계값이 20%로 설정되는 다음 예가 설명을 위해 이용된다. MJS-실행가능 애플리케이션이 실행할 수 있기 전에 CPU 이용률이 20% 미만인 경우에, 마이크로-작업(들)이 실행할 때 CPU 이용률이 20% 이상으로 증가할 수 있다. 이 예에서, 20%를 초과하는 증가는 CPU 자원 이용률 위반으로 간주되지 않는다. 유사한 원리들이 네트워크 및 디스크 I/O 자원들에 적용된다.
MJS(110)는 일 실시예에서, 또한 메모리 매니저(140)를 갖는다. MJS(110)가 초기화되는 경우 MJS(110)에는 운영 체제에 의해 메모리가 할당되며, 메모리의 일부를 MJS(110)가 자신의 목적을 위해 사용하며, 메모리의 일부를 MJS-실행가능 애플리케이션(115)에 할당한다. MJS-실행가능 애플리케이션(115(1))이 개시하는 경우, MJS-실행가능 애플리케이션(115(1))은 MJS(110)로부터 메모리 할당을 요청한다. MJS(110)는 모든 프로세스들에 의한 현재 컴퓨터 시스템 메모리 이용률 및 MJS-실행가능 애플리케이션(115(1))의 수요와 같은 인자들에 기초하여, 얼마나 많은 메모리를 MJS-실행가능 애플리케이션(115(1))에 할당할 것인지를 판단할 수 있다. 메모리 요구량들은 각각의 MJS-실행가능 애플리케이션(115)에 고유할 수 있으며, 컴퓨터 소프트웨어 프로그래머에 의해 MJS-실행가능 애플리케이션(115) 내에 프로그래밍될 수 있다.
도 2는 본 발명의 일 실시예에 따라 MJS-실행가능 애플리케이션 메모리 풋프린트(204(1) - 204(n))에 비교되는 통상의 애플리케이션 메모리 풋프린트(202)의 비교를 나타낸다. MJS-실행가능 애플리케이션(115(1))은 마이크로-작업들(125)을 실행시키기 때문에, 메모리 할당(204(1))이 매우 작을 수 있다. 또한, 메모리 할당(204(1))이 매우 작기 때문에, MJS-실행가능 애플리케이션(115(1))이 자신의 할당된 메모리(204(1))를 항상 양도하는 것이 반드시 필요한 것은 아닐 수 있다. 따라서, MJS-실행가능 애플리케이션(115)은 빈번한 메모리 할당 및 할당 해제(de-allocation)를 야기하지 않는다. 메모리 할당에서의 감소 및 제거는 왜 MJS-실행가능 애플리케이션(115)이 다른 애플리케이션 및 작업들에 상당한 충격을 주지 않는지의 한 이유이다.
프로세스 흐름
도 3은 본 발명의 일 실시예에 따라 마이크로-작업들을 이용하여 MJS-실행가능 애플리케이션을 실행하기 위한 프로세스(300)의 단계들을 나타내는 흐름도이다. 단계 301에서, MJS-실행가능 애플리케이션 프로그램이 개시된다. 일 실시예에서, 컴퓨터 시스템이 부팅될 때 MJS-실행가능 애플리케이션 프로그램이 개시된다. MJS-실행가능 애플리케이션이 수행할 작업을 갖고 있지 않은 경우, MJS-실행가능 애플리케이션은 실행할 작업을 가질 때까지 유휴 상태에 놓여있게 된다. 이 유휴 상태에서, MJS-실행가능 애플리케이션은 수시 모니터링과 같은 일부 기능들을 수행할 수 있다. 단계 302에서, MJS-실행가능 애플리케이션이 저장 매체를 조각모으기하는 것, 또는 바이러스들에 대한 스캐닝과 같은 수행할 작업을 갖는다. 작업은 단일 디스크 및 그 단일 디스크 상에 저장된 파일들을 조각모으기하는 것일 수 있고 여기서, MJS-실행가능 애플리케이션은 그 디스크를 진행 과정에 맞춰 조각모으기한다.
MJS-실행가능 애플리케이션이 개시될 때 작은 양의 메모리가 MJS-실행가능 애플리케이션에 할당된다. MJS-실행가능 애플리케이션이 일반적으로 한번에 단일의 마이크로-작업을 실행하는 것만을 시도하기 때문에 할당된 양은 매우 작을 수 있다. 그러나, 일부 경우에, MJS-실행가능 애플리케이션은 실행할 다른 프로세스를 대기함이 없이 복수의 마이크로-작업들을 실행하는 것을 시도할 수 있다. 예를 들어, MJS가 필요한 컴퓨터 시스템 자원이 유휴 상태라고 판단한다면, MJS는 다른 프로세스가 마이크로-작업들에 의해 이용되는 자원들을 이용함이 없이 MJS-실행가능 애플리케이션이 복수의 마이크로-작업들을 연속적으로(in a row) 실행하게끔 할 수 있다.
단계 304에서, 컴퓨팅 작업은 마이크로-작업들로 분할된다. 마이크로-작업들은 본 발명의 일 실시예에 따라 컴퓨터 시스템에서의 다른 작업의 성능에 상당한 충격을 주지 않도록 마이크로-작업들의 실행이 충분히 작은 양의 자원들을 이용하게 하는 크기로 이루어진다. 컴퓨팅 작업을 마이크로-작업들로 분할하는 것은 MJS-실행가능 애플리케이션 내에서 명령에 의해 달성될 수 있다. 일반적으로, 이들 명령은 MJS-실행가능 애플리케이션에서의 결정 포인트들이다. 예를 들어, 명령들은 마이크로-작업을 실행하도록 허가를 요청하는 MJS에 대한 API 호출들일 수 있다. 그러나, MJS는 MJS-실행가능 애플리케이션과 통합될 수 있으며, 이 경우, 명령들은 MJS-실행가능 애플리케이션 내의 스케쥴링 기능에 대한 호출들일 수 있다. 컴퓨팅 작업을 마이크로-작업들로 분할하기 위해 다른 기술들이 이용될 수 있다.
단계 306에서, 각각의 마이크로-작업들에 대하여 특정 마이크로-작업에 의해 이용될 컴퓨터 시스템의 하나 이상의 자원들의 이용률이 하나 이상의 유휴 기준을 만족하는지에 관한 판단이 행해진다. 따라서, 마이크로-작업들은, 마이크로-작업들에 의해 요구되는 컴퓨터 시스템의 자원들이 충분히 유휴 상태에 있는 경우에만 때때로 실행된다. 일 실시예에서, 유휴 기준은 자원 임계값에 기초한다. 예를 들어, 자원 임계값이 이용될 수 있으며, 여기서, MJS-실행가능 애플리케이션의 마이크로 작업은 다른 프로세스들에 의한 자원 이용률이 MJS-실행가능 애플리케이션에 의해 특정된 임계값 미만인 경우에만 실행한다. 아래 설명된 예시적인 API는 일부 자원 임계 파라미터들의 일례를 포함한다. 그러나, 프로세스(300)는 이들 자원 임계 파라미터로 한정되는 것은 아니다. 단계 306은 각각의 마이크로-작업에 의해 요구되는 자원들의 이용가능성에 종속되는 시간에 걸쳐 마이크로-작업들의 실행을 분산(spread)시킨다. 따라서, 마이크로-작업들의 실행은 컴퓨터 시스템에서의 다른 작업들 및 애플리케이션들의 성능에 상당한 충격을 주지 않는다.
특정 자원에 대한 유휴 기준은 하나 이상의 인자들에 기초할 수 있다. 예를 들어, 일 실시예에서, CPU 이용률은 CPU 자원 이용률에 대한 유휴 기준으로서 이용된다.
단계 307에서, 마이크로-작업들은 실행되어지도록 된다. 일 실시예에서, MJS는 특정 마이크로-작업이 실행될 수 있도록 하는 허가를 MJS-실행가능 애플리케이션에 제공한다. 실행할 마이크로-작업들이 더 있다면, 제어가 단계 306로 진행하여, 다음 마이크로-작업에 의해 이용될 컴퓨터 시스템의 하나 이상의 자원의 이용률이 하나 이상의 유휴 기준을 만족하는지를 판단한다.
메인터넌스 유형 실시예에서, MJS-실행가능 애플리케이션은 진행 과정에 맞춰 실행하여, 컴퓨터 시스템이 부팅된 상태로 유지되는 한 실행을 계속한다. 따라서, MJS-실행가능 애플리케이션이 자신의 작업을 완료하는 경우에도, 애플리케이션은 단계 308에 나타낸 바와 같이 실행을 계속한다. 따라서, MJS-실행가능 애플리케이션은 일반적으로 애플리케이션의 개시를 대표하는 추가적인 자원들을 소모하지 않는다. MJS-실행가능 애플리케이션이 해야 할 다른 작업을 갖는다고 판단한 경우에, 단계 304에서 MJS-실행가능 애플리케이션은 새로운 컴퓨팅 작업을 마이크로-작업들로 분할하고, 단계 306에서 마이크로-작업들이 시간에 걸쳐 실행된다.
예시적인 API
본 발명의 일 실시예는 MJS-실행가능 애플리케이션이 MJS와 인터페이스할 수 있도록 하는 API이다. 예시적인 API는 CPU, 디스크 및 네트워크에 대한 다음의 자원 임계 파라미터들을 갖는다.
*- CPU 이용률 임계값
- 보류중인 디스크 I/O 카운트 임계값
- 네트워크 이용률 임계값
상술한 파라미터들은 각각의 마이크로-작업에 대하여 특정될 수 있다. 즉, 서로 다른 마이크로-작업들에는 서로 다른 자원 임계 파라미터들이 할당될 수 있다. 예를 들어, 네트워크를 이용하는 마이크로-작업에 대하여, 네트워크 임계값이 이용될 수 있다. 그러나, 네트워크 임계값은 네트워크를 이용하지 않는 마이크로-작업들에 대하여 제로일 수 있다. 따라서, 미세 단위로 된 자원 관리가 본 발명의 일 실시예에 따라 제공된다.
특정 예로서, MJS-실행가능 애플리케이션은 CPU 이용률이 50% 미만이고 I/O 디스크 이용률이 40% 미만이고 네트워크 트래픽이 60% 미만인 경우에만 특정 마이크로-작업이 실행되도록 요청할 수 있다. 전혀 다른 것을 포함하지 않는 자원 임계 인자들의 임의의 조합이 이용될 수 있다. CPU 이용률 임계값은 본 발명의 일 실시예에 따라 임의의 다른 작업의 것과 대조적으로, MJS의 CPU 이용들을 구별한다.
다음 2개의 파라미터들은 얼마나 빈번하게 자원 이용률이 측정되어야 하는지를 특정하는데 이용된다.
- CPU 이용률 윈도우
- 네트워크 이용률 윈도우
CPU 이용률 윈도우 파라미터는 CPU 이용률이 계산되는 시간 윈도우를 정의한다. 예를 들어, 마지막 n 밀리초에 걸친 CPU 이용률이 평균화된다. 네트워크 이용률 윈도우는 네트워크 이용률이 계산되는 시간 윈도우를 정의한다. 이들 파라미터는 MJS에 대하여 내부적일 수 있다. 그러나, MJS-실행가능 애플리케이션은 이들 파라미터를 오버라이드할 수 있다. 보류중인 디스크 I/O는 임의의 시점에서 절대적이며, 따라서, 이 I/O는 계산될 필요가 없다.
필수(mandatory) 유휴 시간 파라미터는 마이크로-작업들이 어떻게 시간에 걸쳐 분산될 수 있는지를 제어하도록, MJS-실행가능 애플리케이션으로부터 MJS 엔진에 전달될 수 있다. 필수 유휴 시간 파라미터는 선택적이다. 또한, 이용될 때, 필수 유휴 시간 파라미터는 제로 값을 가질 수 있다.
- 필수 유휴 시간
MJS는 모든 마이크로-작업들이 실행된 후에 시스템 유휴 시간으로서 정의되는 "유휴 시간"의 트랙을 유지시킨다. 이전에 설명된 바와 같이, MJS-실행가능 애플리케이션(들)은 MJS를 이용하여 마이크로-작업들을 대기열에 저장시킬 수 있다. MJS 대기열 상에 마이크로-작업들이 없는 경우, MJS는 특정된 필수 유휴 시간 동안 기다린 다음, MJS-실행가능 애플리케이션(들)을 기상시키고, MJS-실행가능 애플리케이션(들)에 추가적인 작업들을 수행하도록 권한을 부여한다. 예를 들어, MJS-실행가능 디프래그멘터가 디스크 드라이브를 조각모으기하도록 먼저 복수의 마이크로-작업들을 실행한 다음, MJS 마이크로-작업 스케쥴러에 의해 중단될 수 있다. 특정된 필수 유휴 시간 후에, MJS는 추가적인 작업에 권한을 부여하도록 MJS-실행가능 디프래그멘터를 호출한다. 예를 들어, MJS-실행가능 디프래그멘터는 메모리를 해제하는 것과 같은 클린업(clean-up) 작업을 실행할 수 있다. 필수 유휴 시간은 MJS-실행가능 애플리케이션에 의해 조정될 수 있는 디폴트 파라미터일 수 있다.
다음의 파라미터들은 자원 이용률이 임계값을 초과할 때 마이크로-작업을 실행하는 것을 대기하는 것에 관한 것이다.
- 대기 시간
- 최대 대기 시간
MJS가, 자원 이용률이 현재 너무 높아 마이크로-작업을 실행할 수 없다고 판단한다면, MJS는 특정된 대기 시간 동안을 기다린 다음, 자원 이용률을 재검사한다. 대기 시간 파라미터는 MJS가 자원 이용률이 너무 높다고 판단할 때마다 증가될 수 있다. 예를 들어, MJS는 최대 대기 시간(Max Wait Time)에 도달할 때까지 대기 시간 파라미터를 증가시킬 수 있다. 이들 파라미터는, MJS-실행가능 애플리케이션이 처음 시작될 때, MJS-실행가능 애플리케이션에 의해 특정될 수 있다. MJS-실행가능 애플리케이션은 자신의 실행 시간 동안에 이들 파라미터를 조정할 수 있다.
디프래그멘터 실시예
일 실시예에 따르면, MJS-실행가능 애플리케이션은 디프래그멘터이다. 도 4는 본 발명의 일 실시예에 따라 마이크로-작업들을 이용한 MJS 디프래그멘터의 프로세스(400)의 단계들을 나타낸다. 프로세스(400)는 디프래그멘터의 적어도 일부분이 마이크로-작업 개념을 이용할 수 있는 한 방법의 일례이다. 이 예에서, MJS-실행가능 애플리케이션은 API를 통하여 MJS와 인터페이스한다. 그러나, 이전에 설명된 바와 같이, MJS는 MJS-실행가능 애플리케이션 내에 통합될 수 있으며, 여기서, API는 반드시 필수적인 것인 아니다.
조각 모으기의 프로세스는 조각화된 파일들에 대한 디스크 드라이브를 스캐닝하는 것을 포함한다. 이 스캐닝은 파일 기록을 얻은 마이크로-작업들과, 그 파일이 조각화된 것인지를 판단하는 마이크로-작업들인 개별 마이크로-작업들로 나누어질 수 있다. 디스크 드라이브를 스캐닝하는 것은 도 4의 단계들 402 - 408로 나타내어진다.
단계 402에서, MJS-실행가능 디프래그멘터는 마이크로-작업을 실행하도록 MJS로부터 허가를 요청하기 위해 마이크로-작업 API를 호출한다. API 호출은 이 마이크로-작업에 대한 자원 이용률 임계 파라미터들을 특정할 수 있다. 다른 방법으로, 이전에 정의된 파라미터들이 이 마이크로-작업에 대해 제공될 수 있다. 요청을 수신하는 것에 응답하여, MJS는, 마이크로-작업이 실행될 수 있을 때를 판단한다. 이 판단은 자원 이용률 임계 파라미터들에 기초할 수 있다.
단계 404에서, MJS-실행가능 애플리케이션이 허가를 수신한 후, MJS 디프래그멘터는 마이크로-작업을 실행하며, 이 경우, 마이크로-작업은 다음 파일 기록을 얻는 것이다. 단계 406에서, MJS-실행가능 애플리케이션은 다시 마이크로-작업 API를 호출한다. MJS-실행가능 애플리케이션이 MJS으로부터 실행하도록 허가를 수신하는 경우, MJS-실행가능 애플리케이션은 단계 404로부터의 파일이 조각화된 것인지를 판단한다. 파일이 조각화된 것이 아니라면, 프로세스(400)는 단계 402로 복귀한다.
파일이 조각화된 것이라면, 단계 410 -416로 나타낸 바와 같이, MJS-실행가능 디프래그멘터가 파일을 조각모으기할 수 있다. 단계 410은 마이크로-작업 API에 대한 호출이다. 단계 412는 파일에 대한 자유 디스크 공간을 찾고 그 자유 공간의 할당을 획득하는 것이다.
마이크로-작업 API를 호출하는 단계 414와, 파일의 피스를 이동시키는 단계 416은 전체 파일이 이동될 때까지 반복된다. 예를 들어, 이동될 파일은 다른 애플리케이션의 성능에 상당한 충격을 야기하지 않도록 충분히 작은 피스들로 이동될 수 있다.
따라서, 마이크로-작업 개념은 진행 과정에 맞춰 조각화를 모니터링하고 조각화가 발생하자마자 파일들을 조각모으기하는 동적 디프래그멘터를 제공한다. 이는 스케쥴링된 조각모으기 실행 시간을 대기함이 없이 조각화의 발생시 즉시 조각화된 파일들을 조각모으기하는 MJS-실행가능 디프래그멘터를 가져온다. 따라서, MJS-실행가능 디프래그멘터는 본 발명의 일 실시예에 따르면 실시간 디프래그멘터이다.
쉘 마이크로-작업 스케쥴러
일 실시예에서, MJS는 컴퓨팅 작업을 마이크로-작업들로 자동으로 분할한다. 예를 들어, MJS는 MJS-실행되지 않는 애플리케이션 프로그램들 주변을 랩핑(wrap)하는 쉘로서 역할을 한다. 따라서, 쉘 MJS는 임의의 실행가능한 애플리케이션이 실행될 수 있는 완벽한 소프트웨어 애플리케이션이다. 쉘 MJS는 실행가능한 애플리케이션으로부터의 컴퓨팅 작업을 마이크로-작업들로 자동으로 분할한다. 즉, 이 실시예에서, 애플리케이션 프로그래머는 애플리케이션을 마이크로-작업들로 분할할 필요가 없다.
일 실시예에서, 쉘 MJS는 자원 이용률에 기초하여 실행가능 애플리케이션으로부터의 컴퓨팅 작업을 마이크로-작업들로 분할한다. 쉘 MJS는 애플리케이션과, 애플리케이션이 어떤 자원을 이용하는지를 알도록 어떻게 애플리케이션이 실행하는지를 분석할 수 있다. 예를 들어, MJS는 어떤 자원을 애플리케이션이 이용하는지를 분석하고 애플리케이션이 어느 정도로 자원을 이용하는지를 분석한다. 예를 들어, 디스크 디프래그멘터가 실행할 때 쉘 MJS는 어떤 자원들(예를 들어, CPU, 네트워크, 디스크 I/O)을 애플리케이션이 이용하는지를 판단할 수 있다. 일 실시예에서, 쉘 MJS는 이 분석에 기초하여 어떻게 애플리케이션을 마이크로-작업들로 분할할지를 자동으로 판단한다. 쉘 MJS는 또한 이 분석에 기초하여 어떻게 마이크로-작업들을 스케쥴링할지를 판단할 수 있다.
쉘 MJS는 어떻게 컴퓨팅 작업을 마이크로-작업들로 분할할지를 판단하고 및/또는 어떻게 실행을 위해 마이크로-작업들을 스케쥴링할지를 판단하도록 여러 파라미터들을 이용할 수 있다. 이들 파라미터는 사용자 입력에 기초할 수 있거나 또는 쉘 MJS에 의해 설정될 수 있다. 예를 들어, 사용자는 특정 애플리케이션이 높은 우선 순위를 가짐을 특정할 수 있다.
하드웨어 개요
도 5는 본 발명의 일 실시예가 실시될 수 있는 컴퓨터 시스템(500)을 나타내는 블록도이다. 프로세스(300)와 프로세스(400)의 단계들은 시스템(500)의 하나 이상의 컴퓨터 판독가능 매체 상에 명령으로서 저장되어 있고 컴퓨터 시스템(500)의 프로세서 상에서 실행된다. 컴퓨터 시스템(500)은 정보를 통신하기 위한 버스(502) 또는 다른 통신 메카니즘 및 정보를 처리하기 위하여 버스(502)와 결합된 프로세서(504)를 포함한다. 컴퓨터 시스템(500)은 또한 프로세서(504)에 의해 실행될 명령 및 정보를 저장하기 위해 버스(502)에 결합된, 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 장치와 같은 메인 메모리(506)를 포함한다. 메인 메모리(506)는 또한 프로세서(504)에 의해 실행될 명령의 실행 동안에 임시 변수들 또는 다른 중간 정보를 저장하기 위하여 이용될 수 있다. 컴퓨터 시스템(500)은 프로세서(504)에 대한 정적 정보 및 명령을 저장하기 위하여 버스(502)에 결합된 판독 전용 메모리(ROM; 508) 또는 다른 정적 저장 장치를 더 포함한다. 자기 디스크 또는 광 디스크와 같은 저장 장치(510)가 제공되어, 정보 및 명령을 저장하기 위하여 버스(502)에 결합된다. 컴퓨터 시스템(500)은 임의의 수의 프로세서(504)를 가질 수 있다. 예를 들어, 일 실시예에서, 컴퓨터 시스템(500)은 멀티-프로세서 시스템이다. 프로세서(504)는 임의의 수의 코어들을 가질 수 있다. 일 실시예에서, 프로세서(504)는 멀티-코어 프로세서(504)이다. 컴퓨터 시스템(500)은 하이퍼 스레디드 머신(hyper threaded machine)에 이용될 수 있다.
컴퓨터 시스템(500)은 컴퓨터 사용자에 정보를 표시하기 위해 버스(502)를 통하여 음극선관(CRT)과 같은 디스플레이(512)에 결합될 수 있다. 영숫자 및 다른 키들을 포함한 입력 장치(514)는 프로세서(504)에 정보 및 커맨드 선택들을 통신하기 위하여 버스(502)에 결합된다. 다른 유형의 사용자 입력 장치는 프로세서(504)에 방향 정보 및 커맨드 선택을 통신하고 디스플레이(512) 상에서 커서 이동을 제어하기 위한 마우스, 트랙볼, 또는 커서 방향 키들과 같은 커서 제어부(516)이다. 이 입력 장치는 일반적으로 장치가 평면에서의 위치들을 특정할 수 있게 하는 2개의 축인 제1 축(예를 들어, x) 및 제2 축(예를 들어, y)으로 2개의 자유도를 갖는다.
본 발명은 여기에서 설명된 기술을 구현하기 위한 컴퓨터 시스템(500)의 이용에 관한 것이다. 본 발명의 일 실시예에 따르면, 이들 기술은 프로세서(504)가 메인 메모리(506)에 포함된 하나 이상의 명령의 하나 이상의 시퀀스들을 실행시키는 것에 응답하여 컴퓨터 시스템(500)에 의해 수행된다. 이러한 명령은 저장 장치(510)와 같은 다른 머신 판독가능 매체로부터 메인 메모리(506) 내에 읽어 넣을(read into) 수 있다. 메인 메모리(506)에 포함된 명령들의 시퀀스들의 실행은 프로세서(504)로 하여금 여기에 설명된 프로세스 단계들을 수행하도록 한다. 대안의 실시예들에서, 하드-와이어형 회로(hard-wired circuitry)가 본 발명을 실시하기 위해 소프트웨어 명령과 결합하여 또는 소프트웨어 명령 대신에 이용될 수 있다. 따라서, 본 발명의 실시예들은 하드웨어 회로 및 소프트웨어의 임의의 특정 조합으로 제한되지 않는다.
여기에 이용된 용어 "머신 판독가능 매체"는 특정 방식으로 머신이 동작하도록 하는 데이터를 제공하는데 참여하는 임의의 매체를 의미한다. 컴퓨터 시스템(500)을 이용하여 구현된 일 실시예에서, 예를 들어, 여러 머신 판독가능 매체가 실행을 위해 프로세서(504)에 명령을 제공하는데 참여된다. 이러한 매체는 이들로 한정되는 것은 아니지만, 비휘발성 매체, 휘발성 매체 및 전송 매체를 포함한 많은 형태를 취할 수 있다. 비휘발성 매체는 예를 들어, 저장 장치(510)와 같은 광 디스크 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(506)와 같은 동적 메모리를 포함한다. 전송 매체는 버스(502)를 포함하는 와이어를 포함한, 동축 케이블, 구리선 및 광섬유를 포함한다. 전송 매체는 또한 라디오 파 및 적외선 데이터 통신 동안에 발생되는 것과 같은 음향파 또는 광파들의 형태를 취할 수 있다. 이러한 모든 매체는 매체에 의해 전달되는 명령을, 머신 내에 명령을 읽어 넣는 물리적 메카니즘에 의해 검출가능하도록 실체적이어야 한다.
예를 들어, 일반적인 형태들의 머신 판독가능 매체는 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 또는 임의의 다른 자기 매체, CD-ROM, 임의의 다른 광학 매체, 펀치카드(punchcard), 페이퍼테이프, 홀들의 패턴들을 가진 임의의 다른 물리적 매체, RAM, PROM 및 EPROM, FLASH-EPROM, 임의의 다른 메모리 칩 또는 카트리지, 이후에 설명될 바와 같은 반송파 또는 컴퓨터가 판독할 수 있는 임의의 다른 매체를 포함한다.
여러 형태의 머신 판독가능 매체는 실행을 위해 프로세서(504)에 하나 이상의 명령의 하나 이상의 시퀀스들을 전달하는데 참여될 수 있다. 예를 들어, 명령은 원격 컴퓨터의 자기 디스크 상에서 초기에 전달될 수 있다. 원격 컴퓨터는 자신의 동적 메모리 내에 명령을 로딩시킬 수 있고 모뎀을 이용하여 전화선을 통해 명령을 전송할 수 있다. 컴퓨터 시스템(500)에 국부적인 모뎀은 전화선 상에서 데이터를 수신하고 적외선 송신기를 이용하여 데이터를 적외선 신호로 변환할 수 있다. 적외선 검출기는 적외선 신호로 전달된 데이터를 수신할 수 있고 적절한 회로가 버스(502) 상에 데이터를 위치시킬 수 있다. 버스(502)는 프로세서(504)가 명령을 검색하고 실행하는 메인 메모리(506)에 데이터를 전달한다. 메인 메모리(506)에 의해 수신된 명령은 프로세서(504)에 의한 실행 전에 또는 후에 저장 장치(510) 상에 선택적으로 저장될 수 있다.
컴퓨터 시스템(500)은 또한 버스(502)에 결합된 통신 인터페이스(518)를 포함한다. 통신 인터페이스(518)는 로컬 네트워크(522)에 접속된 네트워크 링크(520)에 결합한 양방향 데이터 통신을 제공한다. 예를 들어, 통신 인터페이스(518)는 전화선의 대응 유형에 데이터 통신 접속을 제공하기 위한 종합 정보 통신망(integrated services digital network; ISDN) 카드 또는 모뎀일 수 있다. 다른 예로서, 통신 인터페이스(518)는 호환가능 LAN에 데이터 통신 접속을 제공하기 위한 근거리 통신망(LAN) 카드일 수 있다. 무선 링크들이 또한 구현될 수 있다. 이러한 임의의 구현예에서, 통신 인터페이스(518)는 여러 유형의 정보를 나타내는 디지털 데이터 스트림을 전달하는 전기 신호들, 전자기 신호들 또는 광학 신호들을 전송 및 수신한다.
네트워크 링크(520)는 일반적으로 하나 이상의 네트워크를 통하여 다른 데이터 장치들에 데이터 통신을 제공한다. 예를 들어, 네트워크 링크(520)는 로컬 네트워크(522)를 통해 호스트 컴퓨터(524)에 또는 인터넷 서비스 공급자(ISP; 526)에 의해 조작되는 데이터 기기에 접속을 제공할 수 있다. ISP(526)는 이어서 현재 일반적으로 "인터넷"(528)이라 불리는 월드 와이드 패킷 데이터 통신 네트워크를 통하여 데이터 통신 서비스들을 제공한다. 로컬 네트워크(522)와 인터넷(528) 양쪽 모두는 디지털 데이터 스트림을 전달하는 전기 신호, 전자기 신호 또는 광학 신호를 이용한다. 여러 네트워크를 통한 신호들 및 네트워크 링크(520) 상에서 그리고 컴퓨터 시스템(500)으로부터 그리고 컴퓨터 시스템(500)에 디지털 데이터를 전달하는 통신 인터페이스(518)를 통하는 신호들은 정보를 전송하는 반송파의 예시적인 형태이다.
컴퓨터 시스템(500)은 네트워크(들), 네트워크 링크(520) 및 통신 인터페이스(518)를 통하여 메시지들을 전송하고, 프로그램 코드를 포함한 데이터를 수신할 수 있다. 인터넷 예에서, 서버(530)는 인터넷(528), ISP(526), 로컬 네트워크(522) 및 통신 인터페이스(518)를 통하여 애플리케이션 프로그램에 대하여 요청된 코드를 전송할 수 있다.
수신된 코드는 수신될 때 프로세서(504)에 의해 실행될 수 있고, 및/또는 이후의 실행을 위하여 저장 장치(510) 또는 다른 비휘발성 스토리지에 저장될 수 있다. 이러한 방식으로, 컴퓨터 시스템(500)은 반송파의 형태로 애플리케이션 코드를 획득할 수 있다.
상술한 설명에서, 본 발명의 실시예들은 구현예마다 다를 수 있는 복수의 특정한 세부 내용을 참조로 설명되었다. 따라서, 무엇이 본 발명인지 그리고 무엇이 출원인에 의해 본 발명인 것으로 의도되었는지에 관한 단 하나의 유일한 표시는 임의의 후속적인 수정안을 포함하여 본 출원에서 도출된 특정 형태의 청구범위 세트이다. 이와 같은 청구범위내에 수록된 용어들에 대해 상세한 설명에서 명백하게 기술한 임의의 정의들은 청구범위내에서 사용되는 이와 같은 용어들의 의미를 결정한다. 따라서, 청구범위에서 명백하게 언급하고 있지 않은 어떠한 제한, 구성요소, 특성, 특징, 이점 또는 속성도 상기 청구범위의 범위를 어떠한 방식으로든지 한정시켜서는 안된다. 따라서, 본 명세서 및 도면은 본 발명 범위를 한정시키고자 제시된 것이기 보다는 본 발명의 설명을 목적으로 제시된 것으로서 간주되어야 한다.

Claims (5)

  1. 하나 이상의 장치들에 의해 수행되는, 컴퓨터 마이크로-작업(micro-job)들을 스케줄링하고 실행하는 방법에 있어서,
    제1 이용률 윈도우(utilization window) 동안, 복수의 마이크로-작업들 중 특정한 마이크로-작업을 수행하는데 필요한 하나 이상의 자원들의 이용률이 하나 이상의 유휴 기준들(idleness criteria)을 따르지 않는다고 결정하는 단계;
    이용률 윈도우들 사이에, 상기 하나 이상의 자원들의 이용률이 모니터링되지 않는 인터벌(interval)들에 대한 최소 대기 시간을 표시하는 저장된 값을 판독(read)하는 단계;
    상기 제1 이용률 윈도우 이후에, 상기 하나 이상의 자원들의 이용률이 모니터링되는 제2 이용률 윈도우를 개시하기 전에 적어도 상기 최소 대기 시간이 흐르도록 허용하는 단계;
    상기 제2 이용률 윈도우 동안, 상기 특정한 마이크로-작업을 수행하는데 필요한 상기 하나 이상의 자원들의 이용률이 상기 하나 이상의 유휴 기준들을 따르지 않는다고 결정하는 단계;
    적어도, 상기 제2 이용률 윈도우 동안, 상기 특정한 마이크로-작업을 수행하는데 필요한 상기 하나 이상의 자원들의 이용률이 상기 하나 이상의 유휴 기준들을 따르지 않는다고 결정하는데 응답하여, 이용률 윈도우들 사이에, 상기 하나 이상의 자원들의 이용률이 모니터링되지 않는 인터벌들에 대한 수정된 최소 대기 시간을 결정하는 단계;
    상기 수정된 최소 대기 시간을 결정한 후 상기 제2 이용률 윈도우 이후에, 상기 하나 이상의 자원들의 이용률이 모니터링되는 제3 이용률 윈도우를 개시하기 이전에 적어도 상기 수정된 최소 대기 시간이 흐르도록 허용하는 단계;
    상기 제3 이용률 윈도우 동안, 상기 특정한 마이크로-작업을 수행하는데 필요한 상기 하나 이상의 자원들의 이용률이 상기 하나 이상의 유휴 기준들을 따른다고 결정하는 단계;
    상기 제3 이용률 윈도우 동안 상기 특정한 마이크로-작업을 수행하는데 필요한 상기 하나 이상의 자원들의 이용률이 상기 하나 이상의 유휴 기준들을 따른다고 결정한 것에 적어도 일부분 기초해서 상기 특정한 마이크로-작업이 실행되도록 야기하는(cause) 단계를 포함하며,
    상기 단계들은 상기 하나 이상의 장치들에 포함된 프로세서에 의해 수행되는 것인, 컴퓨터 마이크로-작업들을 스케줄링하고 실행하는 방법.
  2. 제1항에 있어서,
    컴퓨팅 작업을 복수의 마이크로-작업들로 분할하는 단계를 더 포함하는, 컴퓨터 마이크로-작업들을 스케줄링하고 실행하는 방법.
  3. 제2항에 있어서,
    컴퓨팅 작업을 복수의 마이크로-작업들로 분할하는 단계는, 컴퓨팅 작업을 개시하는 애플리케이션 프로그램에 의해 수행되는 것인, 컴퓨터 마이크로-작업들을 스케줄링하고 실행하는 방법.
  4. 제2항에 있어서,
    컴퓨팅 작업을 복수의 마이크로-작업들로 분할하는 단계는, 컴퓨팅 작업을 개시하는 애플리케이션 프로그램 외의 소프트웨어 프로세스에 의해 수행되는 것인, 컴퓨터 마이크로-작업들을 스케줄링하고 실행하는 방법.
  5. 제1항에 있어서,
    상기 제3 이용률 윈도우 동안 상기 특정한 마이크로-작업을 수행하는데 필요한 상기 하나 이상의 자원들의 이용률이 상기 하나 이상의 유휴 기준들을 따른다는 결정하는 단계는 운영 체제에 의해 수행되는 것인, 컴퓨터 마이크로-작업들을 스케줄링하고 실행하는 방법.
KR1020147002683A 2006-06-19 2007-05-29 비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치 KR101471394B1 (ko)

Applications Claiming Priority (3)

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
PCT/US2007/012746 WO2007149188A1 (en) 2006-06-19 2007-05-29 Method, system, and apparatus for scheduling computer micro-jobs to execute at non-disruptive times

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020097000686A Division KR20090024256A (ko) 2006-06-19 2007-05-29 비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치

Publications (2)

Publication Number Publication Date
KR20140022963A true KR20140022963A (ko) 2014-02-25
KR101471394B1 KR101471394B1 (ko) 2014-12-10

Family

ID=38572804

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020147002683A KR101471394B1 (ko) 2006-06-19 2007-05-29 비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치
KR1020097000686A KR20090024256A (ko) 2006-06-19 2007-05-29 비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020097000686A KR20090024256A (ko) 2006-06-19 2007-05-29 비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치

Country Status (10)

Country Link
US (3) US8239869B2 (ko)
EP (1) EP2030113A1 (ko)
JP (2) JP2009541848A (ko)
KR (2) KR101471394B1 (ko)
CN (3) CN101473307B (ko)
AU (1) AU2007261666C1 (ko)
CA (1) CA2654416A1 (ko)
RU (1) RU2454704C2 (ko)
TW (1) TW200813818A (ko)
WO (1) WO2007149188A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220170428A (ko) * 2021-06-23 2022-12-30 한국과학기술원 이기종 프로세서 기반 엣지 시스템에서 slo 달성을 위한 인공지능 추론 스케쥴러

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8056083B2 (en) * 2006-10-10 2011-11-08 Diskeeper Corporation Dividing a computer job into micro-jobs for execution
US9588809B2 (en) * 2006-10-10 2017-03-07 Invistasking LLC Resource-based scheduler
US8510741B2 (en) * 2007-03-28 2013-08-13 Massachusetts Institute Of Technology Computing the processor desires of jobs in an adaptively parallel scheduling environment
EP2269783A1 (de) 2009-06-30 2011-01-05 Leica Geosystems AG Kalibrierungsverfahren für ein Messsystem
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
CN102096599A (zh) * 2009-12-14 2011-06-15 中国移动通信集团公司 一种多队列任务调度方法及相关系统和设备
CN101887384A (zh) * 2010-06-30 2010-11-17 中山大学 一种基于马尔科夫模型的进程时间片长度确定方法
CN101968750B (zh) * 2010-10-15 2012-12-26 珠海举天软件科技有限公司 计算机系统及其工作方法
JP5948933B2 (ja) * 2012-02-17 2016-07-06 日本電気株式会社 ジョブ継続管理装置、ジョブ継続管理方法、及び、ジョブ継続管理プログラム
CN103019853A (zh) * 2012-11-19 2013-04-03 北京亿赞普网络技术有限公司 一种作业任务的调度方法和装置
US9152451B2 (en) * 2013-01-03 2015-10-06 GM Global Technology Operations LLC Method of distributing processor loading between real-time processor threads
JP5778200B2 (ja) * 2013-02-28 2015-09-16 株式会社大和総研ビジネス・イノベーション 情報処理装置、情報処理システム、情報処理方法、及び情報処理プログラム
CN104026744B (zh) * 2013-03-05 2018-12-18 惠州市吉瑞科技有限公司 电子烟微控制器的多任务执行方法及装置
CN103279351B (zh) * 2013-05-31 2016-06-29 北京高森明晨信息科技有限公司 一种任务调度的方法及装置
US9477523B1 (en) * 2013-06-25 2016-10-25 Amazon Technologies, Inc. Scheduling data access jobs based on job priority and predicted execution time using historical execution data
US8706798B1 (en) 2013-06-28 2014-04-22 Pepperdata, Inc. Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system
JP5466786B1 (ja) * 2013-08-28 2014-04-09 株式会社 ディー・エヌ・エー 画像処理装置及び画像処理プログラム
KR101604303B1 (ko) * 2013-10-30 2016-03-18 삼성에스디에스 주식회사 업데이트 실행 장치 및 방법과 이를 이용한 기록 매체, 업데이트 제공 서버 및 업데이트 제공 방법
US9727387B2 (en) 2014-11-10 2017-08-08 International Business Machines Corporation System management and maintenance in a distributed computing environment
US20180198855A1 (en) * 2014-11-24 2018-07-12 Alibaba Group Holding Limited Method and apparatus for scheduling calculation tasks among clusters
CN104731662B (zh) * 2015-03-26 2018-02-23 华中科技大学 一种可变并行作业的资源分配方法
US20170032000A1 (en) * 2015-07-28 2017-02-02 Bank Of America Corporation Database manager
RU2617923C2 (ru) * 2015-09-30 2017-04-28 Акционерное общество "Лаборатория Касперского" Система и способ настройки антивирусной проверки
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US10860373B2 (en) * 2016-10-11 2020-12-08 Microsoft Technology Licensing, Llc Enhanced governance for asynchronous compute jobs
JP7151219B2 (ja) * 2018-07-05 2022-10-12 株式会社リコー 組み込み機器、ウィルススキャンプログラム実行方法、プログラム
CN109460254B (zh) * 2018-09-25 2021-03-19 杭州旗捷科技有限公司 一种指令处理方法、cpu交互系统及采用该系统的耗材芯片
US20210382705A1 (en) * 2020-06-08 2021-12-09 Acronis International Gmbh Systems and methods for seamless software migration

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US246461A (en) * 1881-08-30 Blotting-pad
US73508A (en) * 1868-01-21 Improvement in cued-breaiees
US125793A (en) * 1872-04-16 Improvement in water-meters
US32293A (en) * 1861-05-14 Improved projectile for rifled ordnance
US231630A (en) * 1880-08-24 theodoe stefflway
US10065A (en) * 1853-10-04 Improvement in machines for topping cotton jn the field
US71841A (en) * 1867-12-10 Improvement in horse-rakes
SU849893A1 (ru) 1979-07-16 1996-01-10 Институт Кибернетики Ан Усср Вычислительная система
RU2027219C1 (ru) * 1990-12-17 1995-01-20 Грибков Владимир Александрович Устройство для распределения заданий процессорам
RU2018945C1 (ru) 1991-06-07 1994-08-30 Научно-производственное объединение интегрированных микроэлектронных систем Блок выбора направления обмена децентрализованной вычислительной системы
JPH06237348A (ja) 1993-02-08 1994-08-23 Fuji Xerox Co Ltd メモリ制御装置
US5675790A (en) 1993-04-23 1997-10-07 Walls; Keith G. Method for improving the performance of dynamic memory allocation by removing small memory fragments from the memory pool
DE19500957A1 (de) 1994-07-19 1996-01-25 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen oder Prozessen
US6330583B1 (en) * 1994-09-09 2001-12-11 Martin Reiffin Computer network of interactive multitasking computers for parallel processing of network subtasks concurrently with local tasks
JP2940450B2 (ja) 1995-10-26 1999-08-25 日本電気株式会社 クラスタ型コンピュータのジョブスケジュール方法及び装置
JP4110593B2 (ja) 1997-05-19 2008-07-02 ソニー株式会社 信号記録方法及び信号記録装置
JP3588231B2 (ja) 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
US6016503A (en) * 1997-08-29 2000-01-18 International Business Machines Corporation Methods, systems and computer program products for preemptive avoidance of constraints for shared resources
US5974439A (en) * 1997-11-21 1999-10-26 International Business Machines Corporation Resource sharing between real-time and general purpose programs
US6226728B1 (en) 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US7268774B2 (en) 1998-08-18 2007-09-11 Candledragon, Inc. Tracking motion of a writing instrument
US6567840B1 (en) 1999-05-14 2003-05-20 Honeywell Inc. Task scheduling and message passing
US6591287B1 (en) * 1999-09-08 2003-07-08 Lucent Technologies Inc. Method to increase the efficiency of job sequencing from sequential storage
US6609131B1 (en) * 1999-09-27 2003-08-19 Oracle International Corporation Parallel partition-wise joins
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US7096327B2 (en) 2000-03-24 2006-08-22 Koninklijke Philips Electronics N.V. System for and method of accessing blocks on a storage medium
US7007090B1 (en) * 2000-03-31 2006-02-28 Intel Corporation Techniques of utilizing actually unused bandwidth
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
US7170891B2 (en) 2001-08-30 2007-01-30 Messenger Terabit Networks, Inc. High speed data classification system
US7237016B1 (en) * 2001-09-07 2007-06-26 Palau Acquisition Corporation (Delaware) Method and system to manage resource requests utilizing link-list queues within an arbiter associated with an interconnect device
EP1310869A1 (en) 2001-11-12 2003-05-14 Hewlett-Packard Company Data processing system and method
JP3986346B2 (ja) * 2002-03-28 2007-10-03 富士通株式会社 処理装置、サーバ、およびプログラム
US7076781B2 (en) * 2002-05-31 2006-07-11 International Business Machines Corporation Resource reservation for large-scale job scheduling
US20040030882A1 (en) 2002-08-08 2004-02-12 Forman George Henry Managed application pre-launching
US7451704B1 (en) 2003-03-20 2008-11-18 The United States Of America As Represented By The Secretary Of The Army Multifunctional explosive fragmentation airburst munition
JP2004302986A (ja) 2003-03-31 2004-10-28 Alps Electric Co Ltd タスク管理方法
JP3936924B2 (ja) 2003-06-18 2007-06-27 株式会社日立製作所 ジョブスケジューリング方法及びシステム
US7467102B2 (en) 2003-09-11 2008-12-16 International Business Machines Corporation Request type grid computing
US20050071841A1 (en) 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
US7512948B2 (en) * 2003-11-20 2009-03-31 International Business Machines Corporation Method, system, and program for managing operation requests using different resources
US7650601B2 (en) 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
WO2005060575A2 (en) 2003-12-10 2005-07-07 X1 Technologies, Inc. Performing operations in response to detecting a computer idle condition
US20050240934A1 (en) * 2004-04-21 2005-10-27 Hewlett-Packard Development Company, L.P. Task management based on system utilization
US7441242B2 (en) * 2004-04-22 2008-10-21 International Business Machines Corporation Monitoring performance of a logically-partitioned computer
US20050246461A1 (en) 2004-04-29 2005-11-03 International Business Machines Corporation Scheduling threads in a multi-processor computer
US8856793B2 (en) * 2004-05-11 2014-10-07 International Business Machines Corporation System, method and program for scheduling computer program jobs
US7480840B2 (en) 2004-10-12 2009-01-20 International Business Machines Corporation Apparatus, system, and method for facilitating port testing of a multi-port host adapter
JP4691348B2 (ja) 2004-10-26 2011-06-01 三菱電機株式会社 記憶領域管理プログラムおよびメッセージ管理プログラム
US20060168214A1 (en) * 2004-10-29 2006-07-27 International Business Machines Corporation System for managing logical partition preemption
US7814485B2 (en) * 2004-12-07 2010-10-12 Intel Corporation System and method for adaptive power management based on processor utilization and cache misses
US7793308B2 (en) * 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
JP2006237348A (ja) 2005-02-25 2006-09-07 Ulvac Japan Ltd 静電チャック及びこれを備えた真空処理装置
US8594311B2 (en) * 2005-06-02 2013-11-26 Virtual Hold Technology, Llc Expected wait time augmentation system and method
JP4871546B2 (ja) * 2005-08-22 2012-02-08 株式会社日立製作所 ストレージシステム
US7853948B2 (en) 2005-10-24 2010-12-14 International Business Machines Corporation Method and apparatus for scheduling grid jobs
US7831971B2 (en) * 2005-10-24 2010-11-09 International Business Machines Corporation Method and apparatus for presenting a visualization of processor capacity and network availability based on a grid computing system simulation
US20070143759A1 (en) * 2005-12-15 2007-06-21 Aysel Ozgur Scheduling and partitioning tasks via architecture-aware feedback information
US20070150871A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation Autonomically adjusting the collection of performance data from a call stack
US9588809B2 (en) 2006-10-10 2017-03-07 Invistasking LLC Resource-based scheduler
US8056083B2 (en) 2006-10-10 2011-11-08 Diskeeper Corporation Dividing a computer job into micro-jobs for execution
GB2439577B (en) 2006-06-30 2011-12-14 Data Equation Ltd Data processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220170428A (ko) * 2021-06-23 2022-12-30 한국과학기술원 이기종 프로세서 기반 엣지 시스템에서 slo 달성을 위한 인공지능 추론 스케쥴러

Also Published As

Publication number Publication date
AU2007261666A1 (en) 2007-12-27
TW200813818A (en) 2008-03-16
CN101501645A (zh) 2009-08-05
CN101473306A (zh) 2009-07-01
JP2013232207A (ja) 2013-11-14
US8239869B2 (en) 2012-08-07
WO2007149188A1 (en) 2007-12-27
US20160314015A1 (en) 2016-10-27
US20120304181A1 (en) 2012-11-29
AU2007261666C1 (en) 2013-05-23
US9727372B2 (en) 2017-08-08
CA2654416A1 (en) 2007-12-27
JP2009541848A (ja) 2009-11-26
RU2008149052A (ru) 2010-07-27
AU2007261666B2 (en) 2012-10-11
KR101471394B1 (ko) 2014-12-10
RU2454704C2 (ru) 2012-06-27
EP2030113A1 (en) 2009-03-04
CN101473307B (zh) 2013-07-17
US20070294695A1 (en) 2007-12-20
CN101501645B (zh) 2013-04-03
US9384040B2 (en) 2016-07-05
KR20090024256A (ko) 2009-03-06
CN101473307A (zh) 2009-07-01

Similar Documents

Publication Publication Date Title
KR101471394B1 (ko) 비파괴 시간에 실행하도록 컴퓨터 마이크로-작업을 스케쥴링하는 방법, 시스템 및 장치
US8056083B2 (en) Dividing a computer job into micro-jobs for execution
EP2097815B1 (en) Method and system for transaction resource control
US20080086734A1 (en) Resource-based scheduler
WO2019084793A1 (en) A method, apparatus and system for real-time virtual network function orchestration
KR101373786B1 (ko) 자원-기반 스케쥴러
JP5299869B2 (ja) コンピュータマイクロジョブ
JP2008204243A (ja) ジョブ実行制御方法およびシステム
JP2001282560A (ja) 仮想計算機制御方法及びその実施装置並びにその処理プログラムを記録した記録媒体

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee