KR20220105591A - 스토리지 쿼리 플래닝을 위한 시스템, 방법, 및 장치 - Google Patents

스토리지 쿼리 플래닝을 위한 시스템, 방법, 및 장치 Download PDF

Info

Publication number
KR20220105591A
KR20220105591A KR1020220002279A KR20220002279A KR20220105591A KR 20220105591 A KR20220105591 A KR 20220105591A KR 1020220002279 A KR1020220002279 A KR 1020220002279A KR 20220002279 A KR20220002279 A KR 20220002279A KR 20220105591 A KR20220105591 A KR 20220105591A
Authority
KR
South Korea
Prior art keywords
storage
nodes
compute
bandwidth
processing session
Prior art date
Application number
KR1020220002279A
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 KR20220105591A publication Critical patent/KR20220105591A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • G06Q10/047Optimisation of routes or paths, e.g. travelling salesman problem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/805QOS or priority aware
    • H04L47/823
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Biology (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Development Economics (AREA)
  • Artificial Intelligence (AREA)
  • Game Theory and Decision Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

방법은 처리 세션에 대한 데이터셋에 액세스하기 위해 스토리지 리소스들에 대한 요청을 수신하는 단계, 데이터셋에 기초하여, 처리 세션에 대한 하나 이상의 스토리지 노드들을 할당하는 단계, 및 하나 이상의 스토리지 노드들을 하나 이상의 네트워크 경로들을 통해 처리 세션에 대한 하나 이상의 컴퓨트 노드들에 매핑하는 단계를 포함할 수 있다. 방법은 하나 이상의 스토리지 노드들 및 하나 이상의 컴퓨트 노드들의 리소스 맵을 반환하는 단계를 더 포함할 수 있다. 방법은 처리 세션에 대한 이용 가능한 스토리지 대역폭을 추정하는 단계를 더 포함할 수 있다. 방법은 이용 가능한 클라이언트 대역폭을 추정하는 단계를 더 포함할 수 있다. 방법은 네트워크 경로들 중 하나를 통해 하나 이상의 스토리지 노드들 중 적어도 하나 및 하나 이상의 컴퓨트 노드들 중 적어도 하나 사이의 연결에 대역폭을 할당하는 단계를 더 포함할 수 있다.

Description

스토리지 쿼리 플래닝을 위한 시스템, 방법, 및 장치{SYSTEMS, METHODS, AND APPARATUS FOR STORAGE QUERY PLANNING}
본 개시는 일반적으로 스토리지 쿼리(query)들에 관한 것으로, 보다 상세하게는, 스토리지 쿼리 플래닝을 위한 시스템, 방법, 및 장치에 관한 것이다.
데이터 처리 세션(data processing session)들은 다중 스토리지 노드들에 걸쳐 저장될 수 있는 데이터셋(dataset)들을 읽을 수 있다. 서로 다른 스토리지 노드(storage node)들로부터의 데이터는 네트워크를 통해 액세스될 수 있고 그리고 서로 다른 컴퓨트 노드(compute node)들에 의해 처리될 수 있다.
이러한 배경기술 섹션(section)에서 개시된 상술된 정보는 본 개시의 배경의 이해를 돕기 위한 것이며, 따라서 이는 선행 기술을 구성하지 않는 정보를 포함할 수 있다.
본 개시의 일 실시 예에 따르면, 스토리지 쿼리 플래닝을 위한 시스템, 방법, 및 장치가 제공된다.
방법은, 처리 세션에 대한 데이터셋(dataset)에 액세스하기 위해 스토리지 리소스들에 대한 요청을 수신하는 단계, 상기 데이터셋에 기초하여, 상기 처리 세션에 대한 하나 이상의 스토리지 노드들을 할당하는 단계, 및 상기 하나 이상의 스토리지 노드들을 하나 이상의 네트워크 경로들을 통해 상기 처리 세션에 대한 하나 이상의 컴퓨트 노드들에 매핑하는 단계를 포함할 수 있다. 상기 방법은, 상기 하나 이상의 스토리지 노드들 및 상기 하나 이상의 컴퓨트 노드들의 리소스 맵을 반환하는 단계를 더 포함할 수 있다. 상기 리소스 맵은 할당된 리소스 맵을 포함할 수 있다. 상기 리소스 맵은 이용 가능성 리소스 맵을 포함할 수 있다. 상기 방법은, 상기 처리 세션에 대한 이용 가능한 스토리지 대역폭을 추정하는 단계를 더 포함할 수 있다. 상기 방법은, 이용 가능한 클라이언트 대역폭을 추정하는 단계를 더 포함할 수 있다. 상기 방법은, 상기 네트워크 경로들 중 하나를 통해 상기 하나 이상의 스토리지 노드들 중 적어도 하나 및 상기 하나 이상의 컴퓨트 노드들 중 적어도 하나 사이의 연결에 대역폭을 할당하는 단계를 더 포함할 수 있다. 상기 처리 세션에 대한 상기 이용 가능한 스토리지 대역폭은 상기 하나 이상의 스토리지 노드들에 대한 벤치마크(benchmark) 데이터에 기초하여 추정될 수 있다. 상기 처리 세션에 대한 상기 이용 가능한 스토리지 대역폭은 상기 하나 이상의 스토리지 노드들에 대한 히스토리컬(historical) 데이터에 기초하여 추정될 수 있다. 상기 방법은, 상기 처리 세션에 대한 상기 데이터셋에 액세스하는 성능을 결정하는 단계를 더 포함할 수 있다. 상기 처리 세션에 대한 상기 데이터셋에 액세스하는 성능을 결정하는 단계는 상기 처리 세션에 대한 QoS(quality-of-service)를 결정하는 단계를 포함할 수 있다. 상기 처리 세션에 대한 QoS를 결정하는 단계는 상기 하나 이상의 스토리지 노드들에 대한 베이스라인(baseline) 데이터 또는 히스토리컬 데이터 중 하나에 기초하여 QoS 확률을 계산하는 단계를 포함할 수 있다. 상기 방법은, 상기 처리 세션에 대한 상기 하나 이상의 스토리지 노드들의 실제 성능을 모니터링하는 단계를 더 포함할 수 있다. 상기 처리 세션은 인공 지능 트레이닝 세션을 포함하는 방법.
시스템은, 처리 세션에 대한 데이터셋(dataset)을 저장하도록 구성된 하나 이상의 스토리지 노드들, 상기 하나 이상의 스토리지 노드들을 상기 처리 세션에 대한 하나 이상의 컴퓨트 노드들에 연결하도록 구성된 하나 이상의 네트워크 경로들, 및 스토리지 쿼리 관리자를 포함할 수 있다. 상기 스토리지 쿼리 관리자는, 상기 처리 세션에 대한 상기 데이터셋에 액세스하기 위해 스토리지 리소스들에 대한 요청을 수신하고, 상기 요청에 기초하여, 상기 처리 세션에 대한 상기 하나 이상의 스토리지 노드들 중 적어도 하나를 할당하고, 그리고 상기 적어도 하나의 할당된 스토리지 노드를 상기 하나 이상의 네트워크 경로들 중 적어도 하나를 통해 상기 처리 세션에 대한 상기 하나 이상의 컴퓨트 노드들 중 적어도 하나에 매핑하도록 구성될 수 있다. 상기 스토리지 쿼리 관리자는 상기 하나 이상의 네트워크 경로들 중 적어도 하나를 통해 상기 하나 이상의 스토리지 노드들 중 적어도 하나 및 상기 하나 이상의 컴퓨트 노드들 중 적어도 하나 사이의 연결에 대역폭을 할당하도록 더 구성될 수 있다. 상기 스토리지 쿼리 관리자는, 상기 처리 세션에 대한 이용 가능한 스토리지 대역폭을 추정하고, 상기 처리 세션에 대한 이용 가능한 클라이언트 대역폭을 추정하고, 그리고 상기 처리 세션에 대한 상기 이용 가능한 스토리지 대역폭 및 상기 이용 가능한 클라이언트 대역폭에 기초하여 리소스 맵을 반환하도록 더 구성될 수 있다. 상기 스토리지 쿼리 관리자는 상기 처리 세션에 대한 QoS(quality-of-service)를 예측하도록 더 구성될 수 있다.
방법은, 처리 세션에 대한 스토리지 리소스들에 대한 요청을 수신하는 단계로서, 상기 요청은 데이터셋(dataset) 및 하나 이상의 컴퓨트 노드들에 대한 정보를 포함하는 것, 상기 데이터셋에 기초하여 스토리지 노드를 할당하는 단계, 상기 컴퓨트 노드들 중 하나를 할당하는 단계, 상기 스토리지 노드 및 상기 할당된 컴퓨트 노드 사이의 네트워크 연결을 위한 대역폭을 할당하는 단계, 및 상기 스토리지 노드, 상기 할당된 컴퓨트 노드, 및 상기 네트워크 연결에 기초하여 상기 처리 세션에 대한 리소스 할당 맵을 반환하는 단계를 포함할 수 있다. 상기 스토리지 노드는 제1 스토리지 노드를 포함할 수 있고, 상기 할당된 컴퓨트 노드는 할당된 제1 컴퓨트 노드를 포함할 수 있고, 상기 대역폭은 제1 대역폭을 포함할 수 있고, 그리고 상기 네트워크 연결은 제1 네트워크 연결을 포함할 수 있고, 상기 방법은, 상기 데이터셋에 기초하여 제2 스토리지 노드를 할당하는 단계, 상기 컴퓨트 노드들 중 제2 컴퓨트 노드를 할당하는 단계, 및 상기 제2 스토리지 노드 및 상기 할당된 제2 컴퓨트 노드 사이의 제2 네트워크 연결을 위한 제2 대역폭을 할당하는 단계를 더 포함할 수 있고, 그리고 상기 리소스 할당 맵은 상기 제2 스토리지 노드, 상기 할당된 제2 컴퓨트 노드, 및 상기 제2 네트워크 연결에 더 기초할 수 있다.
본 개시의 실시 예들에 따르면, 스토리지 쿼리 플래닝을 위한 시스템, 방법, 및 장치가 제공될 수 있다.
또한, 네트워크 경로들을 통해 스토리지 노드들 및 컴퓨트 노드들을 연결함으로써, 스토리지 노드들에 저장된 데이터셋을 효율적으로 처리하는 시스템, 방법, 및 장치가 제공될 수 있다.
도면들은 반드시 일정한 비율로 도시된 것은 아니며, 유사한 구조들 또는 기능들의 구성 요소들은 일반적으로 도면들에 걸쳐 설명의 목적으로 유사한 참조 번호들 또는 그것들의 부분들로 표시될 수 있다. 도면들은 본 명세서에서 설명된 다양한 실시 예들의 설명을 용이하게 하는 것만을 의도한다. 도면들은 본 명세서에서 개시된 교시들의 모든 양상들을 설명하지 않으며, 청구항들의 범위를 제한하지 않는다. 도면이 불명료해지는 것을 방지하기 위해, 모든 구성들, 연결들, 및 이와 유사한 것이 도시되지 않을 수 있고, 모든 구성들에 참조 번호가 있는 것은 아니다. 그러나, 구성 요소들의 패턴들은 도면들로부터 쉽게 알 수 있다. 첨부된 도면들은, 상세한 설명과 함께, 본 개시의 예시적인 실시 예들을 설명하고, 그리고 상세한 설명과 함께, 본 개시의 원리들을 설명하는 역할을 한다.
도 1은 본 개시의 예시적인 실시 예들에 따른 스토리지 쿼리 플래닝 아키텍처의 실시 예를 설명한다.
도 2는 본 개시의 예시적인 실시 예들에 따른 스토리지 쿼리 플래닝 아키텍처의 예시적인 실시 예를 설명한다.
도 3은 본 개시의 예시적인 실시 예들에 따른 컴퓨트 서버의 예시적인 실시 예를 설명한다.
도 4는 본 개시의 예시적인 실시 예들에 따른 스토리지 서버의 예시적인 실시 예를 설명한다.
도 5는 본 개시의 예시적인 실시 예에 따른 네트워크 및 QoS 관리 아키텍처의 예시적인 실시 예를 설명한다.
도 6은 본 개시의 예시적인 실시 예들에 따른 스토리지 쿼리 관리자를 초기화하는 방법의 실시 예를 설명한다.
도 7은 본 개시의 예시적인 실시 예들에 따른 스토리지 쿼리 관리자의 동작하는 방법의 실시 예를 설명한다.
도 8은 본 개시의 예시적인 실시 예들에 따른 이용 가능성 리소스 맵의 예시적인 실시 예를 설명한다.
도 9는 본 개시의 예시적인 실시 예들에 따른 리소스 할당 맵의 예시적인 실시 예를 설명한다.
도 10은 본 개시의 예시적인 실시 예들에 따른 스토리지, 네트워킹, 및 컴퓨트 리소스들을 포함하는 시스템의 실시 예를 설명한다.
도 11은 본 개시의 예시적인 실시 예들에 따른 성능을 추정하는 방법들의 실시 예들을 설명한다.
도 12는 본 개시의 예시적인 실시 예들에 따른 방법을 설명한다.
도 13은 본 개시의 예시적인 실시 예들에 따른 다른 방법을 설명한다.
개요(Overview)
인공 지능(AI; artificial intelligence) 트레이닝 및/또는 추론 세션(inferencing session)들과 같은 세션들을 처리하는 동안, 다중 컴퓨트(compute) 리소스들은 하나 이상의 네트워크 경로들을 통해 스토리지 시스템의 데이터셋(dataset)들에 액세스할 수 있다. 스토리지 시스템이 결정적(deterministic) 및/또는 예측 가능한 성능을 제공하지 않으면, 컴퓨트 리소스들 중 일부는 데이터가 부족할 수 있는 반면에 다른 일부는 필요한 것보다 더 많은 스토리지 대역폭을 사용할 수 있다. 이로 인해, 특히 다중 동시 처리 세션들을 실행할 때, 예측 불가 및/또는 연장된 세션 완료 시간들 및/또는 충분히 활용되지 않은 스토리지 리소스들이 초래될 수 있다. 또한, 처리 세션의 속도를 높이려는 시도로서 이것은 사용자들이 스토리지 시스템을 오버프로비전(overprovision)하게 할 수 있다.
본 개시의 예시적인 실시 예들에 따르면, 세션을 시작하기 전에 스토리지 대역폭과 같은 리소스들을 할당하기 위해 처리 세션에 대한 스토리지 쿼리 플랜(SQP; storage query plan)이 생성될 수 있다. 구현 세부 사항에 따라, 이것은 스토리지 리소스들의 보다 효율적인 사용 및/또는 세션들을 처리하기 위한 예측 가능 및/또는 일관된 런-타임(run-time)들을 가능하게 할 수 있다.
일부 실시 예들에서, 사용자 애플리케이션은 처리 세션 동안 하나 이상의 클라이언트 노드들에서 컴퓨트 리소스들이 데이터셋에 액세스할 수 있도록 리소스들에 대한 요청을 발행(issue)할 수 있다. 요청은 컴퓨트 리소스들의 개수, 컴퓨트 리소스들의 각각의 대역폭, 데이터셋에 대한 정보, 및/또는 이와 유사한 것과 같은 정보를 포함할 수 있다. 요청에서의 정보에 기초하여, 스토리지 쿼리 관리자는 컴퓨트, 네트워크, 및/또는 스토리지 리소스들을 할당 및/또는 스케줄링(scheduling)함으로써 처리 세션에 대한 스토리지 쿼리 플랜을 생성할 수 있다. 스토리지 쿼리 관리자는, 예를 들어, 처리 세션에 대한 전체 이용 가능한(available) 스토리지 대역폭을 추정함으로써, 및/또는 전체 이용 가능한 클라이언트 대역폭을 추정함으로써, 리소스들을 할당할 수 있다. 일부 실시 예들에서, 스토리지 쿼리 관리자는 전체 이용 가능한 클라이언트 대역폭을 만족시키기에 충분한 스토리지 및/또는 네트워크 대역폭을 할당할 수 있고, 이는 다른 동시 처리 세션들에 대해 이용 가능한 리소스들을 남길 수 있다.
일부 실시 예들에서, 스토리지 쿼리 관리자는, 예를 들어, 스토리지 쿼리 플랜이 적절한 성능을 제공할 가능성이 있는지 결정하기 위해 할당된 리소스들에 대한 베이스라인(baseline) 및/또는 히스토리컬(historical) 성능 데이터에 기초하여, 처리 세션에 대한 QoS(quality-of-service)를 예측할 수 있다.
일부 실시 예들에서, 사용자 애플리케이션은 애플리케이션 프로그래밍 인터페이스(API; application programming interface)를 통해 스토리지 쿼리 관리자의 서비스들에 액세스할 수 있다. API는 사용자 애플리케이션이 처리 세션을 위한 리소스들을 요청하고, 요청의 상태를 체크하고, 리소스들을 스케줄링하고, 리소스들을 해제하고, 및/또는 이와 유사한 것을 가능하게 하는 커맨드 세트를 포함할 수 있다.
일부 실시 예들에서, 스토리지 쿼리 관리자는, 예를 들어, 사전-할당된 리소스들 및/또는 성능이 제공되고 있는지 여부를 결정하기 위해, 처리 세션의 실행 동안 클라이언트 컴퓨트 리소스들, 네트워크 리소스들, 및/또는 스토리지 리소스들을 관리 및/또는 모니터링할 수 있다.
본 명세서에서 개시된 원리들은 독립적인 유용성을 갖고 개별적으로 구현될 수 있으며, 모든 실시 예가 모든 원리를 이용할 수 있는 것은 아니다. 그러나, 원리들은 다양한 조합으로도 구현될 수 있고, 그 중 일부는 시너지적인(synergistic) 방식으로 개별 원리들의 이점들을 증폭시킬 수 있다.
처리 세션들(processing sessions)
본 명세서에서 개시된 원리들은 임의의 특정한 애플리케이션들로 제한되는 것은 아니지만, 일부 실시 예들에서, 기법들은 AI 트레이닝 및/또는 추론 세션들이 적용될 때 특히 유용할 수 있다. 예를 들어, 일부 AI 트레이닝 세션들은 트레이닝 서버들과 같은 하나 이상의 클라이언트 노드들에 위치한 하나 이상의 컴퓨트 유닛(CU; compute unit)들을 사용하여 트레이닝 알고리즘을 실행할 수 있다. 트레이닝 세션 동안, 컴퓨트 유닛들은 스토리지 클러스터의 노드들과 같은 하나 이상의 스토리지 리소스들에 분산될 수 있는 트레이닝 데이터셋의 전부 또는 일부에 각각 액세스할 수 있다.
본 개시의 예시적인 실시 예들에 따른 스토리지 리소스들에 걸쳐 성능을 예약 및/또는 관리하는 스토리지 쿼리 플랜이 없으면, 개별적인 컴퓨트 리소스들은 그들이 필요할 수 있는 타임 슬롯(time slot)들 동안 데이터셋의 관련 부분들에 액세스하지 못할 수 있다. 이것은 동시 트레이닝 세션들을 실행하는 여러 컴퓨트 유닛들의 세트들이 동일한 데이터셋에 액세스하기 위해 스토리지 리소스들을 공유할 수 있는 데이터 병렬 트레이닝 세션들에서 특히 문제가 될 수 있다. 더욱이, 데이터 병렬 트레이닝에서 하나 이상의 배치(batch) 크기들에 대해, 하나 이상의 컴퓨트 리소스들에 대한 그래디언트(gradient)들이 자주 집계(aggregate)될 수 있다. 이것은 관련 데이터가 결정적 속도로 개별적인 컴퓨트 리소스들에 일관되게 제공되는 것을 막을 수 있다.
그러나, 일부 AI 트레이닝 세션들은 읽기-전용 방식 및/또는 예측 가능한 액세스 패턴들로 데이터에 액세스하는 경향을 가질 수 있다. 예를 들어, AI 트레이닝 애플리케이션은 각 트레이닝 세션에 앞서 어느 컴퓨트 리소스들이 특정 타임 슬롯들 동안 트레이닝 데이터셋의 어느 부분들에 액세스할지를 알 수 있다. 이것은 스토리지 활용도를 증가시킬 수 있는 방식으로 동일한 스토리지 리소스들을 공유할 수 있도록 다중 동시 AI 트레이닝 세션들에 대한 리소스들을 조정할 수 있는 스토리지 쿼리 플랜의 생성을 용이하게 할 수 있다.
스토리지 쿼리 플래닝 아키텍처(storage query planning architecture)
도 1은 본 개시의 예시적인 실시 예들에 따른 스토리지 쿼리 플래닝 아키텍처의 실시 예를 설명한다. 도 1에서 설명된 실시 예는 처리 세션에 대한 데이터셋을 저장하도록 구성된 하나 이상의 스토리지 노드들(102) 및 네트워크(104)를 포함할 수 있고, 네트워크(104)는 하나 이상의 컴퓨트 노드들(106)이 데이터셋의 적어도 일부에 액세스할 수 있도록 하나 이상의 스토리지 노드들(102)을 하나 이상의 컴퓨트 노드들(106)에 연결하도록 구성된 하나 이상의 네트워크 경로들을 포함할 수 있다. 도 1에서 설명된 실시 예는 스토리지 쿼리 관리자(108)를 포함할 수 있고, 스토리지 쿼리 관리자(108)는 하나 이상의 컴퓨트 노드들(106)이 처리 세션에 대한 데이터셋의 적어도 일부에 액세스할 수 있게 하는 스토리지 리소스들에 대한 애플리케이션(112)으로부터의 요청(110)을 수신하도록 구성될 수 있다. 스토리지 쿼리 관리자(108)는, 데이터셋에 기초하여, 처리 세션에 대한 하나 이상의 스토리지 노드들을 할당하도록 더 구성될 수 있다. 스토리지 쿼리 관리자(108)는 네트워크(104)의 하나 이상의 네트워크 경로들을 통해 하나 이상의 할당된 스토리지 노드들(102)을 처리 세션에 대한 하나 이상의 컴퓨트 노드들(106)에 매핑(mapping)하도록 더 구성될 수 있다.
하나 이상의 스토리지 노드들(102)은 스토리지 리소스들의 임의의 타입 및/또는 구성으로 구현될 수 있다. 예를 들어, 일부 실시 예들에서, 하나 이상의 스토리지 노드들(102)은 자기(magnetic) 스토리지 매체를 포함할 수 있는 하드 디스크 드라이브(HDD; hard disk drive)들, NAND(not-AND) 플래시 메모리와 같은 솔리드 스테이트 스토리지 매체를 포함할 수 있는 솔리드 스테이트 드라이브(SDD; solid state drive)들, 교차-그리드 비휘발성 메모리와 같은 임의의 타입의 영구 메모리에 기초하여 구동하는 광학 드라이브들, 벌크 저항 변화를 갖는 메모리, 및/또는 이와 유사한 것과 같은 하나 이상의 스토리지 장치들, 및/또는 이들의 임의의 조합으로 구현될 수 있다. 일부 실시 예들에서, 하나 이상의 스토리지 노드들(102)은, 예를 들어, 하나 이상의 서버 섀시(chassis), 서버 랙(rack)들, 서버 랙들의 그룹들, 데이터룸들, 데이터센터들, 에지 데이터 센터들, 모바일 에지 데이터센터들, 및/또는 이와 유사한 것, 및/또는 이들의 임의의 조합에서 구성된, 예를 들어, 하나 이상의 서버들에서 배열된 다중 스토리지 장치들로 구현될 수 있다. 일부 실시 예들에서, 하나 이상의 스토리지 노드들(102)은 하나 이상의 서버 클러스터들로 구현될 수 있다.
네트워크(104)는 네트워크 리소스들의 임의의 타입 및/또는 구성으로 구현될 수 있다. 예를 들어, 일부 실시 예들에서, 네트워크(104)는 TCP/IP(Transmission Control Protocol/Internet Protocol), RoCE(RDMA(Remote Direct Memory Access) over Converged Ethernet), 및/또는 이와 유사한 것과 같은 임의의 타입의 네트워크 프로토콜들, SATA(Serial ATA), SCSI(Small Computer Systems Interface), SAS(Serial Attached SCSI), NVMe(Non-Volatile Memory Express), NVMe-oF(NVMe-over-fabric), 및/또는 이와 유사한 것과 같은 임의의 스토리지 인터페이스들 및/또는 프로토콜들을 사용하는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 인피니밴드(InfiniBand), 및/또는 이와 유사한 것을 포함할 수 있다. 일부 실시 예들에서, 네트워크(104)는 하나 이상의 스위치들, 라우터(router)들, 브릿지(bridge)들, 허브(hub)들, 및/또는 이와 유사한 것과 상호 연결된 다중 네트워크들 및/또는 네트워크 세그먼트들로 구현될 수 있다. 따라서, 네트워크 또는 세그먼트들의 임의의 부분은 네트워크 리소스들의 임의의 타입 및/또는 구성으로 구현된, 하나 이상의 LAN(local area network)들, WAN(wide area network)들, SAN(storage area network)들, 및/또는 이와 유사한 것으로 구성될 수 있다. 일부 실시 예들에서, 네트워크(104)의 일부 또는 전부는 VLAN(virtual LAN), VWAN(virtual WAN), 및/또는 이와 유사한 것과 같은 하나 이상의 가상 구성 요소들로 구현될 수 있다.
하나 이상의 컴퓨트 노드들(106)은 컴퓨트 리소스들의 임의의 타입 및/또는 구성으로 구현될 수 있다. 예를 들어, 일부 실시 예들에서, 하나 이상의 컴퓨트 노드들(106)은 중앙 처리 장치(CPU; central processing unit)들, 그래픽 처리 장치(GPU; graphics processing unit)들, 뉴럴 처리 유닛(NPU; neural processing unit)들, 텐서 처리 장치(tensor processing unit)들, 및/또는 이와 유사한 것과 같은 하나 이상의 컴퓨트 유닛(compute unit)들로 구현될 수 있다. 일부 실시 예들에서, 하나 이상의 컴퓨트 노드들(106) 및/또는 그것들의 컴퓨트 유닛들은 조합 논리(combinational logic), 순차 논리(sequential logic), 하나 이상의 타이머들, 카운터들, 레지스터들, 상태 머신들, DRAM(dynamic random access memory) 및/또는 SRAM(static random access memory)와 같은 휘발성 메모리들, 플래시 메모리와 같은 비휘발성 메모리, CPLD(complex programmable logic device)들, FPGA(field programmable gate array)들, ASIC(application specific integrated circuit)들, x86 프로세서와 같은 CISC(complex instruction set computer) 프로세서들 및/또는 ARM 프로세서들과 같은 RISC(reduced instruction set computer) 프로세서들, 및/또는 임의의 타입의 메모리에 저장된 명령어들을 실행하는 유사한 것으로 구현될 수 있다. 일부 실시 예들에서, 하나 이상의 컴퓨트 노드들 및/또는 그것들의 컴퓨트 유닛들(106)은 본 명세서에서 설명된 리소스들의 임의의 조합으로 구현될 수 있다. 일부 실시 예들에서, 하나 이상의 컴퓨트 노드들(106) 및/또는 그것들의 컴퓨트 유닛들은, 예를 들어, 하나 이상의 서버 섀시들, 서버 랙들, 서버 랙들의 그룹들, 데이터룸들, 데이터센터들, 에지 데이터 센터들, 모바일 에지 데이터센터들, 및/또는 이와 유사한 것, 및/또는 이것들의 임의의 조합에서 구성된, 예를 들어, 하나 이상의 서버들에서 배열된 다중 컴퓨트 리소스들로 구현될 수 있다. 일부 실시 예들에서, 하나 이상의 컴퓨트 노드들(106)은 하나 이상의 컴퓨트 서버 클러스터들로 구현될 수 있다.
스토리지 쿼리 관리자(108)는 하드웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 예를 들어, 일부 실시 예들에서, 스토리지 쿼리 관리자(108)는 조합 논리, 순차 논리, 하나 이상의 타이머들, 카운터들, 레지스터들, 상태 머신들, DRAM 및/또는 SRAM과 같은 휘발성 메모리들, 플래시 메모리와 같은 비휘발성 메모리, CPLD들, FPGA들, ASIC들, CISC 프로세서들 및/또는 RISC 프로세서들, 및/또는 명령어들을 실행하는 이와 유사한 것, 및/또는 이와 유사한 것, 및/또는 GPU들, NPU들, TPU들, 및/또는 이와 유사한 것으로 구현될 수 있다.
구현 세부 사항에 따라, 도 1에서 설명된 실시 예는 임의의 개수의 후술되는 특징들 및/또는 이점들을 제공할 수 있다.
일부 실시 예들에서, 스토리지 노드들의 클러스터는 처리 세션을 시작하기 전에 스토리지 대역폭을 할당하기 위해 각 처리 세션 전에 스토리지 쿼리 플랜의 생성을 가능하게 할 수 있는 결정적 IOPS(input and/or output operations per second) 및/또는 대역폭을 제공할 수 있다. 이것은 스토리지 리소스들의 효율적인 사용 및/또는 기존 및/또는 새로운 세션들에 대한 결정적 런-타임을 가능하게 할 수 있다.
일부 실시 예들은 각 프로비저닝된 스토리지 노드에 대해 일관된 대역폭 성능을 제공할 수 있는 결정적 스토리지 클러스터로부터 스토리지 쿼리 플랜을 생성할 수 있다. 일부 실시 예들에서, 이것은 읽기-전용 성능을 위해 프로비저닝될 수 있는 스토리지 클러스터 및 특정된 개수의 연결들, 큐(queue) 깊이들, 및/또는 I/O(input/output) 요청 크기들을 제공할 수 있는 클라이언트 노드와 관련될 수 있다.
일부 실시 예들은 결정적 데이터 병렬 및/또는 다른 처리 세션 완료 시간들을 가능하게 할 수 있다. 일부 실시 예들은 클러스터에서의 일부 또는 모든 스토리지 노드들에 로드를 지능적으로 분배함으로써 스토리지 클러스터를 효율적으로 활용할 수 있다. 이것은 다중 동시 처리 세션들이 동일한 스토리지 리소스들을 공유하는 것을 가능하게 할 수 있다. 일부 실시 예들은, 예를 들어, 리소스들이 이용 가능할 때 사용자 및/또는 애플리케이션에게 통지함으로써 스토리지 쿼리들의 스케줄링을 지원할 수 있다.
일부 실시 예들은 스토리지 클러스터로부터 이용 가능한 성능의 일부 또는 전부를 효과적으로 활용할 수 있고, 이는 운영 비용을 감소시킬 수 있다. 일부 실시 예들에서, 스토리지 쿼리 플랜은 하나 이상의 처리 세션들의 불확실성 및/또는 예측 불가능성을 감소시키거나 제거할 수 있다. 이것은 다중 동시 처리 세션들이 동일한 스토리지 클러스터를 사용할 수 있는 경우에 특히 효과적일 수 있다. 일부 실시 예들은, 예를 들어, 단순화된 사용자 인터페이스 및/또는 스토리지 성능 관리를 제공함으로써, 스토리지 사용을 단순화할 수 있다.
일부 실시 예들은, 예를 들어, 하나 이상의 컴퓨트 유닛들, 스토리지 리소스들, 및/또는 네트워크 구성들의 전체 성능 능력(performance capability)을 추정하고 그리고 하나 이상의 스토리지 쿼리 플랜들에 대한 대역폭들의 할당 및 할당 해제를 관리하는 데이터베이스를 생성함으로써, 스토리지 클러스터 성능을 관리할 수 있다. 일부 실시 예들은, 예를 들어, 사용자 및/또는 애플리케이션이 데이터셋 및 대역폭 요구 사항들의 세트를 제공하고, 그리고 처리 세션에 사용할 스토리지 리소스의 매핑을 수신하는 것을 가능하게 함으로써, 처리 애플리케이션에 의한 스토리지 클러스터의 사용을 단순화할 수 있는 API 서비스들을 제공할 수 있다.
일부 실시 예들에서, 처리 세션에 앞서 스토리지 쿼리 플랜을 갖는 사용자 및/또는 애플리케이션을 제공하는 것은 사용자 및/또는 애플리케이션이 처리 세션을 실행할지 여부를 결정하게 할 수 있다. 예를 들어, 리소스들을 예약할 수 있는 스토리지 쿼리 플랜은 사용자 및/또는 애플리케이션이 스토리지 및 네트워크 리소스가 처리 세션을 성공적으로 실행하기에 충분한 성능을 제공할 수 있는지 여부를 결정하게 할 수 있고 다른 현재 실행중인 세션과의 간섭을 방지할 수 있다. 이것은 다중 컴퓨트 유닛들(예를 들어, GPU들)을 운영하는 것이 결정적 속도로 일관되게 액세스되는 데이터와 관련될 수 있는 데이터 병렬 AI 트레이닝 세션들에서 특히 유용할 수 있다. 일부 실시 예들은, 예를 들어, 공유된 스토리지 클러스터에서 다중 AI 트레이닝 세션들을 실행하는 스토리지 및/또는 네트워크 활용을 개선할 수 있는 리소스 조정 및/또는 관리를 제공할 수 있다.
일부 실시 예들은 실행 동안 사전-할당된 리소스들이 처리 세션의 시작에 앞서 추정될 수 있는 성능을 제공하는 것을 보장하는 GPU들, 네트워크 리소스들, 및/또는 스토리지 리소스들과 같은 클라이언트 컴퓨트 유닛들을 포함하는 전체 처리 세션 리소스들을 모니터링 및/또는 관리할 수 있다.
도 2는 본 개시의 예시적인 실시 예들에 따른 스토리지 쿼리 플래닝 아키텍처의 예시적인 실시 예를 설명한다. 도 2에서 설명된 실시 예는 도 1에서 설명된 실시 예에 대한 일부 가능한 예시적인 구현 세부 사항들을 설명할 수 있다. 도 2에서 설명된 실시 예는 하나 이상의 스토리지 노드들(202), 하나 이상의 컴퓨트 노드들(206), 및 스토리지 쿼리 관리자(208)를 포함할 수 있다. 하나 이상의 스토리지 노드들(202)의 각각은, 예를 들어, 하나 이상의 객체들의 형태로 하나 이상의 데이터셋의 전부 또는 일부를 저장할 수 있는 객체 스토리지와 같은 임의의 타입의 키-값(KV; key value) 스토리지 방식으로 구현될 수 있다. 예를 들어, 도 2에서 설명된 예시에서, 컴퓨트 서버로서 구현될 수 있는, 클라이언트 노드들로도 지칭될 수 있는, 하나 이상의 캄퓨트 노드들(206)의 각각은 하나 이상의 컴퓨트 유닛(CU; compute unit)들(214)을 포함할 수 있다. 도 2에서 설명된 실시 예가 AI 트레이닝 세션들에 사용되면, 하나 이상의 컴퓨트 노드들(206)은 트레이닝 노드들 또는 트레이닝 서버들로도 지칭될 수 있다. (컴퓨트 노드(206)의 보다 상세한 예시는 도 3에서 설명될 수 있다. 스토리지 노드(202)의 보다 상세한 예시는 도 4에서 설명될 수 있다.)
포트들, 핸들들, 및/또는 이와 유사한 것을 나타낼 수 있는, 네트워크 연결들(216)은, 예를 들어, 처리 세션에 대한 스토리지 쿼리 플랜의 일부로서 스토리지 쿼리 관리자(208)에 의해 확립(establish)될 수 있는, 네트워크 경로들(218)을 통해 컴퓨트 유닛들(214) 및 스토리지 노드들(202) 사이의 연결들을 나타내기 위해 개념적으로 도시될 수 있다. 일부 실시 예들에서, 컴퓨트 유닛들(214) 및 스토리지 노드들(202) 사이의 실제 연결들은 각각의 컴퓨트 서버(206) 상의 네트워크 인터페이스 컨트롤러(NIC; network interface controller)(220)를 통해 확립될 수 있다. 일부 실시 예들에서, 그리고 구현 세부 사항에 따라, 비교적 많은 개수의 네트워크 연결들(216) 및 네트워크 경로들(218)은 다-대-다(many-to-many) 데이터 병렬 동작들을 제공하도록 구성될 수 있고, 이는 스토리지 리소스들의 효율적인 사용 및/또는 다중 동시 처리 세션들에 대한 결정적 런-타입 행동이 가능할 수 있도록 조정될 수 있다.
스토리지 쿼리 관리자(208)는 스토리지-측 API(222)를 통해 하나 이상의 스토리지 노드들(202)로부터 리소스 정보를 수집할 수 있고, 그리고/또는 이에 대한 리소스 할당들을 전송할 수 있다. 스토리지 쿼리 관리자(208)는 클라이언트-측 API(224)를 통해 하나 이상의 컴퓨트 서버들(206)로부터의 리소스 정보를 수집할 수 있고, 그리고/또는 이에 대한 리소스 할당들을 전송할 수 있다. API들(222 및 224)은 임의의 적절한 타입의 API, 예를 들어, 네트워크 기반구조를 통해 스토리지 쿼리 관리자(208) 그리고 클라이언트-측 및 스토리지-측 구성 요소들 사이의 상호 작용들을 용이하게 할 수 있는 REST(representational state transfer) API로 구현될 수 있다. 일부 실시 예들에서, REST API는 또한 사용자 및/또는 애플리케이션이 하나 이상의 스토리지 노드들(202)에 의해 제공될 수 있는 QoS 서비스들을 쉽게 활용하게 할 수 있다. 일부 실시 예들에서, 예를 들어, 하나 이상의 컴퓨트 서버들(206)에서 실행될 수 있고 그리고 하나 이상의 스토리지 서버들(202)에 대한 IO(input and/or output)들을 처리할 수 있는 라이브러리를 통해, API의 하나 이상의 특징들은 액세스 가능할 수 있다.
스토리지 쿼리 관리자(208)는 하나 이상의 리소스 데이터베이스들(226)을 사용하여, 스토리지 리소스들, 컴퓨트 리소스들, 네트워크 리소스들, 및/또는 이와 유사한 것을 포함하는 시스템에 존재하는 리소스들의 개수, 타입, 능력, 벤치마크 성능 데이터, 히스토리컬 성능 데이터, 및/또는 이와 유사한 것에 대한 정보를 유지할 수 있다. 스토리지 쿼리 관리자(208)는 하나 이상의 쿼리 구성 데이터베이스들(228)을 사용하여 리소스들, 스토리지 쿼리 플랜들, 연결, 구성들, 및/또는 이와 유사한 것에 대한 요청들에 대한 정보를 유지할 수 있다.
스토리지 상태 모니터(230)는 시스템에서의 스토리지 리소스들, 네트워크 리소스들, 컴퓨트 리소스들, 및/또는 이와 유사한 것 중 임의의 것의 상태 및/또는 동작에 대한 정보를 모니터링 및/또는 기록할 수 있다. 예를 들어, 스토리지 상태 모니터(230)는 스토리지 리소스들의 하나 이상의 QoS 메트릭(metric)들(232)을 모니터링하여 스토리지 쿼리 관리자(208)가 스토리지 쿼리 플랜이 예상대로 수행되는지 여부를 결정하기 위해 시스템의 다양한 구성들의 성능을 평가하게 할 수 있다. 다른 예로서, 스토리지 상태 모니터(230)는 미래의 스토리지 쿼리 플랜들을 위해 다양한 리소스들의 성능을 보다 정확하게 추정하는데 사용될 수 있는 히스토리컬 성능 데이터를 수집할 수 있다. 스토리지 상태 모니터(230)는 그라파이트(Graphite), 콜렉트디(Collectd), 및/또는 이와 유사한 것과 같은 임의의 성능 QoS 모니터링 리소스들로 구현될 수 있다.
스토리지 상태 모니터(230), 하나 이상의 리소스 데이터베이스들(226), 및 하나 이상의 쿼리 구성 데이터베이스들(228)은 시스템에서의 임의의 적절한 위치 또는 위치들에 위치할 수 있다. 예를 들어, 일부 실시 예들에서, 스토리지 상태 모니터(230) 및 데이터베이스들(226 및 228)은 전용 서버에 위치할 수 있다. 일부 다른 실시 예들에서, 스토리지 상태 모니터(230) 및 데이터베이스들(226 및 228)은 스토리지 노드들(202), 컴퓨트 서버들(206)과 같은 다른 구성들에 통합될 수 있고, 그리고/또는 다른 구성들 사이에 분산될 수 있다.
도 2에서 설명된 실시 예는 또한 스토리지 쿼리 관리자(208)에 대한 소프트웨어 구조(234)의 표현을 포함할 수 있다. 구조(234)는 스토리지 쿼리 API(236)를 포함할 수 있고, 이는 스토리지 상태 모니터(230)에 의해 제공된 서비스들에 액세스하기 위해 하나 이상의 사용자 애플리케이션들(예를 들어, AI 트레이닝 및/또는 추론 애플리케이션들과 같은 처리 애플리케이션들)에 의해 사용될 수 있다. 쿼리 플래닝 모듈(238)은 스토리지 쿼리 API(236)를 통해 수신된 리소스 요청들에 응답하여 스토리지 쿼리 플랜들을 생성할 수 있다. 스토리지 상태 모듈(240)은, 예를 들어, 하나 이상의 쿼리 구성 데이터베이스들(228)의 정보를 사용하는 하나 이상의 스토리지 쿼리 플랜들의 상태 및/또는 성능을 모니터링 할 수 있다. 스토리지/컴퓨트 리소스 관리자 모듈(242)은, 예를 들어, 하나 이상의 데이터베이스들(226)에 대한 정보를 사용하는 스토리지 및/또는 컴퓨트 리소스들을 관리할 수 있다. 네트워크 리소스 관리자 모듈(244)은, 예를 들어, 하나 이상의 리소스 데이터베이스들(226)에 대한 정보를 사용하는 네트워크 리소스들을 관리할 수 있다.
도 3은 본 개시의 예시적인 실시 예들에 따른 컴퓨트 서버의 예시적인 실시 예를 설명한다. 하나 이상의 스토리지 노드들로서 동작할 수 있는, 도 3에서 설명된 컴퓨트 서버(306)는 NIC(320), 메모리(346), 및 임의의 개수의 컴퓨트 유닛들(314)을 포함할 수 있다. 데이터 로더(348)(예를 들어, 데이터 로더 구성)은 처리 세션을 위해 NIC(320)를 통해 하나 이상의 스토리지 노드들로부터 수신된 데이터셋의 하나 이상의 부분들을 메모리(346)로 로드한 후, 데이터를 사용할 수 있는 컴퓨트 유닛들(314)로 데이터셋의 하나 이상의 부분들을 분산시키도록 구성될 수 있다. 데이터 로더(348)는 처리 애플리케이션(350)(예를 들어, AI 트레이닝 및/또는 추론 세선과 같은 처리 세션을 구현할 수 있는 사용자 애플리케이션)의 제어에 따라 동작할 수 있다. 일부 실시 예들은 후술되는 바와 같이 컴퓨트 서버(306)가 비집계된(disaggregated) 스토리지 시스템의 일부로서 동작할 수 있게 하는 클라이언트 래퍼(client wrapper)(352)를 더 포함할 수 있다.
컴퓨트 유닛들(314), NIC(320), 및/또는 데이터 로드(348)는 하드웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있고, 이들의 임의의 조합은 조합 논리, 순차 논리, 하나 이상의 타이머들, 카운터들, 레지스터들, 상태 머신들, DRAM 및/또는 SRAM과 같은 휘발성 메모리들, 플래시 메모리와 같은 비휘발성 메모리, CPLD들, FPGA들, ASIC들, CISC 프로세서들 및/또는 RISC 프로세서들, 및/또는 명령어들을 실행하는 이와 유사한 것, 및/또는 이와 유사한 것뿐만 아니라, GPU들, NPU들, TPU들, 및/또는 이와 유사한 것을 포함할 수 있다.
도 4는 본 개시의 예시적인 실시 예들에 따른 스토리지 서버의 예시적인 실시 예를 설명한다. 도 4에서 설명된 스토리지 서버(402)는, 예를 들어, 도 1에서 설명된 하나 이상의 스토리지 노드들(102), 도 2에서 설명된 하나 이상의 스토리지 노드들(202), 및/또는 이와 유사한 것을 구현하는데 사용될 수 있다. 스토리지 서버(402)는 제1 듀얼-포트 NIC(420), 제2 듀얼-포트 NIC(421), 제1 스토리지 서버(452), 제2 스토리지 서버(454), 스토리지 인터페이스(456), 스토리지 인터페이스 서브시스템(458), 및 KV 스토리지 풀(460)을 포함할 수 있다.
스토리지 서버들(452 및 454)은, 예를 들어, 임의의 타입의 키-값(KV; key-value) 스토리지 방식으로 구현될 수 있다. 일부 실시 예들에서, 스토리지 서버들(452 및 454)은 하나 이상의 데이터셋들의 전부 또는 일부가 하나 이상의 객체들의 형태로 저장될 수 있는 객체 스토리지 방식을 사용하는 KV 스토리지를 구현할 수 있다. 적절한 객체 스토리지 서버들의 예시들은 MinIO, OpenIO, 및/또는 이와 유사한 것을 포함할 수 있다. 일부 실시 예들에서, 네임 서버 또는 다른 방식이 아이탬 매핑(item mapping)들을 위해 사용될 수 있다. 일부 실시 예들에서, 스토리지 서버들(452 및 454)은 (예를 들어, 페타바이트(PB) 스케일 이상의) 매우 큰 데이터셋들을 저장하기 위해 스케일링될 수 있는 키-값 관리 방식 및/또는 (예를 들어, 한 번 쓰기(write-once)를 처리하고, 많은 구현을 읽기 위해) 많은 개수의 아이탬 매핑들이 사용될 수 있는 네임 서버로 구현될 수 있다.
일부 실시 예들에서, 스토리지 서버들(452 및 454)은 NIC들(420 및 421) 그리고 스토리지 인터페이스(456) 사이의 객체 스토리지 인터페이스를 제공할 수 있다. 스토리지 인터페이스(456) 및 스토리지 인터페이스 서브시스템(458)은, 예를 들어, KV 스토리지 풀(460)에 대한, 고속 연결들, 큐들, I/O(input and/or output) 요청들, 및/또는 이와 유사한 것을 구현하기 위해, NVMe 타겟 및 NVMe 서브 시스템으로, 각각, 구현될 수 있다. 일부 실시 예들에서, KV 스토리지 풀(460)은 하나 이상의 KV 스토리지 장치들(예를 들어, KV SSD들)(462)로 구현될 수 있다. 대안적으로, 또는 추가적으로, KV 스토리지 풀(460)은 KV(예를 들어, 객체) 스토리지를 파일 또는 블록-지향 스토리지 장치들(462)로 변환하는 변환 기능을 구현할 수 있다.
일부 실시 예들에서, 객체 스토리지 서버들(452 및 454)은, 예를 들어, 스토리지 서버(402)가 NIC들(420 및 421)을 통해 피어-투-피어(P2P; peer-to-peer) 트래픽을 전송하는 것과 관련될 수 있는 스토리지 대역폭을 소모하지 않고 직접적으로 다른 장치들(예를 들어, 스토리지 서버(402)의 다중 인스턴스(instance)들)과 통신할 수 있도록, 하나 이상의 P2P 연결들(464 및 466)을 구현할 수 있다.
네트워크 및 QoS 관리 아키텍처
도 5는 본 개시의 예시적인 실시 예에 따른 네트워크 및 QoS 관리 아키텍처의 예시적인 실시 예를 설명한다. 도 5에서 설명된 아키텍처는, 예를 들어, 본 명세서에서 개시된 임의의 스토리지 쿼리 플래닝 기법들, QoS 모니터링 기법들, 및/또는 이와 유사한 것을 구현하는데 사용될 수 있다.
도 5에서 설명된 실시 예는 제1 클러스터 스위치(568)를 통해 클러스터로서 액세스되도록 구성된 N개의 스토리지 서버들(502)의 제1 클러스터를 포함할 수 있다. 하나 이상의 컴퓨트 서버들(506)은 네트워크 연결(567) 및 제1 클러스터 스위치(568)를 통해 스토리지 서버들(502)의 제1 클러스터에 액세스하도록 구성될 수 있다. 일부 실시 예들에서, 하나 이상의 컴퓨트 서버들(506)은, 예를 들어, 도 3에서 설명된 컴퓨트 서버(306)로 구현될 수 있고, 그리고 스토리지 서버들(502)은, 예를 들어, 도 4에서 설명된 스토리지 서버(402)로 구현될 수 있다. 네트워크 연결들(570 및 572)은 도면이 모호해지는 것을 방지하기 위해, 각각 NIC1의 제1 포트 및 NIC2의 제1 포트만을 도시하지만, 연결들은 NIC1의 제2 포트 및 NIC2의 제2 포트에 대해서도 구현될 수 있다. 일부 실시 예들에서, 하나 이상의 추가적인 클러스터 스위치들(568)은 스토리지 서버들(502)의 하나 이상의 추가적인 클러스터들에 포함될 수 있다.
일부 실시 예들에서, 각 클러스터 스위치(568)는 클러스터 컨트롤러가 비집계된 스토리지를 구현할 수 있는 스토리지 클러스터로서 N개의 스토리지 서버들(502)의 제1 클러스터를 동작시키는 기능을 더 포함할 수 있다. 따라서, 대응하는 클러스터 스위치(568)에서의 비집계된 스토리지 기능과 함께 클라이언트 래퍼(552)는 성능, 용량, 신뢰성, 및/또는 이와 유사한 것을 개선하도록 구성된 단일 스토리지 노드로서 N개의 스토리지 서버들(502)의 제1 클러스터를 하나 이상의 컴퓨트 서버들(506)에 제공할 수 있다. 일부 실시 예들에서, P2P 연결들(564 및/또는 566)은 스토리지 서버들(502)이 스토리지 서버들에 걸쳐 데이터의 소거 코딩을 구현하는 것을 가능하게 할 수 있다. 구현 세부 사항에 따라, 이것은 처리 세션에 대한 데이터셋이 스토리지 리소스들에 더 고르게 분산되는 것을 가능하게 할 수 있고, 이는 전체 스토리지 리소스(예를 들어, 대역폭) 활용, 데이터 액세스의 예측 가능성 및/또는 일관성, 및/또는 이와 유사한 것을 개선할 수 있다.
일부 실시 예들에서, 도 5에서 설명된 네트워크 기반구조는, 예를 들어, (이 예시에서 GPU들로 구현될 수 있는) 하나 이상의 컴퓨트 유닛들(514) 및 하나 이상의 스토리지 서버들(502) 사이의 하나 이상의 QoS 메트릭들을 사용하여 하나 이상의 가상 네트워크 연결들(예를 들어, VLAN들)로 분할될 수 있다. 구현 세부 사항에 따라, 이것은 네트워크의 프론트-엔드(front-end)(예를 들어, 클라이언트 측)가 네트워크의 백-엔드(back-end)(예를 들어, 스토리지 측)를 방해하는 것을 방지할 수 있다.
일부 실시 예들에서, 제어 및 데이터 트래픽은 별도의 평면들에서 네트워크를 통해 전송될 수 있다. 예를 들어, 제어 커맨드들(예를 들어, I/O 요청들)은, 예를 들어, TCP를 사용하는 제어 평면 상의 스토리지 서버들(502)로 전송될 수 있지만, 데이터는, 예를 들어, RoCE를 사용하는 데이터 평면 상의 하나 이상의 컴퓨트 서버들(506)로 다시 전송될 수 있다. 이것은 데이터가 스토리지 서버(502)로부터 스토리지 서버(502)에서의 임의의 메모리를 통한 임의의 중간 홉(hop)들 없이 RDMA를 사용하는 컴퓨트 서버(506)에서의 메모리(546)로 직접적으로 전송되는 것을 가능하게 할 수 있다. 구현 세부 사항에 따라, 이는 레이턴시, 대역폭, 및/또는 이와 유사한 것을 개선할 수 있다.
도 5에서 설명된 실시 예는 스토리지 상태 모니터(530)를 포함할 수 있고, 스토리지 상태 모니터(530)는 연결들(572, 574, 및 576)을 통해 각각 하나 이상의 컴퓨트 서버들(506), 클러스터 스위치들(568), 및/또는 스토리지 서버들(502)로부터의 QoS 메트릭들을 모니터링 및/또는 수집할 수 있다. 사용자들(예를 들어, User[1..N])에 대해 수집될 수 있는 클라이언트-측 QoS 메트릭들의 예시들은 액세스/비밀 키들, 대역폭, IOPS, 레이턴시, 우선순위, 및/또는 이와 유사한 것을 포함할 수 있다. 애플리케이션들(예를 들어, Application[1..N])에 대해 수집될 수 있는 클라이언트-측 QoS 메트릭들의 예시들은 애플리케이션 엔티티 ID/이름(application entity ID/name), 대역폭, IOPS, 레이턴시, 우선순위, 및/또는 이와 유사한 것을 포함할 수 있다. 액세스될 수 있는 (버킷(bucket)들로도 지칭될 수 있는) 스토리지 리소스들(예를 들어, Bucket[1..N])에 대해 수집될 수 있는 클라이언트-측 QoS 메트릭들의 예시들은 버킷 이름, 대역폭, IOPS, 레이턴시, 및/또는 이와 유사한 것을 포함할 수 있다.
수집될 수 있는 스토리지-측 QoS 메트릭들(예를 들어, cap[1..N])의 예시들은 클러스터 ID, 서버 엔트리 엔드포인트, 물리적 노드 이름, 고유 사용자 ID(UUID; unique user ID), 버킷 호스팅 및/또는 버킷 이름, 대역폭, IOPS, 작은 IO 비용(예를 들어, 레이턴시), 큰 IO 비용(예를 들어, 레이턴시), 저하된 작은 IO 비용(예를 들어, 레이턴시), 저하된 큰 IO 비용(예를 들어, 레이턴시), 작은 IO에 대한 휴리스틱(heuristic) 레이턴시, 큰 IO에 대한 휴리스틱 레이턴시, 저하된 성능으로 실행 중인지 여부, 오버로드 여부, 스토리지 노드 또는 클러스터가 다운되었는지 여부, 및/또는 이와 유사한 것을 포함할 수 있다.
일부 실시 예들에서, 스토리지 서버들(502)(예를 들어, NVMe-oF 구성들)의 내부 대역폭은 네트워크보다 클 수 있고, 따라서 QoS는 주로 시스템의 스토리지 서버 측으로부터 데이터 전송 속도를 쓰로틀링(throttling) 함으로써 확립될 수 있다.
스토리지 쿼리 관리자 초기화
도 6은 본 개시의 예시적인 실시 예들에 따른 스토리지 쿼리 관리자를 초기화하는 방법의 실시 예를 설명한다. 도 6에서 설명된 실시 예는 도 5에서 설명된 아키텍처의 맥락에서 설명될 수 있지만, 도 6에서 설명된 실시 예는 또한, 예를 들어, 본 명세서에서 개시된 임의의 시스템들, 방법들, 및/또는 장치들을 사용하여 구현될 수 있다. 일부 실시 예들에서, 스토리지 쿼리 관리자를 초기화하는 목적은 처리 세션에 대한 이용 가능한 스토리지 대역폭을 추정하는 것일 수 있다. 구현 세부 사항에 따라, 이것은 세션에 대한 스토리지 활용을 향상시키거나 또는 최대화할 수 있는 스토리지 쿼리 플랜의 생성을 가능하게 할 수 있다.
도 6에서 설명된 방법은 동작(602)에서 시작할 수 있다. 동작(604)에서, 스토리지 쿼리 관리자는 하나 이상의 스토리지 노드들에 대한 성능 대역폭 능력들을 회수(retrieve)(또는, 검색)할 수 있다. 일부 실시 예들에서, 스토리지 노드들은, 예를 들어, 스토리지 서버들의 하나 이상의 클러스터들로 구현될 수 있다. 동작(606)에서, 스토리지 쿼리 관리자는 스토리지 쿼리 플랜에 활용될 수 있는 네트워크 리소스들에 대한 하나 이상의 네트워크 토폴로지들 및/또는 대역폭 능력들을 회수(또는, 검색)할 수 있다. 동작(608)에서, 스토리지 쿼리 관리자는 하나 이상의 컴퓨트 서버 대역폭 능력들을 회수(또는, 검색)할 수 있다. 동작(610)에서, 스토리지 쿼리 관리자는 스토리지 노드, 네트워크 리소스들, 및/또는 컴퓨트 서버들 중 하나 이상에 대한 성능 베이스라인으로 사용하기 위해 벤치마크 데이터를 로드할 수 있다. 동작(612)에서, 스토리지 쿼리 관리자는 하나 이상의 컴퓨트 서버들에 존재할 수 있는 컴퓨트 유닛들과 같은 하나 이상의 컴퓨트 리소스들에 대한 정보를 회수(또는, 검색)할 수 있다. 일부 실시 예들에서, 동작들(604, 606, 608, 610, 및/또는 612)에서 회수된(또는, 검색된) 및/또는 로드된 데이터 중 임의의 것 또는 모든 것은, 예를 들어, 도 2에서 설명된 리소스 데이터베이스(226)와 같은 데이터베이스로부터 획득될 수 있다.
동작(614)에서, 스토리지 쿼리 관리자는, 예를 들어, 스토리지 서버, 네트워크, 및/또는 컴퓨트 서버 토폴로지들 및/또는 리소스들에 기초하여 컴퓨트 서버들의 하나 이상의 컴퓨트 유닛들에 이용 가능한 대역폭을 분석 및/또는 계산할 수 있다. 일부 실시 예들에서, 벤치마크 데이터는 동작(614)에서 사용되는 임의의 또는 모든 리소스들의 최대 성능 능력에 대한 베이스라인 기준으로 사용될 수 있다. 벤치마크 데이터는, 예를 들어, 스토리지, 네트워크, 및/또는 컴퓨트 리소스들과 같은 실제 리소스들에 대해 하나 이상의 테스트들을 실행함으로써 생성될 수 있다.
동작(616)에서, 이 후, 스토리지 쿼리 관리자는 사용자 및/또는 애플리케이션으로부터 스토리지 쿼리 요청들을 처리할 준비가 될 수 있다.
일부 실시 예들에서, 도 6에서 설명된 실시 예의 하나 이상의 동작들은, 예를 들어, 도 9를 참조하여 논의되는 바와 같이, 하나 이상의 스토리지 서버들, 네트워크 능력들 및/또는 토폴로지, 컴퓨트 서버들, 및/또는 이와 유사한 것에 관한 하나 이상의 가정(assumption)들에 기초할 수 있다.
스토리지 쿼리 관리자 작업
도 7은 본 개시의 예시적인 실시 예들에 따른 스토리지 쿼리 관리자의 동작하는 방법의 실시 예를 설명한다. 도 7에서 설명된 실시 예는 도 5에서 설명된 아키텍처의 맥락에서 설명될 수 있지만, 도 7에서 설명된 실시 예는 또한, 예를 들어, 본 명세서에서 개시된 임의의 시스템들, 방법들, 및/또는 장치들을 사용하여 구현될 수 있다.
도 7에서 설명된 실시 예에서, 스토리지 쿼리 관리자의 서비스들은 상술된 바와 같이 API를 통해 사용자 및/또는 애플리케이션에 의해 액세스될 수 있다. 표 1은 API를 구현하는데 사용될 수 있는 일부 예시적인 커맨드들을 나열한다. PALLOC 커맨드는 어느 리소스들이 처리 세션에 이용 가능할 수 있는지를 결정하는데 사용될 수 있다. PSELECT 커맨드는, PALLOC 커맨드에 응답하여 결정되었을 수 있는, 리소스들을 선택하는데 사용될 수 있다. PSCHED 커맨드는 선택된 리소스들을 사용하여 세션을 스케줄링하는데 사용될 수 있다. 일부 실시 예들에서, PSCHED 커맨드는 리소스들이 현재 이용 가능하거나, 또는 리소스들이 이용 가능하게 되자마자 즉시 세션을 시작할 수 있다. 추가적으로, 또는 대안적으로, 스토리지 쿼리 관리자는 사용자 및/또는 애플리케이션이 세션을 계속 진행하기를 원하는지 여부를 결정하기 위해 리소스들이 이용 가능하게 되면 사용자 및/또는 애플리케이션에게 통지할 수 있다. PSTAT 커맨드는 세션이 올바르게 실행되고 있는지 (예를 들어, 주기적으로) 체크하기 위해 사용자 및/또는 애플리케이션에 의해 사용될 수 있다. PREL은, 예를 들어, 세션이 완료된 후에, 리소스들을 해제하는데 사용될 수 있다. PABORT 커맨드는 세션을 중단(abort)하는데 사용될 수 있다.
PALLOC 리소스들이 세션에 대해 이용 가능한지를 체크
PSELECT 처리 세션에 대해 리소스들을 할당
PSCHED 리소스들을 사용하는 세션을 스케줄링
PSTAT 세션의 상태를 체크
PREL 리소스들을 해제
PABORT 세션을 중단
도 7을 참조하면, 방법은 동작(702)에서 시작할 수 있다. 동작(704)에서, 스토리지 쿼리 관리자는 사용자 및/또는 애플리케이션으로부터 리소스들에 대한 요청을 수신할 수 있다. 일부 실시 예들에서, 요청은 표 2에서 설명된 요청 기록들 중 하나 이상을 포함할 수 있다. 기록 요청 ID(Request ID)는 새로운 요청에 대한 ID를 제공할 수 있다. 기록 데이터셋[](Data Set[])은 요청이 제출된 세션에 사용될 데이터셋을 포함할 수 있는 객체들의 목록을 포함할 수 있다. 일부 실시 예들에서, 객체들의 목록은 처리 세션을 위해 로드될 데이터셋의 전부 또는 일부를 포함할 수 있다. 추가적으로, 또는 대안적으로, 기록 데이터셋(Data Set[])은 스토리지 쿼리 관리자가 세션의 데이터셋에 대해 사용될 데이터를 선택하는데 사용할 수 있는 하나 이상의 선택 기준을 포함할 수 있다. 데이터는, 예를 들어, 사전-존재하는(pre-existing) 데이터베이스 또는 데이터셋에 포함된 잠재적 데이터의 다른 소스로부터 선택될 수 있다. 기록 컴퓨트 유닛들의 숫자(Number of Compute Units)는 세션 동안 사용자 및/또는 애플리케이션에 의해 사용될 수 있는 컴퓨트 유닛들의 전체 개수를 가리킬 수 있다. 컴퓨트 유닛들은, 예를 들어, 하나 이상의 컴퓨트 서버들에 위치할 수 있다. 기록 NIC/CU 대역폭[인덱스][BW](NIC/CU bandwidth[index][BW])은 인덱스에 의해 식별될 수 있거나, 또는 대역폭이 자동으로 선택될 수 있는, 각 NIC와 연관된 각 컴퓨트 유닛에 대해 요청된 특정 대역폭(BW)의 목록을 포함할 수 있다. 일부 실시 예들에서, 데이터 병렬 동작을 위해, 동일한 양의 대역폭이 각 컴퓨트 유닛에 대해 요청될 수 있는 반면, 컴퓨트 유닛 당 요청된 대역폭은 동작의 다른 타입들에 대해 개별적으로 결정될 수 있다.
Request ID 새로운 리소스 요청들에 대한 ID
Data Set[] (List of Objects) 세션 또는 선택 기준에 대해 로드될 객체들의 리스트
Number of Compute Units 세션 동안 사용될 컴퓨트 유닛들의 전체 개수
NIC/CU Bandwidth[Index][BW] 각 NIC와 연관된 컴퓨트 유닛 당 요청된 특정 대역폭
다시 도 7을 참조하면, 동작(706)에서, 스토리지 쿼리 관리자는 요청을 분석하고 그리고 스토리지 쿼리 플랜을 생성할 수 있다. 동작(706)은 하위 동작들(706A 내지 706F)을 포함할 수 있다. 하위 동작(706A)에서, 스토리지 쿼리 관리자는 하나 이상의 스토리지 노드들에서(예를 들어, 하나 이상의 스토리지 클러스터들 내의 하나 이상의 스토리지 서버들에서) 데이터셋 객체들을 찾고 그리고 매핑할 수 있다. 하위 동작(706B)에서, 스토리지 쿼리 관리자는 세션에 대해 사용될 데이터셋의 데이터의 위치에 기초하여 하나 이상의 스토리지 노드들을 할당할 수 있다. 하위 동작(706C)에서, 스토리지 쿼리 관리자는 요청 및/또는 대응하는 NIC 포트들에서 지정된 컴퓨트 유닛들을 할당할 수 있다.하위 동작(706D)에서, 스토리지 쿼리 관리자는 스토리지 노드들 및 컴퓨트 유닛들 사이의 네트워크 경로들 및/또는 NIC 포트들을 통해 하나 이상의 할당된 스토리지 노드들을 하나 이상의 컴퓨트 유닛들에 매핑할 수 있다. 이 후, 스토리지 쿼리 관리자는 컴퓨트 유닛들 및 할당된 스토리지 노드들에 대해 요청된 대역폭을 지원하기 위해 NIC 포트들 및 네트워크 경로들이 적절한 대역폭을 제공할 수 있음을 검증할 수 있다. 데이터셋이 하나 이상의 스토리지 노드에 걸쳐 소거 코딩되는 실시 예들에서, 검증은 소거 코딩된 데이터가 전송될 수 있는 모든 노드들에 적용될 수 있다. 하위 동작(706E)에서, 스토리지 쿼리 관리자는, 예를 들어, 하나 이상의 성능 벤치마크 및/또는 히스토리컬 데이터에 기초하여 처리 세션에 대한 스토리지 쿼리 플랜에 대한 QoS 확률을 계산할 수 있다. 하위 동작(706F)에서, 스토리지 쿼리 관리자는 요청에서 요청된 하나 이상의 대역폭들을 만족할 수 있는 할당된 스토리지 및/또는 네트워크 대역폭을 사용하여, 요청에서 식별된 하나 이상의 컴퓨트 유닛들을 하나 이상의 스토리지 노드들에 매핑할 수 있는 스토리지 쿼리 플랜을 반환할 수 있다.
표 3은 객체들의 예시들이 있는 데이터 구조를 설명하고, 객체들은 도 7에서 설명된 실시 예가 하나 이상의 스토리지 노드들, 컴퓨트 노드들, 네트워크 경로들, 및/또는 이와 유사한 것의 이용 가능한 대역폭뿐만 아니라, 성능 벤치마크 기준 데이터 및/또는 히스토리컬 성능 데이터를 추적하는데 사용될 수 있다.
Storage.Node[].Port[].AvailBW[]
GPUServer.Node[].Port[].AvailBW[]
Network.Path[].AvailBW[]
Benchmarked Data Reference
Historical Performance Data
동작(708)에서, 스토리지 쿼리 관리자가 요청을 만족시키기 위해 리소스들을 할당할 수 없으면(예를 들어, 스토리지 쿼리 플랜 실패), 스토리지 쿼리 관리자는 이용 가능할 수 있는 리소스들을 요약하는 이용 가능성 리소스 맵을 생성할 수 있다. 동작(710)에서, 스토리지 쿼리 관리자가 요청을 만족시키기 위해 리소스들을 할당할 수 있으면(예를 들어, 스토리지 쿼리 플랜 성공), 처리 세션 동안 사용자 및/또는 애플리케이션에 의해 사용될 수 있는 리소스들을 지정할 수 있는 할당된 리소스 맵을 반환할 수 있다. 대안적으로, 스토리지 쿼리 관리자가 요청을 만족시키기 위해 리소스들을 할당할 수 없으면(예를 들어, 스토리지 쿼리 플랜 실패), 사용자 및/또는 애플리케이션에게 이용 가능할 수 있는 리소스들을 알리기 위해 이용 가능성 리소스 맵을 반환할 수 있다. 사용자 및/또는 애플리케이션은, 예를 들어, 스토리지 쿼리 관리자가 만족할 수 있는 수정된 요청을 발행하기 위해, 이용 가능성 리소스 맵을 사용할 수 있다. 동작(712)에서, 스토리지 쿼리 관리자는 새로운 요청을 대기하고, 이 후 동작(704)로 돌아갈 수 있다.도 8은 본 개시의 예시적인 실시 예들에 따른 이용 가능성 리소스 맵의 예시적인 실시 예를 설명한다. 좌측(800)은 클라이언트 노드들 및 포트들의 조합들에 대한 최대 대역폭 및 할당된 대역폭을 나타낼 수 있다. 우측(801)은 스토리지 노드들 및 포트들의 조합들에 대한 최대 대역폭 및 할당된 대역폭을 나타낼 수 있다. 최대 대역폭은, 예를 들어, 장치 사양들을 참조함으로써, 벤치마킹 동작들에 기초한 베이스라인 데이터를 획득함으로써, 장치들에 대한 히스토리컬 성능 데이터를 적용함으로써, 및/또는 이와 유사한 것에 의해 결정될 수 있다. 최대 및 할당된 대역폭 사이의 차이는 각 노드/포트 조합에 대한 이용 가능한 대역폭을 나타낼 수 있다. 예를 들어, 클라이언트 노드(CN1) 및 포트(P1)의 조합은 100Gb/s의 최대 대역폭을 가질 수 있고, 이 중에 10Gb/s가 할당될 수 있다. 따라서 CN1 및 P1은 90Gb/s의 이용 가능한 대역폭을 가질 수 있다.
도 9는 본 개시의 예시적인 실시 예들에 따른 리소스 할당 맵의 예시적인 실시 예를 설명한다. 맵의 각 행에 대해, 3개의 좌측 열들은 컴퓨트 노드, 네트워크 포트, 및 스토리지 노드를 나타낼 수 있고, 스토리지 노드는 컴퓨트 노드에 매핑되었을 수 있다. 가장 우측 열은 컴퓨트 노드 및 스토리지 노드의 조합에 할당된 대역폭의 양을 나타낼 수 있다. 예를 들어, 2Gb/s의 대역폭은 클라이언트 노드(CN1), 포트(P1), 및 스토리지 노드(SN5)의 조합에 할당되었을 수 있다.
도 9에서 설명된 리소스 할당 맵(900)의 실시 예는, 예를 들어, 리소스들에 대한 요청에 응답하여 사용자 및/또는 애플리케이션으로 반환하는데 사용될 수 있다. 다른 예로서, 이것은 하나 이상의 QoS 메트릭들을 포함할 수 있는, 텔레메트리(telemetry) 데이터(903)와 비교하는데 사용될 수 있고, 이는 스토리지 쿼리 관리자가 사전-할당된 리소스들 및 성능이 제공되는 것을 보장하는 실행 동안 컴퓨트(클라이언트) 노드들, 네트워크 리소스들, 및/또는 스토리지 노드들을 포함하는 전체 처리 세션 리소스들을 모니터링 및 관리하는데 사용될 수 있다. 실제 성능이 스토리지 쿼리 플랜의 포뮬레이션(formulation) 동안 추정된 QoS를 충족하지 못하면, 스토리지 쿼리 관리자는, 예를 들어, 하나 이상의 스토리지 노드들, 네트워크 경로들, 및/또는 이와 유사한 것을 포함하는 하나 이상의 리소스들을 재할당함으로써, 시스템의 동작을 조정할 수 있다.
성능 추정
도 10은 본 개시의 예시적인 실시 예들에 따른 스토리지, 네트워킹, 및 컴퓨트 리소스들을 포함하는 시스템의 실시 예를 설명한다. 도 10에서 설명된 실시 예는 본 개시의 예시적인 실시 예들에 따라 대역폭들이 어떻게 결정될 수 있는지에 관한 배경 정보를 설명하는데 사용될 수 있다. 설명의 목적으로, 일부 특정한 구현 세부 사항이 도 10에서 설명되지만, 본 개시의 원리들은 이러한 세부 사항으로 제한되지 않는다.
도 10에서 설명된 시스템은 하나 이상의 컴퓨트 노드들(1006), 하나 이상의 스토리지 노드들(1002), 및 스토리지 매체(1062)의 풀을 포함할 수 있다. 스토리지 노드들(1002)은 하나 이상의 클러스터들, 랙들, 및/또는 이와 유사한 것으로 그룹화될 수 있다. 도 10에서 설명된 예시에서, 스토리지 노드들(1002)은 제1 클러스터(cluster 1) 내지 제N 클러스터(cluster N)로 분할될 수 있다.
네트워크(1004)는 할당된 스토리지 노드들 및 할당된 컴퓨트 노드들 사이에 하나 이상의 네트워크 경로들이 할당될 수 있는 네트워크 리소스들의 임의의 타입 및/또는 구성으로 구현될 수 있다. 스토리지 매체(1062)의 풀은 NVMe-oF와 같은 스토리지 상호 연결 및/또는 네트워크(1080)를 통해 하나 이상의 스토리지 노드들(1002)에 인터페이스 될 수 있는 플래시 메모리와 같은 임의의 스토리지 매체로 구현될 수 있다.
각 컴퓨트(클라이언트) 노드의 최대 대역폭(BW)은 BW=Ci에 의해 표시될 수 있고, 그리고 각 컴퓨트 노드의 할당된 대역폭은 BW=CAi에 의해 표시될 수 있으며, 여기서 i = 0…n이고, n은 컴퓨트 노드들의 개수를 나타낼 수 있다.
각 스토리지 노드의 최대 대역폭은 BW=Si에 의해 표시될 수 있고, 각 대응하는 NIC에 대한 최대 대역폭은 BW=Ni에 의해 표시될 수 있고, 그리고 스토리지 노드 및 대응하는 NIC의 조합에 대해 할당된 대역폭은 BW=Ai에 의해 표시될 수 있으며, 여기서 i = 0…n이고, n은 스토리지 노드들의 개수를 나타낼 수 있다.
일부 실시 예들에서, 도 11에서 설명된 것과 같은 성능 추정들을 단순화 및/또는 용이하게 하기 위해 도 10에서 설명된 구성들에 대한 하나 이상의 가정들이 이루어질 수 있다. 예를 들어, 컴퓨트 노드들(1006)의 각각은 하나 이상의 대응하는 NIC들(1020)을 가질 수 있고, 그리고 이러한 예시에서, 하나의 포트는 컴퓨트 노드(1006)에서 컴퓨트 유닛 당 할당될 수 있다. 스토리지 노드들(1002)의 각각은 하나 이상의 대응하는 NIC들(1021)을 포함할 수 있고, 각각의 NIC들(1021)은 하나 이상의 포트들을 포함할 수 있다. 스토리지 매체(1062)의 풀 및 상호 연결/네트워크 아키텍처는 일관된 대역폭 지원을 제공할 수 있고, 이는 스토리지 노드들(1002)에 할당될 수 있는 임의의 네트워크 속도로 동작할 수 있다. 네트워크(1004)는 스토리지 노드들(1002) 및 컴퓨트 노드들(1006) 사이에 할당될 수 있는 임의의 대역폭에 대한 완전한(full) 포인트-투-포인트 대역폭 지원을 제공할 수 있다. 다중 동시 처리 세션들은 동일한 서버들 및/또는 서버들의 집합들에서 실행될 수 있다. 그러나, 이러한 가정들은 필요하지 않으며, 성능 추정들은 이러한 또는 임의의 가정들 없이 구현될 수 있다.
도 11은 본 개시의 예시적인 실시 예들에 따른 성능을 추정하는 방법들의 실시 예들을 설명한다. 도 11에서 설명된 실시 예들은, 예를 들어, 도 10에서 설명된 시스템에 기초할 수 있다.
도 11을 참조하면, 컴퓨트 노드들(1106)의 각각에서 실행될 수 있는, 애플리케이션들(A1, A2, 및 A3)은 유사한 음영으로 도시된 스토리지 노드들(1102)에서의 데이터셋들의 대응하는 부분들에 액세스할 수 있다.
집계된 클라이언트 대역폭(ACB; aggregated client bandwidth)은 모든 클라이언트 노느들에 대한 Ci를 합산함으로써 다음과 같이 결정될 수 있다:
Figure pat00001
여기서, Ci는 최대 클라이언트 노드 대역폭(MCB; maximum client node bandwidth)을 나타낼 수 있고, 그리고 n은 클라이언트들의 개수일 수 있다.
전체 클라이언트 할당된 대역폭(TCAB; total client allocated bandwidth)은 모든 클라이언트 노드들에 대한 CAi를 합산함으로써 다음과 같이 결정될 수 있다:
Figure pat00002
여기서, CAi는 클라이언트 당 할당된 대역폭을 나타낼 수 있고, 그리고 n은 클라이언트들의 개수일 수 있다.
전체 스토리지 대역폭(TSB; total storage bandwidth)을 결정하기 위해, 노드에 대한 스토리지 대역폭(S) 및 노드에 대한 네트워크 대역폭(N) 중 더 낮은 것이 사용될 수 있고, 왜냐하면, 예를 들어, 스토리지 노드에 대한 NIC가 더 낮은 최대 대역폭을 갖는 경우 스토리지 노드의 완전한 최대 대역폭이 사용 불가능할 수 있기 때문이다. 그러므로, 전체 스토리지 대역폭(TSB)은 다음과 같이 결정될 수 있다.
Figure pat00003
여기서, N은 최대 NIC 대역폭을 나타낼 수 있고, S는 대응하는 스토리지 노드의 최대 대역폭을 나타낼 수 있고, 그리고 n은 스토리지 노드들의 개수일 수 있다.
전체 할당된 대역폭(TAB; total allocated bandwidth)은 모든 스토리지 노드들에 대한 Ai를 합산함으로써 다음과 같이 결정될 수 있다:
Figure pat00004
여기서, Ai는 노드 당 할당된 대역폭을 나타낼 수 있고, 그리고 n은 스토리지 노드들의 개수일 수 있다.
이 후, 전체 이용 가능한 스토리지 대역폭(TASB; total available storage bandwidth)은 TASB = TSB - TAB에 의해 결정될 수 있다. 전체 이용 가능한 클라이언트 대역폭(TACB; total available client bandwidth)은 TACB = ACB - TCAB에 의해 결정될 수 있다.
도 12는 본 개시의 예시적인 실시 예들에 따른 방법을 설명한다. 방법은 동작(1202)에서 시작할 수 있다. 동작(1204)에서, 방법은 처리 세션에 대한 데이터셋에 액세스하기 위해 스토리지 리소스들에 대한 요청을 수신할 수 있다. 동작(1206)에서, 방법은, 데이터셋에 기초하여, 처리 세션에 대한 하나 이상의 스토리지 노드들을 할당할 수 있다. 동작(1208)에서, 방법은 하나 이상의 스토리지 노드들을 하나 이상의 네트워크 경로들을 통해 처리 세션에 대한 하나 이상의 컴퓨트 노드들에 매핑할 수 있다. 방법은 동작(1210)에서 종료될 수 있다.
도 13은 본 개시의 예시적인 실시 예들에 따른 다른 방법을 설명한다. 방법은 동작(1302)에서 시작할 수 있다. 동작(1304)에서, 방법은 처리 세션에 대한 스토리지 리소스들에 대한 요청을 수신할 수 있고, 여기서 요청은 데이터셋 및 하나 이상의 컴퓨트 노드들에 대한 정보를 포함할 수 있다. 동작(1306)에서, 방법은 데이터셋에 기초하여 스토리지 노드를 할당할 수 있다. 동작(1308)에서, 방법은 컴퓨트 노드들 중 하나를 할당할 수 있다. 동작(1310)에서, 방법은 스토리지 노드 및 할당된 컴퓨트 노드 사이의 네트워크 연결에 대한 대역폭을 할당할 수 있다. 동작(1312)에서, 방법은 스토리지 노드, 할당된 컴퓨트 노드, 및 네트워크 연결에 기초하여 처리 세션에 대한 리소스 할당 맵을 반환할 수 있다. 방법은 동작(1314)에서 종료될 수 있다.
본 명세서에서 설명된 모든 다른 실시 예들뿐만 아니라, 도 12 및 도 13에서 설명된 실시 예들은 예시적인 동작들 및/또는 구성들이다. 일부 실시 예들에서, 일부 동작들 및/또는 구성들은 생략될 수 있고 그리고/또는 다른 동작들 및/또는 구성들이 포함될 수 있다. 더욱이, 일부 실시 예들에서, 동작들 및/또는 구성들의 시간적 및/또는 공간적 순서는 변경될 수 있다. 일부 구성들 및/또는 동작들은 개별적은 구성들로서 설명되었지만, 일부 실시 예들에서, 개별적으로 도시된 일부 구성들 및/또는 동작들은 단일 구성 및/또는 동작에 통합될 수 있고, 그리고/또는 단일 구성 및/또는 동작으로 도시된 일부 구성들 및/또는 동작들은 다중 구성들 및/또는 동작들로 구현될 수 있다.
상술된 실시 예들은 다양한 구현 세부 사항의 맥락에서 설명되었지만, 본 개시의 원리들은 이러한 또는 임의의 다른 특정 세부 사항으로 제한되지 않는다. 예를 들어, 일부 기능은 특정 구성들에 의해 구현되는 것으로 설명되었지만, 다른 실시 예들에서, 기능은 다른 위치들에 있고 다양한 사용자 인터페이스들을 갖는 서로 다른 시스템들 및 구성들 사이에 분산될 수 있다. 특정 실시 예들은 특정 프로세스들, 동작들, 등을 포함하는 것으로 설명되었지만, 이러한 용어들은 또한 특정 프로세스, 동작, 등이 다중 프로세스들, 동작들, 등으로 구현될 수 있거나, 또는 다중 프로세스들, 동작들, 등이 단일 프로세스, 단계, 등에 통합될 수 있는 실시 예들을 포함한다. 구성 또는 구성 요소에 대한 참조는 구성 또는 구성 요소의 일부만을 참조할 수 있다. 예를 들어, 집적 회로에 대한 참조는 집적 회로의 전부 또는 일부만을 지칭할 수 있고, 그리고 블록에 대한 참조는 전체 블록 또는 하나 이상의 하위 블록들을 지칭할 수 있다. 본 개시 및 청구범위에서 “제1” 및 “제2”와 같은 용어들의 사용은 오직 수식하는 것들을 구별하려는 목적일 수 있으며, 문맥에서 명백히 다르지 않는 한 임의의 공간적 또는 시간적 순서를 나타내지 않을 수 있다. 일부 실시 예들에서, 사물에 대한 참조는 사물의 적어도 일부를 지칭할 수 있고, 예를 들어, “기초하여”는 “적어도 일부에 기초하여”를 지칭할 수 있고, “액세스”는 “적어도 부분적으로 액세스”를 지칭할 수 있고, 그리고/또는 이와 유사한 것도 마찬가지이다. 제1 구성 요소에 대한 참조는 제2 구성 요소의 존재를 암시하지 않을 수 있다. 섹션 제목들 및 이와 유사한 것과 같은 다양한 조직적인 보조(organizational aid)들이 편의를 위해 제공될 수 있지만, 이러한 보조들에 따라 배열된 주제 및 본 개시의 원리들은 이러한 조직적인 보조들에 의해 제한되지 않는다.
상술된 다양한 세부 사항 및 실시 예들은 본 개시의 발명의 원리들에 따라 추가적인 실시 예들을 생성하기 위해 결합될 수 있다. 본 특허 개시의 발명의 원리들은 본 발명의 개념들을 벗어나지 않으면서 배열 및 세부 사항이 변경될 수 있으므로, 이러한 변경들 및 수정들은 후술되는 청구항들의 범위에 포함되는 것으로 고려된다.

Claims (20)

  1. 처리 세션에 대한 데이터셋(dataset)에 액세스하기 위해 스토리지 리소스들에 대한 요청을 수신하는 단계;
    상기 데이터셋에 기초하여, 상기 처리 세션에 대한 하나 이상의 스토리지 노드들을 할당하는 단계; 및
    상기 하나 이상의 스토리지 노드들을 하나 이상의 네트워크 경로들을 통해 상기 처리 세션에 대한 하나 이상의 컴퓨트 노드들에 매핑하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 하나 이상의 스토리지 노드들 및 상기 하나 이상의 컴퓨트 노드들의 리소스 맵을 반환하는 단계를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 리소스 맵은 할당된 리소스 맵을 포함하는 방법.
  4. 제 2 항에 있어서,
    상기 리소스 맵은 이용 가능성 리소스 맵을 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 처리 세션에 대한 이용 가능한 스토리지 대역폭을 추정하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    이용 가능한 클라이언트 대역폭을 추정하는 단계를 더 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 네트워크 경로들 중 하나를 통해 상기 하나 이상의 스토리지 노드들 중 적어도 하나 및 상기 하나 이상의 컴퓨트 노드들 중 적어도 하나 사이의 연결에 대역폭을 할당하는 단계를 더 포함하는 방법.
  8. 제 5 항에 있어서,
    상기 처리 세션에 대한 상기 이용 가능한 스토리지 대역폭은 상기 하나 이상의 스토리지 노드들에 대한 벤치마크(benchmark) 데이터에 기초하여 추정되는 방법.
  9. 제 5 항에 있어서,
    상기 처리 세션에 대한 상기 이용 가능한 스토리지 대역폭은 상기 하나 이상의 스토리지 노드들에 대한 히스토리컬(historical) 데이터에 기초하여 추정되는 방법.
  10. 제 1 항에 있어서,
    상기 처리 세션에 대한 상기 데이터셋에 액세스하는 성능을 결정하는 단계를 더 포함하는 방법.
  11. 제 10 항에 있어서,
    상기 처리 세션에 대한 상기 데이터셋에 액세스하는 성능을 결정하는 단계는 상기 처리 세션에 대한 QoS(quality-of-service)를 결정하는 단계를 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 처리 세션에 대한 QoS를 결정하는 단계는 상기 하나 이상의 스토리지 노드들에 대한 베이스라인(baseline) 데이터 또는 히스토리컬 데이터 중 하나에 기초하여 QoS 확률을 계산하는 단계를 포함하는 방법.
  13. 제 1 항에 있어서,
    상기 처리 세션에 대한 상기 하나 이상의 스토리지 노드들의 실제 성능을 모니터링하는 단계를 더 포함하는 방법.
  14. 제 1 항에 있어서,
    상기 처리 세션은 인공 지능 트레이닝 세션을 포함하는 방법.
  15. 처리 세션에 대한 데이터셋(dataset)을 저장하도록 구성된 하나 이상의 스토리지 노드들;
    상기 하나 이상의 스토리지 노드들을 상기 처리 세션에 대한 하나 이상의 컴퓨트 노드들에 연결하도록 구성된 하나 이상의 네트워크 경로들; 및
    스토리지 쿼리 관리자를 포함하되,
    상기 스토리지 쿼리 관리자는:
    상기 처리 세션에 대한 상기 데이터셋에 액세스하기 위해 스토리지 리소스들에 대한 요청을 수신하고;
    상기 요청에 기초하여, 상기 처리 세션에 대한 상기 하나 이상의 스토리지 노드들 중 적어도 하나를 할당하고; 그리고
    상기 적어도 하나의 할당된 스토리지 노드를 상기 하나 이상의 네트워크 경로들 중 적어도 하나를 통해 상기 처리 세션에 대한 상기 하나 이상의 컴퓨트 노드들 중 적어도 하나에 매핑하도록 구성된 시스템.
  16. 제 15 항에 있어서,
    상기 스토리지 쿼리 관리자는 상기 하나 이상의 네트워크 경로들 중 적어도 하나를 통해 상기 하나 이상의 스토리지 노드들 중 적어도 하나 및 상기 하나 이상의 컴퓨트 노드들 중 적어도 하나 사이의 연결에 대역폭을 할당하도록 더 구성된 시스템.
  17. 제 15 항에 있어서,
    상기 스토리지 쿼리 관리자는:
    상기 처리 세션에 대한 이용 가능한 스토리지 대역폭을 추정하고;
    상기 처리 세션에 대한 이용 가능한 클라이언트 대역폭을 추정하고; 그리고
    상기 처리 세션에 대한 상기 이용 가능한 스토리지 대역폭 및 상기 이용 가능한 클라이언트 대역폭에 기초하여 리소스 맵을 반환하도록 더 구성된 시스템.
  18. 제 15 항에 있어서,
    상기 스토리지 쿼리 관리자는 상기 처리 세션에 대한 QoS(quality-of-service)를 예측하도록 더 구성된 시스템.
  19. 처리 세션에 대한 스토리지 리소스들에 대한 요청을 수신하는 단계로서, 상기 요청은 데이터셋(dataset) 및 하나 이상의 컴퓨트 노드들에 대한 정보를 포함하는 것;
    상기 데이터셋에 기초하여 스토리지 노드를 할당하는 단계;
    상기 컴퓨트 노드들 중 하나를 할당하는 단계;
    상기 스토리지 노드 및 상기 할당된 컴퓨트 노드 사이의 네트워크 연결을 위한 대역폭을 할당하는 단계; 및
    상기 스토리지 노드, 상기 할당된 컴퓨트 노드, 및 상기 네트워크 연결에 기초하여 상기 처리 세션에 대한 리소스 할당 맵을 반환하는 단계를 포함하는 방법.
  20. 제 19 항에 있어서,
    상기 스토리지 노드는 제1 스토리지 노드를 포함하고, 상기 할당된 컴퓨트 노드는 할당된 제1 컴퓨트 노드를 포함하고, 상기 대역폭은 제1 대역폭을 포함하고, 그리고 상기 네트워크 연결은 제1 네트워크 연결을 포함하고,
    상기 방법은:
    상기 데이터셋에 기초하여 제2 스토리지 노드를 할당하는 단계;
    상기 컴퓨트 노드들 중 제2 컴퓨트 노드를 할당하는 단계; 및
    상기 제2 스토리지 노드 및 상기 할당된 제2 컴퓨트 노드 사이의 제2 네트워크 연결을 위한 제2 대역폭을 할당하는 단계를 더 포함하고, 그리고
    상기 리소스 할당 맵은 상기 제2 스토리지 노드, 상기 할당된 제2 컴퓨트 노드, 및 상기 제2 네트워크 연결에 더 기초하는 방법.
KR1020220002279A 2021-01-20 2022-01-06 스토리지 쿼리 플래닝을 위한 시스템, 방법, 및 장치 KR20220105591A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163139769P 2021-01-20 2021-01-20
US63/139,769 2021-01-20
US17/225,083 US20220229569A1 (en) 2021-01-20 2021-04-07 Systems, methods, and apparatus for storage query planning
US17/225,083 2021-04-07

Publications (1)

Publication Number Publication Date
KR20220105591A true KR20220105591A (ko) 2022-07-27

Family

ID=78087263

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220002279A KR20220105591A (ko) 2021-01-20 2022-01-06 스토리지 쿼리 플래닝을 위한 시스템, 방법, 및 장치

Country Status (5)

Country Link
US (1) US20220229569A1 (ko)
EP (1) EP4033422A1 (ko)
KR (1) KR20220105591A (ko)
CN (1) CN114816237A (ko)
TW (1) TW202231022A (ko)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009722B2 (en) * 2013-02-05 2015-04-14 International Business Machines Corporation Collaborative negotiation of system resources among virtual servers running in a network computing environment
US10291503B2 (en) * 2013-09-26 2019-05-14 Taiwan Semiconductor Manufacturing Co., Ltd. File block placement in a distributed network
US10082985B2 (en) * 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US9843453B2 (en) * 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US20180004452A1 (en) * 2016-06-30 2018-01-04 Intel Corporation Technologies for providing dynamically managed quality of service in a distributed storage system
KR102610996B1 (ko) * 2016-11-04 2023-12-06 에스케이하이닉스 주식회사 데이터 분산 처리를 수행하는 데이터 관리 시스템 및 데이터 관리 방법
US10958729B2 (en) * 2017-05-18 2021-03-23 Intel Corporation Non-volatile memory express over fabric (NVMeOF) using volume management device
US10922287B2 (en) * 2017-05-24 2021-02-16 Cisco Technology, Inc. Intelligent layout of composite data structures in tiered storage
US10635939B2 (en) * 2018-07-06 2020-04-28 Capital One Services, Llc System, method, and computer-accessible medium for evaluating multi-dimensional synthetic data using integrated variants analysis
US11042660B2 (en) * 2018-10-10 2021-06-22 International Business Machines Corporation Data management for multi-tenancy
US20220083245A1 (en) * 2019-07-18 2022-03-17 Pure Storage, Inc. Declarative provisioning of storage
CN112631520B (zh) * 2020-12-25 2023-09-22 北京百度网讯科技有限公司 分布式块存储系统、方法、装置、设备和介质

Also Published As

Publication number Publication date
CN114816237A (zh) 2022-07-29
TW202231022A (zh) 2022-08-01
EP4033422A1 (en) 2022-07-27
US20220229569A1 (en) 2022-07-21

Similar Documents

Publication Publication Date Title
US11237871B1 (en) Methods, systems, and devices for adaptive data resource assignment and placement in distributed data storage systems
US11573831B2 (en) Optimizing resource usage in distributed computing environments by dynamically adjusting resource unit size
EP3230868B1 (en) Multiple transaction logs in a distributed storage system
US8386610B2 (en) System and method for automatic storage load balancing in virtual server environments
US8244868B2 (en) Thin-provisioning adviser for storage devices
JP6492226B2 (ja) ネットワークフロー制御に基づく動的リソース割当て
US20170177221A1 (en) Dynamic core allocation for consistent performance in a non-preemptive scheduling environment
US11847098B2 (en) Metadata control in a load-balanced distributed storage system
US10394606B2 (en) Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy
JP2008527555A (ja) 仮想化ストレージ・サブシステム内の仮想化ストレージ割り当ての自動パフォーマンス最適化を提供するための方法、装置およびプログラム・ストレージ・デバイス
US9860317B1 (en) Throughput throttling for distributed file storage services with varying connection characteristics
US11150944B2 (en) Balancing mechanisms in ordered lists of dispatch queues in a computational device
CN108881348A (zh) 服务质量控制方法、装置和存储服务器
US9513837B2 (en) Performance assist storage volumes
JP2023099186A (ja) 複数の故障ドメインに及ぶストレージシステム
CN112292661A (zh) 扩展分布式存储系统
CN113039514A (zh) 分布式文件系统中的数据迁移
CN106775942B (zh) 一种云应用导向的固态盘缓存管理系统及方法
US20220229569A1 (en) Systems, methods, and apparatus for storage query planning
Zhang A QoS-enhanced data replication service in virtualised cloud environments
US20240168816A1 (en) Dynamic migration of distributed object manager (dom) owner between dom servers
CN111722786B (zh) 基于NVMe设备的存储系统
Hu et al. An efficient data transfer service for scientific applications in cloud environments