KR20180027328A - 캐쉬 관리 시스템 및 그것의 데이터 관리 방법 - Google Patents

캐쉬 관리 시스템 및 그것의 데이터 관리 방법 Download PDF

Info

Publication number
KR20180027328A
KR20180027328A KR1020170090446A KR20170090446A KR20180027328A KR 20180027328 A KR20180027328 A KR 20180027328A KR 1020170090446 A KR1020170090446 A KR 1020170090446A KR 20170090446 A KR20170090446 A KR 20170090446A KR 20180027328 A KR20180027328 A KR 20180027328A
Authority
KR
South Korea
Prior art keywords
intermediate data
new
rdd
functions
memory
Prior art date
Application number
KR1020170090446A
Other languages
English (en)
Other versions
KR102191225B1 (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 KR20180027328A publication Critical patent/KR20180027328A/ko
Application granted granted Critical
Publication of KR102191225B1 publication Critical patent/KR102191225B1/ko

Links

Images

Classifications

    • 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/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/188Virtual 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
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0662Virtualisation aspects
    • 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/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • 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/602Details relating to cache prefetching
    • 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/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

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)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 실시 예에 따른 복수의 중간(intermediate) 데이터를 관리하기 위한 캐쉬(cache) 관리 시스템은, 프로세서와 명령들과 복수의 중간 데이터를 저장하는 메모리를 포함할 수 있다. 명령들이 프로세서에 의해 실행될 때, 프로세서는, 액세스(access)될 새로운 중간 데이터를 식별하는 단계, 새로운 중간 데이터를 복수의 중간 데이터 중 하나로 식별하는 것에 응답하여, 메모리로부터 중간 데이터를 로딩하는 단계, 새로운 중간 데이터를 복수의 중간 데이터 중 하나로 식별하지 않는 것에 응답하여, 새로운 중간 데이터의 생성 로직 체인과 적어도 일부가 동일한 가장 긴 중복(duplicate) 생성 로직 체인을 갖는 재사용 가능한 중간 데이터를 식별하는 단계와 재사용 가능한 중간 데이터와 공통점이 없는 새로운 중간 데이터의 생성 로직 체인의 부분과 재사용 가능한 중간 데이터로부터 새로운 중간 데이터를 생성하는 단계를 수행할 수 있다.

Description

캐쉬 관리 시스템 및 그것의 데이터 관리 방법{A CACHE MANAGEMENT SYSTEM AND A METHOD OF MANAGING DATA THEREOF}
본 발명은 컴퓨터 시스템에 관한 것으로, 좀 더 상세하게는 캐쉬 관리 시스템 및 그것의 데이터 관리 방법에 관한 것이다.
아파치(Apache) 스파크(Spark) 프레임워크(framework)는, 대규모로 데이터를 조작하고, 인-메모리(in-memory) 데이터 캐싱(caching), 그리고 연산들 간의 재사용을 위한 기능적인 API(Application Programming Interface)들을 제공하는 분산 데이터 프로세싱을 위한, 일반화된 프레임워크이다. 아파치 스파크 프레임워크는, 구분된 데이터 간의 코스-그레인드(coarse-grained) 변환들의 세트를 적용하고, 실패한 경우에 테스크(task)들을 다시 연산하기 위해 데이터세트(dataset)의 계보(lineage)에 의존한다. 스파크는 RDD(Resilient Distributed Dataset)라고 불리는 데이터 구조에 집중된 어플리케이션 프로그래밍 인터페이스를 프로그래머들에게 제공한다. 또한, 스파크는 결함-허용(fault-tolerant) 방식으로 유지되는 한무리의(cluster) 머신들에 걸쳐 분산된 데이터 아이템들의 읽기 전용 멀티세트(multiset)를 프로그래머들에게 제공한다. 캐싱의 관점으로부터, RDD는 분산된 불변의 데이터(분할된 데이터와 반복자(iterator))와 느리게 평가되는 동작들(변환들)을 나타낸다. RDD는 다음의 특징들을 갖는다. 다른 RDD들은 (바이트 형식의) 다른 크기들을 가질 수 있다. 다른 RDD들의 재생성 시간들은 다를 수 있다. 자식(child) RDD의 재생성 시간은 자식의 부모(parent) RDD(들)이 메모리로부터 제거되면 달라질 수 있다. 그리고, RDD 상의 동작들은 다른 타입들(예를 들어, 변환들, 액션(action)들, 그리고 지속성(persistence))을 갖는다. 가능한 많은 중간 결과들(예를 들어, RDD들)을 장기(long-term) 데이터 스토리지(예를 들어, HDD(Hard Disk Drive)) 대신에 휘발성 메모리 내에 저장함으로써, 스파크는 시스템 성능을 향상시킨다.
하지만, 어느 정도는, 이러한 올-인-메모리(all-in-memory) 설계의 성능은, 유저들(예를 들어, 어플리케이션 개발자들)이 총소요시간(makespan)(즉, 스케쥴되어 있는 모든 잡(job)들을 처리하는데 걸리는 시간의 길이)을 줄이기 위해 일부 RDD들을 재사용할 것을 스파크에게 어떻게 명확히 말하고 하드코드할 지에 달려있다. 사실, 유저들로부터의 RDD 재사용 선언들이 없이, 스파크는 중복된 RDD들과 RDD 동작들을 위한 일시적인 비용(RDD들을 재연산하는)과 공간적인 비용(중복된 RDD를 저장하는)을 모두 지불해야 한다. 이러한 종류의 리소스 낭비는 흔히 데이터베이스 쿼리(query)(예를 들어, 중복된 복잡한 SQL 조건들)와 일부 교차-적용이지만-동일한-로직(cross-application-but-same-logic) 시나리오들 내에서 발생한다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명은 향상된시스템 성능을 갖는 캐쉬 관리 시스템 및 그것의 데이터 관리 방법을 제공할 수 있다.
본 발명의 실시 예에 따른 복수의 중간(intermediate) 데이터를 관리하기 위한 캐쉬(cache) 관리 시스템은, 프로세서와 명령들과 복수의 중간 데이터를 저장하는 메모리를 포함할 수 있다. 명령들이 프로세서에 의해 실행될 때, 프로세서는, 액세스(access)될 새로운 중간 데이터를 식별하는 단계, 새로운 중간 데이터를 복수의 중간 데이터 중 하나로 식별하는 것에 응답하여, 메모리로부터 중간 데이터를 로딩하는 단계, 새로운 중간 데이터를 복수의 중간 데이터 중 하나로 식별하지 않는 것에 응답하여, 새로운 중간 데이터의 생성 로직 체인과 적어도 일부가 동일한 가장 긴 중복(duplicate) 생성 로직 체인을 갖는 재사용 가능한 중간 데이터를 식별하는 단계와 재사용 가능한 중간 데이터와 공통점이 없는 새로운 중간 데이터의 생성 로직 체인의 부분과 재사용 가능한 중간 데이터로부터 새로운 중간 데이터를 생성하는 단계를 수행할 수 있다.
본 발명의 다른 실시 예에 따른 메모리 내에 저장된 복수의 중간 데이터를 관리하는 방법은, 프로세서에 의해, 액세스될 새로운 중간 데이터를 식별하는 단계, 프로세서에 의해, 새로운 중간 데이터를 복수의 중간 데이터 중 하나로 식별하는 것에 응답하여, 메모리로부터 중간 데이터를 로딩하는 단계, 새로운 중간 데이터를 복수의 중간 데이터 중 하나로 식별하지 않는 것에 응답하여, 프로세서에 의해, 새로운 중간 데이터의 생성 로직 체인과 적어도 일부가 동일한 가장 긴 중복 생성 로직 체인을 갖는 재사용 가능한 중간 데이터를 식별하는 단계와 재사용 가능한 중간 데이터와 공통점이 없는 새로운 중간 데이터의 생성 로직 체인의 부분과 재사용 가능한 중간 데이터로부터 새로운 중간 데이터를 생성하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 컴퓨터 시스템의 캐쉬의 캐쉬 히트 비율이 증가하고, 전체 시스템 성능이 향상될 수 있다.
상세한 설명과 함께 첨부된 도면들은 본 발명의 예시적인 실시 예들을 설명하고, 설명들과 함께 본 발명의 원리들을 설명하는 역할을 한다.
도 1은 본 발명의 실시 예들에 따른 캐쉬 매니저를 사용하는 캐쉬 관리 시스템을 보여준다.
도 2는 본 발명의 실시 예들에 따른 캐쉬 매니저를 사용하는 스파크 구조를 보여준다.
도 3은 스파크 프레임워크에서의 메모리 구분들의 예시를 보여준다.
도 4a 및 도 4b는 본 발명의 실시 예들에 따른 RDD(Resilient Distributed Dataset) 룩업(Lookup) 절차의 예시를 보여준다.
도 5는 본 발명의 실시 예들에 따른 RDD 캐싱 정책을 수행하는 프로세스를 설명하는 순서도이다.
도 6은 본 발명의 실시 예들에 따른 캐쉬 매니저에 의해 수행되는 희생자(victim) 선택의 프로세스를 보여준다.
도 7a 내지 도 7c는 본 발명의 실시 예들에 따른 도 6 내에서 제공된 다양한 케이스들을 보여준다.
도 8은 본 발명의 실시 예들에 따른 캐쉬 매니저에 의해 수행되는 RDD 스코어(score) 테이블을 업데이트하는 프로세스를 보여준다.
도 9a 내지 도 9c는 본 발명의 실시 예들에 따른 캐쉬 매니저에 의해 수행되는 중복 제거(deduplication) 프로세스를 보여준다.
도 10은 본 발명의 실시 예들에 따른 RDD 캐싱 정책을 수행하는 프로세스를 보여주는 순서도이다.
도 11은 본 발명의 실시 예들에 따른 캐쉬 매니저에 의해 수행된 생성 체인들을 매칭하는 프로세스를 보여주는 순서도이다.
도 12는 본 발명의 실시 예들에 따른 캐쉬 매니저에 의해 수행된 RDD들을 매칭하는 프로세스를 보여주는 순서도이다.
도 13은 본 발명의 실시 예들에 따른 캐쉬 매니저에 의해 수행된 기능들을 매칭하는 프로세스를 보여주는 순서도이다.
도 14는 본 발명의 실시 예들에 따른 캐쉬 매니저에 의해 수행된 가장 긴 재사용 가능한 체인을 구하는 프로세스를 보여주는 순서도이다.
본 발명의 개념 및 그 실시 방법의 특징은 다음의 실시 예들과 첨부된 도면들의 상세한 설명을 참조하여 용이하게 이해될 수 있다. 이하에서, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 좀 더 자세히 설명될 것이다. 또한, 첨부된 도면들 내의 동일(유사)한 도면 부호는 전체적으로 동일(유사)한 구성 요소를 나타낸다. 그러나, 본 발명은 다양한 형태로 구현될 수 있고, 본 명세서에 기술된 실시 예들에 한정되는 것으로 해석되어서는 안 된다. 오히려, 이러한 실시 예들은 본 명세서의 개시가 철저하고 완전하게 될 수 있도록 예로서 제공되며, 당업자에게 본 발명의 양상들과 특징들을 충분히 전달할 것이다. 따라서, 본 발명의 양상들 및 특징들의 완전한 이해를 위해, 당업자에게 필요하지 않은 프로세스들, 구성요소들, 테크닉들은 설명되지 않을 수 있다. 다른 설명에 없는 한, 동일(유사)한 참조 번호들은 첨부된 도면들과 상세한 설명 전반에 걸쳐 동일(유사)한 구성 요소들을 나타낸다. 따라서, 그것의 설명들은 반복되지 않을 것이다. 도면들에서, 구성 요소들, 레이어들, 영역들의 상대적인 크기들은 명확성을 위해 과장되어 있을 수 있다.
당업자가 이해할 수 있는 바와 같이, 본 발명의 일부 실시 예들이 아파치 스파크 시스템의 맥락에서 설명될 수 있지만, 본 발명의 실시 예들은 이에 한정되지 않는다. 오히려, 본 발명의 실시 예들과 본 명세서에서 사용된 용어 “스파크”는 본 명세서에 설명된 것과 동일하거나 유사한 특징들을 갖는 스케일 가능한 데이터 프로세싱을 위한 임의의 적합한 클러스터(cluster) 연산 엔진에 적용될 수 있다.
도 1은 본 발명의 실시 예들에 따른 캐쉬 매니저(110)를 사용하는 캐쉬 관리 시스템(100)을 보여준다.
프로세싱 시스템(100)은 프로세서(102)와 메모리(104)를 포함할 수 있다. 메모리(104)는 휘발성 메모리(예를 들어, DRAM(Dynamic Random Access Memory)과 같은 RAM 메모리)와 장기 스토리지의 역할을 하는 불휘발성 메모리(예를 들어, HDD 또는 SSD(Solid State Drive))를 포함할 수 있다. 일부 실시 예들에 따르면, 캐쉬 매니저(110)는 메모리(104)에 위치할 수 있고, 캐쉬 매니저(110)의 동작들은 프로세서(102)에 의해 수행될 수 있다.
일부 실시 예에 따르면, 캐쉬 매니저(110)는 스파크 프레임워크 내에서 동작할 수 있다. 스파크는, 대규모로 데이터를 조작하고, 인-메모리(in-memory) 데이터 캐싱, 그리고 연산들 간의 재사용을 위한 기능적인 API를 제공하는 분산 데이터 프로세싱을 위한, 일반화된 프레임워크이다. 스파크는, 구분된 데이터에 코스-그레인드(coarse-grained) 변환들의 세트를 적용하고, 실패한 경우에 테스크들을 다시 연산하기 위해 데이터세트의 계보에 의존한다. 스파크는 다수의 데이터 포맷(format)들을 지원하고, 다양한 스토리지 시스템들과 통합되며, 클러스터 매니저(예를 들어, Apache Mesos 또는 Apache Hdoop YARN(Yet Another Resource Negotiator)) 상에서 실행될 수 있다.
도 2는 본 발명의 실시 예들에 따른 캐쉬 매니저(110)를 사용하는 구조(예를 들어, 스파크 구조)(200)를 보여준다.
도 2를 참조하면, 스파크 구조(200)는 어플리케이션 레이어(예를 들어, 스파크 어플리케이션 레이어)(202), 클러스터 메니저 레이어(204), 그리고 워커(worker) 레이어(206)를 포함한다.
어플리케이션 레이어(202)는, 유저 프로그램(208)과 스파크 콘텍스트(context)(210)를 포함하고, RDD들을 생성하고 최종 결과를 얻기 위해 일련(series)의 변환들을 수행한다. RDD는 캐싱의 최소 단위를 나타낼 수 있다. 그러면, RDD들의 이러한 변환들은 DAG(Directed Acyclic Graph) 구조(또한, RDD 구조, RDD 그래프, 또는 생성 로직 체인으로 지칭됨)로 변환되고, 워커 노드들(220)의 세트 상에서 실행되도록 DAG 스케쥴러(214)에 제출된다. 스파크 콘텍스트(210)는 스파크 클러스터로의 연결을 나타낸다. 또한, 스파크 콘텍스트(210)는 RDD들, 누산기(accumulator)들, 그리고 상술한 클러스터 상의 브로드캐스트(broadcast) 변수들을 생성하기 위해 사용될 수 있다. 예를 들어, 스파크 콘텍스트(210)는 RDD 그래프(212), DAG 스케쥴러(214), 테스크 스케쥴러(216), 그리고 스케쥴러 백엔드 모듈들(218)을 포함한다.
클러스터 매니저 레이어(204)는 다양한 구현들(예를 들어, 스파크 독립형(standalone)(220), YARN(222), Mesos(224))을 운영할 수 있다. 일부 실시 예들에 따르면, 캐쉬 매니저(예를 들어, RDD의)(110)는 클러스터 매니저 레이어(204)에 위치한다. 이 경우, 캐쉬 매니저(110)는 클러스터 매니저 레이어(204)에 포함되거나, 클러스터 매니저 레이어(204)에 연결(plug into)되도록 구성될 수 있다.
워커 레이어(206)는 복수의 워크 노드(226)를 포함할 수 있다. 복수의 워크 노드(226) 각각은 복수의 실행자(228)를 운영하는 JVM(Java Virtual Machine)일 수 있다. 복수의 실행자(228)는 드라이버에 의해 스케쥴된 테스크들을 실행하고, 메모리 내에 연산 결과들을 저장하고, 그리고 스토리지 시스템들과 온-디스크(on-disk) 또는 오프-힙(off-heap) 상호 작용(interaction)들을 수행한다. 복수의 실행자(228)는 Java 프로세스들로서 운영할 수 있고, 이에 따라 사용 가능한 메모리는 힙(heap) 크기와 동일해진다. 내부적으로 사용 가능한 메모리는 특정 함수들을 갖는 복수의 영역들로 분리될 수 있다.
도 3은 스파크 프레임워크에서의 메모리 구분들의 예시를 보여준다.
도 3을 참조하면, 메모리(104)의 휘발성 부분(300)은 예약된 메모리(302), 유저 메모리(304), 그리고 통합 풀(unified pool)(306)로 구분될 수 있다. 예약된 메모리(Cr)(302)는 시스템에 의해 예약되고, 하드코드된(hardcoded) 크기(예를 들어, 스파크 버전 1.6에서 300MB)를 가진다. 이러한 구분은 실행자(228)를 실행하기 위한 것이고, 엄밀하게 스파크에 관련한 것이 아니다. 유저 메모리(Cu)(304)는 RDD 변환들 내에서 사용될 수 있는 유저 데이터 구조들과 스파크에 의해 사용되는 내부 메타데이터를 저장할 수 있다. 예를 들어, 스파크 집합(aggregation)을 실행하기 위해 해쉬(hash) 테이블(유저 메모리(304)를 소비할 수 있음)을 유지하면서, 유저들은 “mapPartitions” 변환을 사용하여 스파크 집합을 재 기입할 수 있다. 통합 풀(306)은 두 개의 비-정적(non-static) 서브-파티션(sub-partition)들로 분리될 수 있다. 서브-파티션들은 스토리지 메모리(306a)와 실행 메모리(306b)를 포함할 수 있고, 그들 사이의 경계는 “spark.memory.storageFraction” 파라미터(parameter)에 의해 설정될 수 있다. 해당 파라미터는 초기값이 50%이다. 스토리지 메모리(Cs)(306a)는 스파크 캐쉬된 데이터를 저장하는데 사용되고, 일시적인 공간 데이터 직렬화된 언롤(unroll)에 사용된다. 또한, 모든 브로드캐스트 변수들은 캐쉬된 블록들로서 그곳에 저장된다. 일부 실시 예들에 따르면, 유저 “보존된(preserved)” RDD들이 스토리지 메모리(306a) 내에 저장됨에 따라, 캐쉬 매니저(110)는 이러한 파티션에 집중한다. 실행 메모리(Ce)(306b)는 스파크 테스크들을 실행하는 동안 요구되는 오브젝트(object)들을 저장하는데 사용된다. 상술한 메모리 파티션들의 크기는 이하의 두 개의 수식들에 따라 연관될 수 있다.
Figure pat00001
Figure pat00002
여기서, C는 전체 메모리 크기를 나타내고,
Figure pat00003
(즉, “spark.memory.fraction”)는 스토리지 메모리(306a)와 실행 메모리(306b)의 크기들을 조정한다. 캐쉬 매니저(110)는 클러스터 매니저 레이어(204)에 통합되고, 유저에 의해 스토리지 메모리(306a) 내에 저장된(보존된(preserved)) RDD들 상에서 동작한다. 본 발명의 실시 예들은 주로, 유저에 의해 요청된 보존된(또는, 축적된) RDD들의 총량이 스토리지 메모리(Cs)의 총 사용 가능한 공간보다 큰 시나리오에 집중한다. 그리고, 캐쉬 매니저(110)는, LRU(Least Recently Used) 삭제(eviction) 정책의 관련 기술을 사용하는 대신에, 새로운 RDD를 삽입하기 전에 지능적이고 효율적으로 RDD 희생자(victim)들을 삭제한다.
본 발명의 실시 예들에 따르면, 캐쉬 매니저(110)는 캐싱 대체 프로세스를 수행하고, 그것에 의해 희생자 데이터세트들(예를 들어, 희생자 RDD(들))은 이러한 캐쉬된 RDD들의 중요성과 크기들 모두를 고려하여 선택된다. 예를 들어, 각각의 캐쉬 미스에 대해, 캐쉬 매니저(110)는 “스코어 테이블(score table)”에 기초하여 포괄적으로 결정할 수 있다. 스코어 테이블은 RDD 각각의 재 생성 시간 비용, 자식들(children)/의존성 수, 점유(occupancy) 크기, 및/또는 그와 유사한 것들을 모니터(monitor)한다. 본 발명의 실시 예들은, 중간 데이터(예를 들어, RDD들)를 재연산하는 대신에 중간 데이터를 재사용함으로써, 메모리(104) 내의 캐쉬 히트(hit) 비율이 증가하도록 구성되고, 전체 시스템 성능(예를 들어, 스파크 프레임워크의 성능)이 향상되도록 구성될 수 있다. 본 발명의 일부 실시 예들에 따르면, 중간 데이터는 캐쉬를 최적화하여 재사용된다. 캐쉬는 유저 보전된 중단 데이터세트들(예를 들어, 유저 보존된 RDD들)을 저장한다.
도 4a 및 도 4b는 본 발명의 실시 예들에 따른 RDD(Resilient Distributed Dataset) 룩업(Lookup) 절차의 예시를 보여준다. 도 4a는 RDD 변환 예의 DAG 구조(400)(예를 들어, RDD 그래프 또는 생성 로직 체인)의 예를 보여준다. 여기서, 스테이지(stage)[i] 내의 11 개의 RDD들(중간 데이터)(410)과 10 개의 변환들(420)이 도시되었다. 도 4b는 본 발명의 일부 실시 예들에 따라 각각의 액세스된 RDD에 대한 특정 정보를 추적하기 위해 캐쉬 매니저(110)에 의해 생성되고 유지되는 예시적인 스코어 테이블(430)을 보여준다. 일부 실시 예들에 따르면, RDD 각각의 생성 동작 체인(즉, GenChain, 소스(source) RDD, child#)뿐 아니라, 캐쉬 매니저(110)는 일시적인 비용(예를 들어, 재연산 비용)과 공간적인 비용(예를 들어, 바이트 단위의 RDD 크기)을 스코어 테이블(430)에 기록한다. 이러한 표로 작성된 기록들에 기초하여, 희생자 선택 및 삭제(eviction)를 결정할 때, 캐쉬 매니저(110)는 RDD 각각의 스코어(예를 들어, 중요도(importance degree))를 계산할 수 있다. 일부 실시 예들에서, 스코어 테이블은 테이블 1에 도시된 것들보다 많은 파라미터들을 포함한다. 예를 들어, 스코어 테이블은 멀티-티어(multi-tier) 스토리지 시스템이 사용되는 경우 메모리/SSD/HDD로부터 프리패치(Prepatch)하는 시간 비용들 등을 더 포함할 수 있다. 일부 실시 예들에서, 스코어 테이블은 스토리지 메모리(306a) 내에 저장된다. 하지만, 본 발명의 실시 예들은 이에 제한되지 않으며, 스코어 테이블은 적어도 일부(예를 들어, 전체가)가 불휘발성 메모리(예를 들어, NVMe(Non-Volatile Memory express) disk, SSD 또는 HDD) 내에 저장될 수 있다.
도 5는 본 발명의 실시 예들에 따른 RDD 캐싱 정책을 수행하는 캐쉬 매니저(110)의 프로세스(500)를 설명하는 순서도이다.
일부 실시 예들에 따르면, 액세스되는 모든 새로운 RDD에 대해(S502), 새로운 RDD r이 캐쉬
Figure pat00004
내에서 발견될 때(즉, 캐쉬 히트)(S504), 캐쉬 매니저(110)는 캐쉬된 RDD r을 로드한다(S506). 혹은, S504에서 RDD r이 캐쉬
Figure pat00005
내에서 발견되지 않으면, S508에서 캐쉬 매니저(110)는 먼저 캐쉬(즉, 스토리지 메모리(Cs)(306a))가 새로운 RDD를 저장하기에 충분한 용량을 갖고 있는지 여부를 확인한다. RDD에 대한 충분한 공간이 있는 경우, 캐쉬 매니저(110)는 S516을 진행한다. RDD에 대한 충분한 공간이 없는 경우, S510에서, 캐쉬 매니저(110)는 희생자 RDD(들)을 선택하여 캐쉬로부터 제거(예를 들어, 삭제(delete))한다(“selectVictimRDDs” 함수). 이에 따라, S512에서, 스코어 테이블을 업데이트한다(“updateScoreTable” 함수). 그리고, S514에서, 희생자 RDD(들)을 삭제한다. 그 후에, S516에서, 캐쉬 매니저(110)는 새로운 RDD r를 생성하고(예를 들어, 연산), 새로운 RDD r를 메모리(예를 들어, 스토리지 메모리(Cs)(306a))에 삽입한다. 또한, 프로세스(512)는 이하의 슈도 코드로 도시된다.
Figure pat00006
여기서,
Figure pat00007
은 스토리지 메모리(306a(예를 들어, RAM)) 내에 저장된 RDD들의 세트를 나타내고,
Figure pat00008
는 스토리지 메모리(306a)로부터 삭제될 희생자 RDD들의 세트를 나타낸다. 또한,
Figure pat00009
은 스토리지 메모리(306a) 내의 RDD들의 총 수를 나타내고, Cs는 스토리지 메모리(306a)의 크기(예를 들어, 바이트 단위)를 나타낸다.
Figure pat00010
는 스토리지 메모리(306a) 내에 저장된 RDD들 세트 크기의 총 합을 나타낸다.
Figure pat00011
은 새로운 RDD의 크기를 나타낸다.
일부 실시 예들에 따르면, RDD 희생자 선택 프로세스(즉, “selectVictimRDDs” 함수)는 다목적(multi-objective) 최적화 프로세스로 변환된다. 이는 이하의 수학식 3 내지 6으로 표현된다.
Figure pat00012
최소화(Minimize)
Figure pat00013
Figure pat00014
Figure pat00015
수학식 3의 제 1 목적 함수는, 새로운 RDD의 크기
Figure pat00016
에 기초하여, 삭제된 RDD(들)
Figure pat00017
의 크기(
Figure pat00018
,
Figure pat00019
는 희생자 RDD(들)의 수를 나타냄)를 줄이는(예를 들어, 최소화) 것을 목적으로 한다. 수학식 3의 제 2 목적 함수의 목적은 삭제된 RDD들의 총 스코어들(
Figure pat00020
)을 최소화 하기 위한 것이다. RDD의 스코어는 RDD의 중요성을 의미할 수 있고, 스코어 테이블(430)에 기초하여 결정될 수 있다. 스코어 테이블(430)은 액세스된 RDD 각각의 생성 로직 체인(변환 함수들과 종속 RDD들), 자식 수, 바이트 단위의 RDD 사이즈, 그리고 생성 시간 비용(재연산 시간)을 추적한다. 본 발명의 일부 실시 예들에서, 캐쉬 매니저(110)는 가능한 적은 저장된 RDD들을 삭제하고, 가능한 낮은 스코어로 이러한 RDD를 삭제하기 위해 선택한다.
수학식 4는 프로세스(500)이 기초로 하고 있는 가정을 나타낸다. 이러한 가정에 따르면, 새로운 RDD r은 전체 사용 가능한 메모리 크기(즉, 메모리 스토리지(306a)의 총 크기(Cs))보다 크면 안 된다. 수학식 5는 희생자 RDD(들)의 세트
Figure pat00021
가 램(RAM)에 저장된 전체 RDD 세트의 서브 세트(subset)
Figure pat00022
인 것을 나타낸다. 수학식 6은 희생자들의 전체 공간이 새로운 RDD의 워킹(working) 세트 공간을 커버해야 한다는 목적을 나타낸다.
본 발명의 실시 예들에 따르면, 희생자 RDD들을 선택할 때, 수학식 4 내지 6의 조건들을 만족하면서, 캐쉬 매니저(110)는 실행 가능한 최대한 많은 수학식 3의 목적을 달성할 것을 목표로 한다. 본 발명의 실시 예들은 다양한 중요도 스코어 함수들과 다양한 케이스들에 대한 희생자 후보 세트들을 설정하도록 동작한다.
도 6은 본 발명의 실시 예들에 따른 캐쉬 매니저(110)에 의해 수행되는 희생자(victim) 선택(즉, “selectVictimRDDs” 함수)의 프로세스(510)를 보여준다. 또한, 프로세스(510)는 이하의 슈도 코드와 같이 도시된다.
Figure pat00023
여기서,
Figure pat00024
는 캐쉬된(저장된) RDD의 세트(중간 데이터의 제 1 세트)를 의미한다. 해당 세트의 사이즈들은 새로운 RDD r보다 작거나 같다. 그리고,
Figure pat00025
는 메모리(예를 들어, 스토리지 메모리(306a)) 내에 저장된 모든 RDD들의 스코어들의 기록을 의미한다.
S600에서, 새로운 RDD r보다 작은 크기들을 갖는 모든 RDD들을 기록하기 위한 캐쉬된 RDD들의 서브 세트
Figure pat00026
가 유지된다. S602에서,
Figure pat00027
가 비어있는 세트인지 여부에 기초하여, 문제는 두 가지 케이스들로 분류된다.
케이스 1:
Figure pat00028
가 비어있는 세트가 아닌 경우, S604에서 캐쉬 매니저(110)는 크기들이 r보다 작은 캐쉬된 RDD들을 희생자 후보들로 설정한다.
Figure pat00029
로부터 하나 이상의 희생자들을 선택하기 위해, 캐쉬 매니저(110)는 다음과 같이 제 1 스코어(예를 들어, 중요도 스코어)를 정의한다.
Figure pat00030
여기서,
Figure pat00031
는 재연산(생성) 시간 비용을 의미하고,
Figure pat00032
는 자식 RDD들의 수를 의미하고,
Figure pat00033
는 바이트 단위의 RDD i의 크기를 의미한다. 수학식 7에서 표현된 바와 같이, 캐쉬 매니저(110)는 더 높은 스코어(더 높은 중요도)를 더 높은 재연산 시간
Figure pat00034
, 더 많은 수의 자식, 및/또는 더 작은 크기를 갖는 RDD에 할당할 수 있다. 이는 이러한 RDD들의 삭제가 남은 RDD들에 더 높은 영향을 미칠 수 있고, 또는 재 생산을 위해 더 많은 시스템 리소스들을 소비할 수 있기 때문이다.
S608에서, 제 1 스코어(Score-v1)에 기초하여(예를 들어, 오름차순 또는 내림차순으로), 캐쉬 매니저(110)는 희생자 후보들을 정리한다. S608 내지 S614에서, 희생자 RDD들의 서브 세트
Figure pat00035
의 크기가 새로운 RDD r과 같거나 커질 때까지, 캐쉬 매니저(110)는 정리된 RDD들을 희생자 RDD들의 서브 세트
Figure pat00036
에 추가한다.
케이스 2: 케이스 2는 두 개의 서브 케이스들이 있을 수 있다. 제 1 서브 케이스에서,
Figure pat00037
는 비어 있지 않고, 다만
Figure pat00038
내의 모든 RDD들이 희생자 RDD들로 선택되었다 하더라도 여전히 새로운 r에 대한 충분한 공간이 없을 수 있다(예를 들어,
Figure pat00039
; S613). 제 2 서브 케이스에서,
Figure pat00040
는 비어 있고, 이는 캐쉬 매니저(110)가 오직 하나의 RDD를 제거하기 위해 선택하는 경우에, 새로운 RDD r이 모든 캐쉬된 RDD들 보다 작다는 것을 의미한다.
어느 서브 케이스에서도, S615에서 캐쉬 매니저(110)는 희생자 RDD 세트
Figure pat00041
를 비운다. S616 내지 S622에서, 캐쉬 매니저(110)는
Figure pat00042
(
Figure pat00043
,
Figure pat00044
의 상보 세트(중간 데이터의 제 2 세트))로부터 오직 하나의 RDD를 선택하고
Figure pat00045
에 추가한다. 제 2 서브 케이스에서,
Figure pat00046
가 비어있을 때,
Figure pat00047
가 된다. 어느 서브 케이스에서도, 캐쉬 매니저(110)는 단순히
Figure pat00048
내의 가장 작은 RDD를 선택하지 않을 수 있다. 이는 그것이 높은 중요도를 가질 수 있기 때문이다. 따라서, 일부 실시 예에서, 캐쉬 매니저(110)는
Figure pat00049
내의 RDD의 스코어들(제 2 스코어들)을 연산하고, 최소의 스코어(예를 들어, 최소의 중요도)를 갖는 RDD를 희생자
Figure pat00050
로서 선택한다(S624). 일부 실시 예들에서, 캐쉬 매니저(110)는 수학식 7을 이용하여
Figure pat00051
내의 RDD 각각의 스코어를 정의한다.
당업자에 의해 이해될 수 있는 바와 같이, 비어 있는
Figure pat00052
가 새로운 RDD r의 크기보다 작은 크기를 가질 때, 제 1 서브 케이스와 제 2 서브 케이스는 제 2 서브 케이스로 축소될 수 있다. 하지만, 이러한 두 개의 서브 케이스들은 설명의 명확성을 위해 본 명세서에서 분리되어 설명되었다.
도 7a 내지 도 7c는 본 발명의 실시 예들에 따른 도 6 내에서 제공된 다양한 케이스들을 보여준다. 도 7a는
Figure pat00053
가 비어있지 않은 상술한 제 1 케이스를 보여준다. 도 7b 및 도 7c는 각각 상술한 제 2 케이스의 제 1 서브 케이스와 제 2 서브 케이스를 보여준다. 도 7a 내지 도 7c에서, 셀(700a, 700b, 700c)은 새로운 RDD r을 지칭하고, 셀(들)(702a, 702b, 702c)은 삭제되기 위해 선택된 희생자 RDD(들)을 지칭한다.
일부 실시 예들에 따르면, 희생자 RDD 세트
Figure pat00054
가 결정된 이후 구성 RDD(들)이 스토리지 메모리(306a)(예를 들어, 캐쉬
Figure pat00055
)로부터 삭제되기 전에, 캐쉬 매니저(110)는 스코어 테이블을 업데이트한다. 그 이유는, 일단 RDD가 삭제되면, 상술한 RDD와 연관된 모든 다른 RDD들(즉, 상술한 RDD의 자식들(children))의 재연산 시간 비용이 변화될 것이기 때문이다. 예를 들어, 만약 RDD3 = f3(RDD2)이고 부모(RDD2)가 메모리 내에 캐쉬되면, R3의 시간 비용은 T[R2→R3]가 된다. 하지만, 만약 RDD2가 제거될 희생자 RDD로 선택되면, RDD2 = f2(RDD1)인 경우, 캐쉬 매니저(110)는 RDD1로부터 RDD3을 계산한다. 따라서, 캐쉬 매니저(110)는 RDD3의 시간 비용을 T[R1→R2] + T[R2→R3]로 업데이트 한다.
도 8은 본 발명의 실시 예들에 따른 캐쉬 매니저(110)에 의해 수행되는 스코어 테이블(430)을 업데이트하는 프로세스(512)(즉, “updateScoreTable” 함수)를 보여준다. 프로세스(512)는 또한 이하의 슈도 코드와 같이 도시된다.
Figure pat00056
S800 내지 S812에서, 희생자 서브 세트
Figure pat00057
내의 선택된 희생자 RDD
Figure pat00058
각각에 대해, 캐쉬 매니저(110)는 상술한
Figure pat00059
에 의존하는
Figure pat00060
내의 기존의 RDD들의 재-연산 시간들을 업데이트한다. S810에서, 캐쉬 매니저(110)는 희생자 RDD
Figure pat00061
의 부모(예를 들어, 직접적인 부모)를 식별한다. 그리고, S812에서, 캐쉬 매니저(110)는 희생자 RDD
Figure pat00062
의 재연산 시간에 의해 부모 RDD의 재연산 시간을 증가시키고, 이에 따라 스코어 테이블(430)을 업데이트한다. 일부 실시 예들에서, 캐쉬 매니저(110)는 스코어 테이블(430)(도 4b에 도시됨) 내에 기록된 생성 로직 체인에 기초하여 RDD의 부모(예를 들어, 직접적인 부모)를 식별한다. 다시 말해, 캐쉬 매니저(110)는 희생자 서브 세트
Figure pat00063
내의 선택된 희생자 RDD
Figure pat00064
각각의 자식을 식별하고, 희생자 RDD
Figure pat00065
각각의 생성 시간에 기초하여 생성(재연산) 시간을 재연산한다.
본 발명의 실시 예들에 따르면, 캐쉬 매니저(110)는, 중간 데이터(예를 들어, RDD들)의 컨텐트(content)와 생성 로직 체인(예를 들어, 동작 패스(path))을 비교하고 추적하여 중복된 중간 데이터(예를 들어, 중복 RDD들)를 감지하고 줄임에 의해, 중간 데이터의 중복 제거를 수행한다. 오직 유저 선언된 토폴로직(topologic) 패스(예를 들어, 하드코드된 “보존된” RDD들)를 따라가는 것 대신에, 일시적인 비용(예를 들어, 재연산 시간)과 공간적인 비용(예를 들어, 메모리 공간)을 절약하여 성능을 개선하기 위해, 캐쉬 매니저(110)는 추가적으로 활발하게 중간 데이터 그래프(꼭지점과 가장자리 각각에 속성들이 첨부된 방향(directed) 멀티그래프(multigraph), 예를 들어, RDD 그래프)를 미세 조정한다. 본 발명의 일부 실시 예들에 따르면, (동작들을 분해하거나 좀 더 발전된 리버스 엔지니어링 기술들에 의해) 캐쉬 매니저(110)는 각각의 데이터 세트의 생성 체인의 지식(knowledge)을 갖는 모든 캐싱 서브 시스템에 연결(plugged into)되도록 구성된다. 추가적으로, 본 발명의 일부 실시 예들에 따른 캐쉬 매니저(110)는 기존의 기술들(예를 들어, "Analyzing Compute vs. Storage Tradeoff for Video-aware Storage Efficiency" by Kathpal et al., HotStorage (2012); 그리고 "The Constrained Ski-Rental Problem and its Application to Online Cloud Cost Optimization" by Khanafer et al., INFOCOM, 2013 Proceedings IEEE (2013)에 기술된 기술들)에 통합(예를 들어, 채택)되도록 구성된다. 상술한 해당 참조 문헌들의 모든 내용은 본 명세서에서 참조된다. 따라서, 캐쉬 매니저(110)는 중복된 데이터세트들을 병합하고 메모리 내의 히트 비율을 증가시키도록 구성된다. 캐쉬 메모리 성능의 측정 값인 히트 비율은 전체 CPU 데이터 요청들의 수(캐쉬 메모리 내에서 발견되지 않은 데이터에 대한 요청을 포함, 즉, “미스(miss)(들)”)에 대한 CPU에 의해 요청된 데이터가 캐쉬 내에서 발견된 횟수(“히트(hit)”의 수)의 비율로 정의될 수 있다.
본 발명의 일부 실시 예들에 따르면, 재연산과 중복된 RDD 저장을 줄이거나 피하기 위해, 캐쉬 매니저(110)는 중복된 RDD들과 결정형(deterministic) RDD 동작들을 감지하도록 구성된다. 관련 중복 제거 알고리즘들이 우선적으로 그것의 데이터세트 콘텐트에 집중하고 있는 반면에, 본 발명의 실시 예들은 또한 데이터 세트 각각의 생성 체인을 고려한다. 따라서, 본 발명의 실시 예들에 따른 “2-차원적인 비교” (즉, RDD들과 동작들)를 사용하는 것은 데이터세트(예를 들어, RDD) 재사용성(reusability)을 효율적으로 향상시킨다.
본 발명의 일부 실시 예들에 따르면, 캐쉬 매니저(110)는 결정형 동작들과 비결정형(non-deterministic) 동작들 간을 구별하고, 저장된 RDD들의 변화들과 그들의 생성 체인들(예를 들어, 캐쉬된 RDD의 부모 RDD가 삭제된 경우 재연산 시간 비용)을 자동적으로 추적한다.
도 9a 내지 도 9c는 본 발명의 실시 예들에 따른 캐쉬 매니저(110)에 의해 수행되는 중복 제거 프로세스를 보여준다.
도 9a에 도시된 예시에서, RDD DAG 구조는 두 개의 테스크를 포함하고, 테스크 각각은 스테이지[i] 내에 8 개의 RDD들을 갖는다. 도시된 RDD 그래프는 유저(예를 들어, 인간(human) 프로그래머)가 하드코드한 것에 기초할 수 있다. 도 9b 및 도 9c는 일부 실시 예들에 따라 RDD 테스크들 간에 RDD들과 동작들을 비교하는 프로세스를 보여준다. 도 9b에 도시된 바와 같이, 소스(즉, 왼쪽 편)부터 마지막(즉, 오른쪽 편)까지, 캐쉬 매니저(110)는 먼저 스테이지[i]의 RDD들과 동작들을 비교한다. 예를 들어, 캐쉬 매니저(110)는 R0 내지 R4의 RDD들은 각각 R8 내지 R12의 RDD들과 동일한 것으로 식별하고, f1 내지 f4의 함수들은 각각 f9 내지 f12의 함수들과 동일한 것으로 식별한다. 도 9c는 검색 및 중복제거(예를 들어, 재사용) 이후 미세 조정된 RDD 그래프를 보여준다. 16 개의 RDD들 대신에, 캐쉬 히트 비율의 관점에서 어떠한 손실(loss) 없이, 오직 11 개의 RDD들이 메모리 내에 저장될 필요가 있다.
표 1 및 표 2는 각각 검색 및 재사용 프로세스 이전의 스코어 테이블과 검색 및 재사용 프로세스 이후의 스코어 테이블을 보여준다.
Figure pat00066
Figure pat00067
도 10은 본 발명의 실시 예들에 따른 RDD 캐싱 정책을 수행하는 캐쉬 매니저(110)의 프로세스(1000)를 보여주는 순서도이다.
프로세스(1000)는 본 발명의 실시 예들에 따른 캐쉬 매니저(110)가 연결된(plugged in) 클러스터 매니저 서브시스템(204) 내의 RDD 캐싱 정책의 프로세스의 예를 보여준다. 일부 예시에서, 액세스되는 모든 새로운 RDD에 대해(S1002), 새로운 RDD r이 캐쉬
Figure pat00068
내에서 발견될 때(즉, 캐쉬 히트)(S1004), 캐쉬 매니저(110)는 캐쉬된 RDD r을 로드한다(S1006). 그렇지 않으면, 만약 RDD r이 캐쉬
Figure pat00069
내에서 발견되지 않으면(S1004), 캐쉬 매니저(110)는 새로운 RDD의 생성 체인(표 1의 GenChain)의 일부 또는 전부를 공유하는 모든 매치된 중복 RDD들
Figure pat00070
을 찾는다(S1008)(“matchGenChain” 함수). S1010에서, 검색(search)이 닐(nil)이 아닌 값을 반환(return)하면,
Figure pat00071
은 재사용될 수 있는 가장 긴 RDD 체인들을 나타낸다. 예를 들어, 도 9a 내지 도 9c의 예시에서, 만약 새로운 RDD가 R15인 경우, R4가
Figure pat00072
으로 반환될 수 있다. S1012에서, 캐쉬 매니저(110)는 검색된 재사용 가능한 RDD
Figure pat00073
로부터 나머지 체인을 생성한다. 예를 들어, 도 9a 내지 도 9c의 예시에서, 캐쉬 매니저(110)는 R13, R14 그리고 R15를 생성한다. 그렇지 않으면, S1010에서, 검색이 닐(nil) 값을 반환하면, 캐쉬 매니저(110)는 캐쉬(예를 들어, 스토리지 메모리(306a))가 해당 새로운 RDD에 대한 충분한 크기(공간)을 갖는지 여부를 확인한다(
Figure pat00074
)(S1014). 충분한 공간이 없으면, 캐쉬 매니저(110)는 캐쉬로부터 제거될 하나 이상의 희생자 RDD들을 선택한다(S1016). 그러면, 캐쉬 매니저(110)는 필요한 경우(즉, S1018에서, “needToGenRDDFlag”가 거짓(false)인 경우) 새로운 RDD r을 생성(연산)하고, 새로운 RDD r을 메모리 내로 삽입한다(S1020, S1022). S1004와 S1006은 함께 캐쉬 히트를 의미한다(S1007). S1008 내지 S1012는 함께 캐쉬 중복제거 프로세스(S1013)를 의미한다. 그리고, S1014 내지 S1022는 캐쉬 미스를 의미한다(S1023).
S1014 내지 S1022는 실질적으로 도 5의 S508 내지 S516과 유사하다. 따라서, 그것의 자세한 설명은 반복하지 않을 것이다. 또한, 프로세스(1000)는 이하의 슈도 코드로 도시된다.
Figure pat00075
도 11은 본 발명의 실시 예들에 따른 캐쉬 매니저(110)에 의해 수행된 생성 체인들을 매칭하는(즉, “matchGenChain” 함수) 프로세스(1008)를 보여주는 순서도이다.
프로세스(1008)(“matchGenChain” 함수)는 RDD 검색 정책이라고 불릴 수 있는 것을 구현한다. 캐쉬 매니저(110)는 이러한 RDD들을 검색하도록 동작하고, 유저들이 명시적으로 그들의 어플리케이션 내에서 선언하지 않은 해당 동작들을 검색하도록 동작할 수 있다. 이를 위해, 캐쉬 매니저(110)는 먼저 그들의 생성 체인(각각의 함수들로의 소스 RDD)의 내부에서부터 외부까지(예를 들어, 도 9a, 도 9b, 도 9c에서, 왼쪽부터 오른쪽까지, 또는 “소스부터 목적지(destination)까지”) 저장된 RDD 각각을 검색한다. 일부 실시 예들에 따르면, 캐쉬 매니저(110)는 가장 긴 재사용 가능한 체인을 식별(검색)하고, 식별된 체인을 검색된 체인으로서 재사용한다. 또한, 프로세스(1008)는 이하의 슈도 코드로 도시된다.
Figure pat00076
여기서,
Figure pat00077
은 스토리지 메모리(306a)로부터 삭제될 희생자 RDD들의 세트를 의미한다.
S1100 내지 S1106에서, 캐쉬 매니저(110)는 반복된(iterated) RDD
Figure pat00078
가 요청된 새로운 RDD r과 동일한 소스 RDD를 갖는지 여부를 확인한다. 캐쉬 매니저(110)는 추가적으로 캐쉬된 RDD
Figure pat00079
후보자가 더 이상 새로운 RDD r이 아니라는 것을 보장한다. 이는 캐쉬 매니저(110)가 캐쉬된 RDD(들)을 새로운 RDD r의 일부로서 재사용하는 것을 목적으로 하기 때문이다. S1108 내지 S1112에서, 현재의 RDD의 각각의 동작(즉, 함수)이 새로운 RDD r의 해당 함수와 매치되는지 여부를 확인하기 위해, 캐쉬 매니저(110)는 함수들의 내부에서부터 외부(from-inside-to-outside-of-functions) 이후의 비교 프로세스를 반복한다. 예를 들어, 만약
Figure pat00080
= f4(f3(f2(f1(f0(R0)))))인 경우, 새로운 RDD r의 생성 로직 체인에 대해, 캐쉬 매니저(110)는
Figure pat00081
의 R0, f0, f1, f2, f3, f4를 확인한다. 오직 캐쉬된 RDD의 모든 반복된 함수들이 새로운 RDD의 함수들과 매치될 때, 캐쉬 매니저(110)는 현재의 반복된 캐쉬된 RDD를 후보자 세트
Figure pat00082
에 추가한다(S1114, S1116). 결과적으로, S1118에서, 캐쉬 매니저(110)는 후보자 세트
Figure pat00083
로부터 (“maxGenChainLen” 함수를 통해) 새로운 RDD r에 의해 재사용될 수 있는 가장 긴 RDD GenChain을 반환한다. 다시 말해, 캐쉬 매니저(110)는 중간 데이터의 서브 세트를 식별한다. 중간 데이터의 서브 세트 각각은 새로운 중간 데이터와 동일한 중간 데이터 소스를 갖고, 새로운 중간 데이터의 생성 로직 체인보다 길지 않은 생성 로직 체인을 갖는다. 새로운 중간 데이터와 매칭되는 함수들의 가장 긴 시퀀스(sequence)를 갖는 중간 데이터의 서브 세트들의 하나로서 재사용 가능한 중간 데이터를 식별하기 위해, 캐쉬 매니저(110)는 추가적으로 중간 데이터의 서브 세트 각각의 생성 로직 체인의 함수들을 새로운 중간 데이터의 그것과 순서대로 비교한다.
일부 실시 예들에 따르면, 검색된 중복된 RDD들과 해당 생성 체인들(예를 들어, RDD와 함수들의 할당 함수들이 있는 매핑 테이블)을 기록하기 위해 몇몇 향상된 데이터 구조를 이용하고 그것들을 스코어 테이블(예를 들어, 표 2)에 추가하여, 상술한 프로세스(1008)는 추가적으로 개선(예를 들어, 최적화 또는 스피드 업(sped up))될 수 있다. 예를 들어, RDD1과 RDD2가 동일한 것으로 감지되면, 본 발명의 실시 예들은 (GenChain 컬럼(column) 내의) RDD1과 RDD2의 GenChain들과 함께 (RDD 컬럼 내의) 하나의 로우(row)에 RDD1과 RDD2 모두를 함께 기록한다. 이는 해당 로우가 [R1, R2; R1의 GenChain, R2의 Genchain; …]이 될 것이라는 것을 의미한다. 추가적으로, 성능은 메모리(예를 들어, 스토리지 메모리(306a))에 RDD를 저장할지 혹은 저장하지 않을지(즉, 다음 시간을 재연산) 여부를 결정하고 분석함에 의해 향상될 수 있다. 또한, 해당 목표를 달성하기 위한 개선된 테크닉들은 관련 분야의 모든 적합한 방법(예를 들어, "Analyzing Compute vs. Storage Tradeoff for Video-aware Storage Efficiency" by Kathpal et al., HotStorage (2012); 그리고 "The Constrained Ski-Rental Problem and its Application to Online Cloud Cost Optimization" by Khanafer et al., INFOCOM, 2013 Proceedings IEEE (2013)에 기술된 기술들)에 기초할 수 있다. 상술한 해당 참조 문헌들의 모든 내용은 본 명세서에서 참조된다.
도 12는 본 발명의 실시 예들에 따른 캐쉬 매니저(110)에 의해 수행된 RDD들을 매칭하는(예를 들어, “matchRDD” 함수) 프로세스(1104)를 보여주는 순서도이다.
일부 실시 예들에 따르면, 캐쉬 매니저(110)는 먼저 두 개의 입력 RDD들이 동일한 크기와 동일한 타입(데이터 구조들, 목적들, 등의 관점에서)을 갖는지 여부를 확인한다(S1200). 만약 정해진(stated) 조건들이 만족되면, 추가적으로 두 개의 입력 RDD들이 동일한지 여부를 탐색하기 위해, 캐쉬 매니저(110)는 바이트-대-바이트(byte-to-byte) 비교(“byteToByteCompare” 함수)를 이용한다(S1202). 다만, 본 발명의 실시 예들은 바이트-대-바이트 비교에 제한되지 않으며, 모든 적합한 비교도 사용될 수 있다. 또한, 프로세스(1104)는 이하의 슈도 코드와 같이 도시된다.
Figure pat00084
스파크에서, 동작들(즉, 함수들)은 변환들, 액션들, 그리고 다른 카테고리들로 분류될 수 있다. 표 3에서, 스파크 내에서 사용 가능한 몇몇 예시적인 RDD 변환들과 액션들이 나열되었다. 여기서, 동작 각각의 특징(signature)은 스칼라(Scala) 내의 다른 API들과 다른 기능적인 언어들을 매치하기 위해 선택된다. 그리고, 타입 파라미터들은 사각형의 괄호 내에 표시된다(Seq[T]는 타입 T의 구성 요소들의 시퀀스를 의미한다). 변환들과 액션들 사이의 차이점은, 변환들은 새로운 RDD를 정의하는 느린(lazy) 동작들인 반면에, 액션들은 값을 프로그램으로 반환하거나 데이터를 외부 스토리지에 기입하기 위해 연산을 시작한다는 점이다.
Figure pat00085
본 발명의 일부 실시 예들에 따르면, 캐쉬 매니저(110)는 동일한 입력을 제공받을 때 정확히 동일한 출력을 제공하는 이러한 동일한 함수들을 검색한다. 반면에, 이러한 함수들은 유저들에 의해 명확하게 하드코드되지 않는다. 동일한 함수들은 타입(특징)과 입력 RDD(들)에 따라 유일하게 결정된다(S1200). 예를 들어, 도 9a에서, R0 = R8, f1() = f9(), 등이 있다. 이에 따라, 캐쉬 매니저(110)는 이러한 중복된 생성 체인들을 병합하고, RDD DAG의 토폴로직한(topological) 그래프를 미세 조정(예를 들어, 줄이거나 최소화)한다. 따라서, 캐쉬 매니저(110)는 사용된 메모리(로컬/원격 휘발성 메모리 및/또는 불휘발성 메모리)의 양 등의 시스템 리소스 소비(consumption)를 줄일 수 있다.
일부 실시 예들에서, 캐쉬 매니저(110)는 결정형 동작들과 비결정형 동작들 간을 구별하고, 저장된 RDD들과 그들의 생성 체인들의 변화들과 (예를 들어, 캐쉬된 RDD의 부모 RDD가 삭제된 경우 재연산 시간 비용)을 자동적으로 추적한다. 하지만, 모든 함수들이 그들의 특징/타입과 입력에 의해 유일하게 결정될 수 있는 것이 아니다. 이와 같이, 일부 실시 예에 따르면, 캐쉬 매니저(110)는 유일하게 결정될 수 있는 결정형 함수들 상에서만 동작하고 비결정형 방식으로 값들을 출력할 수 있는 비결정형 함수들(예를 들어, 셔플링(shuffling) 또는 일반적인 네트워크 트레픽) 상에서 동작하지 않을 수 있다. 예를 들어, 결정형 함수에 있어, “groupByKey”, “reduceByKey” 그리고 “sort”는 동일한 입력 RDD(들)을 갖는 동일한 해쉬(hash) 또는 범위 분할된 RDD를 야기할 수 있다.
도 13은 본 발명의 실시 예들에 따른 캐쉬 매니저(110)에 의해 수행된 기능들을 매칭하는(즉, “matchFunc” 함수) 프로세스(1110)를 보여주는 순서도이다.
S1300에서, 캐쉬 매니저(110)는 먼저 두 개의 입력 함수들이 결정형 함수들인지 여부를 판단한다. 예를 들어, 이러한 판단은 기 설정된 결정형 함수들(예를 들어, 표 3에 나열된 함수들)의 리스트를 검색하여 수행될 수 있다. 만약 두 개의 입력 함수들 모두가 결정형인 경우, S1302에서, 캐쉬 매니저(110)는 두 개의 함수들을 비교하여 그들이 동일한 타입(예를 들어, 특징)인지 여부를 판단할 수 있다. S1302에서, 캐쉬 매니저(110)는 해당 비교의 결과를 반환한다. 만약 이러한 두 개의 함수들 중 하나가 결정형 함수가 아닌 경우, 캐쉬 매니저(110)는 거짓(False)을 반환한다(S1304). 또한, 프로세스(1110)는 이하의 슈도 코드와 같이 도시된다.
Figure pat00086
도 14는 본 발명의 실시 예들에 따른 캐쉬 매니저(110)에 의해 수행된 가장 긴 재사용 가능한 체인을 구하는(예를 들어, “genRDDFrom” 함수) 프로세스(1012)를 보여주는 순서도이다.
S1400 내지 S1406에서, 새로운 RDD r의 나머지 생성 로직 체인에 이어, 가장 긴 재사용 가능한 생성 로직 체인으로부터 “runTransformation”을 호출(call)하여, 캐쉬 매니저(110)는 가장 긴 재사용 가능한 RDD 생성 로직 체인(GenCahin)을 연산한다. 또한, 프로세스(1012)는 이하의 슈도 코드와 같이 도시된다.
Figure pat00087
당업자는 위에서 도시된 순서도와 슈도 코드가 단지 본 발명의 개념을 설명하기 위함이라는 것을 쉽게 이해할 수 있을 것이다. 그리고, 당업자는 상술된 프로세스들이 더 진보된 접근들(approaches)을 이용하여 좀 더 효율적으로 수행되도록 적합한 방법으로 변형될 수 있다는 것을 이해할 수 있을 것이다. 예를 들어, 프로세스(512)에서, 이후에 삭제될
Figure pat00088
들을 업데이트하는 것을 피하기 위해 동적 프로그래밍이 적용될 수 있다(즉,
Figure pat00089
).
비록 여기에서 제 1, 제 2, 제3 등의 용어들은 다양한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들을 설명하기 위해 사용되지만, 이러한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들은 이러한 용어들로 인해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 다른 요소, 성분, 영역, 층, 또는 섹션으로부터 하나의 요소, 구성, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 후술하는 제 1 구성 요소, 성분, 영역, 층, 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고, 제 2 구성 요소, 성분, 영역, 층, 또는 섹션을 지칭 할 수 있다.
본 명세서에서 사용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “구성되는”, “구성되고 있는”, “포함하는”, 그리고 “포함하고 있는” 용어들이 본 명세서에서 사용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 성분들이 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 그리고/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는다. 본 명세서에서 사용된 바와 같이, “그리고/또는” 용어는 하나 또는 그 이상의 열거된 항목들과 연관된 임의의 그리고 모든 조합들 포함한다. “적어도 하나”와 같은 표현들은 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다.
본 명세서에서 사용된 바와 같이, “대체로”, “약” 용어 그리고 이와 유사한 용어들은 근사치의 용어들로서 사용되고, 정도의 용어들로서 사용되지 않고. 본 발명의 당업자에 의해 식별되는 측정된 또는 계산된 값들의 고유한 변동을 고려하기 위한 것이다. 또한, 본 발명의 실시 예들을 기술할 때 "할 수 있다"의 사용은 "본 발명의 하나 이상의 실시 예들"을 의미한다. 본 명세서에서 사용된 바와 같이, “사용”, “사용되는”, 그리고 “사용된” 용어들은 “이용”, “이용되는”, 그리고 “이용된” 용어들의 동의어로 각각 간주 될 수 있다. 또한, "예시" 용어는 예 또는 그림을 의미한다.
특정 실시 예는 상이하게 구현 될 수 있는 경우, 특정 프로세스 순서는 설명 된 순서와 다르게 수행 될 수 있다. 예를 들면, 설명된 연속적인 두 개의 프로세서들은 동시에 대체적으로 수행되거나 설명된 순서와 반대 순서로 수행될 수도 있다.
본 명세서에서 기술된 본 발명의 실시 예에 따른 전자 또는 전기 장치들 그리고/또는 다른 임의의 관련된 장치들 또는 요소들은 임의의 적합한 하드웨어, 펌웨어(예를 들면, Application Specific Integrated Circuit; ASIC), 소프트웨어, 또는 소프트웨어, 펌웨어, 그리고 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 요소들은 하나의 집적 회로(Integrated Circuit; IC) 칩 또는 분리된 IC 칩들로 형성될 수 있다. 또한, 이러한 장치들의 다양한 요소들은 유연한 인쇄 회로 필름(Flexible Printed Circuit Film), TCP(Tape Carrier Package), 인쇄 회로 기판(Printed Circuit Board; PCB) 위에 구현되거나 하나의 기판 위에서 형성될 수 있다. 또한, 이러한 장치들의 다양한 요소들은 컴퓨터 프로그램 명령들을 실행하고 본 명세서에서 설명된 다양한 기능들을 수행하기 위한 다른 시스템 요소들과 상호 작용하는 하나 이상의 컴퓨팅 장치들에서 또는 하나 이상의 프로세서들에서 수행되는 프로세스 또는 스레드(Thread)일 수 있다. 컴퓨터 프로그램 명령들은 예를 들면 RAM(Random Access Memory)과 같은 표준 메모리 장치를 이용하는 컴퓨팅 장치에서 구현되는 메모리 내에 저장된다. 컴퓨터 프로그램 명령들은 또한 예를 들면 CD-ROM, 플래시 드라이브(Flash Drive), 또는 그와 같은 다른 일시적이지 않은 컴퓨터 읽기 가능한 미디어(Non-transitory Computer Readable Media)에 저장될 수도 있다. 또한, 본 발명의 당업자는 본 발명의 예시적인 실시 예들의 사상 및 범위를 벗어나지 않고 다양한 컴퓨팅 장치들의 기능은 단일 컴퓨팅 장치에 통합되거나 집적되고, 특정 컴퓨팅 장치의 기능이 하나 또는 그 이상의 다른 컴퓨팅 장치들에 분산될 수 있음을 인식해야 한다.
다르게 정의되지 않는 한, 본 명세서에서 사용된 모든 용어들(기술적 그리고 과학적 용어들을 포함하는)은 본 발명이 속한 기술 분야에서 당업자에 의해 일반적으로 이해되는 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의된 이러한 용어들은 본 명세서 그리고/또는 관련 기술의 문맥에서 그들의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의되지 않는 한 이상화되거나 지나지게 형식적인 감각으로 해석되지 않아야 한다.
본 발명이 본 발명의 예시적인 실시 예들에 대한 특정 참조와 함께 자세히 기술되었지만, 본 명세서에서 기술된 실시 예들은 본 발명의 범위를 한정적으로 나타내거나 개시된 정확한 형태로 제한하려는 것이 아니다. 본 발명이 속하는 분야 및 기술의 당업자는 설명된 구조, 조립 방법, 그리고 동작 방법의 변경 및 변형들이 이하의 청구 범위 및 그것의 균등 물에 기재되는 바와 같이 본 발명의 원리, 사상, 그리고 범위를 의미 있게 벗어나지 않고도 실시될 수 있음을 이해할 수 있을 것이다.
100: 프로세싱 시스템 102: 프로세서
104: 메모리 110: 캐쉬 매니저
200: 스파크 구조 202: 어플리케이션 레이어
204: 클러스터 매니저 레이어 206: 워커 레이어
208: 유저 프로그램 210: 스파크 콘텍스트
212: RDD 그래프 214: DAG 스케쥴러
216: 테스크 스케쥴러 218: 스케쥴러 백엔드 모듈
220: 스파크 독립형 222: YARN
224: Mesos 226: 워크 노드
228: 실행자 300: 휘발성 부분
302: 예약된 메모리 304: 유저 메모리
306: 통합 풀 306a: 스토리지 메모리
306b: 실행 메모리 430: 스코어 테이블

Claims (10)

  1. 복수의 중간(intermediate) 데이터를 관리하기 위한 캐쉬(cache) 관리 시스템에 있어,
    상기 캐쉬 관리 시스템은:
    프로세서; 그리고
    상기 복수의 중간 데이터와 명령들을 저장하는 메모리를 포함하되,
    상기 명령들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는:
    액세스(access)될 새로운 중간 데이터를 식별하는 단계;
    상기 새로운 중간 데이터를 상기 복수의 중간 데이터 중 하나로 식별하는 것에 응답하여, 상기 메모리로부터 상기 중간 데이터를 로딩하는 단계; 그리고
    상기 새로운 중간 데이터를 상기 복수의 중간 데이터 중 하나로 식별하지 않는 것에 응답하여: 상기 새로운 중간 데이터의 생성 로직 체인(generating logic chain)과 적어도 일부가 동일한 가장 긴 중복(duplicate) 생성 로직 체인을 갖는 재사용 가능한 중간 데이터를 식별하는 단계와 상기 재사용 가능한 중간 데이터와 공통점이 없는 상기 새로운 중간 데이터의 상기 생성 로직 체인의 부분 및 상기 재사용 가능한 중간 데이터로부터 상기 새로운 중간 데이터를 생성하는 단계를 수행하는 시스템.
  2. 제 1 항에 있어,
    상기 명령들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는:
    상기 새로운 중간 데이터를 저장하기 위한 상기 메모리 내의 충분한 공간의 부족(lack)에 응답하여,
    상기 메모리로부터 삭제(evict)하기 위해 상기 복수의 중간 데이터로부터 희생자(victim) 중간 데이터의 세트(set)를 선택하는 단계; 그리고
    상기 메모리로부터 상기 희생자 중간 데이터의 세트를 삭제하는 단계를 더 수행하는 시스템.
  3. 제 1 항에 있어,
    상기 재사용 가능한 중간 데이터를 식별하는 단계는:
    중간 데이터의 서브 세트(subset)를 식별하되, 상기 중간 데이터의 상기 서브 세트 각각은 상기 새로운 중간 데이터와 동일한 중간 데이터 소스 및 상기 새로운 중간 데이터의 생성 로직 체인보다 길지 않은 생성 로직 체인을 갖는 단계; 그리고
    상기 새로운 중간 데이터와 매칭(matching)되는 함수들의 가장 긴 시퀀스(sequence)를 갖는 상기 중간 데이터의 상기 서브 세트들의 하나로서 상기 재사용 가능한 중간 데이터를 식별하기 위해, 상기 중간 데이터의 상기 서브 세트 각각의 생성 로직 체인의 함수들을 상기 새로운 중간 데이터의 서브 세트 각각의 생성 로직 체인의 함수들과 순서대로 비교하는 단계를 포함하는 시스템.
  4. 제 3 항에 있어,
    상기 시퀀스는, 상기 중간 데이터 소스부터 상기 중간 데이터의 상기 서브 세트 각각으로의, 함수들의 순서인 시스템.
  5. 제 3 항에 있어,
    상기 중간 데이터의 상기 서브 세트 각각의 상기 중간 데이터 소스는, 상기 새로운 중간 데이터의 크기와 동일한 크기 및 상기 새로운 중간 데이터의 타입과 동일한 타입을 갖는 시스템.
  6. 제 3 항에 있어,
    상기 중간 데이터의 상기 서브 세트를 식별하는 단계는:
    바이트 대 바이트(byte-to-byte)로, 상기 중간 데이터의 상기 서브 세트 각각의 상기 중간 데이터 소스를 상기 새로운 중간 데이터와 비교하는 단계를 포함하는 시스템.
  7. 제 3 항에 있어,
    상기 중간 데이터의 상기 서브 세트 각각의 생성 로직 체인의 함수들을 상기 새로운 중간 데이터의 서브 세트 각각의 생성 로직 체인의 함수들과 비교하는 단계는:
    상기 중간 데이터의 상기 서브 세트 각각의 상기 생성 로직 체인의 상기 함수들 및 상기 새로운 중간 데이터의 상기 서브 세트 각각의 상기 생성 로직 체인의 상기 함수들이 결정형(deterministic)이라고 판단하는 단계; 그리고
    상기 판단에 응답하여, 상기 중간 데이터의 상기 서브 세트 각각의 상기 생성 로직 체인의 상기 함수들의 타입들이 상기 새로운 중간 데이터의 상기 서브 세트 각각의 상기 생성 로직 체인의 상기 함수들의 타입들과 동일하다고 판단하는 단계를 포함하는 시스템.
  8. 제 7 항에 있어,
    상기 함수들이 결정형이라고 판단하는 단계는:
    상기 함수들 각각을 기 설정된 결정형 함수들의 리스트(list)의 하나와 매칭하는 단계를 포함하는 시스템.
  9. 제 1 항에 있어,
    상기 재사용 가능한 중간 데이터로부터 상기 새로운 중간 데이터를 생성하는 단계는:
    상기 새로운 중간 데이터를 생성하기 위해, 상기 재사용 가능한 중간 데이터와 공통점이 없는 상기 새로운 중간 데이터의 상기 생성 로직 체인의 함수들을 상기 재사용 가능한 중간 데이터에 연속하여(successively) 적용하는 단계를 포함하는 시스템.
  10. 메모리 내에 저장된 복수의 중간 데이터를 관리하는 방법에 있어, 상기 방법은:
    프로세서에 의해, 액세스될 새로운 중간 데이터를 식별하는 단계;
    상기 프로세서에 의해, 상기 새로운 중간 데이터를 상기 복수의 중간 데이터 중 하나로 식별하는 것에 응답하여, 상기 메모리로부터 상기 중간 데이터를 로딩하는 단계; 그리고
    상기 새로운 중간 데이터를 상기 복수의 중간 데이터 중 하나로 식별하지 않는 것에 응답하여: 상기 프로세서에 의해, 상기 새로운 중간 데이터의 생성 로직 체인과 적어도 일부가 동일한 가장 긴 중복 생성 로직 체인을 갖는 재사용 가능한 중간 데이터를 식별하는 단계와 상기 프로세서에 의해, 상기 재사용 가능한 중간 데이터와 공통점이 없는 상기 새로운 중간 데이터의 상기 생성 로직 체인의 부분 및 상기 재사용 가능한 중간 데이터로부터 상기 새로운 중간 데이터를 생성하는 단계를 포함하는 방법.
KR1020170090446A 2016-09-06 2017-07-17 캐쉬 관리 시스템 및 그것의 데이터 관리 방법 KR102191225B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662384078P 2016-09-06 2016-09-06
US62/384,078 2016-09-06
US15/404,100 US10311025B2 (en) 2016-09-06 2017-01-11 Duplicate in-memory shared-intermediate data detection and reuse module in spark framework
US15/404,100 2017-01-11

Publications (2)

Publication Number Publication Date
KR20180027328A true KR20180027328A (ko) 2018-03-14
KR102191225B1 KR102191225B1 (ko) 2020-12-15

Family

ID=61280782

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020170084193A KR102198680B1 (ko) 2016-09-06 2017-07-03 확장 가능한 멀티-스테이지 데이터 처리 시스템들에서의 효율적인 데이터 캐싱 관리
KR1020170086593A KR102226017B1 (ko) 2016-09-06 2017-07-07 동적으로 입도를 업데이트하는 적응적 캐시 대체 매니저 및 공유 플래시-기반 스토리지 시스템의 파티셔닝 방법
KR1020170090446A KR102191225B1 (ko) 2016-09-06 2017-07-17 캐쉬 관리 시스템 및 그것의 데이터 관리 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020170084193A KR102198680B1 (ko) 2016-09-06 2017-07-03 확장 가능한 멀티-스테이지 데이터 처리 시스템들에서의 효율적인 데이터 캐싱 관리
KR1020170086593A KR102226017B1 (ko) 2016-09-06 2017-07-07 동적으로 입도를 업데이트하는 적응적 캐시 대체 매니저 및 공유 플래시-기반 스토리지 시스템의 파티셔닝 방법

Country Status (2)

Country Link
US (4) US10467195B2 (ko)
KR (3) KR102198680B1 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3549350A4 (en) 2016-11-29 2021-03-24 Intel Corporation MILLIMETRIC WAVE CHASSIS INTERCONNECTION TECHNOLOGIES
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10289315B2 (en) * 2017-03-27 2019-05-14 Western Digital Technologies, Inc. Managing I/O operations of large data objects in a cache memory device by dividing into chunks
US10572383B2 (en) * 2017-04-12 2020-02-25 International Business Machines Corporation Caching a block of data in a multi-tenant cache storage device based on space usage boundary estimates
US10795583B2 (en) 2017-07-19 2020-10-06 Samsung Electronics Co., Ltd. Automatic data placement manager in multi-tier all-flash datacenter
US10496541B2 (en) * 2017-11-29 2019-12-03 Samsung Electronics Co., Ltd. Dynamic cache partition manager in heterogeneous virtualization cloud cache environment
WO2019142153A1 (en) * 2018-01-19 2019-07-25 Hossein Asadi Cache allocation to a virtual machine
US20190281077A1 (en) * 2018-03-07 2019-09-12 At&T Intellectual Property I, L.P. System and method for automatically learning signatures for operations policies
US20190303476A1 (en) * 2018-03-30 2019-10-03 Ca, Inc. Dynamic buffer pools for process non-conforming tasks
US10671436B2 (en) * 2018-05-02 2020-06-02 International Business Machines Corporation Lazy data loading for improving memory cache hit ratio in DAG-based computational system
JP7013326B2 (ja) * 2018-05-29 2022-01-31 株式会社日立製作所 情報処理システム、情報処理装置、および情報処理システムの制御方法
KR20200008759A (ko) * 2018-07-17 2020-01-29 에스케이하이닉스 주식회사 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법
CN109213746A (zh) * 2018-09-28 2019-01-15 北京赛博贝斯数据科技有限责任公司 Pb级历史数据和在线数据的实时计算的可视化建模方法
KR102518436B1 (ko) 2018-10-22 2023-04-05 삼성전자주식회사 디스플레이 장치 및 그 제어 방법
US20200151510A1 (en) * 2018-11-12 2020-05-14 Advanced Micro Devices, Inc. Adaptive batch reuse on deep memories
CN109491616B (zh) 2018-11-14 2022-05-24 三星(中国)半导体有限公司 数据的存储方法和设备
CN109800092A (zh) 2018-12-17 2019-05-24 华为技术有限公司 一种共享数据的处理方法、装置及服务器
US11520703B2 (en) 2019-01-31 2022-12-06 EMC IP Holding Company LLC Adaptive look-ahead configuration for prefetching data in input/output operations
US20220121421A1 (en) 2019-03-15 2022-04-21 Intel Corporation Multi-tile memory management
DE112020001249T5 (de) 2019-03-15 2021-12-23 Intel Corporation Dünnbesetzt-Optimierungen für eine Matrixbeschleunigerarchitektur
WO2020190796A1 (en) * 2019-03-15 2020-09-24 Intel Corporation Systems and methods for cache optimization
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US10871902B2 (en) * 2019-04-29 2020-12-22 EMC IP Holding Company LLC Adaptive look-ahead configuration for prefetching data in input/output operations based on request size and frequency
US10997081B2 (en) 2019-05-29 2021-05-04 Western Digital Technologies, Inc. Host and method for storage system calibration
US11010057B2 (en) * 2019-05-29 2021-05-18 Western Digital Technologies, Inc. Storage system and method for storage system calibration
US11354208B2 (en) 2019-09-11 2022-06-07 International Business Machines Corporation Adjustment of safe data commit scan based on operational verification of non-volatile memory
US11182321B2 (en) 2019-11-01 2021-11-23 EMC IP Holding Company LLC Sequentiality characterization of input/output workloads
US11099899B2 (en) * 2019-11-14 2021-08-24 Sas Institute Inc. Atomic pool manager for a data pool using a memory slot for storing a data object
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11940923B1 (en) * 2019-12-11 2024-03-26 Amazon Technologies, Inc. Cost based cache eviction
US11474799B2 (en) * 2020-07-31 2022-10-18 Snowflake Inc. Providing code translation related to resilient distributed datasets in database systems
CN114780501A (zh) * 2021-01-22 2022-07-22 伊姆西Ip控股有限责任公司 数据处理方法、电子设备和计算机程序产品
CN112527385B (zh) * 2021-02-18 2021-11-30 成都新希望金融信息有限公司 数据加工方法、装置、工作节点及存储介质
US11671353B2 (en) * 2021-07-30 2023-06-06 International Business Machines Corporation Distributed health monitoring and rerouting in a computer network
WO2023088535A1 (en) * 2021-11-16 2023-05-25 Huawei Technologies Co., Ltd. Cache eviction based on current tiering status
CN114489519B (zh) * 2022-04-18 2022-07-12 创新科技术有限公司 一种io请求的处理方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553394B1 (en) * 2000-01-21 2003-04-22 Mitsubishi Electric Research Laboratories, Inc. Continuous memoization
US20030109940A1 (en) * 2000-02-08 2003-06-12 Ulrich Guntzer Device, storage medium and a method for detecting objects strongly resembling a given object
US20110302371A1 (en) * 2008-12-10 2011-12-08 Csir Method of operating a computing device to perform memoization
US20150074350A1 (en) * 2013-09-06 2015-03-12 Frank Feng-Chun Chiang Memoization buckets for cached function results

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3030229B2 (ja) 1994-06-20 2000-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション データを転送する方法及びデータ記憶システム
US5768594A (en) 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
EP0974906A3 (en) 1998-07-24 2008-12-24 Interuniversitair Microelektronica Centrum Vzw Method for determining an optimized memory organization of a digital device
US6519756B1 (en) 1999-10-05 2003-02-11 Sun Microsystems, Inc. Method and apparatus for building an integrated circuit
US20020035605A1 (en) 2000-01-26 2002-03-21 Mcdowell Mark Use of presence and location information concerning wireless subscribers for instant messaging and mobile commerce
JP4457185B2 (ja) * 2001-02-13 2010-04-28 ネットアップ,インコーポレイテッド シリコンベースのストレージ仮想化サーバ
US7412492B1 (en) * 2001-09-12 2008-08-12 Vmware, Inc. Proportional share resource allocation with reduction of unproductive resource consumption
US7076640B2 (en) 2002-02-05 2006-07-11 Sun Microsystems, Inc. Processor that eliminates mis-steering instruction fetch resulting from incorrect resolution of mis-speculated branch instructions
AU2003215105A1 (en) * 2002-02-08 2003-09-02 Jpmorgan Chase Bank System and method for allocating computing resources
US20040193952A1 (en) 2003-03-27 2004-09-30 Charumathy Narayanan Consistency unit replication in application-defined systems
US7194587B2 (en) 2003-04-24 2007-03-20 International Business Machines Corp. Localized cache block flush instruction
US7349819B2 (en) 2003-07-08 2008-03-25 Abb Inc. Method for providing robustness to the solution of the cubic equation of state
US20050086384A1 (en) 2003-09-04 2005-04-21 Johannes Ernst System and method for replicating, integrating and synchronizing distributed information
US7395258B2 (en) 2004-07-30 2008-07-01 International Business Machines Corporation System and method for adaptive database caching
US20060253674A1 (en) * 2005-05-06 2006-11-09 Xiv Ltd. Automatic disk healing
US8140751B1 (en) * 2005-06-17 2012-03-20 Florida State University Power-aware redundant array of independent disks (PARAID) and related methods
EP1752874A1 (en) 2005-07-19 2007-02-14 Alcatel Adaptive evolutionary computer software product
CN101170416B (zh) 2006-10-26 2012-01-04 阿里巴巴集团控股有限公司 网络数据存储系统及其数据访问方法
US8468299B2 (en) * 2007-05-22 2013-06-18 International Business Machines Corporation Virtualized storage performance controller
US8108848B2 (en) 2007-08-15 2012-01-31 Microsoft Corporation Automatic and transparent memoization
KR101465789B1 (ko) 2008-01-24 2014-11-26 삼성전자주식회사 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
EP2263145B1 (en) 2008-02-12 2020-02-05 NetApp, Inc. Hybrid media storage system architecture
JP4551940B2 (ja) * 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
US8473594B2 (en) * 2008-05-02 2013-06-25 Skytap Multitenant hosted virtual machine infrastructure
US8001413B2 (en) 2008-05-05 2011-08-16 Microsoft Corporation Managing cluster split-brain in datacenter service site failover
US9213721B1 (en) 2009-01-05 2015-12-15 Emc Corporation File server system having tiered storage including solid-state drive primary storage and magnetic disk drive secondary storage
US8190595B2 (en) 2009-03-28 2012-05-29 Microsoft Corporation Flexible query hints in a relational database
US20100281078A1 (en) 2009-04-30 2010-11-04 Microsoft Corporation Distributed data reorganization for parallel execution engines
US9076240B2 (en) 2009-09-25 2015-07-07 Farzad Khalvati System, method and computer program for automated window memoization
US8463825B1 (en) 2010-04-27 2013-06-11 Tintri Inc. Hybrid file system for virtual machine storage
JP5423896B2 (ja) 2010-08-31 2014-02-19 日本電気株式会社 ストレージシステム
CN102467452B (zh) 2010-11-16 2014-08-27 北京中电华大电子设计有限责任公司 一种静态存储分配的局部非静态数据的存储空间分配方法
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
JP5478526B2 (ja) 2011-01-31 2014-04-23 日本電信電話株式会社 データ分析及び機械学習処理装置及び方法及びプログラム
US9513814B1 (en) 2011-03-29 2016-12-06 EMC IP Holding Company LLC Balancing I/O load on data storage systems
US8495178B1 (en) 2011-04-01 2013-07-23 Symantec Corporation Dynamic bandwidth discovery and allocation to improve performance for backing up data
US8918362B2 (en) 2011-05-23 2014-12-23 Microsoft Corporation Replication processes in a distributed storage environment
US8677366B2 (en) 2011-05-31 2014-03-18 International Business Machines Corporation Systems and methods for processing hierarchical data in a map-reduce framework
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
KR101257691B1 (ko) 2011-08-12 2013-04-24 아주대학교산학협력단 메모리 컨트롤러 및 이의 데이터 관리방법
US8973018B2 (en) 2011-08-23 2015-03-03 International Business Machines Corporation Configuring and relaying events from a storage controller to a host server
US8874848B2 (en) 2011-09-30 2014-10-28 Net App, Inc. Intelligence for controlling virtual storage appliance storage allocation
US20130124916A1 (en) 2011-11-16 2013-05-16 Microsoft Corporation Layout of mirrored databases across different servers for failover
US8959522B2 (en) 2012-01-30 2015-02-17 International Business Machines Corporation Full exploitation of parallel processors for data processing
US20130232382A1 (en) 2012-03-01 2013-09-05 Microsoft Corporation Method and system for determining the impact of failures in data center networks
EP2807584A2 (en) 2012-04-25 2014-12-03 Hitachi, Ltd. File storage system and file cloning method
KR101512716B1 (ko) * 2012-04-30 2015-04-17 주식회사 케이티 가상 스토리지 이미지 경량화 시스템 및 가상 스토리지 이미지 경량화 시스템의 입출력 방법 및 가상 스토리지 이미지 생성 방법
US9002939B2 (en) 2012-06-03 2015-04-07 International Business Machines Corporation Adaptive and dynamic replication management in cloud computing
US8924977B2 (en) 2012-06-18 2014-12-30 International Business Machines Corporation Sequential cooperation between map and reduce phases to improve data locality
US9361047B2 (en) * 2012-07-03 2016-06-07 Violin Memory Inc. Synchronization of a dispersed RAID group
US9411558B2 (en) 2012-10-20 2016-08-09 Luke Hutchison Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing
US9262416B2 (en) 2012-11-08 2016-02-16 Microsoft Technology Licensing, Llc Purity analysis using white list/black list analysis
US20130074057A1 (en) 2012-11-08 2013-03-21 Concurix Corporation Selecting Functions for Memoization Analysis
US9098491B2 (en) 2012-11-23 2015-08-04 Hong Kong Applied Science and Technology Research Institute Company Limited Method and system for performing data transfer with a flash storage medium
US9817766B1 (en) 2012-12-28 2017-11-14 EMC IP Holding Company LLC Managing relocation of slices in storage systems
US9081826B2 (en) * 2013-01-07 2015-07-14 Facebook, Inc. System and method for distributed database query engines
US9319464B2 (en) 2013-01-22 2016-04-19 International Business Machines Corporation Storage managment in a multi-tiered storage architecture
CN103973470A (zh) 2013-01-31 2014-08-06 国际商业机器公司 用于无共享集群的集群管理方法和设备
US10747746B2 (en) 2013-04-30 2020-08-18 Amazon Technologies, Inc. Efficient read replicas
US9189410B2 (en) 2013-05-17 2015-11-17 Vmware, Inc. Hypervisor-based flash cache space management in a multi-VM environment
US9053167B1 (en) 2013-06-19 2015-06-09 Amazon Technologies, Inc. Storage device selection for database partition replicas
US9280300B2 (en) 2013-06-28 2016-03-08 Vmware, Inc. Techniques for dynamically relocating virtual disk file blocks between flash storage and HDD-based storage
US9182927B2 (en) 2013-06-28 2015-11-10 Vmware, Inc. Techniques for implementing hybrid flash/HDD-based virtual disk files
WO2015015550A1 (ja) 2013-07-29 2015-02-05 株式会社日立製作所 計算機システム及び制御方法
US9304997B2 (en) 2013-08-27 2016-04-05 Netapp, Inc. Asynchronously migrating a file system
US10341208B2 (en) 2013-09-26 2019-07-02 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed network
US9330108B2 (en) 2013-09-30 2016-05-03 International Business Machines Corporation Multi-site heat map management
US20150127646A1 (en) 2013-11-01 2015-05-07 At&T Intellectual Property I, L.P. Big data analytics
US9348707B2 (en) 2013-12-18 2016-05-24 International Business Machines Corporation Dynamically adjusting the number of replicas of a file according to the probability that the file will be accessed within a distributed file system
CN104750558B (zh) * 2013-12-31 2018-07-03 伊姆西公司 在分层配额系统中管理资源分配的方法和装置
US9354994B2 (en) 2014-02-18 2016-05-31 International Business Machines Corporation Preemptive relocation of failing data
US9195401B2 (en) 2014-02-18 2015-11-24 University Of Florida Research Foundation, Inc. Method and apparatus for virtual machine live storage migration in heterogeneous storage environment
US10459767B2 (en) 2014-03-05 2019-10-29 International Business Machines Corporation Performing data analytics utilizing a user configurable group of reusable modules
CA2855136C (en) 2014-04-07 2019-01-29 Marin Litoiu Systems and methods of precision sharing of big data
US9323462B2 (en) 2014-04-08 2016-04-26 International Business Machines Corporation File system snapshot data management in a multi-tier storage environment
CN103955436B (zh) 2014-04-30 2018-01-16 华为技术有限公司 一种数据处理装置和终端
US9773014B2 (en) 2014-06-03 2017-09-26 Samsung Electronics Co., Ltd. Heterogeneous distributed file system using different types of storage mediums
US9372630B2 (en) 2014-07-09 2016-06-21 International Business Machines Corporation Migration of newly allocated data to a storage tier
US20160011876A1 (en) 2014-07-11 2016-01-14 Cavium, Inc. Managing instruction order in a processor pipeline
CN106796513B (zh) 2014-07-18 2020-12-11 起元科技有限公司 管理沿袭信息
US10176097B2 (en) 2014-12-16 2019-01-08 Samsung Electronics Co., Ltd. Adaptable data caching mechanism for in-memory cluster computing
US20160188490A1 (en) 2014-12-26 2016-06-30 Intel Corporation Cost-aware page swap and replacement in a memory
US10496488B2 (en) * 2014-12-31 2019-12-03 Netapp, Inc. Methods and systems for clone management
US9858191B2 (en) * 2014-12-31 2018-01-02 Samsung Electronics Co., Ltd. Electronic system with data management mechanism and method of operation thereof
US10275328B2 (en) 2015-04-02 2019-04-30 Vmware, Inc. Fault tolerance for hybrid cloud deployments
US10048996B1 (en) 2015-09-29 2018-08-14 Amazon Technologies, Inc. Predicting infrastructure failures in a data center for hosted service mitigation actions
US9967227B2 (en) 2015-11-11 2018-05-08 Fastly, Inc. Enhanced content route selection in content delivery networks
US9832277B2 (en) 2015-11-13 2017-11-28 Western Digital Technologies, Inc. Systems and methods for adaptive partitioning in distributed cache memories
US10609129B2 (en) * 2016-02-19 2020-03-31 Huawei Technologies Co., Ltd. Method and system for multi-tenant resource distribution
US10262102B2 (en) 2016-02-24 2019-04-16 Seven Bridges Genomics Inc. Systems and methods for genotyping with graph reference
US10193977B2 (en) * 2016-04-29 2019-01-29 Huawei Technologies Co., Ltd. System, device and process for dynamic tenant structure adjustment in a distributed resource management system
US10572822B2 (en) 2016-07-21 2020-02-25 International Business Machines Corporation Modular memoization, tracking and train-data management of feature extraction
US10009426B2 (en) * 2016-08-12 2018-06-26 Netapp, Inc. Converged infrastructure and associated methods thereof
US9977743B2 (en) 2016-08-31 2018-05-22 Intel Corporation Managing enclave memory pages

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553394B1 (en) * 2000-01-21 2003-04-22 Mitsubishi Electric Research Laboratories, Inc. Continuous memoization
US20030109940A1 (en) * 2000-02-08 2003-06-12 Ulrich Guntzer Device, storage medium and a method for detecting objects strongly resembling a given object
US20110302371A1 (en) * 2008-12-10 2011-12-08 Csir Method of operating a computing device to perform memoization
US20150074350A1 (en) * 2013-09-06 2015-03-12 Frank Feng-Chun Chiang Memoization buckets for cached function results

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
J. Mayfield et al., "Using automatic memoization as a software engineering tool in real-world AI systems", CAIA 1995, 20-23 Feb. 1995. *
K. Kamimura et al., "A Speed-up Technique for an Auto-Memoization Processor by Reusing Partial Results of Instruction Regions", ICNC 2012, 5-7 Dec. 2012 *

Also Published As

Publication number Publication date
US20180067857A1 (en) 2018-03-08
US10372677B2 (en) 2019-08-06
US10467195B2 (en) 2019-11-05
US20180067861A1 (en) 2018-03-08
US10452612B2 (en) 2019-10-22
KR20180027326A (ko) 2018-03-14
KR102191225B1 (ko) 2020-12-15
US20180067869A1 (en) 2018-03-08
US10311025B2 (en) 2019-06-04
KR20180027327A (ko) 2018-03-14
KR102226017B1 (ko) 2021-03-10
US20180067961A1 (en) 2018-03-08
KR102198680B1 (ko) 2021-01-05

Similar Documents

Publication Publication Date Title
KR102191225B1 (ko) 캐쉬 관리 시스템 및 그것의 데이터 관리 방법
Zhang et al. Wonderland: A novel abstraction-based out-of-core graph processing system
US8849876B2 (en) Methods and apparatuses to optimize updates in a file system based on birth time
JP6598996B2 (ja) データ準備のためのシグニチャベースのキャッシュ最適化
US9442694B1 (en) Method for storing a dataset
US20090300040A1 (en) Table partitioning and storage in a database
JP6387399B2 (ja) データ操作のための、メモリ及びストレージ空間の管理
US8606791B2 (en) Concurrently accessed hash table
CN109271343A (zh) 一种应用于键值存储系统中的数据合并方法和装置
KR102061466B1 (ko) 메모리 관리를 위한 보존 가비지 콜렉팅 및 정수 태깅 기법
JP2017529632A (ja) データベースの選択的なスナップショットを生成するためのシステムおよび方法
CN112269781A (zh) 数据生命周期管理方法、装置、介质及电子设备
US10324837B2 (en) Reducing minor garbage collection overhead
CN109923527B (zh) 可变类型建立器
US9218275B2 (en) Memory management control system, memory management control method, and storage medium storing memory management control program
JP6210501B2 (ja) データベース管理システム、計算機、データベース管理方法
CN115344539B (zh) 用于分布式数据库的日志空间回收方法和装置
JPWO2019026252A1 (ja) 計算機システム
US20170147408A1 (en) Common resource updating apparatus and common resource updating method
US9934141B1 (en) System and method for efficiently managing a containment hierarchy
Jin et al. Reasoning about Block-based Cloud Storage Systems
JP2022093083A (ja) 情報処理装置及び制御プログラム
CN116710908A (zh) 语义感知计算存储协调方法
JP2014182772A (ja) 計算機、ガベージコレクション制御方法及びプログラム
JPH0298752A (ja) 二進木による二次記憶領域管理方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant