KR102577247B1 - 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법 - Google Patents

데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102577247B1
KR102577247B1 KR1020150186412A KR20150186412A KR102577247B1 KR 102577247 B1 KR102577247 B1 KR 102577247B1 KR 1020150186412 A KR1020150186412 A KR 1020150186412A KR 20150186412 A KR20150186412 A KR 20150186412A KR 102577247 B1 KR102577247 B1 KR 102577247B1
Authority
KR
South Korea
Prior art keywords
fetching
node
master controller
execution
data
Prior art date
Application number
KR1020150186412A
Other languages
English (en)
Other versions
KR20160081815A (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 KR20160081815A publication Critical patent/KR20160081815A/ko
Application granted granted Critical
Publication of KR102577247B1 publication Critical patent/KR102577247B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3041Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/13Prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)

Abstract

본 발명은 마스터 컨트롤러, 클러스터 노드, 로컬 스토리지를 포함하는 전자 시스템을 제공한다. 마스터 컨트롤러는 사용자 프로그램의 실행을 모니터링하고, 그리고 프리-페칭 힌트를 생성한다. 클러스터 노드는, 마스터 컨트롤러와 연결되고, 프리-프로세싱 클라이언트가 되도록 구성된다. 로컬 스토리지는 클러스터 노드와 연결되고, 사용자 프로그램에 대한 입력 데이터를 저장하도록 구성된다. 또한, 마스터 컨트롤러는 프리-페칭 힌트에 기초하여 로컬 스토리지로부터의 입력 데이터의 스플릿(split)을 프리-페치하기 위해 프리-페칭 힌트를 상기 프리-프로세싱 클라이언트로 전송한다.

Description

데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법{ELECTRONIC SYSTEM WITH DATA MANAGEMENT MECHANISM AND METHOD OF OPERATION THEREOF}
본 발명은 전자 시스템에 관한 것으로, 보다 구체적으로 데이터 관리 기능들을 구비하는 전자 시스템에 관한 것이다.
현대의 전자 시스템들은 프로그램들의 빠른 실행 및 데이터의 빠른 조작을 필요로 한다. 분산 클러스터 컴퓨팅의 다수는 데이터플로우 프로그래밍 모델들에 기반한다. Hadoop ™ and Spark ™ 은 분산 클러스터 컴퓨팅에 대한 플랫폼들의 대표적인 예들이다. 데이터플로우 프로그래밍 모델의 한 특징은 실행이 결정(deterministic)적으로 되도록 허용하는, 데이터 및 워커(worker) 맵핑들이 미리 정의된다는 것이다. 그러나 병렬 실행 미스매칭, 결정론적인 실행 정보는 Hadoop 및 Spark가 그것들의 캐시 시스템, OS 페이지 캐시, 및 하드웨어 캐시/프리페처(prefetcher)에 있는 데이터 지역성(locality)을 완전히 이용하지 못하도록 야기하는 프레임워크 외부에서 미싱(missing)된다.
예를 들어, CPU 캐시에 대한 하드웨어 프리페처는 대게 덤프-트럭 기법에 기초하며, 그리고 이 기법은 데이터를 너무 일찍 또는 너무 늦게 전달하거나 또는 전달되는 데이터가 실행에 대한 잘못된 데이터일 수 있다. 이것은 캐시 오명(pollution), 프로세서 스톨(stall) 사이클, 실행의 상당한 지연, 및 클러스터 컴퓨팅 환경에 있는 모든 구성들을 방해할 수 있는 증가하는 메모리 요청 활동성을 야기할 수 있다. 페이지 캐시에 대해, 한 번에 오직 하나의 데이터 페이지를 읽는 캐싱은 노드-와이드(wide) 성능 감소를 가져오는, OS 시스템 라이브러리 또는 시스템 입출력 파일과 같은, 다른 더 중요한 페이지들이 결국에는 오버-라이트(over-write)되게 할 것이다. 최근에, Hadoop 또는 Spark의 네이티브 캐싱 시스템, 예컨대, HDFS의 집중형 캐시 관리, Tachyon 캐싱은 캐시 구조로의 데이터의 프리페칭을 위한 기회들을 분실하는, 결정론적 실행 정보를 알 수 없다.
따라서, 클러스터 컴퓨팅 환경에서의 실행 신뢰성 및 성능을 개선하기 위한 데이터 관리 메커니즘을 구비하는 전자 시스템에 대한 필요성은 여전히 존재한다. 소비자 기대의 증가 및 시장에 있는 상품들과 유의미한 차별성이 있는 상품에 대한 기회의 감소에 따른, 끝없이 증가하는 상업적 경쟁 압력의 관점에서, 알려진 이러한 문제점들에 대한 해결책을 찾는 것의 중요성은 점점 증가하고 있다. 게다가, 이러한 문제점들에 대한 해결책을 찾기 위해 비용을 줄이고, 효율성과 성능을 개선하고, 그리고 경쟁 압력들을 만족하기 위한 필요성은 더 큰 긴급성을 추가한다.
이러한 문제에 대한 해결책을 오랫동안 찾고 있었으나 앞선 개발들은 어떤 해결책들도 개시하거나 또는 제안하지 못하였고, 따라서 기술분야에서 통상의 지식을 가진 자는 이러한 문제에 대한 해결책을 오랫동안 회피하였다.
본 발명의 목적은 전자 시스템의 실행 효율성을 개선하는 데이터 관리 메커니즘을 구비하는 전자 시스템을 제공하는데 있다.
본 발명의 실시 예에 따른 전자 시스템은, 사용자 프로그램의 실행을 모니터링하고, 그리고 프리-페칭 힌트를 생성하도록 구성되는 마스터 컨트롤러, 상기 마스터 컨트롤러와 연결되고, 프리-프로세싱 클라이언트가 되도록 구성되는 클러스터 노드, 그리고 상기 클러스터 노드와 연결되고, 상기 사용자 프로그램에 대한 입력 데이터를 저장하도록 구성되는 로컬 스토리지를 포함하되, 상기 마스터 컨트롤러는 상기 프리-페칭 힌트에 기초하여 상기 로컬 스토리지로부터의 입력 데이터의 스플릿(split)을 프리-페치하기 위해 상기 프리-페칭 힌트를 상기 프리-프로세싱 클라이언트로 전송한다.
실시 예로서, 상기 클러스터 노드는 노드 프리-페치 엔진에 의해 관리되고, 상기 로컬 스토리지에 접근하고 그리고 상기 프리-페칭 힌트에 기초하여 상기 스플릿을 프리-페치하도록 구성되는 노드 스토리지 엔진을 포함한다.
실시 예로서, 상기 마스트 컨트롤러와 연결되고, 상기 마스터 컨트롤러로부터의 상기 프리 -페칭 힌트에 기초하여 상기 로컬 스토리지로부터 중간 데이터(interim data)를 프리-페치하도록 구성되는 포스트-프로세싱 클라이언트를 더 포함한다.
실시 예로서, 상기 마스터 컨트롤러는, 프로그램 그래프를 구성하는 것에 의해 프로그램 컨텍스트를 모니터링하고, 그리고 상기 프리-페칭 힌트를 전송하기 위해 프리-페칭 커맨드 유닛에 알려주도록 구성되는 실행 트래커 유닛을 포함한다.
실시 예로서, 상기 클러스터 노드는, 상기 사용자 프로그램을 실행하고, 상기 사용자 프로그램의 상태를 유지하며, 그리고 메모리-레벨-프리-페칭 힌트를 노드 스토리지 엔진으로 전송한다.
실시 예로서, 상기 클러스트 노드는, 캐시 및 로컬 메모리를 포함하며, 노드 모니터 유닛으로부터의 입력에 기초하여 메모리-레벨 프리-페칭을 수행하도록 구성되는 노드 스토리지 엔진을 포함한다.
실시 예로서, 상기 프리-프로세싱 클라이언트는, 노드 프리-페치 엔진에 연결되며, 노드 실행 엔진에 의해 실행되는 과제 행동(task behavior)을 모니터링 및 프로파일하고 그리고 캐시 페이지 로드들을 로컬 DRAM(dynamic random access memory)으로부터 캐시로 로드하기 위해 캐시-레벨-프리-페칭 힌트를 생성하도록 구성되는 노드 모니터링 유닛을 포함한다.
실시 예로서, 상기 프리-프로세싱 클라이언트는, 상기 스필릿이 전송되는 경우 입출력 병목을 감소시키기 위한 캐시와 로컬 DRAM을 가지는 노드 스토리지 유닛을 포함한다.
실시 예로서, 상기 클러스터 노드는, 상기 마스터 컨트롤러와 연결되고, 상기 로컬 스토리지로부터 중간 데이터의 프리-페칭을 트리거하는 프리-페칭 힌트를 포함하는 포스트-프로세싱 클라이언트로서 구성된다.
실시 예로서, 상기 클러스터 노드는, 상기 마스터 컨트롤러와 연결되고, 상기 로컬 스토리지에 있는 출력 파일에 처리된 데이터를 전송하도록 구성되는 노드 스토리지 유닛을 포함하는 포스트-프로세싱 클라이언트로서 구성된다.
본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법은, 실행 트래커 유닛에 의해 사용자 프로그램의 실행을 모니터링하는 단계, 상기 실행 트래커 유닛에 의한 상기 모니터링에 기초하여 프로-페칭 힌트를 프로페칭 커맨더 유닛이 생성하는 단계, 상기 사용자 프로그램을 분석하는 것에 의해 프리-프로세싱 클라이언트로서 클러스터 노드를 구성하는 단계, 로컬 스토리지에 상기 사용자 프로그램에 대한 입력 데이터를 저장하는 단계, 그리고 상기 프리-프로세싱 클라이언트로 전송되는 상기 프리-페칭 힌트에 기초하여 상기 로컬 스토리지로부터 입력 데이터의 스플릿을 프리-페치하는 단계를 포함한다.
실시 예로서, 상기 프리-페칭 힌트에 기초하여 상기 스플릿을 프리-페치하는 단계는, 상기 로컬 스토리지에 접근하기 위한 노드 스토리지 엔진을 노드 프리-페칭 엔진이 관리하는 단계를 포함한다.
실시 예로서, 마스터 컨트롤러에서 포스트-프로세싱 클라이언트로 전송되는 프리-페칭 힌트에 기초하여 상기 로컬 스토리지로부터 임시 데이터를 프리-페치하는 단계를 더 포함한다.
실시 예로서, 상기 실행 트래커 유닛에 프로그램 그래프를 구성하는 것에 의해 상기 사용자 프로그램의 프로그램 컨텍스트를 모니터링하는 단계 및 상기 프리-페칭 힌트를 전송하기 위해 상기 프리-페칭 커맨더 유닛에 알려주는 단계를 더 포함한다.
실시 예로서, 상기 프리-프로세싱 클라이언트를 구성하는 단계는, 노드 실행 엔진에 의해 사용자 프로그램을 실행하는 단계, 상기 노드 실행 엔진과 연결되는 노드 모니터 유닛에 의해 상기 사용자 프로그램의 상태를 모니터링하는 단계, 그리고 상기 노드 모니터 유닛과 연결되는 노드 프리-페치 엔진에 의해 노드 스토리지 엔진에 메모리-레벨 프리-페칭 힌트를 전송하는 단계를 포함한다.
실시 예로서, 상기 사용자 프로그램의 실행을 모니터링하는 단계는, 캐시 및 로컬 메모리를 가지는 노드 스토리지 엔진에 의해 메모리-레벨 프리-페칭을 수행하는 단계를 포함한다.
실시 예로서, 상기 프리-프로세싱 클라이언트를 구성하는 단계는, 노드 실행 엔진에 의해 실행된 과제 행동(task behavior)을 모니터링하고 프로파일링하는 단계 그리고 로컬 DRAM에서 캐시로 캐시 페이지 로드를 로드하기 위한 캐시-레벨 프리-페칭 힌트를 생성하는 단계를 포함한다.
실시 예로서, 상기 스플릿의 전송에 대한 상기 로컬 스토리지의 입출력 병목을 로컬 DRAM 및 캐시를 가지는 노드 스토리지 유닛을 포함하는 상기 프리-프로세싱 클라이언트에 의해 감소시키는 단계를 더 포함한다.
실시 예로서, 마스터 컨트롤러로부터 상기 프리-페칭 힌트를 수신하는 포스트-프로세싱 클라이언트로서 구성되는 클러스터 노드에 의해 상기 로컬 스토리지로부터 중간 데이터의 프리-페칭을 트리거하는 단계를 더 포함한다.
실시 예로서, 마스터 컨트롤러와 연결되고, 처리된 데이터를 전송하기 위한 노드 스토리지 유닛을 포함하는 포스트-프로세싱 클라이언트로서 구성되는 상기 클러스터 노드를 포함하는 상기 로컬 스토리지의 출력 파일에 상기 처리된 데이터를 전송하는 단계를 더 포함한다.
본 발명에 따르면, 전자 시스템의 입출력 인터페이스를 간소화할 수 있고 그리고 전자 시스템의 실행의 효율성이 개선될 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 관리 메커니즘을 구비하는 전자 시스템의 구조적인 블록도이다.
도 2는 본 발명의 실시 예에 따른 데이터 관리 메커니즘을 구비하는 전자 시스템의 기능적인 블록도이다.
도 3은 본 발명의 실시 예에 따른 데이터 관리 메커니즘을 구비하는 전자 시스템의 예시적인 타이밍도이다.
도 4는 본 발명의 실시 예에 따른 예시적인 스토리지 계층도이다.
도 5는 본 발명의 실시 예에 따른 데이터 관리 메커니즘을 구비하는 전자 시스템의 예시적인 스토리지 타이밍도이다.
도 6은 본 발명의 실시 예에 따른 프리페칭 힌트 생성 메커니즘의 예시적인 흐름도이다.
도 7은 본 발명의 실시 예에 따른 전자 시스템의 동작 방법을 보여주는 흐름도이다.
다양한 실시 예들은 노드 프리-페칭 엔진에 전달되는 정적 프리-페칭 힌트들을 생성하는 것에 의해 전자 시스템의 실행 효율성을 최대화하고 그리고 분산 입출력 인터페이스를 간소화할 수 있는 분산 클러스터 컴퓨팅에 대한 데이터 프리-페칭 메커니즘을 제공한다. 정적 프리-페칭 힌트들은 사용자 프로그램에서 사용되는 데이터의 부분을 프로세스하도록 구성되는 복수의 클러스터 노드들에 의해 분산되어 처리하는 것에 기초하여 추정될 수 있다. 정적 프리-페칭 힌트들의 실행은 원격 스토리지, 로컬 스토리지, 및 메모리에서의 활동도를 최소화하고 프로그램 실행 효율성을 최대화할 수 있는 동적 프리-페칭 힌트들을 생성하고 그리고 조정하기 위해 모니터링되고 그리고 분석될 수 있다.
다양한 실시 예들은 프리-페치 힌트들을 클러스터 노드들로 전달하기 위해 프로그램 그래프에 기초하여 데이터를 프리-페치하는 힌트들을 생성하는 데이터 플로우 모델에 기초하는 분산 클러스터 컴퓨팅 프레임워크를 위한 새로운 데이터-프리 페칭 메커니즘을 제공한다. 데이터 프리-페칭 메커니즘은 또한 생성된 힌트들에 기초하여 작업 행동을 모니터 및 프로파일할 수 있다. 클러스터 노드들은 로컬 스토리지에 접근하지 않고 캐시-레벨 및 메모리-레벨 프리-페칭을 위한 프리-페치 엔진을 포함한다. 클러스터 노드는 적절한 작업들의 입상(granularity)과 함께 작업 진행을 모니터링하고 그리고 실행 동안 작업 행동으로부터 생성된 동적 프리-페칭 힌트들을 조정하는 것에 기초하여 프리-페칭을 트리거할 수 있다.
다음 실시 예들은 기술분야에서 통상의 지식을 가진 자가 명세서에서 설명된 실시 예들을 만들고 그리고 사용할 수 있도록 충분히 상세하게 설명된다. 다른 실시 예들이 본 개시 내용에 기초하여 명백할 것으로 이해되어야 하고, 그 시스템, 프로세스, 또는 기계적 변경은 실시 예의 범위를 벗어나지 않고 이루어질 수 있다.
아래의 설명에서, 많은 특정한 세부 사항들이 실시 예의 자세한 이해를 제공하기 위해 주어졌다. 그러나 이러한 특정한 세부 사항들 없이도 실시 예들이 실시될 수 있음을 이해할 수 있을 것이다. 실시 예를 모호하게 하는 것을 방지하기 위해, 일부 잘 알려진 회로들, 시스템 구성들, 및 처리 단계들은 상세하게 개시되지 않는다.
시스템의 실시 예를 보여주는 도면들은, 반 도식적이고, 그리고 축적이 아니며, 특히 일부 치수들은 표현의 명확성을 위한 것이며, 도면에서 과장되게 도시되었다. 유사하게, 설명의 편의를 위해 도면에서 대체로 유사한 뷰 방향을 표시하더라도 도면의 이러한 묘사는 대부분 임의적이다. 일반적으로, 실시 예는 임의의 방향으로 조작될 수 있다. 실시 예는 설명의 편의를 위해 제 1 실시, 예 2 실시 등으로 넘버링 되었지만, 이것이 어떤 다른 의미가 있거나 또는 실시 예에 대한 제한을 제공하는 것은 아니다.
본 명세서에서 언급된 용어 '모듈'은 용어가 사용된 문맥에 따라 본 명세서에서 설명된 실시 예에서 소프트웨어, 하드웨어, 또는 그것들의 조합으로서 구현될 수 있거나, 또는 소프트웨어, 하드웨어, 또는 그것들의 조합을 포함할 수 있다. 예시적으로, 소프트웨어는 기계코드, 펌웨어, 임베디드 코드, 및 어플리케이션 소프트웨어일 수 있다. 소프트웨어는 또한 함수, 함수 호출, 코드 블록, 또는 그것들의 조합을 포함할 수 있다. 또한, 예시적으로, 하드웨어는 게이트들, 회로망, 프로세서, 컴퓨터, 집적회로, 집적회로 코어들, 압력 센서, 관성 센서, 마이크로전자역학 시스템(microelectromechanical system, MEMS), 수동 장치들, 소프트웨어 함수를 수행하기 위한 명령어를 가지는 물리적 비-일시적 메모리 미디어, 그 안의 일부, 또는 그것들의 조합일 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 관리 메커니즘을 구비하는 전자 시스템(100)의 구조적인 블록도를 보여준다. 어플리케이션 프로그램과 같은, 전자 시스템(100)은 사용자 프로그램(102)을 포함한다. 사용자 프로그램(102)은 분산 클러스터 컴퓨팅 환경에서 데이터 프로세싱을 위해 사용될 수 있다.
마스터 컨트롤러(104)는 수많은 클러스터 노드들(108) 전체에 걸쳐 반복적인 작업들을 할당하기 위해 사용자 프로그램(102)을 분석할 수 있다. 비록 이 도면은 맵-감소 실시 예(map-reduce embodiment)를 보여주지만, 이러한 컨셉들은 SPark와 같은 다른 데이터플로우 프로그래밍 시스템들에 사용될 수 있다. 마스터 컨트롤러(1004)는 사용자 프로그램을 분석하고 그리고 클러스터 노드들(108)에 의한 실행을 조정할 수 있는 프로세서, 마이크로프로세서, 코어 프로세서, 컴퓨터, 또는 서버일 수 있다. 클러스터 노드들(108)은 사용자 프로그램(102)의 부분인 반복적인 작업에 할당되는 프로세서, 마이크로프로세서, 코어 프로세서, 컴퓨터, 또는 서버일 수 있다.
입력 데이터(110)는 HDFS(Hadoop Distributed File System)와 같은, 분산 파일 시스템에 일반적으로 있을 수 있지만, 필연적인 것은 아니다. 입력 데이터(110)는 프레임워크로부터 접근 가능한 어떤 종류의 스토리지에 있을 수도 있다. 클러스터 노드들(108)은 입력 데이터(110)가 워크플로우를 실행하는 클러스터 노드(108)의 로컬 스토리지에 카피되는 것으로 추정하고, 그래서 클러스터 노드(108)는 그것의 로컬 스토리지를 포함하고 동시에 로컬 스토리지는 각 워커에 대한 데이터 쓰기를 위한 로컬 스토리지일 수 있다. 마스터 컨트롤러(104)는 스플릿(112)들에 대한 입력 데이터(110)의 분석을 계획할 수 있다. 스플릿(112)들은 클러스터 노드(108)에 개별적으로 할당된 특정한 작업에 적용하는 입력 데이터(110)의 부분일 수 있다. 입력 데이터(110)는 클러스터 노드(108)들 각각이 그것의 할당된 스플릿(112) 내의 입력 데이터(110)에 대한 동일한 프로세스를 수행하는 것을 허용하기 위해 분석될 수 있다. 입력 데이터(110)는 사용자 프로그램(102)을 성공적으로 완료하기 위해 필요로 하는 모든 데이터일 수 있다.
어떠한 클러스터 노드(108)들도 마스터 컨트롤러(104)에 의해 관리될 수 있음을 이해할 수 있을 것이다. 마스터 컨트롤러(104)는 많은 프리-프로세싱 클라이언트(114)들 및 포스트-프로세싱 클라이언트(114)들을 할당할 수 있다. 프리-프로세싱 클라이언트(114)들은 중간 데이터(intermediate data, 122)의 생성을 위해 입력 데이터(110)로부터의 스플릿(112)을 처리하기 위해 할당된 클러스트 노드(108)들일 수 있다. 중간 데이터(112)는 사용자 프로그램(102)에 대해 프리-프로세싱 클라이언트(114)들에 의해 입력 데이터(110)를 처리한 첫 번째 부분적인 결과일 수 있다. 어떤 종류의 실패 때문에 데이터 스플릿과 노드 사이에서 변경되는 맵핑들의 경우에, 새로운 맵핑, DAG, 및 다른 메타데이터 정보가 각 클라이언트에서 업그레이드될 수 있다.
포스트-프로세싱 클라이언트들은 중간 데이터(122)를 처리하고 그리고 입력 데이터(110)에 대한 사용자 프로그램(102)의 실행 결과의 일부로서 처리된 데이터(119)를 생성하도록 할당된 클러스트 노드들(108)일 수 있다. 입력 데이터(110)의 결정 맵핑(deterministic mapping) 및 프리-프로세싱 클라이언트(114)들에서, 마스터 컨트롤러(104)는 분산 파일 시스템(120, 예컨대, HDFS)을 포함하는 로컬 스토리지 또는 로컬/원격 스토리지에 저장될 출력 파일들(118)을 처리된 데이터(119)로부터 생성하기 위해 동일하거나 또는 감소된 수의 포스트-프로세싱 클라이언트(116)들을 할당할 수 있다.
NVRAM(non-volatile random access memory), SSD(solid state drives), 또는 HDD(hard disk drives)을 포함할 수 있는, 로컬 스토리지(120)는 입력 버퍼(124)에 있는 중간 데이터(122)를 수집할 수 있다. 입력 버퍼(124)는 프리-프로세싱 클라이언트(114)들 중 어느 하나에 전용인 로컬 스토리지(120)의 특정 부분일 수 있다. 로컬 스토리지(120)는 프리-프로세싱 클라이언트(114)들 중에서 할당될 수 있고 그리고 포스트-프로세싱 클라이언트(116)들 사이에서 공유될 수 있는 데이터 교환 플랫폼을 제공하기 위해 사용되는 공유 스토리지 구조일 수 있다. 입력 버퍼(124)는 프리-프로세싱 클라이언트(114)들 중 하나에 의한 사용을 위해 할당된, 중간 데이터(122)를 저장하기 위한 로컬 스토리지(120)의 일부일 수 있다. 로컬 스토리지(120)는 프리-프로세싱 클라이언트(114)들에 의해 처리된 중간 데이터(122)를 홀드(hold)할 수 있는, 모든 입력 버퍼(124)들에 각 포스트-프로세싱 클라이언트(116) 액세스를 제공할 수 있다.
마스터 컨트롤러(104)는 사용자 프로그램(102)의 필요에 기초하여 추가적인 프로세싱을 위해 로컬 스토리지(120)를 통해 포스트-프로세싱 클라이언트(116)들에 중간 데이터(122)를 셔플(shuffle)할 수 있다. 포스트-프로세싱 클라이언트(116)들은 그것들의 제한된 할당을 처리된 데이터(119)를 생성하기 위해 실행한다. 처리된 데이터(119)는 포스트-프로세싱 클라이언트(116)들 중 어느 하나에 의해 생성된 출력 파일(118)들의 일부일 수 있다. 포스트-프로세싱 클라이언트(116)들로부터 처리된 데이터(119)의 모음(compilation)은 출력 파일(118)들을 형성할 수 있다.
마스터 컨트롤러(104)는 사용자 프로그램(110)의 효율적인 실행을 제공하기 위해 입력 데이터(102)의 결정 맵핑과 프리-프로세싱 클라이언트(114)들을 제공할 수 있는 것으로 이해될 것이다. 마스터 컨트롤러(104)는 맵핑이 하드웨어 고장 또는 시스템 성능 저하 때문에 변화될 때마다 입력 데이터(110)의 결정 맵핑을 업데이트할 수 있다. 프리-프로세싱 클라이언트(114)들 각각은 입력 데이터(110)의 할당된 스플릿(112)에 대해 특정한 작업을 수행할 수 있다. 중간 데이터(122)의 셔플의 조정 및 포스트-프로세싱 클라이언트(116)들의 실행은 마스터 컨트롤러(104)에 의해 조정될 수 있다. 마스터 컨트롤러(104)는 전자 시스템(100)에 의한 효율적인 실행을 유지하기 위해 정적(static) 프리-페치 힌트들을 생성하기 위해 사용자 프로그램(102)의 코드 분석 및 DAG(directed acyclic graph)를 이용할 수 있다. 마스터 컨트롤러(104)는 중간 데이터(122)가 시기 적절하게 포스트-프로세싱 클라이언트(116)들에게 이용 가능한지를 추정할 수 있는 동적(dynamic) 프리-페치 힌트들을 생성하기 위해 프리-프로세싱 클라이언트(114)들 및 포스트-프로세싱 클라이언트(116)들의 실행의 모니터링과 프로파일링을 이용할 수 있다.
전자 시스템(100)은 포스트-프로세싱 클라이언트(116)들로의 중간 데이터(122)의 이동뿐만 아니라 프리-프로세싱 클라이언트(114)들로의 입력 데이터(110)의 스플릿(112)들의 이동을 조정하기 위해 정적 프리-페칭 힌트들 및 동적 프리-페칭 힌트들을 이용할 수 있다. 정적 프리-페칭 힌트들 및 동적 프리-페칭 힌트들을 생성하기 위해 전자 시스템(100)에 의해 사용되는 메커니즘은 도 2를 참조하여 더 설명될 것이다.
도 2는 실시 예에 따른 데이터 관리 메커니즘을 구비하는 전자 시스템(100)의 기능적인 블록도를 보여준다. 데이터 관리 메커니즘을 구비하는 전자 시스템(100)의 기능적인 블록도는 클러스터 매니저 또는 조정 컨트롤러(coordinating controller)와 같은, 마스터 컨트롤러(104)에 대한 실행 컨텍스트(202)를 제공하는 사용자 프로그램(102)을 묘사한다. 실행 컨텍스트(202)는 사용자 프로그램(102)의 실행에 적용하는 요구 리스트(list of requirement)들을 포함할 수 있다. 실행 컨텍스트(202)는 사용자 프로그램(102) 내부의 루틴 실행 순서를 지정할 수 있다. 마스터 컨트롤러(104)는 클러스터 노드(204)들 중에서 사용자 프로그램(102)을 분석하기 위해 실행 컨텍스트(202)의 필요에 기초하여 프리-프로세싱 클라이언트(114)들 또는 포스트-프로세싱 클라이언트(116)들 중 하나로서 클러스터 노드(204)를 할당할 수 있다.
마스터 컨트롤러(104)는 전용 유선 버스, 다중 연결 버스, 네트워크 버스, 또는 무선 네트워크 연결과 같은, 통신 버스(206)를 통해 클러스터 노드(204)와 통신할 수 있다. 마스터 컨트롤러(104)는 클러스터 노드(204)를 프리-프로세싱 클라이언트(114)들 또는 포스트-프로세싱 클라이언트(116)들로서 제한 작업에 할당할 수 있고 그리고 제한 작업의 실행의 진행을 모니터링할 수 있다. 통신 버스(206)는 클러스터 노드(204)와 마스터 컨트롤러(104) 사이의 할당, 상태, 및 힌트들을 전달하기 위한 양방향 버스일 수 있다. 통신 버스(206)의 실시 예들은 통신 프로토콜을 가지는 네트워크, 또는 마스터 컨트롤러(104)에 의해 기입 및 독출될 수 있는 클러스터 노드(204)의 전용 레지스터 포트를 포함할 수 있다.
마스터 컨트롤러(104)의 실행 트래커 유닛(208)은 프리-프로세싱 클라이언트(114)들 및 포스트-프로세싱 클라이언트(116)들에 의한 사용자 프로그램(102)의 실행 상태를 모니터링할 수 있다. 실행 트래커 유닛(208)은 실행 컨텍스트(202)에 따라 사용자 프로그램(102)의 실행에 관한 상태 및 일반 성능 데이터(general performance data)를 제공하기 위해 프리-페칭 커맨더 유닛(210)과 연결될 수 있다. 실행 트래커 유닛(208)은 실행 컨텍스트(202)를 모니터하기 위한 프로그램 그래프를 구성할 수 있고 그리고 도 1의 로컬 스토리지(120)의 입출력 대역폭 사용을 최소화하기 위한 프리-페칭 힌트들을 구성하도록 프리-페칭 커맨더 유닛(210)에 지시할 수 있다. 프리-페칭 커맨더 유닛(210)은 프리-프로세싱 클라이언트(114)들 및 포스트-프로세싱 클라이언트(116)들에 의한 사용자 프로그램(102)의 실행에 기초하여 정적 프리-페칭 힌트들 및 동적 프리-페칭 힌트들을 제공할 수 있다.
각 클러스터 노드(204)는 프로세서, 임베디드 프로세서, 마이크로-프로세서, 또는 서버와 같은, 마스터 컨트롤러(104)에 할당된 사용자 프로그램(102) 부분을 실행하는 것으로서의 노드 실행 엔진(214)에 연결될 수 있고 그리고 노드 실행 엔진(214)의 상태를 유지할 수 있는 노드 모니터 유닛(212)을 포함할 수 있다. 노드 모니터 유닛(212)은 노드 프리-페치 엔진(216)을 통지하기 위해 캐시-레벨 객체(granularity)에서의 작업 진행을 추적할 수 있다. 노드 모니터 유닛(212)은 노드 스토리지 엔진(218)에 위치하는 캐시의 오버-러닝(over-running)(thrashing)을 방지하기 위해 최적의 프리-페칭 거리를 결정할 수 있다. 노드 프리-페치 엔진(216)은 도 1의 입력 데이터(110)의 스플릿(112)들을 검색하기 위해 노드 스토리지 엔진(218)을 구동할 수 있다. 노드 스토리지 엔진(218)은 온-보드 캐시 메모리, 실행 메모리, 상태 메모리, 또는 그것들의 조합을 포함할 수 있다. 노드 스토리지 엔진(218)은 또한 클러스터 노드(204)를 로컬 스토리지(120)에 연결하기 위한 스토리지 인터페이스를 포함할 수 있다.
노드 프리-페치 엔진(216)은 캐시 오염 및 명령 정지를 방지하기 위해 캐시-레벨 프리-페치 힌트들 및 메모리-레벨 프리-페치 힌트들을 생성하기 위해 노드 모니터 유닛(212), 프리-페칭 커맨더 유닛(210), 및 실행 트래커 유닛(208)으로부터의 입력이 수신되는 하드웨어 상태 머신, 순차 논리 프로세서, 소프트웨어 또는 조합 논리일 수 있다.
노드 스토리지 엔진(218)은 사용자 프로그램(102)으로부터 분석되는 실행 컨텍스트(202)에 기초하여 마스터 컨트롤러(104)에 의해 초기화될 수 있다. 프리-페칭 커맨더 유닛(210)은 실행 컨텍스트(202)의 DAG(directed acyclic graph)에 기초하여 노드 프리-페치 엔진(216)에 초기 정적 프리-페칭 힌트들을 전송할 수 있다. 사용자 프로그램(102)의 실행 동안, 노드 프리-페치 엔진(216)은 동적 프리-페칭 힌트들을 생성하기 위해실행 트래커 유닛(208), 프리-페칭 커맨더 유닛(210), 및 노드 모니터 유닛(212)으로부터 업데이트들을 수신할 수 있다. 노드 스토리지 엔진(218)은 프리-프로세싱 클라이언트(114)들 또는 포스트-프로세싱 클라이언트(116)들로서의 클러스터 노드(204)의 할당에 따라 도 1의 중간 데이터(122) 또는 도 1의 처리된 데이터(119)를 기입할 수 있다.
입력 데이터(110), 중간 데이터(122), 및 처리된 데이터(119)는 분산 클러스터 컴퓨팅 환경에 있는 모든 프리-프로세싱 클라이언트(114)들 및 포스트-프로세싱 클라이언트(116)들에 접근 가능한 네트워크 부착 스토리지 시스템, RAID(rando, array of independent disks), DASD(direct attach storage devices), 또는 계층 스토리지 장치들과 같은, 로컬 또는 원격 스토리지(120)에서 유지될 수 있음을 이해할 수 있을 것이다. 마스터 컨트롤러(104)는 출력 파일(118)을 형성하는 스플릿(112)들, 중간 데이터(122), 및 처리된 데이터(119)를 위한 저장 용량을 할당할 책임이 있다.
전자 시스템(100)의 실시 예는 노드 프리-페치 엔진(216)으로 전달되는 정적 프리-페칭 힌트들을 수립(establish)하고 조정하기 위해 실행 트래커 유닛(208) 및 프리-페칭 커맨더 유닛(210)을 이용할 수 있다. 노드 프리-페치 엔진(216)은 노드 모니터 유닛(212), 실행 트래커 유닛(208), 및 프리-페칭 커맨더 유닛(210)으로부터의 입력에 기초하여 동적 프리-페칭 힌트들을 생성할 수 있다. 모든 프리-프로세싱 클라이언트(114)들 및 포스트-프로세싱 클라이언트(116)들을 가로질러 로컬 스토리지(120)로의 접근을 조정하는 능력은 입출력 인터페이스를 간소화할 수 있고 그리고 전자 시스템(100)의 실행 효율성을 극대화할 수 있다.
도 3은 실시 예에 따른 데이터 관리 메커니즘을 구비하는 전자 시스템(100)의 예시적인 타이밍도(301)를 보여준다. 데이터 관리 메커니즘을 구비하는 전자 시스템(100)의 예시적인 타이밍도는 RAID 시스템, NAS(network attached storage), 또는 SAN(storage area network)와 같은, 분산 스토리지 장치(302)에 저장된 입력 데이터(110)를 포함할 수 있다. 도 1의 마스터 컨트롤러(104)는 작업자 0(114)으로서 식별되는 프리-프로세싱 클라이언트(114)들 중 하나에 할당되는 도 1의 스플릿(112)을 할당할 수 있다. 마스터 컨트롤러(104)는 도 2의 노드 스토리지 엔진(218) 내의 로컬 스토리지(120) 및 캐시(306) 사이의 제 1 전송(304)을 야기하는 정적 프리-페칭 힌트들을 제공할 수 있다.
프리-프로세싱 클라이언트(114)들이 도 1의 사용자 프로그램(102)의 그것들의 부분을 실행하기 때문에, 도 2의 노드 프리-페칭 엔진(216)은 마스터 컨트롤러(104)에 의해 할당된 주어진 작업에 대한 데이터 로드(load) 패턴을 프로파일하기 위해 데이터-로드 시퀀스 테이블(미도시)을 구성할 수 있는, 노드 모니터 유닛(212)에 응답할 수 있다. 노드 모니터 유닛(212)은 제 1 전송(304)에 대한 실행 패턴을 식별할 수 있다. 일단 노드 모니터 유닛(212)이 데이터-로드 시퀀스 테이블을 완료하면, 노드 프리-페칭 엔진(216)은 제 1 전송(304)으로부터의 데이터가 활성화되자마자 그리고 중간 데이터(122)가 입력 버퍼(124)에 기입되기 전에 제 2 전송(308)을 트리거하기 위해 노드 스토리지 엔진(218)에 동적 프리-페칭 힌트들을 제공할 수 있다. 사용자 프로그램(102)의 실행동안 데이터 프리-페칭의 이 파이프라이닝은 로컬 스토리지(120)에서 입출력 병목현상을 만들지 않고 스루풋을 강화할 수 있다.
스플릿(112)이 프리-프로세싱 클라이언트(114)들을 통해 처리되기 때문에, 마스터 컨트롤러(104)는 입력 데이터(110)와 함께 분산 스토리지(302)에서 로컬 스토리지(120)로 스토리지 레벨 프리-페칭을 초기화할 수 있다. 프리-페칭을 위한 적절한 데이터 세트는 아래의 수학식에 의해 식별될 수 있다.
[수학식] Pre-fetch DS = a+(k*m)+1
여기에서 "m"은 반복 횟수, "i"는 데이터 세트를 필요로 하는 계산 횟수, "a"는 데이터 세트들의 준비를 위한 선행-계산 횟수, 그리고 "k"는 각 반복에 대해 요구되는 데이터 세트들의 수이다. 마스터 컨트롤러(104)가 도 1의 반복적인 작업(106)들에 대해 요구되는 반복 횟수, 그리고 각 반복에 대해 요구되는 데이터 세트들의 수를 알고 있기 때문에, 로컬 스토리지(120)에 입력 데이터(110)의 작업-레벨 프리-페칭을 초기화할 수 있다.
프리-프로세싱 클라이언트(114)들은 캐시-레벨 프리-페칭을 위해 레지스터 기반 프리-페치 컨트롤 및 메모리-레벨 프리-페칭을 위해 카운터 기반(생산자-소비자) 프리-페치 컨트롤로써 노드 프리-페칭 엔진(216)을 구현할 수 있다. 노드 프리-페칭 엔진(216)의 실시 예는 아직 처리되지 않은 데이터를 우연히 이빅트(evict)할 수 있는, 메모리 레벨 캐시(306)로 너무 많은 데이터를 가져오지 않고 고속 프리-페칭을 제공할 수 있다. 노드 프리-페칭 엔진(216)은 스플릿(112)의 캐시-라인 위치들에 대한 스트라이더(strider) 거리를 세팅하는 것에 따른 스트라이더 프리페칭 알고리즘에 의해 캐시-라인 프리페칭을 초기화할 수 있다.
도 4는 실시 예에 따른 예시적인 스토리지 계층(401)을 보여준다. 예시적인 스토리지 계층(401)은 RAID 시스템, NAS, 또는 SAN과 같은, 분산 스토리지 구조(402)를 도시한다. 로컬 스토리지 구조는 HDD(404), 저속 SSD(406), 고속 SSD(408), 및 셀당 1비트를 저장하는 솔리드 스테이트 메모리(410)를 포함할 수 있다.
도 2의 클러스터 노드(204)의 레지던트 메모리는 셀당 멀티 비트를 저장하는 솔리드 스테이트 메모리(412), 원격 DRAM(414), 및 로컬 DRAM(416)을 포함할 수 있다. 스토리지 계층(401)의 가장 빠른 메모리는 캐시(306)이다. 도 2의 실행 트래커 유닛(208) 및 도 2의 노드 프리-페칭 엔진(216)을 가지는, 도 1의 마스터 컨트롤러(104)의 조합, 및 도 2의 노드 모니터 유닛(212) 및 노드 프리-페칭 엔진(216)을 가지는, 도 2의 클러스터 노드(204)는 입출력 인터페이스의 전체적인 성능과 도 1의 프리-프로세싱 클라이언트(114)들 및 도 1이 포스트-프로세싱 클라이언트(116)들의 조정에 기초하여 정적 프리-페칭 힌트들 및 동적 프리-페칭 힌트들을 생성하기 위한 효율적인 메커니즘을 구현할 수 있다.
도 5는 실시 예에 따른 데이터 관리 메커니즘을 구비하는 전자 시스템(100)의 예시적인 스토리지 타이밍도(501)를 보여준다. 예시적인 스토리지 타이밍도(501)는 도 4의 분산 스토리지 구조(402)에 홀드(hold)된, 스플릿(112)이 제 1 데이터 블록(502) 및 제 2 데이터 블록(504)을 가질 수 있음을 도시한다.
제 1 데이터 블록(502) 및 제 2 데이터 블록(504) 각각은 많은 캐시 페이지 로드들(506)을 포함할 수 잇다. 도 1의 마스터 컨트롤러(104)는 도 2의 클러스터 노드(204)로 전달되는 정적 프리-페칭 힌트들에 의해 스토리지-레벨 프리-페치(508)를 야기할 수 있다. 스토리지-레벨 프리-페치(508)는 도 1의 사용자 프로그램(102)의 할당된 부분을 실행하기 위한 준비로 제 1 데이터 블록(502)을 도 4의 분산 스토리지(402)에서 로컬 스토리지(120)로 전달할 수 있다. 스토리지-레벨 프리-페치(508)의 그 다음의 일은 제 2 데이터 블록(504)을 분산 스토리지(402)에서 로컬 스토리지(120)로 전달하기 위해 동적 프리-페칭 힌트들로서 도 2의 프리-페칭 커맨더 유닛(210)에 의해 초기화될 수 있다. 로컬 스토리지(120)는 도 4의 HDD(404), 도 4의 저속 SSD(406), 도 4의 고속 SSD(408), 및 클러스터 노드(204) 내에 포함되지 않는 셀당 1비트를 저장하는 도 4의 솔리드 스테이트 메모리(410)를 포함할 수 있다.
데이터 블록들의 수가 다를 수 있음을 이해할 수 있을 것이다. 단지 제 1 데이터 블록(502) 및 제 2 데이터 블록(504)이 논의의 명료함을 위해 도시되었다. 추가 데이터 블록들(미도시)의 어떠한 추가적인 전달들도 제 2 데이터 블록(504)에 대해 기술된 것과 같이 동작할 수 있다.
제 1 데이터 블록(502)이 로컬 스토리지 블록(406)에 재배치되면, 도 2의 노드 프리-페칭 엔진(216)이 노드 스토리지 엔진(218)에 포함될 수 있는, 로컬 DRAM(416)으로 제 1 데이터 블록(502)을 로드하기 위해 도 2의 노드 스토리지 엔진(218)에 정적 프리-페칭 힌트(510)를 발행할 수 있다. 로컬 스토리지(120) 및 로컬 DRAM(416) 사이의 전송은 클러스터 노드(204)에 제공되는 로컬 DRAM(416)의 용량에 따라, 제 1 데이터 블록(502) 또는 그것의 일부를 로드할 수 있다. 노드 스토리지 엔진(218)은 로컬 스토리지(406)보다 빠르고 그리고 셀당 멀티 비트를 저장하는 도 4의 솔리드 스테이트 메모리(412) 또는 도 4의 원격 DRAM(414)와 같은, 클러스터 노드(204)에 여전히 이용 가능한 다른 메모리 레벨에 있는 제 1 데이터 블록(502)의 일부를 로드하는 것을 결정할 수 있다. 더 빠른 메모리 구조로의 제 1 데이터 블록(502)의 이동은 클러스터 노드(204)들 중 하나 이상에 의해 접근될 수 있고, 그리고 노드 프리-페칭 엔진(216)에 의해 생성되는, 메모리-레벨 프리-페칭과 같은, 동적 프리-페칭 힌트(512)들의 타이밍에 있어서의 더 큰 유연성을 허용할 수 있는 로컬 스토리지(120) 상에서의 입출력 대역폭 요구를 감소시킬 수 있다.
노드 프리-페칭 엔진(216)은 클러스터 노드(204) 내의 도 3 및 도 4의 캐시(306)로 하나 이상의 캐시 페이지 로드(506)들을 이동하기 위해 노드 스토리지 엔진(218)에 대한 캐시-레벨 프리-페칭 힌트(514)를 생성할 수 있다. 캐시(306)는 노드 스토리지 엔진(218) 내에 위치될 수 있다. 캐시로 로드되는 캐시 페이지 로드(506)들의 수는 도 1의 사용자 프로그램(102)의 실행 실행에 있어서의 클러스터 노드(204)의 전체적인 성능에 의존할 수 있다. 노드 프리-페칭 엔진(216)은 도 1의 중간 데이터(122) 또는 도 1의 처리된 데이터(119)가 되기 위해 처리되는 캐시 페이지 로드(506)들 내의 데이터로서 추가적인 동적 프리-페칭 힌트(512)들을 생성할 수 있다. 동적 프리-페칭 힌트(512)들의 생성은 사용자 프로그램(102)의 실행을 통해 계속 이어진다.
도 6은 실시 예에 따른 프리-페칭 힌트 생성 메커니즘(601)의 예시적인 흐름도를 보여준다. 프리-페칭 힌트 생성 메커니즘(601)의 예시적인 흐름도는 입력 파일(110)을 스플릿(112)들로 나눌 수 있고 그리고 스플릿(112)들을 도 1의 프리-프로세싱 클라이언트(114)들로 전달할 수 있는, 분석 프로세스(602)를 통해 진행할 수 있는 입력 파일(110)을 도시한다. 설명의 편의를 위해, 도 2의 클러스터 노드(204) 중 하나의 프로세스가 예시로서 PageRank ™을 사용하는 것에 의해 분석될 수 있다.
예시로서, PageRank ™는 얼마나 많은 링크들이 웹 페이지로 향하는지 그리고 얼마가 웹 페이지로부터 멀어지는지를 모니터링 하는 것에 의해 웹 페이지들의 인기를 반복적으로 평가할 수 있다. 웹 페이지의 인기가 무빙 타겟(moving target)이기 때문에, 프로세스는 링크된 모든 다른 웹 페이지들과 연관되는 것으로서의 웹 페이지의 현재 인기도를 나타내는 Contribs(n)(616), 그리고 모든 웹 페이지들에 대한 그것의 현재 인기도에 기초하여 그 웹 페이지에 랜딩할 가능성인 rank(n)(608)로 나누어진다. 속도가 중요하기 때문에 계산의 효율성은 웹 페이지 컨텐츠의 전달에 직접적으로 영향을 받는다.
스플릿(112)들 중 하나는 실행을 위해 프리-프로세싱 클라이언트(114)들 중 하나에 맵핑될 수 있다. 맵핑은 스플릿(112)들의 실행 동안 프리-프로세싱 클라이언트(114)들 중 하나의 성능 및 타이밍을 조정하기 위해 초기 실행 프로그레스(606)을 생성하기 위해 모니터 및 프로파일 모듈(604)을 초기화할 수 있다. 프리-프로세싱 클라이언트(114)들은 프리- 프로세싱 클라이언트(114)들 중 하나에 할당된 도 1의 사용자 프로그램(102)의 일부의 단일 실행일 수 있는, ranks(n)(608)에 의해 표시된 특정 작업을 반복적으로 실행하기 위해 할당된다.
초기 실행 프로그레스(606)는 기대된 실행 타이밍(610)이 프리페칭 힌트 모듈(612)로 지나가도록 하기 위해 모니터 및 프로파일 모듈(604)에 의해 사용될 수 있다. ranks(n)(608)의 일관된 실행에 기초하여, 프리페칭 힌트 모듈(612)은 ranks(n)(608)의 효율성을 개선할 수 있는 캐시-레벨 힌트(614)들을 적절한 시기에 제공하는 것에 의해 스플릿(112)들로의 접근들을 예상할 수 있다.
contribs(n)(616)은 ranks(n)(608)을 실행하는 프리-프로세싱 클라이언트(114)들 중 하나의 출력 프로세스일 수 있다. contribs(n)(616)은 도 1의 중간 데이터(122)를 도 1의 로컬 스토리지(120)로 전송하고 그리고 스플릿(112)들의 프로세싱을 계속하기 위해 ranks(n)(608)의 그 다음 하나에 제어를 전달할 수 있다.
동일한 프로세스가 도 1의 포스트-프로세싱 클라이언트(116)들에 적용될 수 있음을 이해할 수 있을 것이다. contribs(n)(616)는 도 1의 처리된 데이터(119)를 제공할 수 있고 그리고 프로세싱을 계속하기 위해 ranks(n)(608)의 그 다음 하나에 제어를 전달할 수 있다. 모니터 및 프로파일 모듈(604)의 실행은 프리-프로세싱 클라이언트(114)들 및 포스트-프로세싱 클라이언트(116)들 모두에 대해 동일할 수 있다.
모니터 및 프로파일 모듈(604)이 프리페칭 힌트 모듈(612)에 대한 기대된 실행 타이밍(610)을 생성하기 위해 ranks(n)(606)의 실행 패턴을 결정할 수 있음을 알 수 있다. 캐시-레벨 힌트(614)들의 결과로서의 타이밍은 사용자 프로그램(102)의 실행을 개선할 수 있다.
정적 프리-페칭 힌트들과 같은, 초기 실행 프로그레스(606)는 정적 프리-페칭 힌트들에 의해 표시되는 실행의 프로파일을 매치하기 위해 특징지어질 수 있는, 정적 프리-페칭 힌트들과 같은, 캐시-레벨 힌트(614)들을 생성하기 위해 모니터링 및 프로파일될 수 있다. 동적 프리-페칭 힌트들의 생성은 프리-프로세싱 클라이언트(114)들 및 포스트-프로세싱 클라이언트(116)들의 성능의 모니터링 및 메모리-레벨 프리-페칭을 지원하는 결정 작업 스케쥴링 프로세스(deterministic task scheduling process)에 서로 얼마나 연관되어 있는지에 기초할 수 있다.
도 7은 본 발명의 다른 실시 예에 따른 전자 시스템(100)의 동작 방법의 흐름도를 보여준다. 동작 방법은 마스터 컨트롤러가 실행 트래커 유닛에 의해 사용자 프로그램의 실행을 모니터링하고 그리고 실행 트래커 유닛과 연결되는 프리페칭 커맨더 유닛에 의해 프리-페칭 힌트를 생성하는 단계 S110를 제공한다. 동작 방법은 마스터 컨트롤러와 연결되고, 프리-프로세싱 클라이언트로서의 클러스터 노드를 구성하는 단계 S120을 제공한다. 동작 방법은 클러스터 노드와 연결된 로컬 스토리지에 사용자 프로그램에 대한 입력 데이터를 저장하는 단계 S130을 제공한다. 동작 방법은 마스터 컨트롤러에 의해 프리-프로세싱 클라이언트들로 전송된 프리-페칭 힌트에 기초하여 로컬 스토리지로부터의 입력 데이터의 스플릿을 프리-페치하는 단계 S140을 제공한다.
동작 방법은 로컬 스토리지에 접근하기 위해 노드 프리-페치 엔진에 의해 노드 스토리지 엔진을 관리하는 단계를 더 포함할 수 있다. 프리-프로세싱 클라이언트를 구성하는 단계는, 노드 실행 엔진에 의해 사용자 프로그램을 실행하고, 노드 실행 엔진과 연결되는 노드 모니터 유닛에 의해 사용자 프로그램의 상태를 모니터링하고, 그리고 노드 모니터 유닛과 연결되는 노드 프리-페치 엔진에 의해 노드 스토리지 엔진에 메모리-레벨 프리-페칭 힌트를 전송하는 단계를 더 포함할 수 있다. 사용자 프로그램의 실행을 모니터링하는 단계는, 캐시 및 로컬 메모리를 가지는 노드 스토리지 엔진에 의해 메모리-레벨 프리-페칭을 수행하는 단계를 더 포함할 수 있다. 프리-프로세싱 클라이언트를 구성하는 단계는, 노드 실행 엔진에 의해 실행된 과제 행동(task behavior)을 모니터링하고 프로파일링하고 그리고 로컬 DRAM에서 캐시로 캐시 페이지 로드를 로드하기 위한 캐시-레벨 프리-페칭 힌트를 생성하는 단계를 더 포함할 수 있다.
동작 방법은 마스터 컨트롤러가 포스트-프로세싱 클라이언트로 전송한 프리-페칭 힌트들에 기초하여 로컬 스토리지로부터 임시 데이터를 프리-페칭하는 단계를 더 포함할 수 있다. 동작 방법은 실행 트래커 유닛에서 프로그램 그래프를 구성하는 것에 의해 프로그램 컨텍스트를 모니터링하고 그리고 프리-페칭 힌트들을 전송하기 위해 프리-페칭 커맨더 유닛에 알려주는 단계를 더 포함할 수 있다. 동작 방법은 스플릿의 전송에 대한 로컬 스토리지의 입출력 병목을 로컬 DRAM 및 캐시를 가지는 노드 스토리지 유닛을 포함하는 프리-프로세싱 클라이언트에 의해 감소시키는 단계를 더 포함할 수 있다. 동작 방법은 마스터 컨트롤러로부터 프리-페칭 힌트를 수신하는 포스트-프로세싱 클라이언트로서 구성되는 클러스터 노드에 의해 로컬 스토리지로부터 중간 데이터의 프리-페칭을 트리거하는 단계를 더 포함할 수 있다. 동작 방법은 마스터 컨트롤러와 연결되고, 처리된 데이터를 전송하기 위한 노드 스토리지 유닛을 포함하는 포스트-프로세싱 클라이언트로서 구성되는 클러스터 노드를 포함하는 로컬 스토리지의 출력 파일에 처리된 데이터를 전송하는 단계를 더 포함할 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 제한하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
100: 전자 시스템 102: 사용자 프로그램
104: 마스터 컨트롤러 108: 클러스터 노드
110: 입력 데이터 112: 스플릿
114: 프리-프로세싱 클라이언트 116: 포스트-프로세싱 클라이언트
118: 출력 파일 120: 로컬 스토리지
122: 중간 데이터 124: 입력 버퍼
202: 실행 컨텍스트 204: 클러스터 노드
206: 통신 버스 208: 실행 트래커 유닛
210: 프리-페칭 커맨더 유닛 212: 노드 모니터 유닛
214: 노드 실행 엔진 216: 노드 프리-페치 엔진
218: 노드 스토리지 엔진 302: 분산 스토리지 장치
306: 캐시 402: 분산 스토리지 구조
404: HDD 406: 저속 SSD
408: 고속 SSD
410: 싱글 레벨 셀 솔리드 스테이트 메모리
412: 멀티 레벨 셀 솔리드 스테이트 메모리
414, 416: DRAM 502: 제 1 데이터 블록
504: 제 2 데이터 블록 506: 캐시 페이지 로드
508: 스토리지-레벨 프리-페치 510: 정적 프리-페칭 힌트
512: 동적 프리-페칭 힌트 514: 캐시-레벨 프리-페칭 힌트
602: 분석 프로세스 604: 모니터 및 프로파일 모듈
606: 초기 실행 프로그레스

Claims (10)

  1. 분산 클러스터 컴퓨팅 환경에서의 데이터 프로세싱을 위한 전자 시스템으로서,
    사용자 프로그램의 실행을 모니터링하고, 상기 사용자 프로그램의 실행 동안 프리-프로세싱 클라이언트들을 관리하고, 그리고 상기 사용자 프로그램의 실행에 기초하여 프리-페칭 힌트를 생성하도록 구성되는 마스터 컨트롤러;
    상기 마스터 컨트롤러와 연결되고, 상기 프리-프로세싱 클라이언트들 중 하나가 되도록 구성되는 클러스터 노드; 그리고
    상기 클러스터 노드와 연결되고, 상기 사용자 프로그램에 대한 입력 데이터를 저장하도록 구성되는 로컬 스토리지를 포함하되,
    상기 마스터 컨트롤러는 상기 프리-페칭 힌트에 기초하여 상기 로컬 스토리지로부터의 입력 데이터의 스플릿(split)을 프리-페치하기 위해 상기 프리-페칭 힌트를 상기 프리-프로세싱 클라이언트로 전송하는 전자 시스템.
  2. 제 1 항에 있어서,
    상기 클러스터 노드는 노드 프리-페치 엔진에 의해 관리되고, 상기 로컬 스토리지에 접근하고 그리고 상기 프리-페칭 힌트에 기초하여 상기 스플릿을 프리-페치하도록 구성되는 노드 스토리지 엔진을 포함하는 전자 시스템.
  3. 제 1 항에 있어서,
    상기 마스터 컨트롤러와 연결되고, 상기 마스터 컨트롤러로부터의 상기 프리 -페칭 힌트에 기초하여 상기 로컬 스토리지로부터 중간 데이터(interim data)를 프리-페치하도록 구성되는 포스트-프로세싱 클라이언트를 더 포함하는 전자 시스템.
  4. 제 1 항에 있어서,
    상기 마스터 컨트롤러는,
    프로그램 그래프를 구성하는 것에 의해 프로그램 컨텍스트를 모니터링하고, 그리고 상기 프리-페칭 힌트를 전송하기 위해 프리-페칭 커맨드 유닛에 알려주도록 구성되는 실행 트래커 유닛을 포함하는 전자 시스템.
  5. 제 1 항에 있어서,
    상기 클러스터 노드는,
    상기 사용자 프로그램을 실행하고, 상기 사용자 프로그램의 상태를 유지하며, 그리고 메모리-레벨-프리-페칭 힌트를 노드 스토리지 엔진으로 전송하는 전자 시스템.
  6. 제 1 항에 있어서,
    상기 클러스터 노드는,
    캐시 및 로컬 메모리를 포함하며, 노드 모니터 유닛으로부터의 입력에 기초하여 메모리-레벨 프리-페칭을 수행하도록 구성되는 노드 스토리지 엔진을 포함하는 전자 시스템.
  7. 제 1 항에 있어서,
    상기 프리-프로세싱 클라이언트는,
    노드 프리-페치 엔진에 연결되며, 노드 실행 엔진에 의해 실행되는 과제 행동(task behavior)을 모니터링 및 프로파일하고 그리고 캐시 페이지 로드들을 로컬 DRAM(dynamic random access memory)으로부터 캐시로 로드하기 위해 캐시-레벨-프리-페칭 힌트를 생성하도록 구성되는 노드 모니터링 유닛을 포함하는 전자 시스템.
  8. 제 1 항에 있어서,
    상기 프리-프로세싱 클라이언트는,
    상기 스플릿이 전송되는 경우 입출력 병목을 감소시키기 위한 캐시와 로컬 DRAM을 가지는 노드 스토리지 유닛을 포함하는 전자 시스템.
  9. 제 1 항에 있어서,
    상기 클러스터 노드는,
    상기 마스터 컨트롤러와 연결되고, 상기 로컬 스토리지로부터 중간 데이터의 프리-페칭을 트리거하는 프리-페칭 힌트를 포함하는 포스트-프로세싱 클라이언트로서 구성되는 전자 시스템.
  10. 제 1 항에 있어서,
    상기 클러스터 노드는,
    상기 마스터 컨트롤러와 연결되고, 상기 로컬 스토리지에 있는 출력 파일에 처리된 데이터를 전송하도록 구성되는 노드 스토리지 유닛을 포함하는 포스트-프로세싱 클라이언트로서 구성되는 전자 시스템.
KR1020150186412A 2014-12-31 2015-12-24 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법 KR102577247B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462099075P 2014-12-31 2014-12-31
US62/099,075 2014-12-31
US14/747,916 2015-06-23
US14/747,916 US9858191B2 (en) 2014-12-31 2015-06-23 Electronic system with data management mechanism and method of operation thereof

Publications (2)

Publication Number Publication Date
KR20160081815A KR20160081815A (ko) 2016-07-08
KR102577247B1 true KR102577247B1 (ko) 2023-09-11

Family

ID=56164317

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150186412A KR102577247B1 (ko) 2014-12-31 2015-12-24 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9858191B2 (ko)
KR (1) KR102577247B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268521B2 (en) * 2016-01-22 2019-04-23 Samsung Electronics Co., Ltd. Electronic system with data exchange mechanism and method of operation thereof
US10152232B1 (en) * 2016-06-29 2018-12-11 EMC IP Holding Company LLC Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system
US10467195B2 (en) * 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10771584B2 (en) * 2017-11-30 2020-09-08 Cisco Technology, Inc. Provisioning using pre-fetched data in serverless computing environments
US10621099B2 (en) * 2018-06-29 2020-04-14 Intel Corporation Apparatus, method, and system for enhanced data prefetching based on non-uniform memory access (NUMA) characteristics
US11403577B2 (en) * 2020-02-13 2022-08-02 International Business Machines Corporation Assisting and automating workflows using structured log events

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020010838A1 (en) 1995-03-24 2002-01-24 Mowry Todd C. Prefetching hints
US20040064648A1 (en) * 2002-09-26 2004-04-01 International Business Machines Corporation Cache prefetching
US20130031459A1 (en) 2011-07-27 2013-01-31 Behrooz Khorashadi Web browsing enhanced by cloud computing
US20140052927A1 (en) * 2012-08-17 2014-02-20 Advanced Micro Devices, Inc. Data cache prefetch hints
US20140289332A1 (en) 2013-03-25 2014-09-25 Salesforce.Com, Inc. System and method for prefetching aggregate social media metrics using a time series cache

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6971092B1 (en) * 2001-08-24 2005-11-29 Microsoft Corporation System and method for analyzing data accesses of a trace from a computer-executable program to determine data access patterns
US8473688B2 (en) * 2010-03-26 2013-06-25 Microsoft Corporation Anticipatory response pre-caching
US8775775B1 (en) 2011-03-31 2014-07-08 Emc Corporation Dynamic prefetch throttling for multi-controller systems
CN111614980B (zh) 2012-08-14 2022-04-12 俄亥俄州立创新基金会 用于通过移动设备来优化网络带宽的使用的系统和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020010838A1 (en) 1995-03-24 2002-01-24 Mowry Todd C. Prefetching hints
US20040064648A1 (en) * 2002-09-26 2004-04-01 International Business Machines Corporation Cache prefetching
US20130031459A1 (en) 2011-07-27 2013-01-31 Behrooz Khorashadi Web browsing enhanced by cloud computing
US20140052927A1 (en) * 2012-08-17 2014-02-20 Advanced Micro Devices, Inc. Data cache prefetch hints
US20140289332A1 (en) 2013-03-25 2014-09-25 Salesforce.Com, Inc. System and method for prefetching aggregate social media metrics using a time series cache

Also Published As

Publication number Publication date
US9858191B2 (en) 2018-01-02
KR20160081815A (ko) 2016-07-08
US20160188477A1 (en) 2016-06-30

Similar Documents

Publication Publication Date Title
KR102577247B1 (ko) 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법
Romero et al. Faa $ T: A transparent auto-scaling cache for serverless applications
US10484473B2 (en) Systems and methods for efficient distribution of stored data objects
US9648081B2 (en) Network-attached memory
US10140136B2 (en) Distributed virtual array data storage system and method
US9158687B2 (en) Method and apparatus for processing fast asynchronous streams
CN105103144B (zh) 用于存储器的自适应控制的设备及方法
Kang et al. Enabling cost-effective data processing with smart SSD
US10698829B2 (en) Direct host-to-host transfer for local cache in virtualized systems wherein hosting history stores previous hosts that serve as currently-designated host for said data object prior to migration of said data object, and said hosting history is checked during said migration
Koller et al. Centaur: Host-side ssd caching for storage performance control
US9063786B2 (en) Preferential CPU utilization for tasks
US9280300B2 (en) Techniques for dynamically relocating virtual disk file blocks between flash storage and HDD-based storage
Van Hensbergen et al. Dynamic policy disk caching for storage networking
US20210117333A1 (en) Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host cpu and the host cpu transfers object map identifying object of the data
US11194517B2 (en) Method and apparatus for storage device latency/bandwidth self monitoring
JP2015504541A (ja) マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する方法、プログラム、及びコンピューティング・システム
US20220113915A1 (en) Systems, methods, and devices for accelerators with virtualization and tiered memory
EP4184324A1 (en) Efficient accelerator offload in multi-accelerator framework
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
WO2022050998A1 (en) Pooled memory controller for thin-provisioning disaggregated memory
KR102376477B1 (ko) 데이터 교환 메커니즘을 포함하는 전자 시스템 및 그것의 동작 방법
US20230057633A1 (en) Systems, methods, and apparatus for transferring data between interconnected devices
US9529721B2 (en) Control device, and storage system
Arumugam et al. Virt cache: Managing virtual disk performance variation in distributed file systems for the cloud
US10452546B2 (en) Cache utility modeling for automated cache configuration

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