KR20220068910A - 스토리지 셔플 가속을 위한 시스템, 방법 및 장치 - Google Patents

스토리지 셔플 가속을 위한 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20220068910A
KR20220068910A KR1020210130640A KR20210130640A KR20220068910A KR 20220068910 A KR20220068910 A KR 20220068910A KR 1020210130640 A KR1020210130640 A KR 1020210130640A KR 20210130640 A KR20210130640 A KR 20210130640A KR 20220068910 A KR20220068910 A KR 20220068910A
Authority
KR
South Korea
Prior art keywords
shuffle
data
accelerator
storage node
storage
Prior art date
Application number
KR1020210130640A
Other languages
English (en)
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 KR20220068910A publication Critical patent/KR20220068910A/ko

Links

Images

Classifications

    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • 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
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

호스트와 스토리지 노드를 갖는 시스템에서 데이터를 처리하는 방법은, 상기 스토리지 노드에 저장된 데이터에 대해 셔플 동작을 수행하는 단계를 포함하고, 상기 셔플 동작은, 셔플 쓰기 동작을 수행하는 단계 및 셔플 읽기 동작을 수행하는 단계를 포함하고, 상기 셔플 동작의 적어도 일부는 상기 스토리지 노드에서 가속기에 의해 수행될 수 있다. 데이터를 파티셔닝하는 방법은 장치가, 다수의 샘플들에 기초하여 하나 이상의 파티션들로부터 데이터를 샘플링하는 단계, 상기 샘플링된 데이터를 상기 장치에서 호스트로 전송하는 단계, 호스트가, 상기 샘플링된 데이터에 기초하여 하나 이상의 스플리터들을 결정하는 단계, 상기 호스트로부터 상기 장치로 상기 하나 이상의 스플리터들을 통신하는 단계, 및 상기 장치가 상기 하나 이상의 스플리터들에 기초하여 상기 하나 이상의 파티션들에 대한 데이터를 파티셔닝하는 단계를 포함할 수 있다.

Description

스토리지 셔플 가속을 위한 시스템, 방법 및 장치{SYSTEMS, METHODS, AND DEVICES FOR STORAGE SHUFFLE ACCELERATION}
본 개시는 일반적으로 데이터 셔플 동작에 관한 것이고, 보다 구체적으로 니어-스토리지 셔플 가속을 위한 시스템, 방법 및 장치에 관한 것이다.
호스트 및 하나 이상의 스토리지 노드를 갖는 시스템은 예를 들어, 파티션들 및/또는 노드들 사이에서 데이터를 재배열하기 위해 셔플 동작을 활용할 수 있다. 본 개시의 배경 기술에 공개된 상기 정보는 발명의 배경의 이해를 높이기 위한 것일 뿐이므로 종래 기술을 구성하지 않는 정보를 포함할 수 있다.
본 개시의 실시예들은 니어-스토리지 셔플 가속을 위한 시스템, 방법 및 장치를 제공하는 것을 목적으로 한다.
호스트와 스토리지 노드를 갖는 시스템에서 데이터를 처리하는 방법은, 상기 스토리지 노드에 저장된 데이터에 대해 셔플 동작을 수행하는 단계를 포함하고, 상기 셔플 동작은, 셔플 쓰기 동작을 수행하는 단계 및 셔플 읽기 동작을 수행하는 단계를 포함하고, 상기 셔플 동작의 적어도 일부는 상기 스토리지 노드에서 가속기에 의해 수행될 수 있다. 상기 스토리지 노드에서 수행되는 상기 셔플 동작의 일부는 상기 셔플 쓰기 동작의 일부를 포함할 수 있다. 상기 셔플 쓰기 동작의 일부는 파티션 동작을 포함할 수 있다. 상기 셔플 쓰기 동작의 일부는 어그리게이션 동작, 소팅 동작, 머지 동작, 직렬화 동작, 압축 동작, 또는 스필 동작 중 하나 이상을 포함할 수 있다. 상기 스토리지 노드에서 수행되는 상기 셔플 동작의 일부는 상기 셔플 읽기 동작의 일부를 포함할 수 있다. 상기 셔플 읽기 동작의 일부는 페칭 동작, 압축해제 동작, 역직렬화 동작, 머지 동작, 소팅 동작, 또는 어그리게이션 동작 중 하나 이상을 포함할 수 있다. 상기 스토리지 노드에서 수행되는 셔플 동작의 일부는 상기 스토리지 노드에서 가속기와 저장 장치 사이의 P2P(Peer-to-Peer) 연결을 사용하여 수행되는 파티션 동작을 포함할 수 있다. 상기 스토리지 노드에서 수행되는 셔플 동작의 일부는 상기 스토리지 노드에서 가속기와 저장 장치 사이의 P2P(Peer-to-Peer) 연결을 사용하여 수행되는 데이터 스필 동작을 포함할 수 있다.
상기 스토리지 노드에서 수행되는 상기 셔플 동작의 일부는 직접 메모리 액세스 동작을 사용하여 수행되는 페치 동작을 포함할 수 있다. 상기 스토리지 노드에서 수행되는 셔플 동작의 일부는 상기 스토리지 노드에서 가속기와 저장 장치 사이의 P2P(Peer-to-Peer) 연결을 사용하여 수행되는 데이터 머지 동작을 포함할 수 있다. 스토리지 노드는 저장 장치, 및 가속기를 포함할 수 있고, 상기 스토리지 노드는 상기 가속기를 이용하여 셔플 동작의 적어도 일부를 수행하도록 구성될 수 있다. 상기 스토리지 노드는 상기 저장 장치와 상기 가속기 사이의 P2P 연결을 더 포함할 수 있고, 상기 저장 장치와 상기 가속기는 상기 P2P 연결을 통해 데이터를 전송함으로써 상기 셔플 동작의 일부를 수행하도록 구성될 수 있다. 상기 가속기는 상기 저장 장치와 통합될 수 있다. 상기 스토리지 노드는 서버를 포함할 수 있다. 상기 저장 장치는 제1 저장 장치일 수 있고, 상기 가속기는 제1 가속기일 수 있고, 상기 P2P 연결은 제1 P2P 연결일 수 있고, 상기 스토리지 노드는 제2 저장 장치, 제2 가속기 및 상기 제2 저장 장치와 상기 제2 가속기 사이의 제2 P2P 연결을 더 포함할 수 있으며, 상기 제2 저장 장치 및 상기 제2 가속기는 상기 제2 P2P 연결을 통해 데이터를 전송함으로써 상기 셔플 동작의 일부를 수행하도록 구성될 수 있다. 상기 제1 저장 장치 및 상기 제2 저장 장치는 직접 메모리 액세스 동작을 통해 데이터를 전송함으로써 상기 셔플 동작의 일부를 수행하도록 구성될 수 있다. 상기 스토리지 노드는 원격 직접 메모리 액세스 동작을 통해 추가 스토리지 노드로 데이터를 전송함으로써 상기 셔플 동작의 일부를 수행하도록 구성될 수 있다.
데이터를 파티셔닝하는 방법은 장치가, 다수의 샘플들에 기초하여 하나 이상의 파티션들로부터 데이터를 샘플링하는 단계, 상기 샘플링된 데이터를 상기 장치에서 호스트로 전송하는 단계, 호스트가, 상기 샘플링된 데이터에 기초하여 하나 이상의 스플리터들을 결정하는 단계, 상기 호스트로부터 상기 장치로 상기 하나 이상의 스플리터들을 통신하는 단계, 및 상기 장치가 상기 하나 이상의 스플리터들에 기초하여 상기 하나 이상의 파티션들에 대한 데이터를 파티셔닝하는 단계를 포함할 수 있다. 상기 방법은 상기 장치가, 상기 하나 이상의 파티션들에 대한 레코드들의 개수를 결정하는 단계, 상기 장치로부터 상기 호스트로 상기 하나 이상의 파티션들에 대한 상기 레코드들의 개수를 통신하는 단계, 상기 호스트가, 상기 하나 이상의 파티션들에 대한 샘플들의 개수를 결정하는 단계, 및 상기 호스트로부터 상기 장치로 상기 샘플들의 개수를 통신하는 단계를 포함할 수 있다. 상기 샘플링은 상기 장치에서 가속기에 의해 수행될 수 있다.
시스템은 가속기를 포함하는 스토리지 노드, 및 상기 스토리지 노드에 저장된 데이터에 대해 셔플 동작을 수행하도록 구성된 호스트를 포함하고, 상기 셔플 동작은 셔플 쓰기 동작 및 셔플 읽기 동작을 포함하고, 상기 스토리지 노드는 상기 가속기를 이용하여 상기 셔플 동작의 적어도 일부를 수행하도록 구성될 수 있다.
본 발명의 실시예들에 따라, 셔플 동작의 하나 이상의 부분을 호스트로부터 스토리지 노드로 오프로딩(offloading)함으로써 호스트에서 처리 워크로드를 줄이고, 및/또는 입력 및/또는 출력(I/O) 동작 및/또는 호스트와 하나 이상의 스토리지 노드들 중 하나 이상의 구성 요소 간의 네트워크 전송을 줄일 수 있다. 셔플 쓰기 및/또는 셔플 읽기 동작의 하나 이상의 부분은 스토리지 노드에서 가속기에 의해 수행될 수 있다. 구현 세부사항에 따라, 이는 호스트에서 처리 워크로드를 줄이고, 및/또는 입력 및/또는 출력(I/O) 동작 및/또는 호스트와 하나 이상의 스토리지 노드들 중 하나 이상의 구성 요소 간의 네트워크 전송을 줄일 수 있다.
도면은 반드시 일정한 비율로 그려진 것은 아니며 유사한 구조 또는 기능의 요소는 일반적으로 도면 전체에 걸쳐 도시를 위해 유사한 참조 번호 또는 그 부분들로 표시될 수 있다. 도면은 여기에서 다양한 실시예들의 설명을 용이하게 하기 위한 것일 뿐이다. 도면은 여기에 개시된 교시들의 모든 측면을 나타내지 않으며 특허청구범위의 범위를 제한하지 않는다. 도면이 모호해지는 것을 방지하기 위해 모든 구성요소, 연결 등이 도시되지 않을 수 있으며 모든 구성요소에 참조 번호가 있는 것은 아니다. 그러나 구성요소의 구성 패턴은 도면에서 쉽게 알 수 있다. 첨부된 도면은 본 명세서와 함께 본 개시의 예시적인 실시예들을 도시한 것으로, 상세한 설명과 함께 본 개시의 원리를 설명하기 위한 것이다.
도 1은 분산 데이터 처리 프레임워크를 위한 셔플 동작의 실시예를 도시한다.
도 2는 분산 데이터 처리 프레임워크를 위한 셔플 아키텍처의 실시예를 도시한다.
도 3은 본 개시에 따른 셔플 가속을 구현하는 시스템의 실시예를 도시한다.
도 4는 본 개시에 따른 P2P 연결을 갖는 셔플 가속 시스템의 실시예를 도시한다.
도 5는 본 개시에 따른 P2P 연결을 갖는 셔플 가속 시스템의 예시적인 실시예를 도시한다.
도 6은 본 개시에 따른 스위치를 통한 논리적 P2P 연결을 갖는 셔플 가속 시스템의 다른 예시적인 실시예를 도시한다.
도 7은 본 개시에 따른 가속기와 통합된 스위치를 통한 논리적 P2P 연결을 갖는 셔플 가속 시스템의 다른 예시적인 실시예를 도시한다.
도 8은 본 개시에 따른 PCIe 스위치의 스위칭 기능을 구현하는데 사용될 수 있는 PCIe 베이스 어드레스 레지스터 맵(PCIe base address register map)을 도시한다.
개요
본 개시의 발명 원리들 중 일부는 셔플 동작의 하나 이상의 부분을 호스트로부터 스토리지 노드로 오프로딩(offloading)하는 것에 관한 것이다. 예를 들어, 셔플 쓰기 및/또는 셔플 읽기 동작의 하나 이상의 부분은 스토리지 노드에서 가속기에 의해 수행될 수 있다. 구현 세부사항에 따라, 이는 호스트에서 처리 워크로드를 줄이고, 및/또는 입력 및/또는 출력(I/O) 동작 및/또는 호스트와 하나 이상의 스토리지 노드들 중 하나 이상의 구성 요소 간의 네트워크 전송을 줄일 수 있다.
본 개시의 일부 추가적인 발명 원리는 셔플 동작의 하나 이상의 부분에 대해 저장 장치와 가속기 사이의 피어-투-피어(P2P) 연결의 사용에 관한 것이다. 예를 들어, P2P 연결은 셔플 쓰기 및/또는 셔플 읽기 동작의 하나 이상의 부분에 대해 저장 장치와 가속기 사이에서 데이터를 전송할 수 있다. 구현 세부사항에 따라, 이는 I/O 동작 및/또는 호스트와 하나 이상의 스토리지 노드들 중 하나 이상의 구성 요소 간의 네트워크 전송을 줄일 수 있다.
본 개시의 일부 추가적인 발명 원리는 셔플 동작의 하나 이상의 부분에 대해 하나 이상의 타입의 DMA(direct memory access) 동작의 사용에 관한 것이다. 예를 들어, DMA 또는 원격 DMA(RDMA) 동작은 노드 내의 저장 장치들 간에 또는 서로 다른 노드들 간에 데이터를 전송하는 데 사용될 수 있다. 구현 세부사항에 따라 이는 I/O 동작 및/또는 노드들 간 및/또는 노드 내의 저장 장치들 간 네트워크 전송을 줄일 수 있다.
여기에 개시된 원리들은 독립적인 유용성을 가질 수 있고 개별적으로 구현될 수 있으며, 모든 실시예가 모든 원리를 활용할 수 있는 것은 아니다. 또한, 원리들은 다양한 조합으로 구현될 수도 있으며, 그 중 일부는 개별 원리의 이점들을 시너지 방식으로 증폭할 수 있다.
셔플 동작
일부 실시예에서, 분산 데이터 처리 프레임워크에서 파티션들, 장치들, 및/또는 노드들 사이에서 데이터를 재배열하는데 셔플 동작이 사용될 수 있다. 이는, 예를 들어, 변환(transformation)이 컬럼(행)의 값들을 합산하는 것과 같이 서로다른 파티션들로부터의 데이터를 포함하는 경우 유용할 수 있다.
도 1은 분산 데이터 처리 프레임워크을 위한 셔플 동작의 실시예를 도시한다. 셔플 동작(102)은 맵 태스크 및 리듀스 태스크의 적어도 두 부분을 포함할 수 있다. 하나 이상의 맵 태스크는 예컨대, 맵 오퍼레이터, 필터 오퍼레이터 등과 같은 하나 이상의 이전 오퍼레이터로부터 병치된 데이터(collocated data)(104A, 104B, 104C)(일괄적으로 104)의 청크(chunk)를 수신할 수 있다. 맵 태스크는 레인지 파티셔닝, 리스트 파티셔닝 등과 같은 하나 이상의 파티셔닝 규칙에 기초하여 수신된 데이터를 상이한 블록들(106A, 106B, 106C)(일괄적으로 106)으로 파티셔닝할 수 있다. 도 1에 도시된 실시예에서, 분할 규칙은 범위 분할(108)로서 구현될 수 있다. 따라서, 이 실시예에서 수치 값일 수 있는 입력은 블록들(106)의 부분들에서 상이한 타입의 음영에 의해 표시될 수 있는 서로 다른 파티션들에 할당될 수 있다. 그 다음, 맵 태스크는 상이한 블록들(106)을 하나의 파일로 연결하고 파일을 중간 맵 출력으로서 로컬 스토리지에 쓸 수(예를 들어, 지속할 수) 있다.
셔플 동작(102)의 리듀스(reduce) 부분에서, 하나 이상의 리듀스 태스크는 특정 파티션을 구성하기 위해 중간 맵 출력으로부터 (예를 들어, 읽기) 블록을 요청할 수 있다. 따라서 동일한 파티션에 할당된 서로 다른 입력 청크들로부터의 엔트리들은 동일한 리듀스 출력 블록(110A, 110B 또는 110C)(일괄적으로 110)으로 모여질 수 있으며, 이는 도 1에서 서로 다른 타입의 음영에 의해 표시된 바와 같이, 파티션과 동일한 공간을 차지할 수 있다. 셔플 동작(102) 후에, 하나 이상의 셔플후 동작(예를 들어, 소팅(sort))이 리듀스-측 파티션들(110) 중 하나 이상에 대한 추가 실행을 계속할 수 있도록 데이터가 교환될 수 있다. 일부 실시예에서, 셔플 동작(102)은 파티션간 순서화를 보장할 수 있고, 및/또는 예를 들어 하나 이상의 소팅 동작(114) 후에 블록들(112A, 112B, 및 112C)(일괄적으로 112)을 포함할 수 있는 데이터셋(dataset)의 전역 순서화(global ordering)를 간접적으로 보장하거나 보증할 수 있다.
도 1에 예시된 실시예가 입력 청크들(104), 맵 출력 블록들(106) 및 리듀스 출력 블록들(예를 들어, 파티션들)(110)을 각각 3개로 도시되어 있디만, 임의의 수의 블록들이 셔플 동작(102)의 임의의 스테이지에서 사용될 수 있다. 예를 들어, 일부 실시예에서, 레이지 파티션 규칙이 100개의 레인지들을 지정하는 경우, 100개의 리듀스 출력 블록들(110)이 존재할 수 있다.
일부 실시예에서, 셔플 동작(102)은 적어도 셔플 쓰기 동작 및 셔플 읽기 동작으로 구현될 수 있다. 셔플 쓰기 동작은, 예를 들어, 입력 데이터를 서로 다른 파티션들에 속하는 엔트리들을 포함할 수 있는 하나 이상의 블록들로 재배열할 수 있는 맵 태스크에 의해 수행될 수 있다. 셔플 쓰기 동작은 이들 블록들을 중간 맵 출력으로 로컬 스토리지에 쓸 수 있다. 셔플 읽기 동작은 예컨대, 셔플 쓰기 동작에 의해 드라이버로 로깅된(logged) 맵 상태를 획득할 수 있는 리듀스 태스크에 의해 수행될 수 있다. 맵 상태는 중간 맵 출력의 어떤 블록이 각 파티션에 대한 데이터 엔트리를 포함할 수 있는지 나타낼 수 있다. 리듀스 태스크는 맵 상태에 기초하여 중간 출력의 하나 이상의 블록 또는 그 일부를 페치할(fetch) 수 있다. 블록 중 하나가 다른 노드에 위치하면, 리듀스 태스크가 네트워크를 통해 해당 블록 또는 그 일부를 페치할 수 있다.
도 2는 분산 데이터 처리 프레임워크을 위한 셔플링 아키텍처의 실시예를 도시한다. 도 2에 도시된 실시예에서, 맵 태스크(202)(매퍼(mappter)라고도 지칭될 수 있음)는 대략 도면의 좌측에 도시되어 있고, 리듀스 태스크(204)(리듀서(reducer)로도 지칭될 수 있음)은 대략 도면의 우측에 도시되어 있고 개념적으로 도면의 중앙의 음영 처리된 막대로 구분되어 있다. 일부 실시예에서, 본질적으로 모든 처리 동작들(예를 들어, 연산들)은 중앙 처리 장치(CPU)에 의해 수행될 수 있다.
셔플 동작은 리듀스 태스크(204)의 실행 방법(206)의 액션이 화살표(207)로 표시된 바와 같이 맵 태스크(202)의 개시 동작(208)을 트리거할 때 시작될 수 있다. 개시 동작(208)은 입력 데이터 및/또는 셔플 종속성 정보(shuffle dependency information)로 셔플 쓰기 동작(210)을 개시할 수 있다.
셔플 쓰기 동작(210)은 CPU가 PCIe(Peripheral Component Interconnect Express) 상호접속(interconnect)을 통해 하나 이상의 I/O 동작을 사용하여 하나 이상의 저장 장치로부터 데이터를 페치할 수 있는 데이터 파티션 동작(212)을 포함할 수 있다. 그 다음, 데이터 파티션 동작(212)은 파티션 규칙에 따라 입력 데이터의 각 엔트리로 파티션 ID(identification)를 할당함으로써 입력 데이터를 하나 이상의 블록들로 파티셔닝할 수 있다.
데이터 머지 동작(data merge operation)(214)은 동일한 파티션에 속하는 데이터 엔트리들(예컨대, 동일한 파티션 ID를 갖는 데이터)을 맵 출력 데이터의 연속하는 청크들로 머지할 수 있다. 데이터 머지 동작(214)은 또한, 예를 들어, 하나 이상의 셔플 필요요건(requirements)에 따라 데이터를 소팅(sort) 및/또는 어그리게이션(aggregate)할 수 있다.
처리된 데이터의 양이 스필 임계값(spill threshold)에 도달할 때, 셔플 쓰기 동작(210)은 데이터 스필 시퀀스(data spill sequence)를 개시할 수 있다. 일부 실시예에서, 데이터 스필 시퀀스는 I/O 동작을 통해 전송되는 맵 출력 데이터의 양을 감소시킬 수 있는 데이터 직렬화(data serialize) 동작 및/또는 데이터 압축 동작(216)을 포함할 수 있다. 그런 다음, 데이터 스필 동작(218)에서, CPU는 하나 이상의 I/O 동작을 사용하여 로컬 스토리지의 하나 이상의 파일에 맵 출력 데이터를 쓸 수 있다. 동작 220에서, CPU는 맵 출력 데이터에 대한 메타데이터를 포함할 수 있는 지도 상태 데이터를 분산 데이터 처리 프레임워크용 드라이버에 등록할 수 있다. 드라이버는 프레임워크 전체에서 사용하기 위해 맵 상태 데이터를 게시(publish)할 수 있다.
리듀스 태스크(204)의 실행 방법(206)은 또한 CPU가 동작(224)에서 맵 상태를 드라이버에 요청할 수 있는 셔플 읽기 동작(222)을 개시할 수 있다. 페치 동작(226) 동안, CPU는 예를 들어 각 파티션에 대해 하나 이상의 블록을 페치하기 위해 맵 상태를 사용할 수 있다. CPU와 입력 데이터가 서로 다른 노드들에 위치한 경우 CPU는 이더넷 및/또는 TCP/IP(Ethernet and/or Transmission Control Protocol/Internet Protocol)와 같은 네트워크 및/또는 네트워크 프로토콜을 통해 데이터를 페치할 수 있다. 일부 실시예에서, 셔플 읽기 동작(222)은 CPU가 수신된 데이터를 그 원래 형태로 변환할 수 있는 데이터 압축해제(data decompression) 동작 및/또는 데이터 역직렬화(data deserialize) 동작(228)을 포함할 수 있다.
데이터 머지 동작(230) 동안, CPU는 동일한 파티션에 속하는 데이터 엔트리를 리듀스 출력 데이터의 연속하는 청크들로 머지할 수 있으며, 이 청크들은 CPU가 하나 이상의 I/O 동작을 통해 로컬 스토리지에 쓰여질 수 있다. 일부 실시예에서, 데이터 머지 동작(214)은 또한, 예를 들어, 하나 이상의 셔플 필요요건(requirements)에 따라 데이터를 소팅(sort) 및/또는 어그리게이션(aggregate)할 수 있다. 그 다음, 리듀스 태스크(204)는 소팅(sort) 동작과 같은 하나 이상의 셔플후 동작(232)으로 진행할 수 있다.
도 1 및 2에 도시된 바와 같이, 일부 실시예에서, 셔플 동작은 직렬화/역직렬화, 압축/압축해제, 소팅 및/또는 머지 동작과 같은 하나 이상의 CPU-집약적 동작을 포함할 수 있다. 셔플 동작은 많은 I/O 동작들 및/또는 많은 작은 프래그먼트된 파일의 네트워크 전송을 포함할 수 있다. 더욱이, 동작(212)과 같은 파티션 동작은, 예컨대, 데이터가 메모리에 적합하기에 너무 큰 경우, 추가적인 CPU-집약적 샘플링 동작 및/또는 추가적인 프래그먼트된 I/O 동작을 포함할 수 있다. 또한, 데이터가 저장 장치에 쓰여지고 및/또는 읽혀질 때 및/또는 셔플 동작 동안 네트워크를 통해 전송될 때 이는 분산 데이터 처리 프레임워크가 다른 처리를 수행하는 기능을 중단시킬 수 있다. 따라서 셔플 동작은 특히 대용량 데이터, 셔플-집약적 어플리케이션에서 성능 병목 현상을 일으킬 수 있다. 또한, 셔플 동작은 CPU, 메모리, 저장 장치 및/또는 분산 데이터 처리 프레임워크를 실행하는 하나 이상의 장치 및/또는 클러스터의 네트워크 용량에 스트레스를 줄 수 있다.
일부 실시예에서, 수행되는 셔플 동작들의 수를 감소시키거나 셔플 동작 동안 전송되는 데이터의 양을 줄이는 것이 유리할 수 있다. 그러나 네트워크를 통해 다대다 방식(many-to-many fashion)으로 데이터를 셔플하는 것은 쉽지 않을 수 있다. 일부 실시예에서, 입력 데이터의 큰 부분이 될 수 있는 전체 작업 세트(entire working set)의 전부 또는 대부분이 네트워크를 통해 전송될 수 있다. 이는 예컨대, 많은 파일 및/또는 네트워크 I/O 동작을 요구함으로써 출발지 및/또는 목적지에서 운영 체제(OS)에 상당한 부담을 줄 수 있다.
셔플 가속
본 개시에 따른 일부 실시예에서, 셔플 동작의 하나 이상의 부분들은 스토리지 노드에서 가속기로 오프로딩될 수 있다.
도 3은 본 개시에 따른 셔플 가속을 구현하는 시스템의 실시예를 도시한다. 도 3에 도시된 실시예는 CPU(302), SSD(solid state drive)(304), FPGA(Field Programmable Gate Array)(306), DRAM(Dynamic Random Access Memory)(308), PCIe 스위치(310), 및 PCIe 링크들(312, 314, 및 316)을 포함할 수 있다. 도 3에 도시된 PCIe 토폴로지는 SSD(304) 및 FPGA(306)가 호스트 CPU(302)에 대한 엔드포인트로서 나타나도록 구성될 수 있다. 따라서, CPU(302)는 SSD(304)와 FPGA(306) 사이 뿐만 아니라 SSD(304)와 FPGA(306)를 위한 DRAM(308) 사이의 데이터 전송을 담당할 수 있다.
도 3에 도시된 시스템이 도 2에 도시된 것과 같은 셔플 동작을 구현하는 데 사용되는 경우, 셔플 쓰기 동작(210) 및/또는 셔플 읽기 동작(222)의 하나 이상의 처리 부분이 FPGA(306)로 오프로딩될 수 있다. 예를 들어, 파티션 동작(212), 머지 동작(214 및 230), 직렬화/역직렬화 및/또는 압축/압축해제 동작(216 및 228), 데이터 스필 동작(218) 및/또는 페치 동작(226)의 하나 이상의 부분이 FPGA(306)로 오프로딩될 수 있다. 구현 세부사항에 따라, 이들 동작들의 하나 이상의 부분에 대한 오프로딩 처리는 CPU(302)에 의해 소비되는 클록 사이클을 감소시킬 수 있다. 그러나, FPGA(306)로의 오프로딩 동작은 또한 CPU(302)를 통해 FPGA(306) 및 DRAM(308)으로/로부터 데이터를 전송하는 것을 수반할 수 있다. 이는 시스템에 대기 시간 및/또는 처리량 제한을 부과할 수 있는 구성요소들 간의 통신 비용을 증가시킬 수 있다. 더욱이, 다수의 SSD 및/또는 FPGA가 시스템에 추가되는 경우, CPU(302)는 높은 CPU 오버헤드 및/또는 제한된 PCIe 대역폭으로 인해 SSD 및/또는 FPGA와의 통신을 확장하는(scale) 능력이 부족할 수 있다.
본 개시에 따른 일부 실시예는 하나 이상의 저장 장치와 하나 이상의 가속기 간의 사설 연결(private connection)로서 구현될 수 있는 P2P 연결을 포함할 수 있다.
도 4는 본 개시에 따른 P2P 연결을 갖는 셔플 가속 시스템의 실시예를 도시한다. 도 4에 도시된 실시예는 호스트(402), 스토리지 노드(404), 및 통신 인터페이스(406)를 포함할 수 있다. 스토리지 노드(404)는 저장 장치(408), 가속기(410), 및 P2P 연결(412)을 포함할 수 있다.
도 4에 도시된 것과 같은 P2P 연결의 사용은 가속기가 하나 이상의 저장 장치의 데이터에 직접 액세스할 수 있도록 하며, 그에 따라, CPU와 저장 장치 간의 연결 및 CPU와 가속기 간의 연결에서 제한된 대역폭을 보존할 수 있다. 구현 세부사항에 따라 P2P 연결은 호스트 및/또는 호스트 메모리를 통해 데이터를 전송하는 것과 비교하여 저장 장치와 가속기 간에 데이터를 전송하는 것과 관련되어 대역폭을 늘리거나 오버헤드, 메모리 사용 및/또는 전력 소비를 줄일 수 있다. 일부 실시예에서, P2P 연결은 가속기와 저장 장치 사이에서 데이터를 여러 번 마이그레이션(migration)하는 것을 수반할 수 있는 셔플 가속 동작에 특히 유용할 수 있다.
일부 실시예에서, 그리고 구현 세부사항에 따라, (예를 들어, 가속기의 사용을 통해) 저장 장치에서 또는 저장 장치에 근접하여 연산(computation)을 구현하는 것은 I/O 동작의 비용 및/또는 전력을 감소시킬 수 있다. 또한, 예를 들어 더 큰 저장 시스템을 관리하는 맥락에서 시스템 확장성을 높일 수 있다. 그러나, SSDs와 같은 다수의 저장 장치들을 갖는 더 큰 저장 시스템의 확장성은 데이터의 읽기 및/또는 쓰기 및/또는 연결 대역폭의 공유와 관련된 호스트 메모리의 용량 및/또는 CPU 오버헤드에 의해 제한될 수 있다. 일부 실시예에서, 그리고 구현 세부사항에 따라, 여기에 개시된 P2P 통신을 사용하는 셔플 가속 기술은 이러한 병목 현상 중 하나 이상을 제거하거나 완화함으로써 시스템 확장성을 증가시킬 수 있다.
다시 도 4를 참조하면, 통신 인터페이스(406)는 호스트(402)와 저장 장치(408) 사이의 제1 통신 연결, 및 호스트(402)와 가속기(410) 사이의 제2 통신 연결을 제공할 수 있다. 일부 실시예에서, 제1 및 제2 통신 연결은 별도의 물리적 및 논리적 연결을 통해 구현될 수 있다. 일부 실시예에서, 제1 및 제2 통신 연결은 부분적으로 또는 전체적으로 결합될 수 있는 물리적 및/또는 논리적 연결을 통해 구현될 수 있다. 예컨대, 스토리지 노드(404)는 제1 및 제2 통신 연결을 부분적으로 분리된 물리적 연결로서 구현할 수 있는 물리적 스위치를 포함할 수 있다. 다른 예로서, 제1 및 제2 통신 연결은 결합된 물리적 연결에서 별도의 논리적 또는 가상 연결로서 구현될 수 있다.
통신 인터페이스(406)는 임의의 타입의 통신 구조 및/또는 프로토콜로 구현될 수 있다. 예를 들어, 통신 인터페이스(406)는 PCIe, CXL(Compute Express Link), CCIX(Cache Coherent Interconnect for Accelerators) 등과 같은 상호접속 구조 및/또는 프로토콜로 전체적으로 또는 부분적으로 구현될 수 있다. 다른 예로서, 통신 인터페이스(406)는 이더넷, TCP/IP, 파이버 채널, 인피티밴드(InfiniBand) 등과 같은 네트워크 구조 및/또는 프로토콜로 전체적으로 또는 부분적으로 구현될 수 있다. 추가 예로서, 통신 인터페이스(406)는 스토리지 인터페이스 및/또는직렬 ATA(SATA), 직렬 부착 SCSI(SAS), NVMe(Non-Volatile Memory Express) 등과 같은 프로토콜로 전체적으로 또는 부분적으로 구현될 수 있다. 더욱이, 이러한 구조, 프로토콜 및/또는 인터페이스 중 임의의 것은 NVMe-oF(NVMe over Fabric)와 같은 하이브리드 조합으로 결합될 수 있다.
P2P 연결(412)은 전술한 상호접속, 네트워크, 및/또는 스토리지 인터페이스와 같은 임의의 타입의 통신 구조 및/또는 프로토콜로 구현될 수 있다. 일부 실시예에서, P2P 연결(412)은 통신 인터페이스(406)를 구현하기 위해 사용될 수 있는 공유된 물리적 연결 상의 별도의 논리적 또는 가상 연결로서 전체적으로 또는 부분적으로 구현될 수 있다.
호스트(402)는 임의의 타입의 처리 장치로 구현될 수 있다. 예들은 CISC(complex instruction set computer) 및/또는 RISC(reduced instruction set computer) 프로세서 등을 포함하는 하나 이상의 범용 또는 특수 목적 CPU 뿐만 아니라, FPGA, ASIC(application specific integrated circuits), 시스템 온 칩(SOC) 및/또는, 아파치 스파크(Apache Spark), 아파치 하둡(Apache Hadoop) 등과 같은 분산 데이터 처리 프레임워크를 위한 호스트 프로세서의 기능을 수행할 수 있는, 기타 구성요소들을 포함할 수 있다.
저장 장치(408)는 하드 디스크 드라이브(HDD), SSD와 같은 임의의 타입의 저장 장치, 벌크 저항 변화가 있는 크로스-그리드된 메모리와 같은 영구 스토리지 등으로 구현될 수 있다.
가속기(410)는 하나 이상의 CISC 및/또는 RISC 프로세서, FPGA, ASIC, SOC, 및/또는 그래픽 처리 장치(GPU), 뿐만 아니라 임의의 조합 로직(combinational logic), 순차 로직, 타이머, 카운터, 레지스터, 게이트 어레이, CPLD(complex programmable logic device), 상태 머신 등을 포함하는 임의의 타입의 처리 장치로 구현될 수 있다. 일부 실시예에서, 가속기는 저장 장치(408)를 위한 저장 컨트롤러의 일부로서 구현될 수 있다. 일부 실시예에서, DRAM과 같은 하나 이상의 메모리는 가속기(410)에 제공되거나 가속기(410)와 통합되어 가속기(410)로 오프로딩될 수 있는 셔플 동작의 하나 이상의 부분에 대한 작업공간 메모리를 제공할 수 있다.
일부 실시예에서, 가속기(410)는 예를 들어 범용 또는 특수 목적 CPU에서 실행되는 소프트웨어에서 주로 오프로딩된 셔플 동작의 일부 또는 전부를 구현할 수 있다. 일부 실시예에서, 가속기(410)는 주로 하드웨어에서 오프로딩된 셔플 동작의 일부 또는 전부를 구현할 수 있다. 예를 들어, 하나 이상의 오프로딩된 셔플 동작이 ASIC 상에서 전용 로직으로 구현될 수 있다. 다른 예로서, 하나 이상의 오프로딩된 셔플 동작이 FPGA로 프로그래밍될 수 있다. 구현 세부사항에 따라, 하드웨어에서 오프로딩된 셔플 동작의 구현은 처리량 증가, 대기 시간 감소, 메모리 사용량 감소 및/또는 전력 소비 감소를 제공할 수 있다.
별도의 구성요소로 도시되어 있지만, 호스트(402)는 노드(404)와 일체로 구현될 수 있다. 유사하게, 노드(404)와 일체로 도시되어 있지만, 저장 장치(408) 및/또는 가속기(410)는 노드(404)와 별도로 구현될 수 있다. 일부 실시예에서, 가속기(410)는 저장 장치(408)와 통합될 수 있다.
도 4에 도시된 실시예는 임의의 물리적 구성으로 구현될 수 있다. 예를 들어, 일부 실시예에서, 시스템은 호스트(402), 저장 장치(408) 및 가속기(410)가 별도의 구성요소로 구현되는 서버 섀시로서 구현될 수 있으며, 통신 인터페이스(406) 및 P2P 연결(412)은 백플레인, 미드플레인 등을 이용하여 PCIe 링크를 통해 구현될 수 있다. 이러한 구성에서, 호스트(402)와 저장 장치(408) 사이의 제1 통신 연결은 제1 점대점(point-to-point) PCIe 링크로서 구현될 수 있고, 호스트(402)와 가속기(410) 사이의 제2 통신 연결은 제2 점대점 PCIe 링크로서 구현될 수 있고, P2P 연결(412)은 제3 점대점 PCIe 링크로서 구현될 수 있다. 대안적으로, 점대점 PCIe 링크들 중 하나 이상이 하나 이상의 PCIe 스위치를 통해 결합될 수 있다.
다른 예시적인 물리적 구성에서, 스토리지 노드(404)는 저장 장치(408) 및 가속기(410)를 포함하는 서버 섀시로서 구현될 수 있는 반면, 호스트(402)는 별도의 섀시 또는 랙에서, 또는 원격 위치에서 구현될 수 있다. 이러한 구성에서, 통신 인터페이스(406)는 이더넷 및 TCP/IP와 같은 네트워크 구조 및/또는 프로토콜로 구현될 수 있고, 저장 장치(408)는 이더넷 SSD(eSSD)로서 구현될 수 있다. 추가적으로, 이 구성에서, 네트워크 스위치는 저장 장치(408)와 호스트(402) 사이 및/또는 가속기(410)와 호스트(402) 사이의 연결을 제공하기 위해 백플레인, 미드플레인, 스위치보드 등의 상에 제공될 수 있다. 이 구성에서, P2P 연결(412)은, 예를 들어, 점대점 PCIe를 통해, 또는 백플레인, 미드플레인, 스위치보드 등의 상에 PCIe 스위치를 통해 구현될 수 있다. 대안적으로, 또는 추가적으로, P2P 연결은 전술한 바와 같이 네트워크 스위치를 통한 논리적 연결로서 구현될 수 있다.
도 5는 본 개시에 따른 P2P 연결을 갖는 셔플 가속 시스템의 예시적인 실시예를 도시한다. 도 5에 도시된 실시예는 호스트(502), 스토리지 노드(504), 통신 인터페이스(506), 저장 장치(508), 가속기(510), 및 P2P 연결(512)를 포함할 수 있으며, 이들은 도 4에 도시된 것들과 유사할 수 있고 전술한 구현 세부사항들 중 임의의 것을 사용하여 구현될 수 있다. 그러나, 도 5에 도시된 실시예는 호스트(502)와 저장 장치(508) 사이의 제1 통신 연결(516), 및 호스트(502)와 가속기(510) 사이의 제2 통신 연결(518)을 구현할 수 있는 스위치(514)를 포함할 수 있다. 일부 실시예에서, 스위치(514)는 이더넷 스위치와 같은 네트워크 스위치, PCIe 스위치와 같은 상호접속 스위치 등으로 구현될 수 있다.
도 6은 본 개시에 따른 스위치를 통한 논리적 P2P 연결을 갖는 셔플 가속 시스템의 다른 예시적인 실시예를 도시한다. 도 6에 도시된 실시예는 호스트(602), 스토리지 노드(604), 통신 인터페이스(606), 저장 장치(608), 가속기(610), 및 스위치(614)를 포함할 수 있으며, 이들은 도 4 및 도 5에 도시된 것들과 유사할 수 있고 전술한 구현 세부사항들 중 임의의 것을 사용하여 구현될 수 있다. 그러나, 도 6에 도시된 실시예에서, 저장 장치(608)와 가속기(610) 사이의 P2P 연결(612)은 스위치(614)를 통한 논리적 연결로서 구현될 수 있다.
도 7은 본 개시에 따른 가속기와 통합된 스위치를 통한 논리적 P2P 연결을 갖는 셔플 가속 시스템의 다른 예시적인 실시예를 도시한다. 도시의 목적을 위해, 도 7에 도시된 실시예는 PCIe 상호접속 토폴로지, FPGA 가속기 및 SSD 저장 장치와 같은 일부 특정 구현 세부사항을 포함할 수 있다. 그러나, 다른 실시예에서, 이러한 구성요소들은 HDD, 벌크 저항 변화가 있는 영구 크로스-그리드된 메모리 기반 스토리지 드라이브 등과 같은 대체물(substitutes), CXL, 이더넷 등과 같은 상호접속 또는 네트워크 인터페이스 및 ASIC, SOC 등으로 대체될 수 있다.
도 7에 도시된 실시예에서, 스토리지 노드는 SSD 컨트롤러(704), NAND(not-AND) 플래시 메모리 매체(706), FPGA(708), 및 DRAM(710)을 갖는 향상된 SSD(702)로서 구현될 수 있다. FPGA(708)는 PCIe 스위치(712) 및 가속기(714)를 포함할 수 있다. PCIe 스위치(712)는 PCIe 링크들(718, 720, 및 722)을 통해 각각 CPU(호스트)(716), SSD 컨트롤러(704) 및 가속기(714)에 물리적으로 연결될 수 있다. 그러나, 스위치(712)는 논리적 또는 가상 연결(724, 726, 728)을 구현할 수 있다. 논리적 연결(724)은 별도의 엔드포인트로서 나타날 수 있는 SSD 컨트롤러(704)와 호스트(716) 사이의 데이터 읽기 및/또는 쓰기 전송을 처리할 수 있다. 논리적 연결(726)은 별도의 엔드포인트로서 나타날 수 있는 가속기(714)와 호스트(716) 사이의 데이터 읽기 및/또는 쓰기 전송을 처리할 수 있다. 논리적 연결(728)은 SSD 컨트롤러(704)와 가속기(714) 사이의 P2P 통신을 처리할 수 있다. 일부 실시예에서, 하나 이상의 스위치 기능은 소프트 스위치 기능으로서 구현될 수 있다.
PCIe 스위치(712)는 집적 회로(IC) 영역의 편의성 및/또는 가용성을 위해 FPGA(708)로 물리적으로 통합될 수 있다. 그러나, 다른 실시예에서 PCIe 스위치(712)는 별도의 구성요소일 수 있거나 SSD 컨트롤러(704)에 통합될 수 있다. 다른 실시예에서, 도 7에 도시된 임의의 수의 구성요소들이 SOC 상에서 통합될 수 있다.
도 8은 PCIe 스위치(712)의 스위칭 기능을 구현하는데 사용될 수 있는 PCIe 베이스 어드레스 레지스터(BAR) 맵을 도시한다. 어드레스 맵(802)에서, NVMe 레지스터 어드레스 레인지(804)는 SSD 컨트롤러(704)와 호스트(716) 사이의 NVMe 전송을 지원할 수 있다. 가속기 어드레스 레인지(806) 및 DRAM 어드레스 레인지(808)는 호스트(716)와 가속기(714) 및 DRAM(710) 사이의 데이터 전송을 지원할 수 있다. 일부 실시예에서, FPGA용 DRAM은 호스트 PCIe 어드레스 공간에 노출될 수 있다. 일부 실시예에서, NVMe 커맨드들은 P2P 연결(728)을 사용하여 SSD 컨트롤러(704)와 FPGA(708) 사이에서 데이터를 안전하게 스트리밍할 수 있다.
여기에 개시된 임의의 셔플 가속 기술을 구현하기 위해 사용될 수 있는 도 7에 도시된 실시예는 향상된, 그리고 일부 구현에서는 무제한 동시성(unlimited concurrency)을 제공할 수 있다. 일부 실시예에서, 그리고 구현 세부사항에 따라, 이 구성은 캐시(예를 들어, L2:DRAM) 대역폭을 보존할 수 있고; 스토리지 노드에서 값비싼 CPU 없이 스케일링을 가능하게 하고; 및/또는 독립 실행형 가속기로 및/또는 독립 실행형 가속기로부터의 퍼널링(funneling) 및/또는 데이터 이동을 방지할 수 있다.
도 9는 본 개시에 따른 셔플 가속을 갖는 셔플 아키텍처의 실시예를 도시한다. 도 9에 도시된 실시예는 셔플 쓰기 동작(910)을 포함하는 맵 태스크(902) 및 셔플 읽기 동작(922)을 포함하는 리듀스 태스크(904)를 포함할 수 있다. 이들 태스크들 및 셔플 동작들은 도 2와 유사한 참조번호를 가질 수 있고 유사한 방식으로 동작할 수 있는, 일부 엘리먼트들을 포함할 수 있다. 그러나, 도 9에 도시된 시스템에서, 셔플 동작의 하나 이상의 부분들, 예를 들어 CPU-집약적 동작들은 가속기로 오프로딩될(offloaded) 수 있다. 일부 실시예에서, 음영으로 도시된 동작들의 전부 또는 일부는 가속기로 오프로딩될 수 있는 반면, 음영 없이 도시된 동작들은 CPU에 의해 실행될 수 있다. 예를 들어, 셔플 쓰기 동작(910)에서 데이터 파티션 동작(912), 데이터 머지 동작(데이터 소팅 및/또는 데이터 어그리게이션 동작을 포함할 수 있음)(914), 데이터 직렬화 및/또는 데이터 압축 동작(916) 및/또는 데이터 스필 동작(918)의 전부 또는 일부는 가속기로 오프로딩될 수 있다. 다른 예로서, 셔플 읽기 동작(922)에서, 페치 동작(926), 데이터 압축해제 및/또는 데이터 역직렬화 동작(928) 및/또는 데이터 머지 동작(930)(데이터 소팅 및/또는 데이터 어그리게이션 동작을 포함할 수 있음)의 전부 또는 일부는 가속기로 오프로딩될 수 있다. 직렬화 동작의 예는 저장 장치로 전송하기 위해 오브젝트 또는 기타 데이터를 비트스트림 또는 바이트 스트림으로 변환하는 것을 포함할 수 있다. 역직렬화 동작의 예는 저장 장치로부터 전송된 후 비트스트림 또는 바이트 스트림을 오브젝트 또는 기타 데이터로 다시 변환하는 것을 포함할 수 있다. 직렬화 및/또는 역직렬화 동작은 예를 들어 Java, Kryo 등의 직렬화/역직렬화 특징들(serialize/deserialize features)을 사용하여 수행될 수 있다. 도 9에 도시된 실시예 및 여기에 개시된 임의의 다른 실시예에서, 엘리먼트를 선택적인(optional) 것으로 라벨링한 것은 다른 엘리먼트들이 필수적임을 나타내지 않는다.
도 9에 도시된 실시예는 도 3 내지 도 8에 도시된 것을 포함하는 본 개시에 따른 임의의 가속 아키텍처로 구현될 수 있다. 저장 장치와 가속기 간의 P2P 통신을 갖는 시스템으로 구현되는 경우, 파티션 동작(912), 데이터 스필 동작(918) 및/또는 데이터 머지 동작(930) 중 일부 또는 전부가 P2P 연결을 이용할 수 있다. 예를 들어, 데이터 머지 동작(918)은 CPU와의 비교적 고가의 I/O 동작을 사용하기 보다는 P2P 연결을 통해 SSD와 같은 로컬 스토리지에 직접 중간 맵 출력 데이터를 쓸 수 있다. 다른 예로서, 파티션 동작(912)은 후술하는 바와 같이, 로컬 스토리지에 데이터를 쓰기 위해 P2P 연결을 사용할 수 있다. 구현 세부사항에 따라, P2P 연결을 사용하면 CPU에서 상대적으로 값비싼 I/O 동작을 사용하는 것과 비교하여 처리량을 늘리거나 비용, 대기 시간, 메모리 사용량 및/또는 전력 소비를 줄일 수 있다.
도 9에 도시된 실시예는 또한 하나 이상의 DMA (direct memory access) 기술을 사용할 수 있다. 예를 들어, 페치 동작(926)은 데이터가 (예컨대, 동일한 저장 장치에서, 또는 동일한 서버 섀시의 저장 장치에서) 동일한 노드 내에 있는 경우 DMA를 사용하여, 또는 데이터가 다른 노드에 있는 경우 네트워크를 통해 원격 DMA(RDMA)를 사용하여 노드, 파티션, 및/또는 블록 정보에 기초하여 맵 출력 데이터의 하나 이상의 블록을 페치할 수 있다. 일부 실시예에서, 그리고 구현 세부사항에 따라, DMA 및/또는 RDMA의 사용은 네트워크를 통한 TCP/IP과 같은 프로토콜 및/또는 CPU에 대한 I/O 동작을 이용하는 것과 비교하여 처리량을 증가시킬 수 있고 및/또는 비용, 대기 시간, 메모리 사용 및/또는 전력 소비를 감소시킬 수 있다.
다시 도 9를 참조하면, 데이터 블록이 DMA/RDMA를 사용하여 페치되고 로컬 스토리지에 저장되면, 데이터 머지 동작(930)은 데이터를 머지하기 위해 로컬 스토리지로부터(예를 들어, SSD에서 FPGA DRAM으로) 데이터를 전송하도록 프라이빗 P2P 연결을 사용하고, 하나 이상의 셔플후 동작들(932)을 계속 실행할 수 있으며, 일부 실시예에서 셔플후 동작들(932)은 또한 가속기로 오프로딩될 수 있다.
도 10은 본 개시에 따른 P2P 연결 및 DMA/RDMA 엔진을 갖는 시스템의 실시예를 도시한다. 도 10에 도시된 실시예는 호스트(1002), 스토리지 노드(1004), 통신 인터페이스(1006), 저장 장치(1008), 가속기(1010), 및 P2P 연결(1012)을 포함할 수 있으며, 이들은 도 4에 도시된 것들과 유사할 수 있다. 그러나, 도 10에 도시된 실시예는 또한 스토리지 노드(1004)가 예컨대, 동일한 노드에 위치된 디바이스들과 PCIe와 같은 상호접속을 사용하여 DMA 전송을 수행할 수 있게 하는 DMA/RDMA 엔진(1014)을 포함할 수 있다. DMA/RDMA 엔진은 또한, 스토리지 노드(1004)가 예컨대, 서로다른 노드들에 위치된 장치들과 이더넷과 같은 네트워크를 사용하여 RDMA 전송을 수행할 수 있게 할 수 있다.
도 11은 본 개시에 따른 호스트 및 스토리지 노드를 갖는 시스템에서 데이터를 처리하는 방법의 실시예를 도시한다. 호스트 및 스토리지 노드를 갖는 시스템에서 데이터를 처리하는 방법은 동작(1102)에서 시작할 수 있다. 동작(1104)에서, 스토리지 노드에 저장된 데이터에 대해 셔플 동작을 수행할 수 있다. 동작(1104)은 셔플 쓰기 동작을 수행하는 것을 포함할 수 있는 하위 동작(suboperation)(1106)을 포함할 수 있다. 동작(1104)은 또한 셔플 읽기 동작을 수행하는 것을 포함할 수 있는 하위 동작(suboperation)(1108)을 포함할 수 있다. 동작(1104)에서, 셔플 동작의 적어도 일부는 스토리지 노드에서 가속기에 의해 수행된다. 실시예에 따른 방법은 동작(1110)에서 종료될 수 있다.
여기에 설명된 임의의 다른 실시예들 뿐 아니라 도 11에 도시된 실시예와 관련하여 설명된 동작들 및/또는 구성요소들은 예시적인 동작들 및/또는 구성요소들이다. 일부 실시예에서, 일부 동작 및/또는 구성요소는 생략될 수 있고 및/또는 다른 동작 및/또는 구성요소가 포함될 수 있다. 더욱이, 일부 실시예에서, 동작들 및/또는 구성요소들의 시간적 및/또는 공간적 순서가 변경될 수 있다.
파티셔닝 동작 (Partitioning Operations)
도 12는 셔플 쓰기 동작을 위한 파티션 동작의 일 실시예를 도시한다. 일부 실시예에서, 도 12에 도시된 동작은 CPU에 의해 수행될 수 있다. 동작(1202)에서, CPU는 각 파티션을 읽고 각 파티션에 대한 데이터 샘플을 생성할 수 있다. 동작(1204)에서, CPU는 샘플을 소팅(sort)하고 샘플에 기초하여 스플리터(splitter)를 생성할 수 있다. 일부 경우에, 파티션은 스플리터를 생성하기 위해 재샘플링될 수 있다. 동작 1206에서, CPU는 각 파티션을 다시 읽고 스플리터에 기초하여 데이터를 파티셔닝할 수 있다. 동작(1208)에서, CPU는 셔플 쓰기 동작에서 다른 동작을 계속할 수 있다.
전술한 일부 실시예에서, 일부 오프로딩된 셔플 동작 또는 그 일부는 다수의 스토리지 노드들에서 동시에 실행할 수 있다. 그러나, 일부 실시예에서, 파티셔닝은 동시 실행(concurrent execution)을 방지할 수 있는 정보를 공유할 수 있다.
레인지-기반 파티셔닝 알고리즘의 예시적인 실시예는 다음과 같이 진행될 수 있다: (1) 데이터셋의 전체 또는 일부는 K * N개의 샘플들을 획득하기 위해 샘플링될 수 있으며, 여기서 K는 임의의 상수 값일 수 있는 오버샘플링 인자(oversampling factor)일 수 있고 N은 파티셔닝 후 생성된 파티션들의 총 개수일 수 있다. (2) K * N 샘플들의 어레이는 오름차순으로 소팅될 수 있다. (3) N-1개의 스플리터들은 소팅된 K * N개의 샘플로부터 예컨대, 어레이의 모든 K개의 엘리먼트들에서 숫자를 선택함으로써 획득될 수 있다. (4) 데이터셋의 전체 또는 일부는 레코드-단위별 방식(record-by-record fashion)으로 이진-검색-트리(예컨대, N이 큰 경우)를 사용하여, 예컨대, 스플리터들(만약 N이 작은 경우)을 통해 직접 반복함으로써, 파티션될 수 있다.
일부 실시예에서, 파티셔닝 알고리즘은 리듀서에 대해 균일한 크기의 파티션들을 생성할 수 있으며, 그에 따라, 샘플링된 데이터는 전체 데이터셋 분포를 잘 나타낼 수 있으며, 이는 예를 들어 레코드들이 맵 측 파티션에 많이 상주할수록 샘플들이 해당 파티션으로부터 더 많이 생성될 수 있음을 의미할 수 있다. 일부 어플리케이션(예: 빅 데이터 어플리케이션)에서, 데이터는 다수의 노드들과 다수의 저장 장치들에 분산될 수 있다. 대량의 데이터를 전송하기 위해 오버헤드를 회피하면서 가속기 장치로 파티셔닝을 오프로딩하기 위해, 본 개시에 따른 워크플로우 설계의 실시예는 조정(coordination)을 위한 CPU 작업을 줄이거나 최소화할 수 있다.
도 13은 본 개시에 따른 파티셔닝 워크플로우 아키텍처의 예시적인 실시예를 도시한다. 도 13에 도시된 실시예에서, 호스트(예를 들어, CPU)에 의해 수행되는 동작들은 대략 도면의 좌측에 도시되어 있고, 스토리지 노드(가속기 및/또는 가속기와 저장 장치 간의 P2P 연결을 포함할 수 있음)에서 수행되는 동작들이 대략 도면의 우측에 음영처리되어 도시되어 있는데, 이들 동작들은 개념적으로 도면의 중앙 아래에 음영 처리된 막대로 구분되어 있다.
동작(1302)에서, 스토리지 노드는 하나 이상의 파티션들에 대한 레코드들의 개수를 결정할 수 있다. 스토리지 노드는 통신(1)에서 레코드들의 개수를 호스트에 통신할 수 있다. 동작(1304)에서, 호스트는 파티션들 중 하나 이상에 대해 하나의 파티션 단위로(per partition basis) 수집되어야 하는 샘플들의 개수를 결정할 수 있다. 호스트는 통신(2)에서 파티션당 샘플들의 개수를 스토리지 노드로 통신할 수 있다. 동작(1306)에서, 스토리지 노드는 호스트에 의해 결정된 샘플의 개수에 기초하여 하나 이상의 파티션으로부터 데이터를 샘플링할 수 있다. 스토리지 노드는 통신(3)에서 샘플링된 데이터를 호스트로 전송할 수 있다. 동작(1308)에서, 호스트는 샘플링된 데이터를 소팅하고 샘플링된 데이터에 기초하여 하나 이상의 스플리터를 결정할 수 있다. 호스트는 통신(4)에서 스토리지 노드로 하나 이상의 스플리터들의 세트를 통신할 수 있다. 동작(1310)에서, 스토리지 노드는 스플리터들의 세트에 기초하여 데이터를 하나 이상의 파티션으로 로컬적으로 파티셔닝할 수 있다. 동작(1312)에서, 스토리지 노드는 셔플 쓰기 동작의 다른 단계들을 계속할 수 있다.
일부 실시예에서, 그리고 구현 세부사항에 따라, 도 13에 도시된 원리들은 다음 이점들을 제공할 수 있다. 첫째, 스캐닝, 이진 검색, 대규모 데이터셋 샘플링 등과 같은 일부 CPU-집약적 동작들은 CPU 활용을 낮출 수 있는 하나 이상의 가속기로 오프로딩될 수 있다. 둘째, 호스트와 스토리지 노드 간의 데이터 전송은 예컨대, 각 파티션의 크기, 샘플들의 개수 및/또는 샘플 데이터 자체와 같은 상대적으로 적은 양의 정보를 통신함으로써 감소되거나 최소화될 수 있는데, 이는 전체 데이터셋보다 작을 수 있다. 추가적으로, 일부 실시예에서, 도 13에 따른 전체 아키텍처는 예컨대, CPU-집약적 태스크들을 효율적으로 오프로딩함으로써 메모리 소비 및/또는 CPU 사용을 감소시킬 수 있다. 가속기에서의 데이터 병렬 처리(Data parallelism)는 CPU 조정(CPU coordination) 및/또는 스케줄링을 줄이거나 최소화하여 적절하게 보존될 수도 있다.
다시 도 13을 참조하면, 일부 실시예에서 단일 노드(예컨대, 저장 장치)는 다수의 파티션들을 가질 수 있다. 단일 저장 장치에서의 다수의 파티션들은 예컨대, 단일 CPU 스레드에 의해 제어되는 라운드 로빈 방식으로 반복될 수 있다. 일부 실시예에서, 트래픽 부하들(예컨대, 통신들(1-4))은 모든 파티션들의 모든 레코드들을 스캔하는 것과 비교할 때 더 작을 수 있다. 일부 실시예에서, 하나 이상의 노드는 해당 노드에 대한 각 파티션에 대한 레코드들의 개수 뿐만 아니라 일부 또는 모든 노드들에 걸친 레코드들의 총 개수를 알 수 있으며, 이는 예컨대, 해당 노드에 대한 각 파티션에 대해 비례적으로 생성할 샘플들의 개수를 결정하는 데 사용될 수 있다.
도 13에 도시된 실시예는 가속기를 이용한 셔플 동작의 맥락에서 설명될 수 있지만, 본 발명의 원리는 다른 애플리케이션에 적용될 수 있다. 예를 들어, 도 13에 도시된 원리는 하나 이상의 저장 장치에 저장될 수 있는 많은 양의 데이터를 소팅하는 것을 수반할 수 있는 외부 소팅과 같은 소팅 동작에 적용될 수 있다. 이러한 실시예에서, 레인지 파티션 규칙은 저장 장치와 호스트 사이에서 많은 양의 데이터를 왔다갔다(back-and-forth) 전송하는 것을 회피하기 위해 저장 장치와 가속기 사이의 P2P 연결을 채용할 수 있다. 일부 실시예에서, 그리고 구현 세부사항에 따라, 이것은 병렬성(parallelism), 성능, 및/또는 에너지 효율성을 개선할 수 있고, CPU 및/또는 메모리 사용량 및/또는 네트워크 오버헤드를 감소시킬 수 있다.
다른 예로서, 도 13에 도시된 원리는 데이터베이스를 위한 레인지 파티셔닝(range partitioning)에 적용될 수 있다. 예를 들어, 하나 이상의 데이터베이스 동작들의 입력일 수 있는 하나 이상의 테이블은 데이터 저장 및/또는 쿼리 성능을 개선하거나 최적화하기 위해 데이터베이스 엔진에서 사용될 수 있는 레인지에 의해 파티셔닝될 수 있다.
일부 실시예에서, 본 개시의 원리는 셔플 가속을 위한 일반 아키텍처를 제공할 수 있다. 일부 실시예는 I/O 및/또는 CPU 비용을 줄이기 위해 가속기 장치와 저장 장치 사이의 사설 상호접속을 통해 하나 이상의 가속기(예컨대, 저장 장치 니어-스토리지 컴퓨팅 파워) 및/또는 P2P 데이터 전송을 이용할 뿐만 아니라, 일부 실시예에서는 DMA 및/또는 RDMA 엔진을 이용할 수 있다. 일부 실시예에서, 그리고 구현 세부사항에 따라, 니어-스토리지-가속화된 셔플 아키텍처는 임의의 수의 다음 특징들 및/또는 이점들을 제공할 수 있다.
본 개시에 따른 아키텍처는 데이터-집약적 및/또는 셔플-집약적 어플리케이션의 성능을 향상시킬 수 있는 셔플 동작을 가속화하기 위해 연산 능력 및/또는 가속기 장치를 갖는 향상된 저장 장치를 사용할 수 있다. 일부 실시예는 I/O 비용, 메모리 소비, CPU 활용, 네트워크 오버헤드 등을 줄일 수 있다.
사설 상호접속을 통한 저장 장치와 가속기 장치 간의 P2P 통신은 예컨대, 호스트 CPU에 대한 제한된 상호접속 대역폭을 압도하지 않음으로써 시스템의 확장성을 향상시킬 수 있다.
일부 실시예는 일반 셔플 가속 아키텍처로서 구현될 수 있다. 셔플 동작이 일부 시스템에서는 필수적일 수 있고, 예를 들어 데이터 처리 플랫폼(예컨대, 빅 데이터)에서는 병목을 초래할 수 있으므로, 일부 실시예는 많은 어플리케이션에서 광범위한 전망을 가질 수 있다.
일부 실시예에서, FPGA 또는 주문형 집적 회로(ASIC)와 같은 가속기 장치 구현은 예를 들어, 전체 에너지 효율을 증가시킬 수 있는 범용 프로세서와 비교하여 더 적은 전력 소비를 가질 수 있다.
전술한 실시예들은 다양한 구현 세부사항들과 관련하여 설명되었지만, 본 개시의 원리들은 이들 또는 어떤 다른 특정 세부사항에 제한되지 않는다. 예를 들어, 일부 기능은 특정 구성요소에 의해 구현되는 것으로 설명되었지만, 다른 실시예에서, 기능은 서로 다른 위치에 있고 다양한 사용자 인터페이스들을 갖는 서로 다른 시스템들 및 구성요소들 사이에 분배될 수 있다. 특정 실시예들은 특정 프로세스, 단계 등을 갖는 것으로 설명되었지만, 이들 용어들은, 또한 특정 프로세스, 단계 등이 다수의 프로세스들, 단계들 등으로 구현될 수 있는 실시예들 또는 다수의 프로세스들, 단계들이 단일 프로세스, 단계 등에 통합될 수 있는 실시예들을 포괄할 수 있다. 구성요소 또는 엘리먼트에 대한 참조는 구성요소 또는 엘리먼트의 일부만을 나타낼 수 있다. 예를 들어, 집적 회로에 대한 언급은 집적 회로의 전체 또는 일부만을 의미할 수 있고, 블록에 대한 언급은 전체 블록 또는 하나 이상의 서브블록들을 의미할 수 있다. 본 개시 및 특허청구범위에서 "제1" 및 "제2"와 같은 용어의 사용은 이 용어들이 수식하는 사물들을 구별하기 위한 목적만을 위한 것이며, 문맥상 달리 명백하지 않는 한 공간적 또는 시간적 순서를 나타내는 것은 아닐 수 있다. 일부 실시 예에서, "에 기초하여(based on)"는 "적어도 부분적으로 기초하여"를 의미할 수 있다. 일부 실시예에서, "디스에이블되는 것"은 "적어도 부분적으로 디스에이블되는 것"을 의미할 수 있다. 제1 사물에 대한 언급은 제2 사물의 존재를 의미하지 않을 수 있다.
섹션 표제 등과 같은 다양한 구조적 지원이 편의상 제공될 수 있지만, 이러한 지원 및/또는 본 개시 및 여기에 설명된 실시예의 원리에 따라 구성된 발명(subject matter)은 이러한 구조적 지원에 의해 규정되거나 제한되지 않는다.
전술한 다양한 세부사항 및 실시예는 본 특허 개시의 발명 원리에 따라 추가 실시예를 생성하기 위해 결합될 수 있다. 본 특허 개시의 발명 원리는 본 발명의 개념을 벗어나지 않고 구성적으로 및 세부적으로 변형될 수 있으므로, 이러한 변경 및 수정은 이하 청구범위 내에 있는 것으로 간주된다.
102 : 셔플 동작
104A, 104B, 104C : 데이터들
106A, 106B, 106C : 블록들
108 : 범위 분할
110A, 110B 및 110C : 리듀스 출력 블록들
112A, 112B 및 112C : 소팅 동작 후의 블록들
114 : 소팅 동작
202 : 맵 태스크
204 : 리듀스 태스크
302 : CPU
304 : SSD
306 : FPGA
308 : DRAM
310 : PCIe 스위치
312, 314 및 316 : PCIe 링크
402 : 호스트
404 : 스토리지 노드
406 : 통신 인터페이스
408 : 저장장치
410 : 가속기
502 : 호스트
504 : 스토리지 노드
506 : 통신 인터페이스
508 : 저장장치
510 : 가속기
514 : 스위치
602 : 호스트
604 : 스토리지 노드
606 : 통신 인터페이스
608 : 저장장치
610 : 가속기
614 : 스위치
702 : 향상된 SSD
704 : SSD 컨트롤러
706 : NAND
708 : FPGA
710 : DRAM
712 : PCIe 스위치
714 : 가속기
716 : CPU(호스트)
802 : 어드레스 맵
902 : 맵 태스크
904 : 리듀스 태스크
1002 : 호스트
1004 : 스토리지 노드
1006 : 통신 인터페이스
1008 : 저장장치
1010 : 가속기
1014 : DMA/RDMA 엔진

Claims (20)

  1. 호스트와 스토리지 노드를 갖는 시스템에서 데이터를 처리하는 방법에 있어서,
    상기 스토리지 노드에 저장된 데이터에 대해 셔플 동작을 수행하는 단계를 포함하고, 상기 셔플 동작은:
    셔플 쓰기 동작을 수행하는 단계; 및
    셔플 읽기 동작을 수행하는 단계를 포함하고,
    상기 셔플 동작의 적어도 일부는 상기 스토리지 노드에서 가속기에 의해 수행되는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 스토리지 노드에서 수행되는 상기 셔플 동작의 일부는 상기 셔플 쓰기 동작의 일부를 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 셔플 쓰기 동작의 일부는 파티션 동작을 포함하는 것을 특징으로 하는 방법.
  4. 제2항에 있어서,
    상기 셔플 쓰기 동작의 일부는 어그리게이션 동작, 소팅 동작, 머지 동작, 직렬화 동작, 압축 동작, 또는 스필 동작 중 하나 이상을 포함하는것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 스토리지 노드에서 수행되는 상기 셔플 동작의 일부는 상기 셔플 읽기 동작의 일부를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 셔플 읽기 동작의 일부는 페칭 동작, 압축해제 동작, 역직렬화 동작, 머지 동작, 소팅 동작, 또는 어그리게이션 동작 중 하나 이상을 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 스토리지 노드에서 수행되는 셔플 동작의 일부는 상기 스토리지 노드에서 가속기와 저장 장치 사이의 P2P(Peer-to-Peer) 연결을 사용하여 수행되는 파티션 동작을 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 스토리지 노드에서 수행되는 셔플 동작의 일부는 상기 스토리지 노드에서 가속기와 저장 장치 사이의 P2P 연결을 사용하여 수행되는 데이터 스필 동작을 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    상기 스토리지 노드에서 수행되는 상기 셔플 동작의 일부는 직접 메모리 액세스 동작을 사용하여 수행되는 페치 동작을 포함하는 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 스토리지 노드에서 수행되는 셔플 동작의 일부는 상기 스토리지 노드에서 가속기와 저장 장치 사이의 P2P 연결을 사용하여 수행되는 데이터 머지 동작을 포함하는 것을 특징으로 하는 방법.
  11. 스토리지 노드에 있어서,
    저장 장치; 및
    가속기를 포함하고,
    상기 스토리지 노드는 상기 가속기를 이용하여 셔플 동작의 적어도 일부를 수행하도록 구성된 것을 특징으로 하는 스토리지 노드.
  12. 제11항에 있어서,
    상기 스토리지 노드는 상기 저장 장치와 상기 가속기 사이의 P2P(peer-to-peer) 연결을 더 포함하고,
    상기 저장 장치 및 상기 가속기는 상기 P2P 연결 상에서 데이터를 전송함으로써 상기 셔플 동작의 일부를 수행하도록 구성되는 것을 특징으로 하는 스토리지 노드.
  13. 제12항에 있어서,
    상기 가속기는 상기 저장 장치와 통합되어 있으며,
    상기 스토리지 노드는 서버를 포함하는 것을 특징으로 하는 스토리지 노드.
  14. 제12항에 있어서,
    상기 저장 장치는 제1 저장 장치이고, 상기 가속기는 제1 가속기이고, 상기 P2P 연결은 제1 P2P 연결이고,
    상기 스토리지 노드는
    제2 저장 장치;
    제2 가속기; 및
    상기 제2 저장 장치와 상기 제2 가속기 사이의 P2P(peer-to-peer) 연결을 더 포함하고,
    상기 제2 저장 장치 및 상기 제2 가속기는 상기 제2 P2P 연결 상에서 데이터를 전송함으로써 상기 셔플 동작의 일부를 수행하도록 구성되는 것을 특징으로 하는 스토리지 노드.
  15. 제14항에 있어서, 상기 제1 저장 장치 및 상기 제2 저장 장치는 직접 메모리 액세스 동작을 통해 데이터를 전송함으로써 상기 셔플 동작의 일부를 수행하도록 구성되는 것을 특징으로 하는 스토리지 노드.
  16. 제11항에 있어서, 상기 스토리지 노드는 원격 직접 메모리 액세스 동작을 통해 추가 스토리지 노드로 데이터를 전송함으로써 상기 셔플 동작의 일부를 수행하도록 구성되는 것을 특징으로 하는 스토리지 노드.
  17. 데이터를 파티셔닝하는 방법에 있어서,
    장치가, 다수의 샘플들에 기초하여 하나 이상의 파티션들로부터 데이터를 샘플링하는 단계;
    상기 샘플링된 데이터를 상기 장치에서 호스트로 전송하는 단계;
    호스트가, 상기 샘플링된 데이터에 기초하여 하나 이상의 스플리터들을 결정하는 단계;
    상기 호스트로부터 상기 장치로 상기 하나 이상의 스플리터들을 통신하는 단계; 및
    상기 장치가 상기 하나 이상의 스플리터들에 기초하여 상기 하나 이상의 파티션들에 대한 데이터를 파티셔닝하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제17항에 있어서,
    상기 장치가, 상기 하나 이상의 파티션들에 대한 레코드들의 개수를 결정하는 단계;
    상기 장치로부터 상기 호스트로 상기 하나 이상의 파티션들에 대한 상기 레코드들의 개수를 통신하는 단계;
    상기 호스트가, 상기 하나 이상의 파티션들에 대한 샘플들의 개수를 결정하는 단계; 및
    상기 호스트로부터 상기 장치로 상기 샘플들의 개수를 통신하는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 제17항에 있어서, 상기 샘플링은 상기 장치에서 가속기에 의해 수행되는 것을 특징으로 하는 방법.
  20. 시스템에 있어서,
    가속기를 포함하는 스토리지 노드; 및
    상기 스토리지 노드에 저장된 데이터에 대해 셔플 동작을 수행하도록 구성된 호스트를 포함하고, 상기 셔플 동작은 셔플 쓰기 동작 및 셔플 읽기 동작을 포함하고,
    상기 스토리지 노드는 상기 가속기를 이용하여 상기 셔플 동작의 적어도 일부를 수행하도록 구성된 것을 특징으로 하는 스토리지 노드.
KR1020210130640A 2020-11-19 2021-10-01 스토리지 셔플 가속을 위한 시스템, 방법 및 장치 KR20220068910A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063116144P 2020-11-19 2020-11-19
US63/116,144 2020-11-19
US17/112,975 2020-12-04
US17/112,975 US11567971B2 (en) 2020-11-19 2020-12-04 Systems, methods, and devices for storage shuffle acceleration

Publications (1)

Publication Number Publication Date
KR20220068910A true KR20220068910A (ko) 2022-05-26

Family

ID=81587755

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210130640A KR20220068910A (ko) 2020-11-19 2021-10-01 스토리지 셔플 가속을 위한 시스템, 방법 및 장치

Country Status (4)

Country Link
US (1) US11567971B2 (ko)
KR (1) KR20220068910A (ko)
CN (1) CN114546253A (ko)
TW (1) TW202221514A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220201075A1 (en) * 2020-12-17 2022-06-23 Habana Labs Ltd. Remote direct memory access (rdma) transfer of an information unit over an ethernet network
JP7232281B2 (ja) * 2021-03-29 2023-03-02 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US20240094907A1 (en) * 2022-07-27 2024-03-21 Meta Platforms Technologies, Llc Lossless compression of large data sets for systems on a chip
CN115994107B (zh) * 2023-03-22 2023-07-14 苏州浪潮智能科技有限公司 存储设备的存取加速系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312219B2 (en) * 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
KR20130097972A (ko) 2012-02-27 2013-09-04 삼성전자주식회사 하드웨어 가속화를 통한 대규모 데이터의 분산 처리 장치 및 방법
US20130339649A1 (en) * 2012-06-15 2013-12-19 Intel Corporation Single instruction multiple data (simd) reconfigurable vector register file and permutation unit
EP2915049B1 (en) 2012-10-30 2020-03-04 Hewlett-Packard Enterprise Development LP Smart memory buffers
US9715475B2 (en) 2015-07-21 2017-07-25 BigStream Solutions, Inc. Systems and methods for in-line stream processing of distributed dataflow based computations
US20180068004A1 (en) 2016-09-08 2018-03-08 BigStream Solutions, Inc. Systems and methods for automatic transferring of at least one stage of big data operations from centralized systems to at least one of event producers and edge devices
US10374628B2 (en) 2017-04-05 2019-08-06 International Business Machines Corporation In-place data compression with small working memory
US10642520B1 (en) 2017-04-18 2020-05-05 EMC IP Holding Company LLC Memory optimized data shuffle
US10929175B2 (en) * 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
US11309908B2 (en) * 2018-11-26 2022-04-19 Fungible, Inc. Static dictionary-based compression hardware pipeline for data compression accelerator of a data processing unit

Also Published As

Publication number Publication date
US11567971B2 (en) 2023-01-31
TW202221514A (zh) 2022-06-01
CN114546253A (zh) 2022-05-27
US20220156287A1 (en) 2022-05-19

Similar Documents

Publication Publication Date Title
US11567971B2 (en) Systems, methods, and devices for storage shuffle acceleration
Jun et al. Bluedbm: An appliance for big data analytics
István et al. Caribou: Intelligent distributed storage
Lu et al. High-performance design of apache spark with RDMA and its benefits on various workloads
Stuedi et al. Crail: A High-Performance I/O Architecture for Distributed Data Processing.
Kim et al. In-storage processing of database scans and joins
Huang et al. High-performance design of hbase with rdma over infiniband
Mirzadeh et al. Sort vs. hash join revisited for near-memory execution
US20130318084A1 (en) Processing structured and unstructured data using offload processors
US20150127691A1 (en) Efficient implementations for mapreduce systems
Chung et al. Lightstore: Software-defined network-attached key-value drives
Jun et al. Terabyte sort on FPGA-accelerated flash storage
WO2013155751A1 (zh) 面向并发olap的数据库查询处理方法
Ueno et al. Efficient breadth-first search on massively parallel and distributed-memory machines
CN113312415A (zh) 用于数据库操作的近存储器加速
US11194522B2 (en) Networked shuffle storage
Honjo et al. Hardware acceleration of hadoop mapreduce
JP7246989B2 (ja) Ndpサーバー―データセンターのストレージサーバーベースのデータ中心のコンピューティングアーキテクチャ―
KR20140111746A (ko) 워크 로드에 따라 동적 자원 할당 가능한 상호 연결 패브릭 스위칭 장치 및 방법
EP3859509A1 (en) Latency and throughput centric reconfigurable storage device
KR20220147496A (ko) 어댑티브 니어 스토리지 연산을 위한 시스템, 방법, 디바이스 및 장치
Hu et al. {QZFS}:{QAT} Accelerated Compression in File System for Application Agnostic and Cost Efficient Data Storage
Zou et al. Assasin: Architecture support for stream computing to accelerate computational storage
Yoshimi et al. An FPGA-based tightly coupled accelerator for data-intensive applications
Zou et al. PSACS: Highly-Parallel Shuffle Accelerator on Computational Storage.