KR20160037737A - 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법 - Google Patents

스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법 Download PDF

Info

Publication number
KR20160037737A
KR20160037737A KR1020150100415A KR20150100415A KR20160037737A KR 20160037737 A KR20160037737 A KR 20160037737A KR 1020150100415 A KR1020150100415 A KR 1020150100415A KR 20150100415 A KR20150100415 A KR 20150100415A KR 20160037737 A KR20160037737 A KR 20160037737A
Authority
KR
South Korea
Prior art keywords
data
operations
data node
computing
storage device
Prior art date
Application number
KR1020150100415A
Other languages
English (en)
Other versions
KR102238600B1 (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 KR20160037737A publication Critical patent/KR20160037737A/ko
Application granted granted Critical
Publication of KR102238600B1 publication Critical patent/KR102238600B1/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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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
    • 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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

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

Abstract

본 발명에 따른 스케쥴러 컴퓨팅 장치는, 적어도 하나의 컴퓨팅 업무를 저장하도록 구현되고, 상기 컴퓨팅 업무는 분산 컴퓨팅 시스템의 데이터 노드에 의해 실행되고, 상기 분산 컴퓨팅 시스템은 적어도 하나의 데이터 노드를 포함하고, 각 데이터 노드는 중앙 프로세서 및 지능형 저장 장치를 포함하고, 상기 지능형 저장 장치는 제어기 프로세서와 메모리를 포함하는 컴퓨팅 업무 메모리, 및 상기 컴퓨팅 업무에 연관된 데이터의 용량 혹은 적어도 일부에 근거로 하여, 상기 데이터 노드의 상기 중앙 프로세서 혹은 상기 데이터 노드의 지능형 저장 장치 중 어느 하나에 의해 실행되는 상기 컴퓨팅 업무를 할당하도록 구현되는 프로세서를 포함한다.

Description

스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법{SCHEDULER COMPUTING DEVICE, DATA NODE OF DISTRIBUTED COMPUTING SYSTEM HAVING THE SAME, AND METHOD THEREOF}
본 발명은 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법에 관한 것이다.
분산 컴퓨팅 시스템은 일반적으로 분산 시스템을 연구/이용하는 컴퓨터 과학의 분야이다. 분산 컴퓨팅 시스템은, 전통적으로 네트워크 컴퓨터에 있는 구성 요소들과 통신하는 그 자체로 메시지를 전달하여 자신의 행동을 조정하는 시스템이다. 구성 요소들은 공통의 목표을 달성하기 위해 서로 상호 작용한다. 분산 시스템의 일반적인 특성은, 구성 요소들의 동시성, 글로벌 시각의 부족, 및 구성 요소들의 종속적인 실패를 위한 허용성을 포함 할 수 있다. 분산 시스템들의 예로써는, 크게 거대한 멀티플레이어 온라인 게임으로부터 피어-투-피어 어플리케이션들까지 다양하다.
"분산 시스템", "분산 프로그래밍", "분산 파일 시스템" 등과 같은 용어에서 사용되는 "분산"이라는 단어는, 개별 컴퓨터들이 물리적으로 특정 지역에 분산되어 있는 컴퓨터 네트워크들에 언급되었다. 하지만, 이 용어는 요즘 훨씬 넓은 의미로 사용되고, 종종 동일한 물리적 위치에서 실행하고 메시지를 전달하여 상호 작용 자율 프로세스를 지칭한다.
분산 컴퓨팅 시스템은 대규모 연산 문제를 해결 같은 공통의 목표을 가질 수 있다. 예를 들어, 일부 분산 시스템에서, 계산적 문제를 동시에 또는 병렬로 실행될 수 있는 더 작은 복수의 업무들로 나누어 질 수 있다. 이러한 업무는 분산 시스템의 다양한 컴퓨터에 할당 될 수 있다. 문제를 순차적으로 처리하는 단일 컴퓨터와는 달리 이러한 분산 컴퓨팅 시스템에서, 큰 계산 문제가 실질적으로 병렬로 문제를 처리하는 분산 시스템의 수행 능력을 활용함으로써 보다 신속하게 해결될 수 있다.
본 발명의 목적은 대규모 연산 문제를 빠르게 해결하는 분산 컴퓨팅 시스템의 스케쥴러 컴퓨팅 장치 및 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 스케쥴러 컴퓨팅 장치는, 적어도 하나의 컴퓨팅 업무를 저장하도록 구현되고, 상기 컴퓨팅 업무는 분산 컴퓨팅 시스템의 데이터 노드에 의해 실행되고, 상기 분산 컴퓨팅 시스템은 적어도 하나의 데이터 노드를 포함하고, 각 데이터 노드는 중앙 프로세서 및 지능형 저장 장치를 포함하고, 상기 지능형 저장 장치는 제어기 프로세서와 메모리를 포함하는 컴퓨팅 업무 메모리, 및 상기 컴퓨팅 업무에 연관된 데이터의 용량 혹은 적어도 일부에 근거로 하여, 상기 데이터 노드의 상기 중앙 프로세서 혹은 상기 데이터 노드의 지능형 저장 장치 중 어느 하나에 의해 실행되는 상기 컴퓨팅 업무를 할당하도록 구현되는 프로세서를 포함한다.
본 발명의 실시 예에 따른 스케쥴러 컴퓨팅 장치의 방법은: 복수의 동작들을 갖는 컴퓨팅 업무를 입력 받는 단계; 상기 컴퓨팅 업무를 데이터 노드에 할당하고, 상기 데이터 노드는 중앙 프로세서 및 지능형 저장 장치를 포함하고, 상기 지능형 저장 장치는 제어기 프로세서와 메모리를 포함하는 단계; 상기 컴퓨팅 업무를 적어도 제 1 체인 동작들과 제 2 체인 동작들로 분할하는 단계; 상기 제 1 체인 동작들을 상기 데이터 노드의 상기 지능형 저장 장치에 할당하는 단계; 및 상기 제 2 체인 동작들을 상기 데이터 노드의 상기 중앙 프로세서에 할당하는 단계를 포함한다.
본 발명의 실시 예에 따른 분산 컴퓨팅 시스템의 데이터 노드는: 지능형 저장 장치에 의해 저장된 데이터에 근거로 하여 제 1 동작들 셋 중에서 적어도 하나를 실행하도록 구현되는 중앙 프로세서를 포함하고, 상기 지능형 저장 장치는: 반영구 방법으로 데이터를 저장하도록 구현된 메모리, 및 상기 지능형 저장 장치에 저장된 데이터를 근거로 하여 제 2 동작들 셋 중에서 적어도 하나를 실행하도록 구현되는 제어기 프로세서를 포함하고; 및 스케쥴러 컴퓨팅 장치로부터 복수의 동작들을 입력 받도록 구현되는 네트워크 인터페이스를 포함하고, 상기 데이터 노드는, 상기 컴퓨팅 업무를 적어도 상기 제 1 동작들 셋과 상기 제 2 동작들 셋으로 분할하고, 상기 제 1 동작들 셋을 실행을 위한 상기 중앙 프로세서에 할당하고, 및 상기 제 2 동작들 셋을 실행을 위한 상기 지능형 저장 장치에 할당한다.
상술한 바와 같이 본 발명에 따른 분산 컴퓨팅 시스템 및 그것의 스케쥴러 장치는, 데이터 노드뿐 아니라, 데이터 노드 내의 특수한 구성 요소들에도 컴퓨팅 업무들을 할당함으로써, 데이터의 이동을 효율적으로 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템(100)을 예시적으로 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 시스템(200)의 예시적인 실시 예의 블록도이다.
도 3은 본 발명의 실시 예 따른 분류 시스템의 예시적인 실시 예의 테이블(300)이다.
도 4는 본 발명의 실시 예에 따른 동작들의 체인의 예시적인 실시 예의 블록도(400)이다.
도 5는 본 발명의 실시 예에 따른 방법(500)의 예시적인 실시 예의 흐름도이다.
도 6은 분할 과정의 가능한 실시 예를 좀 더 자세하게 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 정보 처리 시스템(700)의 블록 다이어그램을 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다.
상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 혹은 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다. 본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
아래에서는, 예시적인 실시 예들이 도면들을 근거로 하여 상세하게 설명될 것이다.
도 1은 본 발명의 실시 예에 따른 시스템(100)을 예시적으로 보여주는 블록도이다. 다양한 실시 예들에서, 시스템(100)은 분산 컴퓨팅 시스템을 포함하고 및 분산 어플리케이션을 실행할 수 있다. 이는 본 발명을 제한하지 않는 한 가지 실시 예로 이해되어야 할 것이다.
도시된 실시 예에서, 시스템(100)은 복수의 데이터 노드들(108), 및 스케쥴러 컴퓨팅 장치 혹은 스케쥴러(104)를 포함할 수 있다. 이러한 실시 예에서, 복수의 데이터 노드들(108)은 차례로 개별적인 데이터 노드들(예, 데이터 노드들 (106, 106b, 및 106c, 등)을 포함할 수 있다. 상술 된 바와 같이, 분산 컴퓨팅 시스템의 다양한 실시 예들에 있어서, 스케쥴러(104)는 분산 컴퓨팅 시스템에 의해 수행되거나 실행되는 적어도 하나의 컴퓨팅 업무를 포함하거나 가질 수 있다.
다양한 실시 예들에 있어서, 스케쥴러(104)는 컴퓨팅 장치 혹은 그것들의 가장 머신 혹은 가상 컴퓨팅 장치를 포함할 수 있다. 여기서 컴퓨팅 장치는 예를 들어, 랩탑, 데스크탑, 워크스테이션, 퍼스널 디지털 어시스턴트, 스마트폰, 태블릿 및 다른 적합한 컴퓨터들일 수 있다. 다양한 실시 예들에 있어서, 스케쥴러(104)는 사용자(미도시)에 의해 사용될 수 없다. 다양한 실시 예들에 있어서, 스케쥴러(104)는, 소프트웨어, 펌웨어, 혹은 그것들의 조합의 머신 실행가능 인스트럭션들 혹은 조각들을 실행하도록 구현되는 프로세서를 포함할 수 있다. 다른 실시 예들에 있어서, 스케쥴러(104)는 임시적으로, 영구적으로, 반영구적으로, 혹은 그것들의 조합으로 데이터 조각을 저장하도록 구현된 메모리(184)를 포함할 수 있다. 추가적으로, 메모리(184)는 휘발성 메모리, 비휘발성 메모리, 혹은 그것들의 조합을 포함할 수 있다. 다양한 실시 예들에 있어서, 스케쥴러(104)는 반영구적 혹은 실질적으로 영구적이 형태로 데이터를 저장하도록 구현된 저장 장치(185)를 포함할 수 있다. 다양한 실시 예들에 있어서, 저장 장치(185)는 메모리(184)에 의해 포함될 수 있다.
다양한 실시 예들에 있어서, 스케쥴러(104)는, 스케쥴러(104)의 일부 구성으로 구현되고, 다양한 프로토콜들을 사용하는 통신 네트워크를 통하여 통신하는 적어도 하나의 네트워크 인터페이스(186)를 포함할 수 있다. Wi-Fi 프로토콜의 예들은, 제한되지 않으나, Institute of Electrical and Electronics Engineers (IEEE) 802.11g, IEEE 802.11n, etc. Examples of a cellular protocol may include, but are not limited to: IEEE 802.16m (a.k.a. Wireless-MAN (Metropolitan Area Network) Advanced), Long Term Evolution (LTE) Advanced), Enhanced Data rates for GSM (Global System for Mobile Communications) Evolution (EDGE), Evolved High-Speed Packet Access (HSPA+) 등을 포함할 수 있다. 와이어드 프로토콜의 예들은 제한되지 않으나, IEEE 802.3 (a.k.a. Ethernet), Fiber Channel, Power Line communication (e.g., HomePlug, IEEE 1901, etc.) 등을 포함할 수 있다. 상술 한 것은, 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
다양한 실시 예들에 있어서, 스케쥴러(104)는 저겅도 하나의 하드웨어 구성 요소(184)을 포함할 수 있다. 이러한 구성 요소는, 디스플레이 혹은 모니터, 키보드, 마우스, 카메라, 핑거프린트 리더, 비디오 프로세서 등일 수 있다. 상술한 것은, 본 발명을 제한지 않는, 단지 몇 가지 실시 예들이라고 이해되어야 할 것이다.
다양한 실시 예들에 있어서, 데이터 노드들(108) 각각은 스케쥴러(104)에 참조된 그것들(예, 네트워크 인터페이스(186), 나머지 구성 요소들(183), 등)과 유사한 하드웨어 구성 요소들을 포함할 수 있다. 이러한 실시 예에서, 데이터 노드들(108)은 아래에서 설명된 구성 요소들(예, 지능형 저장 장치(ISM, intelligent storage medium(116), 중앙 프로세서(112), 등)을 더 포함하거나 선택적으로 포함할 수 있다. 상술 한 것은, 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
데이터 노드들(108)은 컴퓨팅 업무들(172)을 실행하도록 고용된 컴퓨팅 장치를 포함할 수 있다. 스케쥴러(104)는 실행을 위한 다양한 데이터 노드들(108)에 컴퓨팅 업무들(172)을 할당하도록 구현될 수 있다.
이러한 실시 예에서, 각 컴퓨팅 업무(172)는 데이터(예, 데이터(182i), 등)의 각각의 조각에 연관될 수 있다. 데이터 조각은 단하 하나의(혹은 복수의) 데이터 노드(예, 데이터 노드(106), 등)에 저장될 수 있다. 스케쥴러(104)는 데이터 노드들(108)에 의해 저장되는 데이터 조각들을 지시하는 지시(170)를 유지할 수 있다. 이러한 실시 예에서, 컴퓨팅 업무(172)가 할당될 데이터 노드를 결정할 때, 지시(170)가 점검되고, 데이터 노드(들)이 연관된 데이터를 저장하는 지가 결정될 수 있다.
예를 들어, 만일, 제 1 컴퓨팅 업무(172)가 데이터(182i)에 연관된다면, 데이터(182i)가 데이터 노드(106b) 내에 발견되지 않는 것처럼, 그것은 데이터 노드(106b)에 할당되지 않을 것이다. 대신에, 데이터 노드(106)는 데이터(182i)를 저장하는 것처럼, 컴퓨팅 업무(172)는 데이터 노드(106)에 할당될 수 있다. 마찬가지로, 데이터(184i)에 연관된 제 2 컴퓨팅 업무(172)는 데이터 노드(106, 데이터(184i)가 저장되지 않음)에 할당되지 않고, 데이터 노드(106b, 데이터 (184i)가 저장됨)에 할당될 수 있다. 이러한 실시 예에서, 스케쥴러(104)는 데이터 노드들 사이의 데이터를 이동하도록(예, 데이터(184i)를 데이터 노드(106b)로부터 데이터 노드(106)으로 이동) 컴퓨팅 업무(172)를 발생할 수 있다.
전통적으로, 데이터 노드(예, 데이터 노드(106c), 등)는 중앙 처리 유닛(CPU) 혹은 중앙 프로세서(112), 메모리(114)(예, RAM(random access memory), 등), 및 메모리(143, 마그네틱 메모리, 솔리드 스테이트 메모리, 등)을 차례로 포함하는 저장 장치(118)를 포함하였다. 전통적으로, 데이터 노드의 업무를 실행하는 유일한 프로세서는 중앙 프로세서(112)이다. 그러므로, 데이터는 중앙 프로세서(112)가 그것을 억세스할 수 있도록 데이터 노드(106c)를 통하여 이동되어야 한다. 이는 3개의 주요 구성 요소들(저장 장치(118), 메모리(114), 및 중앙 프로세서(112)의 각각 에/으로부터 데이터를 이동하는 것과 관련된다. 데이터의 각각의 이동은 추가적인 전력 소비를 초래하고 그리고 일정한 시간을 필요로 한다. 추가적으로, 중앙 프로세서(112) 및 메모리(114)(예, 싸이클들, 저장 공간을 계산하는 것)에 의해 제공되는 시스템 리소스들이 제한되는 것과 같이, 데이터의 이동은 이러한 시스템 리소스들을 역시 점유할 것이다.
도시된 실시 예에서, 복수의 데이터 노드들(108)은 데이터의 이동이 감소되고, 이에 따라 이러한 이동에 따른 오버헤드가 줄어들 수 있다.
도시된 실시 예에서, 데이터 노드들(예, 데이터 노드(106), 등)은, 중앙 처리 유닛(CPU) 혹은 중앙 프로세서(112), 메모리(114, 예, RAM, 등)을 포함하고, 뿐만아니라, 지능형 저장 장치(ISM, 116)을 포함할 수 있다. 이러한 실시 예에서, 지능형 저장 장치(116)는 제어기 프로세서(142) 및 메모리(143, 마그네틱 메모리, 솔리드 스테이트 메모리, 등)을 포함할 수 있다. 이런 맥락에서, 외부적으로 억세스하거나 혹은 할당하는 제어기 프로세서(132)가 없는 전통적인 저장 장치는 "단순 저장 장치"(SSM(118), simple storage medium)라고 부른다.
이러한 실시 예에서, 데이터 노드(106)는 두 개(혹은 그 이상)의 프로세서들을 포함할 수 있다. 도시된 실시 예에서, 시스템(100)은 데이터 노드 뿐 아니라, 데이터 노드 내의 특수한 구성 요소들에도 컴퓨팅 업무들(172)을 할당할 수 있도록 구현될 수 있다.
이러한 실시 예에서, 이는 데이터(예, 데이터(184i), 등)의 이동이 줄어들고 효과적으로 제거될 수 있다. 예를 들어, 제어기 프로세서(142)는 컴퓨팅 업무들(172)을 실행하도록 할당된다면, 데이터는 아래에 설명된 바와 같이, ISM(116) 외부로 이동할 필요가 없을 것이다.
첫번째 예로서, 도시된 실시 예에서, 전통적인 사용에 유사한 경우를 보이는데, 스케쥴러(104)는 데이터 노드(106) 뿐만 아니라, 중앙 프로세서(112)에 컴퓨팅 업무(172)를 할당할 수 있다. 이러한 실시 예에서, 데이터(182i)의 이동은 전통적인 경우에 유사하게 발생할 수 있다. 특별히, 데이터(182i)는 영구적으로 혹은 반영구적으로 지능형 저장 장치(ISM, 116)에 저장 될 수 있다. 컴퓨팅 업무(172)가 실행될 때, 이 데이터(182i)는 ISM(116)으로부터 메모리(114)로 복사될 수 있다. 중앙 프로세서(112)는 그 후에 메모리(114)로부터 데이터(182i)을 억세스할 수 있다. 컴퓨팅 업무(172)의 결과들 혹은 출력 데이터(182o)는 메모리(114) 내부에 저장될 수 있다. 결론적으로(예, 컴퓨팅 업무의 끝에서, 등), 출력 데이터(182o)는 영구적으로, 혹은 반영구적으로 ISM(116)의 내부에 저장될 수 있다.
전통적인 사용에서 실질적으로 벗어난 두 번째 실시 예로서, 도시된 실시 예에서, 스케쥴러(104)는 데이터 노드(106b)뿐만 아니라, 지능형 저장 장치(ISM, 116)에 컴퓨팅 업무(172)를 할당할 수 있다. 이러한 실시 예에서, 데이터(184i)의 이동은, 상술 된 첫번째 실시 예 혹은 전통적인 경우와 비교하여 크게 감소될 수 있다. 이러한 실시 예에서, 데이터(184i)는 영구적으로, 혹은 반영구적으로 지능형 저장 장치(116)의 메모리(143)에 저장될 수 있다. 컴퓨팅 업무(172)가 실행될 때, 이 데이터(184i)는 제어기 프로세서(142)에 의해 메모리(143)으로부터 복사되거나 억세스 될 수 있다. 이러한 실시 예에서, ISM(116)과 메모리(114) 사이의 통신 버스 혹은 채널(미도시)은 피할 수 있고, 다라서 이전에 설명된 시스템 리소스들의 소비를 줄일 수 있다. 컴퓨팅 업무(172)의 결과들 혹은 출력 데이터(184o)는 영구적으로 혹은 반영구적으로 메모리(143) 내부에 저장될 수 있다(메모리(114) 및 ISM(116) 사이의 데이터를 이동하기 위한 시스템 리소스들의 사용을 피하면서).
아래에 설명될 도 2, 도 3, 및 도 3을 참조하여, 스케쥴러(104)는 데이터 노드(예, 데이터 노드(106), 등)에 대한 데이터를 이동할 때 사용되는 시스템 리소스들을 최소화시키는 것과 전적으로 관련되지 않을 수도 있다. 예를 들어, 모든 컴퓨터 업무들(172)이 제어기 프로세서(142)에 의해 수행될 수 있다. 전통적으로, 제어기 프로세서(142)의 기능은 컴퓨팅 업무들(172)의 성능에 포함되지 않을 수 있다. 반면에, 제어기 프로세서(142)의 2 개의 주요 기능들은, (1) ISM(116)과 ISM(116)을 포함하는 임의의 장치들(예, 데이터 노드(106), 등)의 나머지 사이의 통신을 관리하고, (2) 메모리(143) 내의 데이터 저장을 관리할 수 있다. 도시된 실시 예에서, ISM(116)의 제어기 프로세서(142)는 이러한 전통적인 기능들을 수행하도록 구현되고, 뿐만 아니라, 컴퓨팅 업무들(172)을 수행하도록 구현될 수 있다. 예를 들어, SSD(solid state drive)를 포함하는 ISM(116)는 관리 기능들을 수행하도록 구현되는 제어기 프로세서(142)를 포함할 수 있다. 여기서 관리 기능들은, 예를 들어, ECC(error correcting code) 계산, 웨어 레벨링 관리, 배드 블록 매핑, 리드 스크러빙(read scrubbing) 및 리드 디스터브(read disturb) 관리, 읽기 및 쓰기 캐싱, 가비지 컬렉션, 및/혹 암호화, 등이다.
일부 실시 예들에 있어서, 제어기 프로세서(142)는 제한된 셋, 더 일반적으로, 동작들 혹은 인스트럭션들의 제 1 셋 만을 수행할 수 있다. 이러한 실시 예에서, 컴퓨팅 업무들(172)의 상위 레벨 동작들을 어떻게 수행할 지 혹은 컴퓨팅 업무들(172)의 상위 레벨 동작들을 제어기 프로세서(142)에서 이해할 수 있는 하위 레벨 동작들로 어떻게 변환할 지를 설명하는 인스트럭션들 혹은 동작 코드들(opcodes)은 펌웨어(160) 혹은 제어기 프로세서(1420)의 메모리에 저장될 수 있다. 일부 실시 예들에 있어서, 이러한 펌웨어(160)는 제어기 프로세서(1420)에 새로운 기능들(예, 수행될 새로운 동작들, 등)을 조절하거나 추가하도록 자주 업데이트되거나 편집될 수 있다. 다른 실시 예에서, 동작들 혹은 동작들의 일부는, 고정 배선 될 수 있거나, 제어기 프로세서(142)의 구조의 물리적 부분일 수 있다. 상술한 것은 단지 본 발명을 제한하지 않는 예시적인 실시 예들이라고 이해되어야 할 것이다.
상기 제어기 프로세서 (142)의 설정 제어는 모든 가능한 동작들의 서브 세트 인 실시 예 104은 ISM (116)에 동작 (172)을 할당 할 수 있는 능력이 제한 될 수 있는 스케줄러 (중앙 처리 장치 (112) 반대) 다양한 실시 예에서, 제어기 프로세서 (142)에 의해 지원되는 동작에 의해, 다른 데이터 노드 (예를 들어, 데이터 노드 (106) 및 데이터 노드 (106B), 등)은 다른 동작들을 지원할 수 있다. 예를 들어, (예를 들면, ISM 데이터 노드 (106)의 116)은 다른 제조사에 의해 제조 될 수 있는 제 1 ISM은, (제 2 데이터 노드가 아닌 등의 펌웨어 (160)의 다른 버전을 가지고 예를 들어, 데이터의 ISM 116 노드 (106B)). 이와 같이, 두 개의 데이터 노드는 다른 기능들 또는 동작들을 지원할 수 있다. 일부 실시 예에서, 스케줄러 (104)는 첫 번째 데이터 노드의 ISM (116)에 동작 (172)을 할당 할 수 있지만, (인해 상이한 능력에) 제 2 데이터 노드의 중앙 처리 장치 (112)에 동일하거나 유사한 업무 (172)를 할당한다. 상술한 것은 본 발명을 제한하지 않는 실시 예라고 이해되어야 할 것이다.
이러한 실시 예에서, ISM(116)에 의해 제공되는 동작들을 변화시키거나 ISM에 의해 수행되는 동작 방법을 변경하도록 펌웨어가 업그레이드 되거나 변경될 수 있다. 다른 실시 예에서, 펌웨어(160) 혹은 동작들을 수행하는 다른 구조는, 전체적으로 혹은 부분적으로 고정되거나 변경되지 않을 수 있다. 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
추가적으로, 다양한 실시 예들에 있어서, 복수의 데이터 노드들(108)은 ISMs(116)와 SSMs(118)의 혼합을 포함할 수 있다. 일부 실시 예들에 있어서, 각 셋 혹은 그룹은 서로 다른 특성들 및/혹 기능들을 포함하거나 이런 것들에 의해 분할될 수 있다. 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
다른 실시 예에서, 중앙 프로세서(112)는 제어기 프로세서(142)보다 더 강력할 수 있다. 이러한 실시 예에서, 중앙 프로세서(112)에 의한 컴퓨팅 업무(172)의 성능은, 제어기 프로세서(142)를 통한 성능보다 더 효율적일 수 있다. 일부 실시 예들에 있어서, 이러한 효율성의 장점들은, 중앙 프로세서 (112)에 의해 억세스 가능한 곳으로 데이터를 이동시킴으로써 발생하는 시스템 리소스들의 사용량 증가를 능가 할 수 있다. 이러한 실시 예에서, 프로세서들(112 혹은 142)에 컴퓨팅 업무들(172)을 할당할 때, 스케줄러(104)는 시스템 (100)의 전체 효율을 고려하도록 구현될 수 있다.
또 다른 실시 예에서, 컴퓨팅 업무(172)는 작은 일련의 동작들 혹은 체인을 포함할 수 있다. 이러한 실시 예에서, 스케줄러(104)는 큰 컴퓨팅 업무(172)를 2개 이상의 작은 컴퓨팅 업무들(172)로 쪼개거나 혹은 나눌 수 있다. 다양한 실시 예들에 있어서, 스케쥴러(104)는 싱글 프로세서(예, 중앙 프로세서(112) 혹은 제어기 프로세서(142) 중 어느 하나) 에 의해 수행되는 동작들만 포함하는 작은 컴퓨팅 업무들(172)을 발생할 수 있다. 이러한 실시 예에서, 스케줄러 (104)는 시스템(100)의 효율을 증가하는 방식으로 컴퓨팅 동작들(172)을 발생하도록 구현될 수 있다.
예를 들어, 일 실시 예에서, 큰 컴퓨팅 업무(172)는 중앙 프로세서(112)에 의해 부분적으로 수행 될 필요가 있을 수 있지만, 또한, 제어기 프로세서(142)에 의해 수행 될 수 있는 제 2 부분을 포함 할 수 있다. 이러한 실시 예에 있어서, 스케줄러(104)는 제 1 부분 혹은 작은 컴퓨팅 업무는 중앙 프로세서(112)에 의해 수행 되고, 제 2 부분 혹은 작은 컴퓨팅 업무는 제어기 프로세서(142)에 의해 수행되도록 큰 컴퓨팅 업무를 쪼개거나 나눌 수 있다.
일 실시 예에서, 스케줄러(104)는 ISM(116)으로부터 메모리(114)(혹은 다른 구성 요소)에 이동되거나 복사 될 데이터의 양에 기초하여 큰 컴퓨팅 업무(172)를 분할하는 브레이크 포인트 또는 동작을 선택할 수 있다. 다양한 실시 예에서, 두 개의 구성 요소들 사이에 복사된 데이터의 양을 줄이는 것이 유리할 수 있다. 다른 실시 예에서, 계산의 효율성은, 예를 들어, 문제가 될 수 있고, 그들이 원하는 것보다 더 많은 데이터가 발생하더라도 특정한 동작들을 실행하는 중앙 처리 장치 (112)에 더 효율적일 수 있다. 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
또 다른 실시 예에서, 큰 컴퓨팅 업무(172)는 두 개 이상의 세트들 또는 동작들의 체인들로 분리 되거나 분할 될 수 있다. 예를 들어, 제 1 작은 컴퓨팅 업무 혹은 동작들의 체인은 ISM(116)에 할당되거나 수행될 수 있다. 그 후에, 결정된 지점 혹은 동작에서, 제 2 작은 컴퓨팅 업무 또는 동작들의 체인은, 중앙 프로세서(112)에 의해 할당되거나 수행될 수 있다(예를 들어, 복잡한 동작이 검출되었을 경우에, 복사 된 데이터의 양 등이 작다). 마지막으로, 제 3 작은 컴퓨팅 업무 혹은 동작들의 체인은 ISM(116)에 의해 할당되거나 수행될 수 있고, 그리고 큰 컴퓨팅 업무(172)는 ISM(116) 내에 저장된 출력 데이터로 마무리 지을 수 있다. 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
일부 실시 예에서, 스케줄러(104)는 컴퓨팅 업무(172) 혹은 동작들의 체인의 출력 데이터가 저장 될 위치를 지시하거나 결정하도록 구현될 수 있다. 상술 된 3개의 작은 컴퓨팅 업무 예들로 돌아가서, 스케줄러(104)는 제 1 작은 컴퓨팅 업무의 출력 데이터(작은 제 2 컴퓨팅 업무에 대한 입력 데이터로서, 예)는 메모리 (114)에 저장 된다고 지시 할 수 있다. 유사하게, 스케줄러(104)는 제 3 작은 컴퓨밍 업무의 출력 데이터가 ISM(116)의 메모리(143)에 저장된다고 지시할 수 있다. 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
일 실시 예에서, 상술 된 바와 같이, 스케줄러(104)는, 출력 데이터가 전혀 다른 데이터 노드에 저장 될 수 있다고 지시하도록 구현 될 수 있다. 예를 들어, 스케줄러(104)는 출력 데이터(예, 데이터 182o 등)가, ISM(116)의 메모리(143)이 아닌 다른 데이터 노드(예를 들어, 데이터 노드 (106b), 등)에 저장 될 수 있다고 지시할 수 있다. 이러한 실시 예에서, 스케줄러(104)는, 특수한 데이터 노드 혹은 프로세서에 컴퓨팅 업무들(172)의 스케쥴링뿐 아니라, 전체 데이터 노드들(108)을 관리할 수 있다. 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
또 다른 실시 예에서, 시스템(100)은, 스케줄러 컴퓨팅 장치(104)가 데이터 노드(예를 들어, 데이터 노드 (106) 등), 그리고, 데이터 노드 자체에 복수의 동작 들 혹은 업무들(172)을 할당하고, 데이터 노드 자체가 큰 컴퓨팅 업무(172)를 두 개 이상의 세트들 혹은 동작들의 체인들로 분할하도록 구현될 수 있다. 상술한 바와 같이, 제 1 작은 컴퓨팅 업무 혹은 동작들의 체인은 데이터 노드의 ISM(116)에 의해 수행되도록 데이터 노드(106)에 할당될 수 있다. 그 후, 제 2 작은 컴퓨팅 업무 혹은 동작들의 체인은 데이터 노드의 중앙 프로세서(112)에 의해 수행되도록 데이터 노드에 할당될 수 있다. 큰 컴퓨팅 업무(172)는 추가적으로 상술 된 바와 같이, 제 3 혹은 추가적인 작은 컴퓨팅 업무들로 분할될 수 있다. 이 실시 예에서, 데이터 노드가 스케쥴러 컴퓨팅 장치(104)를 대신하여 분할 및 할당을 수행할 수 있다는 것은 제외될 것이다. 상술한 것은 본 발명을 제한하지 않는 예시적인 실시 예이다고 이해되어야 할 것이다.
본 발명을 명확하게 하기 위하여, 스케줄러 컴퓨팅 장치(104)가 큰 컴퓨팅 업무(172)를 그것의 작은 컴퓨팅 업무들로 분할 및 그것들로 할당하는 실시 예들이 설명될 것이다. 하지만, 이는 본 발명을 제한하지 않는 구현 가능한 실시 예이다고 이해되어야 할 것이다.
도 2는 본 발명의 실시 예에 따른 시스템(200)의 예시적인 실시 예의 블록도이다. 다양한 실시 예에서, 시스템(200)은, CPU 혹은 중앙 프로세서(112), 메모리 (114) 및 지능형 저장 장치(ISM, 114)를 포함하는 데이터 노드(106)를 보여준다. ISM(116)는 상술 된 제어기 프로세서(142) 및 메모리(143)를 포함할 수 있다.
도시된 실시 예에서, 큰 컴퓨팅 업무 혹은 동작들의 체인은 작은 컴퓨팅 업무들 혹은 동작들의 체인들(예, 오프-로디드(off-loaded) 동작들(202), 호스트 계산 동작들(204), 등)로 분할될 수 있고, 그리고 그 후에 중앙 프로세서(112) 혹은 ISM(116) 중 어느 하나에 수행되도록 할당될 수 있다. 다양한 실시 예들에서, 제한되지 하고 예시적인 목적을 위해 도시된 2개에 제한되지 않고, 2 개 이상의 작은 컴퓨팅 업무들이 존재할 수 있다.
도시된 실시 예에서, 스케줄러 컴퓨팅 장치는 동작들의 제 1 세트 혹은 체인이 ISM(116)에 의해 수행될 수 있음을 감지할 수 있다. 이런 맥락에서, 이러한 동작들은, 전통적으로 그것들을 수행하는 중앙 프로세서(112)로부터 오프 로디드 된 것으로 간주 될 수 있다. 이러한 동작들은 오프-로디드 동작들(202)로 포함될 수 있거나, ISM(116)에 할당 될 수 있다.
이러한 실시 예에서, 오프-로디드 동작들(202)은 ISM(116)의 메모리(143)에 저장된 입력 데이터(282i)에 연관 될 수 있다. 이 입력 데이터(282i)는 제어기 프로세서(142)에 의해 억세스 될 수 있다. 제어기 프로세서(142)는 보조 없이 오프-로디드 동작들(202)을 실행하거나 수행할 수 있고, 혹은 일부 실시 예들에 있어서는, 제어기 프로세서(1120의 지식 없이 오프-로디드 동작들(202)을 실행하거나 수행할 수 있다. 이러한 실시 예에서, 중앙 프로세서(122)는 서로 다른 데이터를 억세스할 수 있는 동작들(미도시)의 서로 다른 세트를 실행하기 바쁠 수 있고/혹은 서로 다른 컴퓨팅 업무에 연관될 수 있다. 상술한 것은 본 발명을 제한하지 않는 한 가지 실시 예이다고 이해되어야 할 것이다. 오프-로디드 동작들(202)의 실행은 출력 데이터(282o)로 결론지을 수 있다.
다양한 실시 예들에서, 오프-로디드 동작들(202)의 실행의 끝에서, 출력 데이터(282o)는 ISM(116)의 메모리(143) 혹은 메모리(114) 중 어느 하나에 저장될 수 있다. 일 실시 예에서, 만일 동작들의 다음 체인 혹은 데이터(282o)를 억세스하는 컴퓨팅 업무가 중앙 프로세서(112)에 할당된다면, 데이터(282o)는 ISM(116)으로부터 메모리(114)로 복사될 수 있다(예, 도 1의 데이터(182i)처럼). 다른 실시 예에서, 동작들의 다음 체인 혹은 데이터(282o)를 억세스하는 컴퓨팅 업무가 ISM(116)에 할당되거나, 혹은 만일 오프-로디드 동작들(202)가 큰 컴퓨팅 업무의 마지막 동작이면, 데이터(282o)가 ISM(116)의 메모리(143)에 국부적으로 저장되는 것이 더 효율적이고 편리할 수 있다. 상술한 것은, 본 발명을 제한하지 않는 몇 가지 실시 예이다고 이해되어야 할 것이다.
예시 된 실시 예에서, 스케줄러는 연산의 다음 쇄상 또는 컴퓨팅 업무가 도시 된 실시 예에서, 스케줄러는 지시 또는 테이블시 할 수 있다, 따라서 중앙 처리 장치 (112)에 할당 한 것을 인식 될 수 있다는의 최종 출력 오프 로딩 된 동작 (202)는 데이터 노드 (106)의 메모리 (114)에 저장하고,하지 ISM의 메모리 (143)는 그것은 위에서 단지 하나의 예시임을 이해에 개시된 발명을 제한하지 않다.
도시된 실시 예에서, 동작들의 다음 셋 혹은 체인은 중앙 프로세서(112)에 의해 수행되어야 할 동작들을 포함할 수 있다. 이러한 실시 예에서, 이러한 동작들은 "호스트 계산 동작들(204)"으로 언급될 수 있고, 호스트 혹은 중앙 프로세서(112)에 할당될 수 있다. 다양한 실시 예들에서, 중앙 프로세서(112)는 메모리(114)(예, RAM, 등)으로부터 입력 데이터(284i)를 읽을 수 있다. 중앙 프로세서(112)는, 데이터 조작들이 이 호스트 계산 동작들에 의해 수행하는 것을 결정될때마다 동작들(204)을 실행할 수 있다. 일부 실시 예들에서, 중간 결과값들 혹은 데이터는 중앙 프로세서(112)의 내부 메모리들(예, 레지스터들, 캐쉬들, 등) 및/혹 메모리(114)에 저장될 수 있다.
일 실시 예에서, 호스트 계산 동작들(204)의 끝에서, 마지막 출력 데이터(284o)는 메모리(114)에 저장될 수 있다. 상술 한 바와 같이, 다양한 실시 예들에서, 스케쥴러는 마지막 출력 데이터(284o)가 메모리 (114) 혹은 ISM(116)에 저장된다고 지시할 수 있다. 다른 실시 예에서, 스케쥴러는 단지 오프-로디드 동작들(202)가 관련될 때 마지막 저장 위치를 지시하도록 구현될 수 있다.
도시된 실시 예에서, 출력 데이터(284o)는 메모리(114)에 저장될 수 있다. 이러한 실시 예에서, 마지막 동작(예, 마지막 저장(206), 등)는 출력 데이터(284o)를 메모리(114)로부터 ISM(116)으로 이동할 수 있다. 상술한 것은 본 발명을 제한하지 않는 하나의 예시적인 실시 예이다고 이해되어야 할 것이다.
도 3은 본 발명의 실시 예 따른 분류 시스템의 예시적인 실시 예의 테이블(300)이다. 도시된 실시 예에서, 테이블(300)은, 예시적인 동작들, 서브 루틴들, 또는 다수의 기능들을 나타낸다. 테이블(300)은 본 발명에 따라 채택 될 수 있는 두 가지 예를 분류 혹은 분류 체계를 보여준다. 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
도시된 실시 예에서, 그룹(312)은 입력 데이터의 크기가 출력 데이터의 크기보다 클 것으로 예상되는 동작들의 예들을 나타낸다. 이러한 실시 예에서, 통신 버스를 통한 큰 입력 데이터는 데이터 노드의 메인 메모리로 전송하지 않는 것이 바람직 할 수 있다. 대신에, 필요한 경우, 동작이 완료된 후에, 통신 버스트 롱한 작은 출력 데이터가 데이터 노드의 메인 메모리로 전송되는 것이 바람직할 수 있다(예, 만일 호스트 계산 동작이 필요하다면, 등).
테이블(300)은, 입력 데이터의 크기가 출력 데이터의 크기보다 클 것으로 예상되는 그룹에 포함될 수 있는 몇몇 예시적인 동작들을 나열한다. 이러한 예시적인 동작들은, 다양한 실시 예들에서, Fliter(), Sample(), GroupByKey(),ReduceByKey(), PartitionBy(), Count(), Reduce(), 및 LookUp()이다. 상술 한 것은, 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
도시 된 실시 예에서, 그룹(314)는 입력 데이터의 크기가 출력 데이터의 크기와 거의 동일 할 것으로 예상되는 동작들의 예들을 나타낸다. 이러한 실시 예에서, 통신 버스를 통해 입력된 데이터가 데이터 노드의 메인 메모리에 전송하는 것이 바람직하지 않을 수 있다. 일부 실시 예에서, 상대적으로 중성 액션(neutral action)의 바람직성은 동작들이 동작들의 체인 다음에 무엇이 발생하는 지에 의존할 수 있다. 만일, 다음 동작이 중앙 프로세서에 의해 수행된다면, 지금 데이터를 전송하고, 중앙 프로세서(314)에 의해 그룹(314)의 동작을 수행하는 것이 바람직할 수 있다. 반대로, 만일 다음 동작이 제어기 프로세서에 의해 수행된다면, 지능형 저장 장치에서 데이터 및 동작을 유지하는 것이 바람직할 수 있다. 상술한 것은, 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
테이블(300)는 입력 데이터의 크기가 출력 데이터의 크기와 거의 동일할 것으로 예상되는 그룹에 포함된 몇몇 예시적인 동작들의 예들을 나타낸다. 이러한 예시적인 동작들은, 다양한 실시 예들에서, Map(), FlatMap(), MapValues(), Collect(), 및 Sort() 이다. 상술한 것은 본 발명이 제한되지 않은 몇 가지 예시적인 실시 예들이라고 이해되어야 할 것이다.
도시된 실시 예에서, 그룹(316)은 입력 데이터의 크기가 출력 데이터의 크기보다 작을 것으로 예상되는 동작들의 예들을 나타낸다. 이러한 실시 예에서, 신 버스를 통해 큰 입력 데이터를 데이터 노드의 메인 메모리에 전송하는 것이 바람직 할 수 있다. 동작이 완료되기 전에, 실제로, 통신 버스를 통해 작은 입력 데이터를(예를 들어, 호스트 연산 동작 등을 위해 필요한 경우) 데이터 노드의 메인 메모리로 전송하는 것이 바람직 할 수 있다.
테이블(300)는 입력 데이터의 크기가 출력 데이터의 크기와 작다고 예상되는 그룹에 포함된 몇몇 예시적인 동작들의 예들을 나타낸다. 이러한 예시적인 동작들은, 다양한 실시 예들에서, Union(), Join(), Cogroup(), 및 CrossProduct() 이다. 상술한 것은 본 발명이 제한되지 않은 몇 가지 예시적인 실시 예들이라고 이해되어야 할 것이다.
테이블(300)의 제 2 혹은 중간 열은 본 발명에 따른 제 1 카테고리 혹은 분류 방식을 도시한다. 도시된 실시 예에서, 동작들은 2 개의 카테고리 중 하나에 속하는 것으로 표시되거나 식별될 수 있다. 2 개의 카테고리는 오프-로디드 가능 분류 (322) 혹은 호스트 계산 가능 분류(326)이다.
도시된 실시 예에서, 출력 데이터의 크기보다 작거나, 입력 데이터와 동일 할 것으로 예상되는 동작은 오프-로더블 분류(322)로 분류될 수 있고, 데이터 노드의 중앙 프로세서에 의해 수행될 수 있다. 이러한 실시 예에서, 데이터 노드의 메인 메모리와 ISM 사이에 데이터 전송들은 감소될 수 있다. 이러한 데이터 전송은 입력 데이터가 상대적으로 작을 때 발생한다. 일부 실시 예들에서, 그룹(314)의 동작들은 오프-로더블 분류(322)가 아닌 호스트 계산 가능 분류(326)에 일부일 수 있다. 여기서 입출력 데이터 크기들의 차이는 그룹을 위해 무시될 수 있다. 상술한 것은 본 발명이 제한되지 않은 몇 가지 예시적인 실시 예들이라고 이해되어야 할 것이다.
테이블(300)의 제 3 혹은 오른쪽 열은, 본 발명의 실시 예에 다른 제 2 카테고리 혹은 분류 방식을 도시한다. 도시된 실시 예에서, 동작은 3 개의 카테고리 중 하나에 속하는 것으로 표시되거나 식별될 수 있다. 3 개의 카테고리는, 오프-로더블 분류(332), 모호한 분류 (334), 혹은 호스트 계산 가능 분류(336)이다. 상술한 것은 본 발명이 제한되지 않은 몇 가지 예시적인 실시 예들이라고 이해되어야 할 것이다.
도시된 실시 예에서, 출력 데이터의 크기가 입력 데이터보다 작다고 예측되는 동작들은 오프-로더블 분류(332)로 분류하고, ISM의 제어 프로세서에 의해 수행 될 수 있다. 이러한 실시 예에서, 데이터 노드의 메인 메모리와 ISM 사이의 데이터 전송들은, 데이터의 크기가 상대적으로 작고, 혹은 입력 데이터가 전송되는 경우보다 나쁘지 않은 경우에만 발생함으로써, 감소될 수 있다.
도시된 실시 예에서, 출력 데이터의 크기가 입력 데이터 보다 클 것으로 예상되는 동작들은 호스트 계산 가능 분류(336)로 분류될 수 있고, 데이터 노드의 중앙 프로세서에 의해 수행될 수 있다. 이러한 실시 예에서, 데이터 노드의 메인 메모리와 ISM 사이의 데이터 전송은 출력 데이터의 크기가 상대적으로 작은 경우에 발생하는 것으로, 감소 될 수 있다.
도시된 실시 예에서, 출력 데이터의 크기가 입력 데이터의 거의 동일하다고 예상되는 동작들은 모호 분류(334)로 분류될 수 있다. 이러한 실시 예에서, 이러한 종류의 동작들은 중앙 프로세서 혹은 ISM 중 어느 하나에 선험적으로 할당되지 않을 수 있다. 대신에, 입/출력 데이터를 전송하거나 전송하지 않는 것에 의해 비용을 줄이는 것이 적거나 무시할 수 있을 때, 스케쥴러는 이러한 동작들(예, 그룹(314))이 전체 처리에 가장 유리한 것 곳에 할당될 수 있도록 느낄 수 있다.
이러한 실시 예(예, 도 6a, 도 6b)에서, 이러한 모호 동작들(334)의 프로세서 할당은 다음 동작의 분류가 무엇인지에 의존할 수 있다. 예를 들어, 만일 모호동작이 2 개의 오프-로더블 동작들 사이에 개재되어있는 경우, 모호 동작은 중앙 프로세서( 2 데이터 전송 비용을 발생하는)에 할당할 의미가 없을 수 있다. 반대로, 만일 모호 동작이 오프-로더블 동작과 호스트 계산 가능 동작 사이에 개재되어 있는 경우, 모호 동작은 중앙 프로세서(혹은 반대로)에 할당할 의미가 있을 수 있다. 이러한 실시 예에서, 모호 동작의 끝 혹은 시작에서 데이터 전송이 발생할 수 있고, 특히 데이터 전송이 대략 동일한 입/출력의 크기만큼 더 악화될 수 있다. 모호 동작은 중앙 프로세서의 큰 계산 능력으로부터 장점을 가질 것이다. 상술한 것은 본 발명이 제한되지 않은 몇 가지 예시적인 실시 예들이라고 이해되어야 할 것이다.
다양한 실시 예에서, 입력 데이터와 출력 데이터 사이의 상대적인 크기가 서로 다른 크기의 허용치와 문턱값 측정에 기초할 수 있다. 다른 실시 예에서, 입/출력 데이터의 크기는 소정의 평균 또는 히스토리컬 기대값들에 기초할 수 있고, 동적 동작의 특정 인스턴스에 연관된 데이터의 각 동작과 일부를 위해 평가하지 않을 수 있다. 상술한 것은 본 발명이 제한되지 않은 몇 가지 예시적인 실시 예들이라고 이해되어야 할 것이다.
추가적으로, 이러한 그룹들(예, 그룹들(312, 314, 316))은 출력 데이터의 크기와 비교되는 입력 데이터의 크기에 제한되지 않을 동안에, 다양한 실시 예들에서, 나머지 관심사는 그룹 혹은 분류의 일부가 되도록 동작을 야기할 수 있다. 예를 들어, 일부 동작들은 지능형 저장 장치(예, 펌웨어 제공 부족 때문에, 등)에 수행되지 않을 수 있다. 이러한 실시 예에서, 동작은 출력 데이터와 비교되는 입력 데이터의 크기에 상관없이 호스트 계산 가능 동작(예, 그룹(316)내)로 간주될 수 있다. 다른 실시 예에서, 제어기 프로세서는 간단하게 동작을 수행할 때 매우 비효율적일 수 있고, 이는 출력 데이터와 비교되는 입력 데이터의 크기와 상관없이 호스트 계산 가능 동작으로 분류될 수 있다. 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
다양한 실시 예에서, 스케줄러는 오프-로더블 동작(예, 분류들(322, 332))을 중앙 프로세서에 할당할 수 있고, 통상적인 ISM의 제어기 프로세서에 할당하지 않을 수 있다. 예를 들어, 오프-로더블 동작들(예, 그룹(312))는 그것들의 입력 데이터보다 작은 출력 데이터의 양을 초래할 수 있다. 이로써, 오프-로더블 동작이 수행된 후에 데이터 노드의 메모리와 ISM 사이의 데이터 전송이 유리할 수 있다. 이러한 실시 예에서, 만일 이전 호스트 계산 가능 동작(예, 그룹(316))이 출력 데이터의 큰 양을 초래한다면, 이는 오프-로더블 동작을 중앙 프로세서에 할당하는 것이 유리할 수 있다. 이러한 실시 예에서, ISM으로 다시 전송되기 전에(예, 마지막 저장, 추가로 다른 오프-로더블 동작들의 실행을 위하여, 등) 데이터의 양은 감소될 수 있다.
반대로, 스케쥴러는, 호스트 계산 가능 동작(예, 분류들(322, 332)을 통상의 중앙 프로세서(만일 물리적으로 가능한)아 아닌 ISM의 제어기 프로세서로 할당할 수 있다. 예를 들어, 만일 단독(혹은, 매우 작은) 호스트 계산 가능 동작들이 큰 컴퓨팅 업무의 가장 끝부분에 존재하고, 만일 ISM의 제어기 프로세서가 이러한 동작들을 물리적으로 실행할 수 있다면, 시스템은, 컴퓨팅 업무를 완료하고 호스트 계산 가능 동작을 실행함으로써 메모리 데이터 전송에서 ISM를 피하는 것이 유리할 수 있다. 상술 한 것은 본 발명을 제한하지 않는 한 가지 실시 예이다고 이해되어야 할 것이다.
도 4는 본 발명의 실시 예에 따른 동작들의 체인의 예시적인 실시 예의 블록도(400)이다. 도 4는, 스케줄러가 큰 컴퓨팅 업무를 취하고, 큰 컴퓨팅 업무를 포함하는 동작들 각각을 분류하고, 큰 컴퓨팅 업무를 적어도 2개의 작은 컴퓨팅 업무로 분할하고, 그 후에 실행을 위하여 이러한 작은 컴퓨팅 업무들 혹은 동작들의 체인들 각각을 중앙 프로세서 혹은 ISM 중 어느 하나에 할당할 수 있다. 상술 한 것은 본 발명을 제한하지 않는 한 가지 실시 예이다고 이해되어야 할 것이다.
도시된 실시 예에서, 부분(410)은 큰 컴퓨팅 동작을 차례로 실행하는 일련의 동작 혹은 체인을 포함 할 수 있는 방법을 도시한다. 도시된 실시 예에서, 큰 컴퓨팅 업무는, 차례로, 동작 #1(411), 동작 #2(412), 동작#3(413), 동작#4(414), 동작#5(415), 및 동작#6(416)을 포함할 수 있다. 다양한 실시 예에서, 이러한 동작들은 사전 분류의 어떠한 형태 없이 스케쥴러에 의해 입력될 수 있다. 다른 실시 예에서, 이러한 동작은 특별한 프로세서(예, 데이터 노드의 중앙 프로세서, ISM의 제어기 프로세서, 등)에 선호하는 할당으로서 태깅 혹은 마킹할 수 있다. 상술 한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
도 4의 일부(420)는, 스케줄러가 분류 또는 큰 컴퓨팅 업무의 각 동작을 분류할 수도 있음을 보여준다. 도시된 실시 예에서, 동작#1(421) 및 동작#2(422)은 모두 오프-로더들(OL) 동작으로 분류될 수 있고, ISM에 할당될 제 1 작은 컴퓨팅 업무(428)의 일부로 간주 될 수 있다. 하지만, 동작#3(423)은, 모호(E) 동작으로 분류될 수 있으며 (특히 작은 컴퓨팅 업무 및/혹 프로세서에 모두)의 할당은 매우 분명하지 않을 수 있다. 동작#4(424)는 오프-로더블(OL) 동작으로 분류될 수 있으며, ISM에 할당 될 수 있다.
일 실시 예에서(미도시), 스케줄러는 4개의 동작들(421, 422, 423, 424)로부터 3 개의 컴퓨팅 업무들을 발생할 수 있다. 제 1 컴퓨팅 업무는 동작들(421, 422)을 포함하고, ISM에 할당될 수 있다. 제 2 컴퓨팅 업무는 모호 동작(423)을 포함하고, 중앙 프로세서에 할당될 수 있다. 제 3 컴퓨팅 업무는 오프-로더블 동작(424)을 포함하고, ISM에 다시 할당될 수 있다. 그러나 이는, (데이터 및 연산의 실행의 제어 모두)의 피할 수 있는 전송들의 개수를 포함할 수도 있다.
도시된 실시 예에서, 스케줄러는 ISM에 모호 동작(423)을 할당 할 수 있다. 이러한 실시 예에서, 동작들(421, 422, 423, 및 424)는 모두 제 1 컴퓨팅 업무 (428)에 할당될 수 있고, 또한 ISM에 할당 될 수 있다. 이러한 실시 예에서, 전송 수를 감소시킬 수 있으며, 시스템의 효율을 증가시킬 수 있다. 상술 한 것은 본 발명을 제한하지 않는 한 가지 실시 예이다고 이해되어야 할 것이다.
도시된 실시 예에서, 동작(425)은 호스트 계산 가능(HC) 동작으로 분류될 수 있고, 제 1 혹은 오프-로더블 컴퓨팅 업무(428) 내에 적합하지 않을 수 있다. 대신에 제 2 컴퓨팅 업무(429)는 데이터의 중앙 프로세서에 할당되도록 동작들을 위하여 발생될 수 있다. 또한, 동작(426)은 호스트 계산 가능(HC) 동작 및 이러한 제 2 컴퓨팅 업무(429) 내에 놓일 수 있다.
도 4의 일부(430)는 스케줄러가 큰 컴퓨팅 업무의 각 동작을 분류할 수 있고, 이 경우 동작#4(434)는 오프-로더블 동작으로 분류되지 않고, 대신에 호스트 계산 가능 동작으로 분류될 수 있다는 것을 보여준다. 예를 들어, 실시 예에서, 동작#4(434)는 동작#4(434)가 아닌 다른 동작일 수도 있고, 시스템은 단순히 동일한 동작이 다르게 분류되도록 다른 분류 체계를 이용할 수도 있다. 그럼에도 불구하고, 부분(430)은 서로 다른 동작 분류들이 있을 때, 큰 컴퓨팅 업무는 서로 다른 방식으로 분할 될 수 있다. 상술 한 것은 본 발명을 제한하지 않는 한 가지 실시 예이다고 이해되어야 할 것이다.
도 6은 분할 과정의 가능한 실시 예를 좀 더 자세하게 설명하기 위한 도면이다. 도시된 실시 예에서, 동작#1(421) 및 동작#2(422) 모두는 오프-로더블(OL) 동작을 분류할 수 있고, ISM에 할당될 제 1 작은 컴퓨팅 업무(438)의 일부로 간주 될 수 있다. 동작#3(423)은, 그러나, 모호(E) 동작으로 분류될 수 있으며 (특히 작은 컴퓨팅 동작 및/혹은 프로세서에 모두)의 할당은 매우 분명하지 않을 수 있다.
하지만, 상술한 바와 같이, 동작#4(434)는 중앙 프로세서에 할당될 호스트 계산 가능(HC) 동작으로 분류 될 수 있다. 이러한 실시 예에서, 동작들(434, 425, 및 426)는 제 2 컴퓨팅 업무(439) 내에 포함될 수 있고, 데이터 노드의 중앙 프로세서에 할당될 수 있다.
상술 한 바와 같이, 일부 실시 예에서, 시스템은, 도시된 실시 예에서 부분(440)의 작은 컴퓨팅 업무들(448, 449)을 발생할 수 있다. 도시된 실시 예에서, 부분(440)의 그룹핑 규칙은 부분(430)의 그것들로부터 서로 다를 수 있다. 이러한 실시 예에서, 동작#3(423)는 호스트 계산가능 동작#4(434)와 함께 그룹화될 수 있고, 그리고 제 2 컴퓨팅 업무(449)로 할당될 수 있다. 이렇나 실시 예에서, 단지 동작들(421, 422)는 제 1 컴퓨팅 업무(448)에 포함될 수 있다. 상술 한 것은 본 발명을 제한하지 않는 한 가지 실시 예이다고 이해되어야 할 것이다.
또한, 2 개의 작은 컴퓨팅 업무를 도시하지만, 다양한 실시 예에서, 3 이상의 컴퓨팅 업무들이 큰 컴퓨팅 업무에서 발생 될 수 있는 것으로 이해 되어야 할 것이다. 또 다른 실시 예에서, 큰 컴퓨팅 업무의 분할(전체 동작은, 하나의 분류 등, 예)을 하지 않을 수도 있다.
또 다른 실시 예에서, 스케줄러는 동작 체인이 선형적 혹은 순차적인지를 결정하도록 구현 될 수 있다. 일부 실시 예에서, 스케줄러는 효율적으로 컴퓨팅 업무들 혹은 데이터 전송들의 개수를 증가 혹은 감소하도록 리-오더(re-order) 동작들을 구현될 수 있다. 도시된 실시 예에서, 인-오더(in-order) 방식이 도시되지만, 상술된 것은 본 발명을 제한하지 않는 한가지 실시 예이다라고 이해되어야 할 것이다.
도 5는 본 발명의 실시 예에 따른 방법(500)의 예시적인 실시 예의 흐름도이다. 다양한 실시 예들에서, 기술(500)은 도 1, 도 2 혹은 도 7의 그것들과 같은 시스템들에 의해 사용되거나 생산될 수 있다. 추가로, 기술(500)의 일부분들은 도 3 및 도 4의 그것들과 같이 데이터 구조들 혹은 분류들을 발생하도록 사용될 수 있다. 하지만, 상술한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다. 이는 기술(500)에 의해 도시된 순서 혹은 동작의 개수에 본 발명을 제한하지 않는다고 이해되어야 할 것이다.
블록(502)은 상술한 바와 같이, 일 실시 예에서, 컴퓨팅 업무가 입력될 수 있음을 나타낸다. 상술한 바와 같이 다양한 실시 예에서, 컴퓨팅 업무는, 복수의 동작들을 포함할 수 있다. 다양한 실시 예는, 이 블록(502)에 의해 도시된 적어도 하나의 액션은 도 1, 도 2, 혹은 도 7의 장치들 혹은 시스템들에 의해 수행될 수 있다.
블록(504)은 상술한 바와 같이, 일 실시 예에서, 컴퓨팅 업무가, 데이터 노드에 할당될 수 있음을 나타낸다. 상술 한 바와 같이 일부 실시 예에서, 데이터 노드는 중앙 프로세서 및 지능형 저장 장치를 포함 할 수 있다. 상술 한 바와 같이 하나의 이러한 실시 예에서, 지능형 저장 장치는 프로세서와 제어기 메모리를 포함 할 수 있다. 다양한 실시 예는 이 블록(504)에 의해 도시된 적어도 하나의 액션은 도 1, 도 2, 혹은 도 7의 스케쥴러 컴퓨팅 장치(104) 혹은 데이터 노드들(108)에 의해 수행될 수 있다.
블록(506)은 상술 한 바와 같이, 일 실시 예에서, 컴퓨팅 업무는 적어도 동작들의 제 1 체인 및 동작들의 제 2 체인으로 분할 될 수 있다는 것을 나타낸다. 일 실시 예에서, 분할은, 각 동작을 제 1 카테고리 혹은 제 2 카테고리로 분류하는 것을 포함할 수 있다. 이러한 실시 예에서, 제 1 카테고리에 연관된 동작은 입력 데이터의 양보다 작은 출력 데이터의 양을 발생할 수 있다. 이러한 실시 예에서, 제 2 카테고리에 연관된 동작은, 입력 데이터의 양보다 큰 출력 데이터의 양을 발생할 수 있다. 다른 실시 예에서, 분할은 컴퓨팅 업무에서 동작이 어느 하나의 카테고리 동작으로부터 다른 카테고리의 동작으로 변이하는 지를 판별하는 것과, 컴퓨팅 업무를 서로 다른 동작들의 체인들로 분할하는 것을 포함할 수 있다.
상술 한 바와 같이, 또 다른 실시 예에서, 분할은 하나 또는 세 개 이상의 카테고리로 분류하는 동작을 각각 포함 할 수 있다. 이러한 실시 예에서, 첫 번째 카테고리는 데이터 노드의 중앙 처리 장치와 연관될 수 있고, 두 번째 카테고리는 데이터 노드의 지능형 저장 장치에 연관 될 수 있고, 세 번째 카테고리는 중앙 프로세서 모두와 연관 될 수 있다. 이러한 실시 예에서, 분할은, 만일 현재 동작이 제 3 카테고리에 연관되면, 이전 동작 혹은 다음 동작에 연관된 카테고리를 근거로 하여 현재 동작을 데이터 노드의 중앙 프로세서 혹은 데이터 노드의 지능형 저장 장치에 할당하는 것을 포함할 수 있다. 다양한 실시 예에서, 블록(506)에 의해 도시된 적어도 하나의 액션은 도 1, 도 2, 혹은 도 7의 장치들 혹은 시스템들, 혹은 도 1의 스케쥴러 컴퓨팅 장치(104)에 의해 수행될 수 있다.
블록(508)은 상술 한 바와 같이, 일 실시 예에서, 동작들의 제 1 체인이 데이터 노드의 지능형 저장 장치에 할당될 수 있다. 다양한 실시 예들에서, 블록(508)에 의해 도시된 적어도 하나의 액션은, 도 1, 도 2, 혹은 도 7의 장치들 혹은 시스템들, 도 1의 스케쥴러 컴퓨팅 장치(104), 혹은 도 1의 데이터 노드들(108)에서 수행될 수 있다.
블록(510)은 상술 한 바와 같이, 일 실시 예에서, 출력 데이터의 출력 위치는 동작들의 제 1 체인에 의해 발생될 수 있다. 다양한 실시 예들에서, 출력 위치를 할당하는 것은: 만일 다음 동작이 데이터 노드의 중앙 프로세서에 할당되면, 동작들의 제 1 체인의 출력 데이터는 데이터 노드의 중앙 프로세서에 저장된다고 지시하고, 만일 다음 동작이 지능형 저장 장치에 할당되면, 동작들의 제 1 체인의 출력 데이터가 지능형 저장 장치에 저장된다고 지시할 것이다. 다양한 실시 예들에서, 블록(510)에 의해 도시된 적어도 하나의 액션은, 도 1, 도 2, 혹은 도 7의 장치들 혹은 시스템들, 혹은 도 1의 스케쥴러 컴퓨팅 장치(104)에서 수행될 수 있다.
블록(512)은 상술 한 바와 같이, 일 실시 예에서, 동작들의 제 2 체인이 데이터 노드의 중앙 프로세서에 할당될 수 있다. 다양한 실시 예들에서, 다양한 실시 예들에서, 블록(512)에 의해 도시된 적어도 하나의 액션은, 도 1, 도 2, 혹은 도 7의 장치들 혹은 시스템들, 혹은 도 1의 스케쥴러 컴퓨팅 장치(104)에서 수행될 수 있다.
도 6은 본 발명의 실시 예에 따른 방법(600)의 예시적인 실시 예의 흐름도이다. 특히, 방법(600)은 큰 컴퓨팅 업무를 적어도 동작들의 제 1 체인과 동작들의 제 2 체인으로 분할하기 위한 방법에 대한 실시 예를 도시한다. 다양한 실시 예에서, 방법(600)는 도 1, 도 2, 혹은 도 7의 그것들과 같은 시스템들과 함께 사용되거나 혹은 그것들에 의해 발생될 수 있다. 상술된 것은 본 발명을 제한하지 않는 한가지 실시 예이다라고 이해되어야 할 것이다.
블록(602)은, 일 실시 예에서, 동작들의 큰 체인과 분할의 부기값(bookkepping values)이 공지 된 값으로 리셋 될 수도 있다는 것을 나타낸다. 도시된 실시 예에서, 부기값은, 이전 동작, 현재, 혹은 다음 동작을 추적하는 인덱스(i), 새롭거나 현재의 컴퓨팅 업무를 시작하는 곳의 포인트 혹은 동작이 되는 시작점(GroupStart), 및 현재 작은 그룹핑 업무 혹은 이전 동작에 연관된 동작 타입(OpType) 혹은 분류를 포함할 수 있다. 도시된 실시 예에서, 동작 타입(OpType)은 할당된 ISM 혹은 오프-로디드 컴퓨팅 업무, 및 호스트 계산 업무일 수 있다. 상술 한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
현재 동작(Op[i])은 평가 및 분류를 위해 선택될 수 있다. 다양한 실시 예에서, 스케쥴러는, 교대로 분류하는 동작들의 체인을 통해 "워크"(walk)할 수 있다.
블록(604)은, 현재 동작이 모호 동작인 지를 판별하는 것을 도시한다. 좀더 자세하게, 동작 타입(OpType)이 오프-로디드 컴퓨팅 업무도 아니고 호스트 계산 업무도 아닌 것이다. 만일, 현재 동작인 모호 동작이 아니라면, 방법(600)의 흐름도는 다음 평가를 위하여 블록(605)로 이동할 수 있다. 반대로, 만일 현재 동작이 모호 동작이라면, 방법(600)의 흐름도는 블록(610)으로 이동할 수 있다.
블록(610)은, 일 실시예에서, 현재의 동작이 큰 컴퓨팅 동작의 마지막 혹은 최종 동작인 지를 판별하는 것을 도시한다. 만일 아니라면, 블록(620)은, 일 실시 예에서, 스케쥴러가 다음 동작(예, i = i + 1 혹은 i++)으로 이동하고 평가할 수 있다. 만일 현재 동작이 마지막 동작이면, 동작들의 체인은 할당된 ISM 혹은 오프-로디드 컴퓨팅 업무 및 호스트 계산 업무를 분할 될 수 있다.
블록(605)으로 되돌아가서, 블록(605)은 현재 동작이 모호 동작이 아니면, 방법(600)은 컴퓨팅 업무들의 현재 그룹을 위한 동작 타입(OpType)이 설정되었는지를 판별한다(예, 만일 OpType이 "null"이 아니거나, 정의되지 않음). 만일 동작 타입(예, 호스 혹은 오프-로디드)이 할당되지 않으면, 이는 컴퓨팅 업무들의 현재 그룹에 포함된 제 1 동작이기 때문일 수 있다. 만일 현재 동작이 현재 컴퓨팅 업무의 제 1 동작이면, 방법(600)은 블록(608)로 진행할 수 있다. 블록(608)에서, 컴퓨팅 업무들(예, 활성 OpType)의 현재 동작 그룹의 동작 타입이 현재 동작(예, 오프-로디드 컴퓨팅 업무 혹은 호스트 계산 업무)으로 동일한 분류로 설정될 수 있다. 컴퓨팅 업무들의 현재 그룹의 분류 혹은 동작 타입(OpType)이 설정될 때, 방법(600)의 흐름도는 추가적인 평가를 위하여 블록(610)으로 이동할 수 있다.
현재 혹은 활성 동작 타입(OpType)은 이전에 정의된 경우, 방법(600)은 블록(605)로부터 블록(606)으로 대신 진행할 수 있다. 블록(606)은, 일 실시 예에서, 현재 동작과 연관된 분류가 컴퓨팅 업무들의 현재 그룹과 연관된 현재 혹은 활성 동작 타입(OpType)과 비교될 수 있다는 것을 도시한다. 만일 현재 동작(예, Op[i])이 그룹 분류(예, OpType)와 다른 분류라면, 큰 컴퓨팅 업무는 2 개의 컴퓨팅 업무들로 분리 될 수 있다(혹은, 만일 2 개의 업무들이 이미 존재할 때 다른 컴퓨팅 업무). 블록(607)은, 일 실시 예에서, 현재 컴퓨팅 업무의 마지막 동작(GroupStop)이 이전 동작(예, Op[i-1])으로 설정될 수 있고, 그리고 현재 컴퓨팅 업무가 연관된 동작 타입(OpType)(예, 오프-로디드 컴퓨팅 업무, 호스트 계산 업무, 등)에 의해 지시되는 것으로 할당될 수 있다는 것을 나타낸다. 추가적으로, 새로운 그룹 혹은 컴퓨팅 업무는 발생될 수 있다(현재 동작에 GroupStart를 설정함으로써). 이러한 새로운 그룹 혹은 컴퓨팅 업무는 블록(608)에 나타낸 바와 같이, 현재 동작의 분류에 연관될 수 있다.
도시된 실시 예에서, 이전 동작이 모호 동작이라면, 모호 동작은 현재 컴퓨팅 업무(예, 도 4의 부분(430))에 마지막 동작일 수 있다. 도시되지 않은 다른 실시 예에서, 모호 동작은 새로운 컴퓨팅 업무(예, 도 4의 부분(440))에 제 1 동작일 수 있다. 또 다른 실시 예에서, 규칙들의 좀 더 복잡한 시스템은 이전 모호 동작이 그룹화된 컴퓨팅 업무인 지를 판별할 수 있다. 상술 한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
상술 한 바와 같이, 블록(610)의 도시된 실시 예에서, 현재 동작이 마지막 동작 인지 아닌지 판별이 이루어진다. 상술 한 바와 같이, 만일 현재 동작이 마지막 동작이 아니라면, 방법(600)의 흐름도는 블록(620)으로 진행할 수 있고, 다음 동작이 처리될 수 있다. 반대로, 만일 현재 동작이 마지막 동작이라면, 방법(600)의 흐름도는 블록(612)을 진행할 수 있다.
블록(612)은, 일 실시 예에서, 동작 타입(OpType)이 설정되는 지를 판별하는 것을(적어도 하나의 동작이 모호 동작인지 아닌지) 도시한다. 그렇다면, 블록(614)는, 일 실시 예에서, 현재 컴퓨팅 업무의 동작 타입(OpType)이 오프-로더블 카테고리 혹은 호스트 계산 카테고리 중 어느 하나를 임의적으로 설정할 수 있다. 다른 실시 예에 있어서, 다른 규칙들 혹은 할당 방법들이 적용될 수 있다. 예를 들어, 오프-로더블 업무로써 컴퓨팅 업무를 분류하기 위하여 선호도가 사용될 수 있다. 상술 한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
하지만, 동작 타입(OpType)이 설정 된다면(예, 오프-로더블 카테고리 혹은 호스트 계산 카테고리 중 어느 하나), 블록(616)은, 일 실시 예에서, 큰 컴퓨팅 업무가 가변하는 GroupStart와 현재 동작에 의해 정의된 업무로 분할 될 수 있다는 것을 도시한다. 도시된 실시 예에서, 새롭게 정의된 작은 컴퓨팅 업무는 동작 타입(OpType)의 분류로 할당될 수 있다.
블록(618)은, 일 실시 예에서, 스케줄러는 평가 또는 분할 프로세스를 끝낼 수 있음을 도시한다. 상술 한 바와 같이, 스케줄러는, 각각의 프로세서에 작은 컴퓨팅 업무들 혹은 또는 분할된 동작의 체인들로 할당 할 수 있다. 상술 한 것은 본 발명을 제한하지 않는 실시 예이다고 이해되어야 할 것이다.
도 7은 본 발명의 실시 예에 따른 정보 처리 시스템(700)의 블록 다이어그램을 보여주는 도면이다. 도 7을 참조하면, 정보 처리 시스템(700)은 본 발명의 기술 사상에 따라 구성된 적어도 하나의 장치를 포함할 수 있다. 다른 실시 예에서, 정보 처리 시스템(700)은 본 발명의 기술 사상에 따른 적어도 하나의 방법을 채용하거나 실행할 수 있다.
다양한 실시 예에서, 정보 처리 시스템(700)은, 예를 들어, 노트북, 데스크탑, 워크 스테이션, 서버, 블레이드 서버, 개인 디지털 보조 장치, 스마트 폰, 태블릿 및 다른 적절한 컴퓨터 등과 같은 컴퓨팅 장치, 가상 머신 혹은 그것의 가상 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예에서, 정보 처리 시스템(700)은 사용자(미도시)에 의해 사용될 수 있다.
본 발명의 실시 예에 따른 정보 처리 시스템(700)은, 추가적으로, 중앙 처리 장치(CPU), 로직, 혹은 프로세서(710)를 포함할 수 있다. 일부 실시 예들에서, 프로세서(710)는 하나 이상의 기능 유닛 블록(FUBs) 혹은 조합 논리 블럭들(CLBs) (715)을 포함할 수 있다. 이러한 실시 예에서, 조합 논리 블록(CLB)은, 다양한 부울 논리 연산들(예를 들어, NAND, NOR, NOT, XOR 등), 안정화시키는 논리 장치들(예, 플립플롭들, 래치들, 등), 다른 논리 장치들, 혹은 그것들의 조합을 포함할 수 있다. 이러한 조합 논리 연산들은 원하는 결과값으로 도달하기 위하여 입력 신호들을 처리하도록 간단한 혹은 복잡한 방법으로 구현될 수 있다. 동기식 조합 논리 연산들이 몇 가지 실시 예들에 설명되지만, 본 발명이 여기에 제한되지 않고, 비동기식 조합 논리 연산들 혹은 그것들의 조합으로도 구현될 수 있다고 이해되어야 할 것이다. 일 실시 예에서, 조합 논리 연산들은 복수의 CMOS(complementary metal oxide semiconductor) 트랜지스터들을 포함할 수 있다. 다양한 실시 예들에서, CMOS 트랜지스터들은 논리 연산들 수행하는 게이트들로 배열될 수 있다. 그럼에도 불구하고, 본 발명의 기술 사상은 다른 기술에 사용되거나 포함될 수 있다고 이해되어야 할 것이다.
정보 처리 시스템(700)은 본 발명의 실시 예에 따른 휘발성 메모리(720, RAM)를 포함 할 수 있다. 본 발명의 실시 예에 따른 정보 처리 시스템(700)은 비 휘발성 메모리(730, 하드 드라이브, 광학 메모리, 또는 NAND 플래시 메모리 등)를 포함 할 수 있다. 일부 구체적인 실시 예에서, 휘발성 메모리(720), 비휘발성 메모리(730), 혹은 그것들의 조합 혹은 그것들 중 하나는 "저장 장치"로 지칭 될 수 있다. 다양한 실시 예에서, 휘발성 메모리(720) 및/혹은 비휘발성 메모리(730)는 반영구적 또는 영구적인 형태로 실질적으로 데이터를 저장하도록 구현 될 수 있다.
다양한 실시 예에서, 정보 처리 시스템(700)의 일부 및 통신 네트워크를 통해 통신하는 정보 처리 시스템(700)을 허용하도록 구성되는 하나 이상의 네트워크 인터페이스(740)를 포함할 수 있다. Wi-Fi 프로토콜의 예는, 여기에 제한되지 않으나, IEEE(institute of electrical and electronics engineers) 802.11g, IEEE 802.11n 등을 포함할 수 있다. 셀룰라 프로토콜의 예들로는, 여기에 제한되지 않은나, IEEE 802.16m(일명 wireless-MAN(metropolitan area network) Advanced, LTE(long term evolution) Advanced), EDGD(enhanced data rates for GSM(global system for mobile communication) Evolution), HSPA+(evolived high speed packet access) 등을 포함할 수 있다. 와이어 프로토콜의 예들로는, 여기에 제한되지 않으나, IEEE 802.3(예, ethernet), 파이버 채널, 전력선 통신(예, HomePlug, IEEE 1901, 등) 등을 포함할 수 있다. 상술 한 것은 본 발명을 제한하지 않는 몇 가지 실시 예들이라고 이해되어야 할 것이다.
정보 처리 시스템(700)은 본 발명의 실시 예에 따른 사용자 인터페이스 유닛(750)을 포함할 수 있다(예를 들어, 디스플레이 어댑터 등 햅틱 인터페이스, 휴먼 인터페이스 장치). 다양한 실시 예에서, 이 사용자 인터페이스 유닛(750)은 사용자로부터 입력을 수신 및/혹은 사용자에게 출력을 제공하기 위해 구현될 수 있다. 다른 종류의 장치들은, 사용자와의 상호 작용을 제공하기 위해 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은, 감각 피드백, 예를 들면, 시각 피드백, 청각 피드백, 또는 촉각 피드백의 임의의 형태 일 수 있다. 그리고 사용자로부터의 입력은 음향, 음성, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
다양한 실시 예들에서, 정보 처리 시스템(700)은 하나 이상의 다른 장치들 혹은 하드웨어 구성 요소를 포함 할 수 있다(760)(예를 들면, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 프로세서 등 ). 상술 한 것은 본 발명을 제한하지 않는 실시 예이다고 이해되어야 할 것이다.
본 발명의 실시 예에 따른 정보 처리 시스템(700)은, 추가적으로 적어도 하나의 시스템 버스(705)을 포함할 수 있다. 이러한 실시 예에서, 시스템 버스(705)는 프로세서(710), 휘발성 메모리(720), 비휘발성 메모리(730), 네트워크 인터페이스(740), 사용자 인터페이스 유닛(750), 및 적어도 하나의 하드웨어 구성 요소(760)에 연결하도록 구현될 수 있다.
다양한 실시 예에서, 정보 처리 시스템(700)은, 적어도 하나의 소프트웨어 구성 요소(770)를 포함하거나 실행할 수 있다. 소프트웨어 구성 요소(770)는 운영 체제(OS) 및/혹은 어플리케이션을 포함 할 수 있다. 일부 실시 예에서, OS는 어플리케이션에 하나 이상의 서비스를 제공 및 관리하고 혹은 어플리케이션과 다양한 하드웨어 구성 요소들 사이의 중개자로서 동작하도록 구현 될 수 있다(예를 들어, 프로세서(710), 네트워크 인터페이스(740) 등)의 이러한 실시 예에서 시스템 (700)을 처리하는 정보, 정보 처리 시스템(700)에 의해 국부적으로 설치(예를 들어, 등의 비휘발성 메모리 (730) 내)에 직접 실행하도록 구현될 수 있는 하나 이상의 네이티브 어플리케이션을 포함 할 수 있다. 프로세서(710)는 직접적으로 OS와 상호 작용한다. 이러한 실시 예에서, 네이티브 어플리케이션은 미리 컴파일된 머신 실행 가능 코드를 포함 할 수 있다. 일부 실시 예들에서, 네이티브 어플리케이션은 스크립트 인터프리터를 포함 할 수 있다(예를 들어, C shell(CSH), AppleScript, AutoHotkey, 등) 혹은 가상 실행 머신(VM)(예, 자바 가상 머신, 마이크로 소프트 공통 언어 런타임 등) 이것들은 소스 혹은 오브젝트 코드를 프로세서(710)에 의해 실행되는 실행 코드로 변환하도록 구현될 수 있다.
상술된 반도체 장치들은 다양한 패키징 기술을 사용하여 캡슐화 될 수 있다. 예를 들어, 본 발명의 실시 예에 다른 반도체 장치들은, POP(package on package) 기술, BGA(ball grid arrays) 기술, CSP(chip scale package) 기술, PLCC(plastic leaded chip carrier) 기술, PDIP(plastic dual in-line package) 기술, 다이 인 와플 팩(die in waffle pack) 기술, 다이 인 웨이퍼 폼(die in wafer form) 기술, COB(chip on board) 기술, CERDIP(ceramic dual ln-line package) 기술, PQFP(plastic quad flat package) 기술, SOIC(small outline package) 기술, SSOP(shrink small outline package) 기술, TSOP(thin small outline package) 기술, TQFO(thin quad flat package) 기술, SIP(system in package) 기술, MCP(multichip package) 기술, WFP(wafer-level fabricated package) 기술, WSP(wafer-level processed stack package) 기술, 혹은 당업자에게 알려진 다른 패키지 기술들 중 적어도 어느 하나에 의해 패키징될 수 있다.
방법 단계들은, 데이터를 입력 받고 출력을 발생하도록 동작하는 기능들을 수행하는 컴퓨터 프로그램을 실행하는 적어도 하나의 프로그래머블 프로세서에 의해 수행될 수 있다. 또한, 방법 단계들은, 특수 목적 논리 회로들, 예를 들어, FPGA(field programmable gate array) 혹은 ASIC(application specific intergated circuit)으로 구현될 수 있다.
다양한 실시 예들에서, 컴퓨터 판독 가능 장치는, 실행되는 경우, 장치가 방법의 단계들 중 적어도 일부를 수행하도록 하는 인스트럭션들을 포함 할 수 있다. 일부 실시 예들에서, 컴퓨터 판독 가능 장치가, 자기 매체, 광 매체, 다른 매체들, 또는 이들의 조합에 포함될 수 있다(예를 들면, CD-ROM, 하드 드라이브, 판독 전용 메모리, 플래시 드라이브, 등)를 포함할 수 있다. 이러한 실시 예에서, 컴퓨터 판독 가능 장치는, 명백하고 비순간적으로 구현된 제조 단품일 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
100: 시스템
104: 스케쥴러
108: 데이터 노드
185: 저장 장치
184: 메모리
182: 프로세서
112: 중앙 프로세서
114: 메모리
116, ISM: 지능형 저장 장치
142: 제어기 프로세서
172: 컴퓨팅 업무

Claims (20)

  1. 스케쥴러 컴퓨팅 장치에 있어서:
    적어도 하나의 컴퓨팅 업무를 저장하도록 구현되고, 상기 컴퓨팅 업무는 분산 컴퓨팅 시스템의 데이터 노드에 의해 실행되고, 상기 분산 컴퓨팅 시스템은 적어도 하나의 데이터 노드를 포함하고, 각 데이터 노드는 중앙 프로세서 및 지능형 저장 장치를 포함하고, 상기 지능형 저장 장치는 제어기 프로세서와 메모리를 포함하는 컴퓨팅 업무 메모리; 및
    상기 컴퓨팅 업무에 연관된 데이터의 용량 혹은 적어도 일부에 근거로 하여, 상기 데이터 노드의 상기 중앙 프로세서 혹은 상기 데이터 노드의 지능형 저장 장치 중 어느 하나에 의해 실행되는 상기 컴퓨팅 업무를 할당하도록 구현되는 프로세서를 포함하는 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는,
    상기 컴퓨팅 업무에 연관된 출력 데이터의 용량에 비교하여 상기 컴퓨팅 업무에 연관된 입력 데이터의 용량 혹은 적어도 일부에 근거로 하여, 상기 데이터 노드의 상기 중앙 프로세서 혹은 상기 데이터 노드의 지능형 저장 장치 중 어느 하나에 의해 실행되는 상기 컴퓨팅 업무를 할당하도록 구현되는 장치.
  3. 제 2 항에 있어서,
    상기 프로세서는,
    상기 출력 데이터의 용량이 상기 입력 데이터의 그것보다 크다면, 상기 컴퓨팅 업무를 상기 데이터 노드의 상기 중앙 프로세서에 할당하고; 및
    상기 출력 데이터의 용량이 상기 입력 데이터의 그것보다 작다면, 상기 컴퓨팅 업무를 상기 지능형 저장 장치의 상기 제어기 프로세서에 할당하도록 구현되는 장치.
  4. 제 1 항에 있어서,
    상기 프로세서는,
    큰 컴퓨팅 업무를 작은 컴퓨팅 업무들로 분할하고, 기 작은 컴퓨팅 업무들 각각은 동작들의 체인을 포함하고, 상기 작은 컴퓨팅 업무들 각각은 상기 데이터 노드의 상기 중앙 프로세서 및 상기 데이터 노드의 상기 지능형 저장 장치 중 어느 하나에 의해 수행되고;
    상기 작은 컴퓨팅 업무들 각각은 적어도 2개의 카테고리들로 분류하고, 제 1 카테고리는 상기 데이터 노드의 상기 중앙 프로세서에 할당되고, 상기 제 2 카테고리는 상기 데이터 노드의 상기 지능형 저장 장치에 할당되고; 및
    상기 작은 컴퓨팅 업무들 각각에 연관된 카테고리에 근거로 하여, 상기 작은 컴퓨팅 업무들 각각을 상기 데이터 노드의 상기 중앙 프로세서 및 상기 데이터 노드의 상기 지능형 저장 장치 중 어느 하나에 할당하는 장치.
  5. 제 1 항에 있어서,
    상기 프로세서는,
    상기 컴퓨팅 업무를 적어도 3개의 카테고리들로 분류하고,
    상기 제 1 카테고리는 상기 데이터 노드의 상기 중앙 프로세서에 할당되도록 존재하고,
    상기 제 2 카테고리는 상기 데이터 노드의 상기 지능형 저장 장치에 할당되도록 존재하고, 및
    상기 제 3 카테고리는 상기 데이터 노드의 상기 중앙 프로세서 및 상기 저장 장치 중 어느 하나에 할당되도록 존재하고; 및
    만일, 현재 컴퓨팅 업무가 제 3 카테고리에 연관된다면, 이전 컴퓨팅 업무 혹은 다음 컴퓨팅 업무에 연관된 카테고리를 근거로 하여, 상기 현재 컴퓨팅 업무를 상기 데이터 노드의 상기 중앙 프로세서 및 상기 지능형 저장 장치 중 어느 하나에 할당하는 장치.
  6. 제 1 항에 있어서,
    각 데이터 노드는 메인 메모리를 더 포함하고,
    상기 스케쥴러 컴퓨팅 장치는, 상기 컴퓨팅 업무의 출력 데이터가 상기 데이터 노드의 상기 메인 메모리 및 상기 지능형 저장 장치의 상기 메모리 중 어느 하나에 저장되는 것을 지시하도록 구현되는 장치.
  7. 제 1 항에 있어서,
    상기 분산 컴퓨팅 시스템은 제 2 복수의 데이터 노드들을 더 포함하고,
    상기 제 2 복수의 데이터 노드들 각각은 제 2 중앙 프로세서 및 심플 저장 장치를 포함하고,
    상기 심플 저장 장치는 제 2 메모리를 포함하고; 및
    상기 스케쥴러 컴퓨팅 장치의 상기 프로세서는:
    상기 컴퓨팅 업무에 연관된 데이터의 일부를 저장하는 데이터 노드 혹은 일분에 근거로 하여, 컴퓨팅 업무를 지능형 저장 장치들을 포함하는 상기 복수의 데이터 노드들의 데이터 노드, 혹은 심플 저장 장치들을 포함하는 상기 복수의 데이터 노드들의 데이터 노드에 할당하고, 및
    만일 상기 컴퓨팅 업무가 상기 심플 저장 장치들을 포함하는 상기 복수의 데이터 노드들의 상기 데이터 노드에 할당되면, 전체 컴퓨팅 업무를 상기 데이터 노드의 상기 중앙 프로세서에 할당하는 장치.
  8. 스케쥴러 컴퓨팅 장치의 방법에 있어서:
    복수의 동작들을 갖는 컴퓨팅 업무를 입력 받는 단계;
    상기 컴퓨팅 업무를 데이터 노드에 할당하고, 상기 데이터 노드는 중앙 프로세서 및 지능형 저장 장치를 포함하고, 상기 지능형 저장 장치는 제어기 프로세서와 메모리를 포함하는 단계;
    상기 컴퓨팅 업무를 적어도 제 1 체인 동작들과 제 2 체인 동작들로 분할하는 단계;
    상기 제 1 체인 동작들을 상기 데이터 노드의 상기 지능형 저장 장치에 할당하는 단계; 및
    상기 제 2 체인 동작들을 상기 데이터 노드의 상기 중앙 프로세서에 할당하는 단계를 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 분할하는 단계는,
    각 동작을 적어도 제 1 카테고리와 제 2 카테고리로 분류하는 단계;
    상기 제 1 카테고리에 연관된 동작은 입력 데이터의 용량보다 작은 출력 데이터의 용량을 발생하는 단계; 및
    상기 제 2 카테고리에 연관된 동작은 입력 데이터의 용량보다 큰 출력 데이터의 용량을 발생하는 단계를 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 분할하는 단계는,
    상기 컴퓨팅 업무가 동작들의 어느 하나의 카테고리의 동작들로부터 다른 카테고리의 동작들로 천이하는 동작을 판별하는 단계; 및
    상기 동작에서 상기 컴퓨팅 업무를 동작들의 서로 다른 체인들로 분할하는 단계를 포함하는 방법.
  11. 제 8 항에 있어서,
    상기 분할하는 단계는,
    각 동작을 적어도 3개의 카테고리들 중 하나로 분류하는 단계를 포함하고,
    상기 제 1 카테고리는 상기 데이터 노드의 상기 중앙 프로세서에 연관되고,
    상기 제 2 카테고리는 상기 데이터 노드의 상기 지능형 저장 장치에 연관되고, 및
    상기 제 3 카테고리는 상기 데이터 노드의 상기 중앙 프로세서 및 상기 지능형 저장 자치 모두에 연관되고; 및
    만일, 현재 동작이 상기 제 3 카테고리에 연관되면, 이전 동작 혹은 다음 동작에 연관된 카테고리를 근거로 하여, 상기 현재 동작을 상기 데이터 노드의 상기 중앙 프로세서 및 상기 데이터 노드의 상기 지능형 저장 장치 중 어느 하나에 할당하는 방법.
  12. 제 8 항에 있어서,
    상기 제 1 체인 동작들에 의해 발생되는 출력 데이터를 위한 상기 출력 위치를 할당하는 단계를 더 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 출력 위치를 할당하는 단계는:
    만일 다음 동작이 상기 데이터 노드의 상기 중앙 프로세서에 할당되면, 상기 제 1 체인 동작들의 출력 데이터가 상기 데이터 노드의 메모리 저장되는 것을 지시하는 단계; 및
    상기 다음 동작이 상기 데이터 노드의 상기 지능형 저장 장치에 할당되면, 상기 제 1 체인 동작들의 출력 데이터가 상기 지능형 저장 장치에 저장되는 것을 지시하는 단계를 포함하는 방법.
  14. 분산 컴퓨팅 시스템의 데이터 노드에 있어서:
    지능형 저장 장치에 의해 저장된 데이터에 근거로 하여 제 1 동작들 셋 중에서 적어도 하나를 실행하도록 구현되는 중앙 프로세서를 포함하고, 상기 지능형 저장 장치는: 반영구 방법으로 데이터를 저장하도록 구현된 메모리, 및 상기 지능형 저장 장치에 저장된 데이터를 근거로 하여 제 2 동작들 셋 중에서 적어도 하나를 실행하도록 구현되는 제어기 프로세서를 포함하고; 및
    스케쥴러 컴퓨팅 장치로부터 복수의 동작들을 입력 받도록 구현되는 네트워크 인터페이스를 포함하고,
    상기 데이터 노드는,
    상기 컴퓨팅 업무를 적어도 상기 제 1 동작들 셋과 상기 제 2 동작들 셋으로 분할하고,
    상기 제 1 동작들 셋을 실행을 위한 상기 중앙 프로세서에 할당하고, 및
    상기 제 2 동작들 셋을 실행을 위한 상기 지능형 저장 장치에 할당하는 데이터 노드.
  15. 제 14 항에 있어서,
    상기 데이터 노드는,
    동작에 연관된 출력 데이터의 용량과 비교한 상기 동작에 연관된 입입력 데이터 용량 혹은 적어도 일부에 근거로 하여, 상기 동작을 상기 제 1 동작들 셋 및 상기 제 2 동작들 셋 중 어느 하나에 할당하도록 구현되는 데이터 노드.
  16. 제 14 항에 있어서,
    상기 복수의 동작들의 모든 것은 상기 제 2 동작들 셋에 포함되고, 및 상기 제 1 동작들 셋은 비워지고; 및
    상기 지능형 저장 장치는 상기 복수의 동작들을 실행하도록 구현되는 데이터 노드.
  17. 제 14 항에 있어서,
    상기 데이터는 임시적으로 데이터를 저장하도록 구현된 메인 메모리를 포함하고; 및
    상기 동작에 연관된 출력 데이터가 상기 데이터 노드의 상기 메인 메모리 및 상기 지능형 저장 장치의 상기 메모리 중 어느 하나에 저장되는 데이터 노드.
  18. 제 17 항에 있어서,
    상기 데이터 노드는,
    만일, 다음 동작이 상기 중앙 프로세서에 할당되면, 상기 데이터 노드의 상기 메인 메모리에 출력 데이터가 저장되고; 및
    만일, 다음 동작이 상기 지능형 저장 장치에 할당되면, 상기 지능형 저장 장치의 상기 메모리에 상기 출력 데이터가 저장되는 데이터 노드.
  19. 제 17 항에 있어서,
    상기 데이터 노드는 상기 제 2 동작들 셋과 함게 출력 할당에 연관하도록 구현되고; 및
    상기 데이터 노드는, 상기 출력 할당에 응답하여, 상기 데이터 노드의 상기 메인 메모리 혹은 상기 지능형 저장 장치의 상기 메모리에 상기 출력 데이터를 저장하는 데이터 노드.
  20. 제 17 항에 있어서,
    상기 중앙 프로세서는 상기 제 2 동작들 셋을 실행하는 데이터 노드.
KR1020150100415A 2014-09-29 2015-07-15 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법 KR102238600B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462057203P 2014-09-29 2014-09-29
US62/057,203 2014-09-29
US14/663,249 US9632831B2 (en) 2014-09-29 2015-03-19 Distributed real-time computing framework using in-storage processing
US14/663,249 2015-03-19

Publications (2)

Publication Number Publication Date
KR20160037737A true KR20160037737A (ko) 2016-04-06
KR102238600B1 KR102238600B1 (ko) 2021-04-09

Family

ID=55485969

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150100415A KR102238600B1 (ko) 2014-09-29 2015-07-15 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법

Country Status (4)

Country Link
US (1) US9632831B2 (ko)
JP (1) JP6694683B2 (ko)
KR (1) KR102238600B1 (ko)
DE (1) DE102015116036A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967536B (zh) * 2017-11-27 2021-02-26 南京航空航天大学 基于鲁棒优化的绿色数据中心节能任务调度策略
US12008400B2 (en) 2018-11-06 2024-06-11 Samsung Electronics Co., Ltd. Method and device for arranging schedule for computing task to server on basis of task dependency

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452444B1 (en) * 2017-10-19 2019-10-22 Pure Storage, Inc. Storage system with compute resources and shared storage resources
US10565014B2 (en) 2017-12-05 2020-02-18 Western Digital Technologies, Inc. Data processing offload using in-storage code execution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657706B2 (en) * 2003-12-18 2010-02-02 Cisco Technology, Inc. High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
KR20110124688A (ko) * 2010-05-11 2011-11-17 엘에스아이 코포레이션 리소스를 관리하는 컴퓨터 구현 방법, 비일시적 컴퓨터 판독가능 저장 매체 및 시스템
US20130191555A1 (en) * 2012-01-19 2013-07-25 Peter Chi-Hsiung Liu Intelligent storage controller
KR20140057649A (ko) * 2011-09-02 2014-05-13 퀄컴 인코포레이티드 휴대용 컴퓨팅 디바이스에서 분산 리소스 관리

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5331549B2 (ja) * 2009-04-09 2013-10-30 株式会社エヌ・ティ・ティ・ドコモ 分散処理システム及び分散処理方法
JP2013186770A (ja) * 2012-03-09 2013-09-19 Hitachi Ltd データ処理装置
US8819335B1 (en) * 2013-08-30 2014-08-26 NXGN Data, Inc. System and method for executing map-reduce tasks in a storage device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657706B2 (en) * 2003-12-18 2010-02-02 Cisco Technology, Inc. High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
KR20110124688A (ko) * 2010-05-11 2011-11-17 엘에스아이 코포레이션 리소스를 관리하는 컴퓨터 구현 방법, 비일시적 컴퓨터 판독가능 저장 매체 및 시스템
KR20140057649A (ko) * 2011-09-02 2014-05-13 퀄컴 인코포레이티드 휴대용 컴퓨팅 디바이스에서 분산 리소스 관리
US20130191555A1 (en) * 2012-01-19 2013-07-25 Peter Chi-Hsiung Liu Intelligent storage controller

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967536B (zh) * 2017-11-27 2021-02-26 南京航空航天大学 基于鲁棒优化的绿色数据中心节能任务调度策略
US12008400B2 (en) 2018-11-06 2024-06-11 Samsung Electronics Co., Ltd. Method and device for arranging schedule for computing task to server on basis of task dependency

Also Published As

Publication number Publication date
DE102015116036A1 (de) 2016-03-31
US9632831B2 (en) 2017-04-25
KR102238600B1 (ko) 2021-04-09
US20160092279A1 (en) 2016-03-31
JP2016071886A (ja) 2016-05-09
JP6694683B2 (ja) 2020-05-20

Similar Documents

Publication Publication Date Title
TWI694339B (zh) 一種區塊鏈共識方法、設備及系統
JP7469026B2 (ja) ストレージでの最適な動的シャードを生成する装置及びシステム
KR102240774B1 (ko) 지역 베이스보드 관리 제어기를 이용하여 패브릭 시스템에 걸쳐 불휘발성 메모리 익스프레스 내에서 공유된 그래픽 처리부 자원들을 할당하는 방법
CN111488205B (zh) 面向异构硬件架构的调度方法和调度系统
US10884707B1 (en) Transpose operations using processing element array
KR102594657B1 (ko) 비순차적 리소스 할당을 구현하는 방법 및 장치
CN109710406B (zh) 数据分配及其模型训练方法、装置、及计算集群
US9996391B2 (en) Parallel computer system, method of controlling parallel computer system, and recording medium
US20190146837A1 (en) Distributed real-time computing framework using in-storage processing
KR20200091790A (ko) Gpu 연산의 동시 실행을 위한 플랫폼
CN116467061B (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN103856548A (zh) 动态资源调度方法和动态资源调度器
CN114424214A (zh) 用于高效深度学习的混合数据-模型并行性
US20180307603A1 (en) Memory hierarchy-aware processing
KR102238600B1 (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
US11501145B1 (en) Memory operation for systolic array
EP4040295A1 (en) Memory bandwidth allocation for multi-tenant fpga cloud infrastructures
US10198293B2 (en) Distributed real-time computing framework using in-storage processing
CN103713953A (zh) 一种内存数据的搬移装置及方法
US11119787B1 (en) Non-intrusive hardware profiling
Daoud et al. High performance bitwise or based submesh allocation for 2d mesh-connected cmps
Li et al. Topology-aware scheduling on blue waters with proactive queue scanning and migration-based job placement
US20240185110A1 (en) Distribution of quantum state vector elements across network devices in quantum computing simulation
KR102614966B1 (ko) 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법
Daoud Efficient processor allocators for mesh-connected chip-multiprocessors

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant