KR20190084203A - Ssd기반 클라우드 계산 스토리지 시스템을 위한 aclb를 위한 방법 및 장치 - Google Patents

Ssd기반 클라우드 계산 스토리지 시스템을 위한 aclb를 위한 방법 및 장치 Download PDF

Info

Publication number
KR20190084203A
KR20190084203A KR1020180143031A KR20180143031A KR20190084203A KR 20190084203 A KR20190084203 A KR 20190084203A KR 1020180143031 A KR1020180143031 A KR 1020180143031A KR 20180143031 A KR20180143031 A KR 20180143031A KR 20190084203 A KR20190084203 A KR 20190084203A
Authority
KR
South Korea
Prior art keywords
workload
ssds
degree
range
spike
Prior art date
Application number
KR1020180143031A
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 KR20190084203A publication Critical patent/KR20190084203A/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/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/142Network analysis or design using statistical or mathematical methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1019Random or heuristic server selection
    • 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/104Peer-to-peer [P2P] networks
    • 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
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1012Load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity

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)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

장치, 방법, 장치를 생산하는 방법, 및 집적회로를 구성하는 방법이 제공된다. 어플리케이션 서버 계층의 프로세서는, 하나 이상의 사용자 장치들로부터 네트워크를 통해 수신되는 입력/출력 스트림의 작업량에서의 변화된 정도를 검출한다. 프로세서는 복수의 사전 설정된 정도 범위로부터 작업량의 변화된 정도가 있는 정도 범위를 판별한다. 프로세서는, 결정된 정도 범위에 기초하여, 중앙 집중식 다중 티어 스토리지 풀의 성능 캐시 티어에서 하나 이상의 복수의 SSD(Solid State Device)들에게 작업량을 분배하기 위해 복수의 분배 전략 중 분배 전략을 결정한다. 프로세서는 결정된 분배 전략에 기초하여 복수의 SSD 중 하나 이상에 작업량을 분배한다.

Description

SSD기반 클라우드 계산 스토리지 시스템을 위한 ACLB를 위한 방법 및 장치{METHOD AND APPARATUS FOR ADAPTIVE CACHE LOAD BALANCING FOR SSD-BASED CLOUD COMPUTING STORAGE SYSTEM}
본 개시는 일반적으로 클라우드 컴퓨팅 스토리지 시스템의 부하 균형과 관련되고, 좀 더 상세하게는, 작업량 스파이크의 정도에 기초하여 다중 티어 스토리지 시스템의 캐시 SSD(Solid State Device) 티어의 적응적인 부하 균형과 관련된다.
SSD들은 일반적으로 기존의 하드 디스크 드라이브(Hard Disk Drive; HDD)들 보다 현저하게 더 빠른 입력/출력(I/O) 성능을 제공한다. 성능의 차이를 고려하여, SSD들은 최신의 데이터센터 스토리지 시스템들의 성능 캐시 티어로서 이용된다. 이러한 SSD들은 이러한 I/O들이 로우 엔드 SSD들 또는 훨씬 더 느린 HDD들로 전달되는 경우 발생할 긴 I/O 응답 시간을 감소시키기 위해 핫 데이터 세트들을 흡수 하기 위한 것이다.
상이한 어플리케이션들은 상이한 작업량 특성들을 갖는다. 이러한 어플리케이션들이 최신 데이터센터 스토리지 시스템들(예컨대, 클라우드 컴퓨팅 스토리지 시스템)과 함께 사용되는 경우, 피크 사용을 충족시키기 위해 효율적인 리소스 할당 체계들이 요구된다. 그러나, 랜덤 및 그리디 알고리즘들과 같은, 기존의 로드 균형기(balancer)들은 작업량의 스파이크를 포함하는 케이스들을 무시하고 상당한 성능 저하를 경험한다.
본 발명은 성능을 향상시키고 수명을 연장시키기 위해 작업량 변경을 검출 및 예측하고, SSD들 사이에서 부하들의 균형을 더 잘 잡기 위해 상이한 스파이크 정도들에 대한 3개의 상이한 전략들을 제공할 수 있다.
일 실시 예에 따르면, 메모리와 프로세서를 포함하는 장치가 제공된다. 프로세서는 하나 이상의 사용자 장치들로부터 네트워크를 통해 수신되는 입력/출력 스트림의 작업량의 변화의 정도(degree)를 검출하도록 구성된다. 프로세서는 복수의 미리 설정된 정도 범위 중 작업량의 변화의 정도가 있는 정도 범위를 결정하도록 구성된다. 프로세서는 결정된 정도 범위에 기초하여, 중앙 집중화된 다중 티어 스토리지 풀의 성능 캐시 티어에서 하나 이상의 SSD(Solid State Driver)에 작업량을 분배하기 위해, 복수의 분배 전략들 중 분배 전략을 결정하도록 구성된다. 마지막으로, 프로세서는 결정된 분배 전략에 기초하여 하나 이상의 SSD에 작업량을 분배하도록 구성된다.
일 실시 예에 따르면, 방법은 어플리케이션 서버 계층의 프로세서가 하나 이상의 사용자 장치로부터 네트워크를 통해 수신되는 입력/출력 스트림에서 작업량의 변화의 정도를 검출하는 방법이 제공된다. 프로세서는 복수의 미리 설정된 정도 범위 중, 작업량의 변화의 정도가 있는 정도 범위를 결정한다. 프로세서는 결정된 정보 범위에 기초하여, 중앙 집중화된 다중 티어 스토리지 풀의 성능 캐시 티어의 하나 이상의 SSD에 작업량을 분배하기 위해, 복수의 분배 전략 중 분배 전략을 결정한다. 프로세서는 결정된 분배 전략에 기초하여 하나 이상의 SSD에 작업량을 분배한다.
본 발명의 실시 예에 따르면, 작업량은 사용자에게 투명하게 밸런싱되고, 가상 기계의 입력/출력 성능은 향상되고, SSD의 수명은 연장된다.
도 1은 본 개시의 실시 예에 따른 ACLB(Adaptive Cache Load Balancer)를 포함하는 시스템 아키텍처를 도시하는 도면이다.
도 2는 본 개시의 실시 예에 따라, 작업량 스파이크 검출의 예시를 도시하는 도면이다.
도 3은 본 개시의 실시 예에 따라, 작업량 스파이크를 검출하고 보상하기 위한 방법을 도시하는 흐름도 이다.
도 4는 본 개시의 실시 예에 따라 작업량 스파이크에 기초하여 I/O 스트림의 작업들을 전송하는 것을 도시하는 도면이다.
도 5는 본 개시의 실시 예에 따른 ACLB를 위한 방법을 도시하는 흐름도 이다.
도 6은 본 발명의 일 실시 예에 따라, 강한 작업량 스파이크가 있을 때 SSD들을 선택하기 위한 방법을 도시하는 흐름도이다.
도 7은 본 개시의 실시 예에 따라 작업량 스파이크가 검출되지 않을 때 SSD들을 선택하기 위한 방법을 도시하는 흐름도 이다.
도 8은 본 개시의 실시 예에 따라, 컴퓨팅 시스템의 예시적인 하드웨어 구현을 도시하는 블록도 이다.
이하에서, 본 발명의 실시 예들이 첨부된 도면들을 참조하여 상세하게 설명된다. 동일한 요소들은 그것들이 다른 도면들에 도시되어 있더라도, 동일한 참조 번호들에 의해 지정될 것이다. 이하의 상세한 설명에서, 구체적인 구조들 및 구성들과 같은 구체적인 설명들은 단순히 본 발명의 실시 예들의 전체적인 이해를 돕기 위하여 제공된다. 그러므로 당업자는 본문에 기재된 실시 예들의 다양한 변화들 및 변형들이 본 발명의 기술적 사상으로부터의 벗어남 없이 수행될 수 있음을 이해할 것이다. 더욱이, 잘 알려진 기능들 및 구조들의 설명들은 명확성 및 간결성을 위하여 생략된다. 이하에서 기재된 용어들은 본 발명의 기능을 고려하여 정의된 용어이고, 사용자들, 사용자들의 의도, 또는 소비자들에 따라 다를 수 있다. 그러므로 용어들의 정의들은 본 명세서에서 설명된 컨텐츠를 기반으로 결정되어야 한다.
본 발명은 도시된 도면들을 참조하여 설명되는 여러 실시 예들에 대한 다양한 변형이나 조정된 실시 예들을 포함할 수 있다. 하지만, 본 발명은 설명된 실시 예들에만 국한되지 않으며, 본 발명의 범위에 포함되는 모든 변형된 예들, 균등물, 대체물들을 포함함은 잘 이해될 것이다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 예를 들면, 본 명세서에서 사용된 제 1 구성은 제 2 구성을 지시할 수도 있다. 유사하게, 제 2 구성은 제 1 구성을 지시할 수도 있다. "및/또는"은 리스트된 항목들을 적어도 하나 포함하는 모든 조합을 포괄하는 것으로 이해되어야 한다.
본 명세서에서 설명되는 용어는 단지 특정한 실시 예를 설명하기 위한 목적으로 사용되며, 그것에 한정되지 않는다. 단일 폼들은 문맥에서 명확히 다른 것을 지시하지 않은 이상 복수의 폼들을 포함하는 것으로 이해되어야 한다. 본 발명에서 "포함하는"이라는 용어는 "포함하되 한정되지 않는"으로, "가지는"이라는 용어는 "적어도 하나를 가지는"으로 해석되어야 한다. "포함하는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하며, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 배제하지 않는다. 도면의 구성이나 특징은 도시된 수치에 한정되지 않는다.
다르게 정의되지 않는 한, 여기서 사용되는 용어들은 이 분야에서 통상의 지식을 습득한 사람들에 의해서 이해되는 동일한 의미로 해석되어야 한다. 사전에 사용되는 일반적인 정의를 갖는 용어들은 관련된 기술 분야에서 사용되는 의미로 해석되어야 하며, 본 발명에서 구체적으로 정의되지 않았다면 이상적으로 또는 과도한 형식적 의미로 이해되어서는 안 된다.
작업량 변경을 검출하기 위해 스파이크 알림(spike-aware) 알고리즘(즉, I/O 스파이크)를 사용하는 ACLB(Adaptive Cache Load Balancer)가 본 명세서에서 설명된다. 작업량 변경을 검출하는 것에 응답하여, ACLB는, 상이한 전략들을 적응적으로 사용하여, 성능을 향상시키고 SSD(Solid State Drive)들의 수명들을 연장시키기 위해 성능 캐시 계층의 SSD들에 작업량을 분배한다. 예로서, 스루풋(throughput), 대역폭, 저장 공간, 및 마모 정도(worn-out level)(즉, 프로그램/소거(P/E) 싸이클 사용)과 같은 하나 이상의 유형의 SSD 자원의 사용을 밸런싱함으로서 분배가 수행된다.
먼저 도 1을 참조하면, 도면은 본 개시의 실시 예에 따른 ACLB를 포함하는 시스템 아키텍처를 도시한다. 구체적으로, 시스템 아키텍처는 클라우드 사용자 계층(102), 어플리케이션 서버 계층(104), 및 중앙집중식 다단계 스토리지 풀 계층(106)을 포함한다.
클라우드 사용자 계층(102)은 네트워크(103)를 통한 장치들을 통해 클라우드로 요청들을 전송하는 이종 어플리케이션 사용자들을 포함한다. 각 사용자는 데이터의 시간적 및 공간적인 분배들을 다르게 만드는 상이한 요청 패턴을 가질 수 있다.
어플리케이션 서버 계층(104)은 다수의 물리 가상 기계 서버들(108-1 내지 108-n)를 포함하고, 다수의 물리 가상 기계 서버들(108-1 내지 108-n) 각각은 하나 이상의 가상 기계(VM)들(110-1 내지 110-n)을 포함한다.
가상 기계들은 게스트 운영 체제(Operating System; OS) 및 어플리케이션들을 실행하고, 서로로부터 격리된다. 클라우드 서비스 공급자들은 이러한 가상 기계들을 어플리케이션 사용자들에게 "대여"할 수 있다. 가상 기계들은 사용자 어플리케이션들에 기초한 상이한 작업량 패턴들을 가질 수 있고, 이에 따라 가상 기계들은 저장 장치 속도들에 대해 상이한 레벨들의 민감도를 가질 것이다. 가상 기계 하이퍼바이저(112)는 주어진 물리 서버(108-1)에 대해 하나 이상의 가상 기계(110-1 내지 110-n)를 호스팅 한다. 가상 기계 하이퍼바이저(112)는 스케줄링, 리소스 관리, 시스템 소프트웨어 API(Application Programming Interface), 및 하드웨어 가상화를 담당한다. ACLB 데몬(114)은 각 물리 서버(108-1)의 가상 기계 하이퍼바이저(112) 상에 설치되고, ACLB I/O 필터들(116-1 내지 116) 각각으로부터 가상 기계들(110-1 내지 110-n)에 대응하는 입력을 수신한다.
ACLB I/O 필터들(116-1 내지 116-n)은 모든 가상 기계의 I/O 관련 통계들을 수집하는 것을 담당한다. 데이터는 샘플 주기 비율로 수집될 수 있고, 결과들은 모든 가상 기계들로부터 모든 데이터를 수집하는 것을 담당하는 호스트 시스템상의 ACLB 데몬(114)으로 전송될 수 있다.
물리 서버들(108-1 내지 108-n) 각각으로부터의 ACLB 데몬(114)은 어플리케이션 서버 계층(104) 내의 하나의 ACLB 컨트롤러(118)와 통신한다. ACLB 데몬(114)은 물리 서버(108-1)의 작업량 변경(예컨대, I/O 액세스 패턴 변경)을 추적하고, ACLB 컨트롤러(118) 및 ACLB I/O 필터들(116-1 내지 116-n)로부터 장치 런타임 성능 정보를 수집한다.
ACLB는 ACLB 필터들(116-1 내지 116-n), ACLB 데모들(114), 및 ACLB 컨트롤러(118)로 구성될 수 있다.
ACLB 컨트롤러(또는 프로세서, 118)는 스토리지 시스템의 전용 서버 또는 내장 시스템 상에서 동작하고 있을 수 있다. ACLB 컨트롤러(118)는 I/O 할당 결정을 담당한다.
물리 서버들(108-1 내지 108-n)은, 예로서 NVMe(non-volatile memory express), 3D Xpoint(3D cross point) NVM SSD, 멀티 레벨 셀(MLC)/트리플 레벨 셀(TLC)/쿼드 레벨 셀(QLC) SSD들, 및 전통적인 스피닝 HDD(Hard Disk Drive)들을 포함하는 후단 SSD-HDD 하이브리드 스토리지 시스템들 또는 올 플래시(all flash) 다중 티어 SSD 스토리지 시스템들을 공유하기 위해 파이버 채널(fiber channel)들, 또는 몇몇의 다른 수단들을 통해 중앙집중식 다중 티어 스토리지 풀 계층(106)과 연결된다. 스토리지 풀(106)의 티어 각각은, 예로서 빠른 속도, 큰 저장 용량 등과 같은 상이한 전문 분야들을 가진다. 계층들은 캐시 SSD 계층(120), 용량 SSD 계층(122), 및 용량 HDD 계층(124)을 포함한다. 본 개시의 실시 예들은, 일반적으로 중앙집중식 다중 티어 스토리지 풀 계층(106)에서 가장 빠르고 가장 비싼 SSD들로 구성되는 캐시 SSD 티어(120)(또는 성능 캐시 티어)인 가장 높은 티어에서 작업량의 균형을 맞추는 데 초점을 맞춘다.
본 명세서에서, 다중 전략 로드 균형기(balancer)는 상이한 작업량 스파이크 시나리오들 하에서 상이한 전략들을 제공한다. 성능 캐시 티어 SSD 정보는 주기적으로 검색되고, 작업량 스파이크 검출 결과들에 기초하여, 상이한 전략들이 I/O 스트림 할당을 위해 사용된다. 구체적으로, 성능 캐시 티어 SSD 정보는 작업량 스파이크 검출 구성을 호출함으로써 검색된다. 스파이크 정도 결과들에 기초하여, ACLB는 현재 I/O 스트림을 세 개의 상이한 범위들 중 하나로 분류하고, 세 개의 상이한 대응하는 전략들 중 하나는 I/O 스트림을 할당하는 데 사용된다.
본 명세서에서, 최적화 계산을 수행하기 위해 과도하게 세밀하고(fine-grained) 비용이 많이 들기 때문에 개별적인 I/P 요청 각각은 고려되지 않는다. 대신, 이하의 특성들을 갖는 I/O 요청들의 배치(batch)로서 정의된 I/O 스트림이 고려된다.
1. 어플리케이션들과 상호 관련된(즉, 동일한 어플리케이션으로부터);
2. 유사한 수명 데이터를 동일한 소거 블럭에 저장하고, 쓰기 증폭을 감소시키기(가비지 컬랙션 오버헤드)는 지역 패턴을 가진다; 및
3. 동시에 무효화된(예컨대, 업데이트되고, 트림되고, 언맵되고(unmapped), 할당해제된(deallocated) 등) 모든 관련 데이터
다중 스트림 SSD들과 함께, I/O 스트림들이 각 어플리케이션 쓰기 스레드 동작을 스트림과 연관시켜 할당 될 수 있으므로 I/O 스트림이 더 나은 내구성과 향상된 성능을 제공한다.
작업량 스파이크 검출 방법들은 본 명세서의 개시에 엄격하게 한정되지 않는다. 그러나, 일 예에서, 입력되는 트래픽의 작업량 스파이크를 검출하기 위해 분산 I의 인덱스가 사용된다. 분산 I의 인덱스를 사용하는 것의 이점은, 하나의 숫자로 스파이크들을 정량적으로 캡쳐 할 수 있고, 이에 따라, 스파이크 구간의 시작과 끝을 즉시 식별하기 위한 간단하지만 강력한 방법을 제공할 수 있다는 것이다. 확률론적인 과정의 분산 I의 인덱스의 수학적인 정의는 이하 수학식 1로 제공된다.
Figure pat00001
"SCV"는 편차의 제곱 계수이고, "ACF(k)"는 지연 "K"에서의 자기 상관 함수이다. "α"는 자기 상관 함수 "ACF(k)"의 가중치를 조정하기 위한 노브(knob)이다. 분산 I의 인덱스에서 "SCV"와 자기 상관들의 조화된 실재(joint presence)는 상이한 스파이크 강도들을 가진 흔적들을 식별하고, 이에 따라 사용자 요구들의 변화들을 포착하기에 충분하다.
분산 I의 인덱스는, 예로서, 작업 크기와 같은 하나의 측면에 기초하거나, 예로서, 다음에 기초를 둔 포괄적인 방정식과 같은 여러 측면들에 기초 할 수 있다:
1. 작업 크기의 사이즈(WVS): 디스크에서 접근된(바이트 단위의) 데이터의 총 량
2. 작업 세트 사이즈(WSS): "WVS"의 고유 세트인 접근된 데이터의 총 어드레스 범위(바이트 단위의). 큰 작업 세트는 더 많은 디스크 공간을 커버한다.
추가적으로, 작업량 스파이크 검출을 고려하여 이하의 요소들도 포함될 수 있다:
1. 읽기/쓰기 비율(RWR): 쓰기 I/O들의 개수 나누기 I/O들의 총 개수.
2. 순차/랜덤 비율(SRR): 총 순차적인 I/O(읽기 및 쓰기 모두)의 량(바이트 단위의) 나누기 총 I/O 양(바이트 단위의). 일반적으로, SSD들은 임의 I/O들보다 순차적인 I/O들에서 더 좋은 성능을 갖는다.
도 2는 본 개시의 실시 예에 따라, 작업량 스파이크 검출의 예시를 나타내는 도면이다. 도시된 바와 같이, 도면은 검출된 작업량 스파이크의 정도를 제공하는 시간을 나타내는 x축 및 분산 I의 인덱스를 나타내는 y축을 갖는다. 그러나, y축은 임의의 유형의 스파이크 측정값일 수 있다. ACLB는 작업량 스파이크 정도들을 대응하는 사전 설정 범위 임계 값들에 기초하여 세 개의 범위들로 분류한다: 강한 스파이크(ρS), 약한 스파이크(ρW) 및 스파이크 없음(ρN). 예로서, [0, 30]은 스파이크 없음의 범위로 설정 되고, [30, 70]은 약한 스파이크 범위로 설정되고, [70, 100]은 강한 스파이크 범위로 설정 될 수 있다.
강한 스파이크와 약한 스파이크가 모두 감지되는 경우, ACLB는 JSQ(joint shortest queue) 기반 런타임 랜덤 그리디(greedy) 알고리즘을 사용한다. 구체적으로, 런타임 동안 ACLB는 가장 짧은 큐들을 가진 상위 K개의 SSD들을 선택하고, 이러한 상위 K개의 SSD들 중 임의의 할당을 수행한다. 스파이크 검출이 없는 경우, 최적화 프레임워크 계산이 수행된다.
도 3을 참조하면, 흐름도는, 본 개시의 실시 예에 따라, 작업량 스파이크를 검출하고 보상하기 위한 방법을 도시한다. 작업량 스파이크 검출기(302)는 작업량 스파이크의 존재 및 크기를 검출하는데 사용된다. 작업량 스파이크 검출기는 블럭(304)에서 강한 스파이크를 검출하거나, 블럭(306)에서 약한 스파이크를 검출하거나, 블럭(308)에서 스파이크를 검출하지 않을 수 있다. 강한 스파이크가 블럭(304)에서 검출되는 경우, 블럭(312)에서, JSQ 기반 런타임 랜덤 그리디(random-greedy) 알고리즘(310)이 가장 가동되지 않거나 가장 사용량이 적은 SSD들의 큰 범위(KH)에 따라 사용된다. 블럭(306)에서 약한 스파이크가 검출되면, 블록(314)에서 JSQ 기반 런타임 랜덤 그리디 알고리즘(310)은 가장 사용량이 적은 SSD들의 작은 범위(KL)에 따라 사용된다. 블럭(308)에서 스파이크가 검출되지 않으면, 블럭(316)에서 최적화 프레임워크 계산이 수행된다.
도 4는 본 개시의 실시 예에 따라 작업량 스파이크에 기초하여 I/O 스트림의 작업들의 전송(dispatching)을 도시하는 도면이다. 디스패처(402)는 디스패처 큐 (404)로부터 I/O 스트림을 SSD들(406)로 전송한다. 구체적으로, 스파이크 없는 시나리오 하에서, ACLB는 최적화 프레임워크에 기초하여 I/O를 위한 디스크를 선택한다. 강력한 스파이크 시나리오 하에서, ACLB는 가장 사용량이 적은 SSD들의 큰 범위(KH)을 선택하고, I/O 작업에 대해 이러한 선택된 SSD들 중에서 랜덤 할당을 수행한다. 약한 스파이크 시나리오 하에서, ACLB는 가장 사용량이 적은 SSD들의 작은 범위(KL)을 선택하고 I/O 작업에 대해 이러한 선택된 SSD들 중에서 랜덤 할당을 수행한다. 전체 최적화는 더 많은 시간이 걸리므로 스파이크 케이스들에는 적합하지 않다.
도 5는 본 개시의 실시 예에 따른 ACLB를 위한 방법을 도시하는 흐름도 이다. 단계들(502 및 504)에서 방법론을 시작하기로 결정하면, 단계(506)에서, 각 I/O 스트림에 대해, 현재 시간이 에포크(epoch)의 시작인지 여부가 결정된다. 현재 시간이 에포크의 시작이면, 단계(508)에서, SSD들로부터의 로드 정보가 업데이트 된다. 시간이 에포크 길이로 나뉜 값의 나머지가 “0”이면, 에포크 경계이고 새로운 로드 데이터가 획득된다.. 구체적으로, 새로운 에포크의 시작인 경우, 단계(508)에서 ACLB는 함수 “updateLoadInfo ()”를 호출함으로써 모든 SSD들로부터 큐 정보를 수집 할 것이다. 현재 시간이 에포크의 시작이 아니면, 방법론은 현재의 에포크의 시작에서 이미 획득 된 로드 데이터를 사용하여 단계(510)로 진행된다.
단계 (510)에서, 검출된 작업량 스파이크의 정도가 결정된다. 단계 (512)에서, 작업량 스파이크의 정도가 강한 스파이크 범위 “ρS” 내에 있는지 판단 된다. 스파이크 정도가 강한 스파이크 범위 “ρS” 내에 있는 경우, 단계(514)에서, JSQ 기반 런타임 랜덤 그리디 알고리즘이 가장 사용량이 적은 SSD들의 큰 범위(KH)에 따라 사용된다. 도 4를 다시 참조하면, 사용 가능한 SSD들의 총 수는 10개 이다(K=10). 강한 스파이크가 발견되는 경우들에서, 최상의 SSD 후보들 “KH”의 수는 사용 가능한 SSD들의 총 개수에 근접하게 (또는, 동일하게) 설정되어야 한다. 도 4에 도시 된 바와 같이, “KH = 8”이다.
구체적으로, JSQ 기반 런타임 랜덤 그리디 알고리즘에서, ACLB는 상위 “KH”개의 SSD들 중에서 랜덤 할당을 수행한다. 도 6은 본 발명의 일 실시 예에 따라, 강한 작업량 스파이크가 있을 때 SSD들을 선택하기 위한 방법을 도시하는 흐름도이다. 단계(602)에서, 디스패처 큐가 비어 있지 않고 현재 시간이 에포크의 시작이 아님을 판별한 후, 단계(604)에서, ACLB는 큐된 활성 I/O 스트림들의 수만큼 SSD를 오름차순으로 정렬하고, 현재 작업을 할당하기 위해 가장 사용되지 않은 “KH”개의 SSD들에서 SSD를 무작위로 선택하고, 디스패처 큐(404)로부터 그 작업을 제거한다.
“KH”는 SSD들의 총 개수에 근접하기 때문에, ACLB는 랜덤 할당 방법과 비슷한 동작을 하고, 이로 인해 스파이크 작업량이 많은 수의 가장 사용되지 않는 상위 SSD들 사이에서 공유될 수 있으므로 부하의 불균형을 완화할 수 있다.
도 5를 다시 참조하면, 단계(512)에서 스파이크 정도가 강한 스파이크 범위(ρS) 내에 있지 않다고 판별되면, 단계(516)에서 스파이크 정도가 약한 스파이크 범위(ρW) 내에 있는지가 판별된다. 스파이크 정도가 약한 스파이크 범위(ρW) 내에 있으면, 단계(518)에서 JSQ 기반 런타임 랜덤 그리디 알고리즘이 가장 사용되지 않은 SSD들의 작은 범위(KL)에 따라 사용된다. 이 알고리즘은 도 6에서 설명된 것과 동일한 방식으로, “KH”개의 SSD들 대신 “KL“개의 SSD들만 사용하여 동작한다. 각 에포크의 시작이 아닌 때, ACLB는 디스패처 큐로부터의 헤드 I/O 요청을 상위 K개의 가장 사용되지 않은 SSD들로 무작위로 할당한다. 이상의 동작들이 완료된 후, ACLB는 디스패처 큐로부터 I/O 요청을 제거한다.
약한 스파이크의 검출을 포함하는 경우, 최상의 SSD 후보들의 수 “KL”는 범위의 하한으로 설정된다. 예로서, 도 4에 도시된 바와 같이, “KL=3” 이다. 또한 주목할 것은, “KL=1”인 경우, ACLB는, 언제나 가장 짧은 큐 길이를 가진 가장 사용되지 않은 SSD를 선택하고 이에 따라 대기 시간과 관련하여 좋은 성능을 달성하는 "그리디"한 부하 균형기와 정확히 동일하게 수행한다.
도 5를 다시 참조하면, 단계(516)에서 스파이크 정도가 약한 스파이크 범위(ρW) 내에 있지 않다고 판별되면, 단계(520)에서, 스파이크 정도가 스파이크 없는 범위(ρN) 내에 있는지 여부가 판별된다. 스파이크 정도가 스파이크 없는 범위(ρN) 내에 있으면, 단계(522)에서 모든 K개의 SSD들에 대해 런타임 최적화 프레임워크가 수행된다. 스파이크 정도가 스파이크 없는 범위(ρN) 내에 있지 않다고 판별되면, 본 방법은 단계(502)로 복귀하고, 다시 반복된다.
도 7은 본 개시의 실시 예에 따라 작업량 스파이크가 검출되지 않을 때 SSD들을 선택하기 위한 방법을 도시하는 흐름도 이다. 구체적으로, 작업량 스파이크 검출을 포함하지 않는 경우, ACLB는, 예로서, 스루풋, 대역폭, 공간, 및 마모 정도과 같은 리소스들의 균형을 맞추기 위해 전체 최적화를 수행할 시간을 갖는다.
도 7의 단계(702)에서, 큐가 비어 있는지 여부 및 현재 시간이 에포크의 시작인지의 여부가 판별된다. 큐가 비어 있지 않고 현재 시간이 에포크의 시작이 아닌 경우, 단계(704)에서, 작업 “j”는 디스패처 큐의 헤드로 설정된다. 단계(706)에서, 방법이 SSD 리스트의 끝에 도달했는지 여부가 판별된다. 방법이 SSD 리스트의 끝에 도달하면, 방법은 단계(716)로 진행한다.
방법이 SSD 리스트의 끝에 도달하지 않은 경우, 단계(708)에서, ACLB는 리소스의 각 유형(이하에 설명될 4가지 유형에 제한되지 않음)에 기초하여 SSD에 대한 계수 변화(CV)를 계산한다.
첫째, 부하 균형기가 수행되는 리소스들이 특정된다. 구체적으로, SSD들이 제공하는 여러 유형들의 리소스들이 있다. 예로서:
1. 스루풋(P): 초당 I/O 요청의 단위(IOPS);
2. 대역폭(B): 초당 바이트의 단위(BPS);
3. 스토리지 공간(S): 작업량 어드레스 공간 또는 작업 세트 사이즈와 관련되는 바이트의 단위;
4. 프로그램/소거(P/E) 수명 싸이클들(L): 각 셀은 한정된 수명을 갖고, 상이한 작업량 패턴들(예컨대, 순차적 비율, 읽기 쓰기 비율)이 SSD 상에서 상이한 쓰기 증폭을 가질 것이다.
이상적으로 모든 리소스들의 사용은 SSD들 사이에서 균형을 이룰 것이다. 또한, 동종 및 이종의 SSD들을 모두 지원하기 위해 백분율 형식이 사용된다. 부하 균형 조정을 고려하여 더 많은 요소들이 포함될 수 있다.
둘째, 모든 유형의 리소스들의 모든 리소스 이용률의 균형 잡는 방법이 결정되어야 한다. “CV”는 이하 수학식 2 내지 6에서 설명될 것과 같이, 각 유형의 평균 자원 이용률에 대한 균형의 정도를 스코어(score)하는데 사용된다.
Figure pat00002
Figure pat00003
Figure pat00004
Figure pat00005
Figure pat00006
리소스의 각 유형은 ωs에 의해 반영된 바와 같이, 환경 기본 설정에 기초하여 상이한 가중치를 가질 수 있다. “Pmax”, “Bmax”, “Smax”, 및 “Lmax”는 리소스의 각 유형에 대한 이용률의 미리 설정된 상한들이다. 평균적인 이용은 모니터링 창, 또는 데이터가 시간에 따라 더 많이 제거됨으로써 데이터에 덜 비중 있는 방식으로 데이터를 평균화하는 EWMA(Exponentially Weighted Moving Average) 창에 있을 수 있다.
따라서, ACLB는, 예로서, 스루풋, 대역폭, 스토리지, 및 P/E 싸이클과 같은 스토리지 풀의 런타임 사용 정보를 알아야 한다.
스루풋, 대역폭 및 스토리지는 하이퍼바이저(도 1의 참조번호 112)의 API들을 호출함으로써 획득 될 수 있다. 그러나, P/E 싸이클의 경우 SSD 공급 업체들은 보통 사용자들이 실제 물리적인 쓰기 양을 확인할 수 있도록 API들을 제공하지 않는다. 따라서, 실제 물리적인 쓰기 양은 작업 스케줄러로부터 전송된 작업들의 히스토리 기록에 기초하여 P/E 싸이클의 사용을 계산하도록 추정된다. 이것은 수학식 7에서 설명된 바와 같이, 쓰기 증폭 함수(Write Amplification Function; WAF) 모델들을 사용하여 추정될 수 있다.
Figure pat00007
여기서 λP 및 λL은 각각 (바이트 단위의)물리적 및 논리적 쓰기 양이다. 논리적 쓰기는 어플리케이션 측으로부터 알려진다. WA(s, j)는 SSD와 새로운 I/O 스트림을 SSD에 할당되고, 이후 쓰기 의미 요소(write implication factor)를 반환하는 쓰기 증폭 함수이다.
많은 수의 SSD들이 있는 스토리지 풀로부터 스루풋, 대역폭 및 스토리지를 계속적으로 추출(pull)하는 것에 많은 비용이 소모될 수 있다. 그로므로, 정보는 주기적으로 추출된다.
도 7을 다시 참조하면, 단계(710)에서, “CV”가 리소스들 중 어느 하나의 리소스가 대응하는 리소스 상한을 초과하는 것을 표시하는 “-1”의 값을 반환하는지 여부가 판별된다. “CV”에 대해 -1의 값이 반환되면, SSD는 스킵되고 단계(712)에서 다음 SSD가 선택된다. 리소스들이 리소스 상한을 초과하지 않으면, 단계(712)에서 다음 SSD를 선택하고 단계(706)으로 돌아오기 전에, 단계(714)에서 CV 등식의 결과가 등식의 결과들을 저장하는 “CV_Rec” 벡터에 더해진다. “CV_Rec” 벡터는 <CV (Util (ResourceType1)), CV (Util (ResourceType2) (Util (ResourceType3)) ...>로서 정의된다. 단계(706)에서, SSD 리스트의 끝을 판별하면, ACLB는 잡 “j”의 할당을 위한 (수학식 2에서도 보여진)최소의 “CV” 결과 및 대응하는 SSD를 선택하고, 단계(716)에서, 디스패처 큐로부터 그 작업도 제거한다. 방법은 반복을 위해 단계(702)로 되돌아 간다.
이제 도 8을 참조하면, 블록도는, 개시(예컨대, 도 1 내지 도 7의 문맥 상의 구성요소들/방법들)의 하나 이상의 구성요소/방법이 구현될 수 있는 것에 따른 컴퓨팅 시스템의 예시적인 하드웨어 구현을 도시한다. 도시된 바와 같이, 컴퓨터 시스템은 컴퓨터 버스(818) 또는 대체 연결 장치를 통해 결합된 프로세서(810), 메모리(812), 입력/출력(I/O) 장치들(814), 및 네트워크 인터페이스(816)에 따라 구현될 수 있다.
본 명세서에서 사용되는 "프로세서" 용어는, 예로서, 중앙 처리 장치 (CPU) 및/또는 다른 처리 회로를 포함하지만 이에 한정되지 않는 임의의 처리 장치를 포함하도록 의도된다. "프로세서" 용어는 하나 이상의 처리 장치를 지칭 할 수 있고, 처리 장치와 관련된 다양한 구성들이 다른 처리 장치들에 의해 공유될 수 있다는 것 또한 이해될 것이다.
본 명세서에서 사용되는 “메모리” 용어는, 예로서, RAM(Random Access Memory), ROM(Read Only Memory), (예컨대, 하드 드라이브와 같은) 고정된 메모리 장치, 착탈식 메모리 장치, 및 플래시 메모리와 같은 프로세서 또는 CPU와 관련된 메모리를 포함하도록 의도된다.
또한, 본 명세서에서 사용되는 “입력/출력 장치들” 또는 “I/O 장치들” 문구들은, 예로서, 프로세서 또는 처리 유닛으로 정보를 입력하기 위한 하나 이상의 입력 장치들, 및/또는 처리 유닛과 관련된 정보를 출력하기 위한 하나 이상의 출력 장치들을 포함하도록 의도된다.
또한, 본 명세서에서 사용되는 "네트워크 인터페이스" 문구는, 예로서, 컴퓨터 시스템이 적절한 통신 프로토콜을 통해 다른 컴퓨터 시스템과 통신 할 수 있도록 허용하는 하나 이상의 송수신기를 포함하도록 의도된다. 이것은 다른 컴퓨터 시스템들에 대한 접근을 제공 할 수 있다.
본 명세서에서 설명된 방법들을 수행하기 위한 명령어들 또는 코드를 포함하는 소프트웨어 구성요소들은, 하나 이상의 관련된 메모리 장치들(예컨대, ROM, 고정식 또는 착탈식 메모리)에 저장되고, 이용 준비가 되면 부분적으로 또는 전체적으로(예컨대, RAM으로) 로드되고, CPU에 의해 실행될 수 있다.
본 개시는 본 명세서에서 설명된 방법들 및 장치들의 일부로 간주되는 집적 회로들의 생산과 함께 이용될 수 있다.
본 개시의 실시 예들은, 성능을 향상시키고 수명을 연장시키기 위해 작업량 변경(즉, I/O 스파이크 예측)을 검출 및 예측하고, SSD들 사이에서 부하들의 균형을 더 잘 잡기 위해 상이한 스파이크 정도들에 대한 3개의 상이한 전략들을 제공한다. 작업량은 사용자에게 투명하게 밸런싱되고, VM I/O 성능은 향상되고, SSD 수명은 연장된다.
비록 본 개시의 특정 실시 예들이 본 개시의 상세한 설명에서 설명되었지만, 본 개시는 본 개시의 범위를 벗어나지 않는 다양한 형태들로 변형 될 수 있다. 따라서, 본 개시의 범위는 단지 설명된 실시 예들에 기초하여 결정되기보다는, 첨부된 청구항들 및 이와 동등한 것들에 기초하여 결정된다.

Claims (10)

  1. 메모리; 및
    하나 이상의 사용자 장치들로부터 네트워크를 통해 수신되는 입력/출력 스트림의 작업량의 변화의 정도(degree)를 검출하고,
    복수의 미리 설정된 정도 범위 중 상기 작업량의 상기 변화의 상기 정도가 있는 정도 범위를 결정하고,
    상기 결정된 정도 범위에 기초하여, 중앙 집중화된 다중 티어 스토리지 풀의 성능 캐시 티어에서 하나 이상의 SSD(Solid State Driver)에 상기 작업량을 분배하기 위해, 복수의 분배 전략 중 분배 전략을 결정하고,
    상기 결정된 분배 전략에 기초하여 상기 하나 이상의 SSD에 상기 작업량을 분배하도록 구성되는 프로세서를 포함하는 장치.
  2. 제 1 항에 있어서,
    상기 복수의 미리 설정된 정도 범위는 강한 작업량 스파이크 범위, 약한 작업량 스파이크 범위, 및 스파이크 없는 범위를 포함하는 장치.
  3. 제 2 항에 있어서,
    상기 복수의 분배 전략은,
    상기 복수의 SSD 중 상기 강한 작업량 스파이크 범위에 대응하는 가장 사용되지 않은(idlest) SSD들의 큰 범위에 따라 사용되는 제 1 JSQ(Join Shortest Queue) 기반 런타임 랜덤 그리디(greedy) 알고리즘;
    상기 복수의 SSD 중, 상기 약한 작업량 스파이크 범위에 대응하는 상기 가장 사용되지 않은 SSD들의 작은 범위에 따라 사용되는 제 2 JSQ 기반 런타임 랜덤 그리디 알고리즘; 및
    상기 스파이크 없는 범위에 대응하는 프레임워크 계산을 포함하는 장치.
  4. 제 3 항에 있어서,
    상기 결정된 분배 전략이 상기 제 1 JSQ 기반 런타임 랜덤 그리디 알고리즘 또는 상기 제 2 JSQ 기반 런타임 랜덤 그리디 알고리즘을 포함하는 경우, 상기 프로세서는, 큐(queue)된 다수의 활성화 I/O 스트림들에 의해 상기 복수의 SSD를 정렬하고 상기 작업량의 작업의 할당을 위한 상기 가장 사용되지 않은 SSD들의 상기 작은 범위 또는 상기 가장 사용되지 않은 SSD들의 상기 큰 범위로부터 SSD를 무작위로 선택하도록 더 구성되는 장치.
  5. 제 3 항에 있어서,
    상기 결정된 분배 전략이 상기 프레임워크 계산을 포함하는 경우, 상기 프로세서는:
    복수의 리소스들을 사용하여 상기 복수의 SSD 각각에 대한 계수 변화를 계산하고,
    상기 계수 변화에 기초하여 상기 복수의 리소스 중 하나가 상기 복수의 SSD 각각에 대한 상한을 초과하는지 여부를 판별하고,
    상기 복수의 리소스 중 하나가 상기 상한을 초과하는 경우 주어진 SSD에 대한 할당을 스킵하고,
    상기 작업량의 작업의 할당에 대한 최소 계수 변화 결과를 갖는 SSD를 선택하도록 더 구성되는 장치.
  6. 제 1 항에 있어서,
    상기 작업량의 상기 변화의 상기 정도는 작업 크기, 작업 크기 사이즈, 또는 작업 세트 사이즈에 기초하여 결정되는 장치.
  7. 어플리케이션 서버 계층의 프로세서에 의해, 하나 이상의 사용자 장치로부터 네트워크를 통해 수신되는 입력/출력 스트림에서 작업량의 변화의 정도를 검출하는 단계;
    상기 프로세서에 의해, 복수의 미리 설정된 정도 범위 중, 상기 작업량의 상기 변화의 상기 정도가 있는 정도 범위를 결정하는 단계;
    상기 프로세서에 의해, 상기 결정된 정보 범위에 기초하여, 중앙 집중화된 다중 티어 스토리지 풀의 성능 캐시 티어의 하나 이상의 SSD에 상기 작업량을 분배하기 위해, 복수의 분배 전략 중 분배 전략을 결정하는 단계; 및
    상기 프로세서에 의해, 상기 결정된 분배 전략에 기초하여 상기 하나 이상의 SSD에 상기 작업량을 분배하는 단계를 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 복수의 분배 전략은 상기 복수의 미리 설정된 정보 범위에 각각 대응하는 방법.
  9. 제 7 항에 있어서,
    상기 작업량의 상기 변화의 상기 정도는 분산 I의 인덱스로서
    Figure pat00008
    로 계산되되,
    SCV는 편차의 제곱 계수이고, ACF(k)는 지연 k에서의 자기 상관 함수인 방법.
  10. 제 7 항에 있어서,
    상기 작업량의 상기 변화의 상기 정도는 읽기/쓰기 비율 및 순차/랜덤 비율 중 적어도 하나에 더 기초하여 결정되는 방법.
KR1020180143031A 2017-12-22 2018-11-19 Ssd기반 클라우드 계산 스토리지 시스템을 위한 aclb를 위한 방법 및 장치 KR20190084203A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762609871P 2017-12-22 2017-12-22
US62/609,871 2017-12-22
US15/971,349 US20190196969A1 (en) 2017-12-22 2018-05-04 Method and apparatus for adaptive cache load balancing for ssd-based cloud computing storage system
US15/971,349 2018-05-04

Publications (1)

Publication Number Publication Date
KR20190084203A true KR20190084203A (ko) 2019-07-16

Family

ID=66951163

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180143031A KR20190084203A (ko) 2017-12-22 2018-11-19 Ssd기반 클라우드 계산 스토리지 시스템을 위한 aclb를 위한 방법 및 장치

Country Status (3)

Country Link
US (2) US20190196969A1 (ko)
KR (1) KR20190084203A (ko)
CN (1) CN109962969B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230116470A (ko) 2022-01-28 2023-08-04 경북대학교 산학협력단 하이브리드 인덱스 시스템을 위한 동작 방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182101B2 (en) * 2018-12-03 2021-11-23 Western Digital Technologies, Inc. Storage system and method for stream management in a multi-host virtualized storage system
US11061611B2 (en) * 2019-02-21 2021-07-13 International Business Machines Corporation Dynamically altered data distribution workload on a storage system
US11144226B2 (en) 2019-04-11 2021-10-12 Samsung Electronics Co., Ltd. Intelligent path selection and load balancing
US11216190B2 (en) 2019-06-10 2022-01-04 Samsung Electronics Co., Ltd. Systems and methods for I/O transmissions in queue pair-based NVMeoF initiator-target system
US11240294B2 (en) 2019-08-23 2022-02-01 Samsung Electronics Co., Ltd. Systems and methods for spike detection and load balancing resource management
US11016889B1 (en) 2019-12-13 2021-05-25 Seagate Technology Llc Storage device with enhanced time to ready performance
CN111221477B (zh) * 2020-01-10 2023-08-22 烽火云科技有限公司 一种osd盘分配方法及系统
CN111708492B (zh) * 2020-06-10 2023-04-25 深圳证券通信有限公司 一种基于ceph的数据分布不平均调整方法
US11782624B2 (en) 2020-10-06 2023-10-10 Samsung Electronics Co., Ltd. Worflow-based partition allocation
US20220329478A1 (en) * 2021-04-09 2022-10-13 At&T Intellectual Property I, L.P. Adaptive spare equipment allocation techniques
US20220374149A1 (en) * 2021-05-21 2022-11-24 Samsung Electronics Co., Ltd. Low latency multiple storage device system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7321926B1 (en) 2002-02-11 2008-01-22 Extreme Networks Method of and system for allocating resources to resource requests
JP2008090372A (ja) * 2006-09-29 2008-04-17 Hitachi Ltd ストレージ装置及び負荷分散方法
US8296772B2 (en) * 2007-07-02 2012-10-23 International Business Machines Corporation Customer information control system workload management based upon target processors requesting work from routers
US9071608B2 (en) * 2008-04-28 2015-06-30 International Business Machines Corporation Method and apparatus for load balancing in network based telephony application
US8762997B2 (en) * 2010-01-12 2014-06-24 Nec Laboratories America, Inc. Constraint-conscious optimal scheduling for cloud infrastructures
CN102300330B (zh) * 2011-08-05 2014-05-14 郑侃 一种下行资源调度方法
US8930592B2 (en) 2013-02-13 2015-01-06 Vmware, Inc. Multipath load balancing optimizations for alua storage systems
US9396009B2 (en) * 2014-01-30 2016-07-19 International Business Machines Corporation Optimized global capacity management in a virtualized computing environment
US20160269501A1 (en) * 2015-03-11 2016-09-15 Netapp, Inc. Using a cache cluster of a cloud computing service as a victim cache
EP3079060B1 (en) 2015-04-08 2018-03-28 Huawei Technologies Co., Ltd. Load balancing for large in-memory databases
US9626295B2 (en) * 2015-07-23 2017-04-18 Qualcomm Incorporated Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US10599352B2 (en) 2015-08-14 2020-03-24 Samsung Electronics Co., Ltd. Online flash resource allocation manager based on a TCO model
US10073652B2 (en) * 2015-09-24 2018-09-11 International Business Machines Corporation Performance optimized storage vaults in a dispersed storage network
US10120817B2 (en) 2015-09-30 2018-11-06 Toshiba Memory Corporation Device and method for scheduling commands in a solid state drive to reduce peak power consumption levels

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230116470A (ko) 2022-01-28 2023-08-04 경북대학교 산학협력단 하이브리드 인덱스 시스템을 위한 동작 방법

Also Published As

Publication number Publication date
CN109962969A (zh) 2019-07-02
US20200394137A1 (en) 2020-12-17
US11403220B2 (en) 2022-08-02
US20190196969A1 (en) 2019-06-27
CN109962969B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
KR20190084203A (ko) Ssd기반 클라우드 계산 스토리지 시스템을 위한 aclb를 위한 방법 및 장치
US10185592B2 (en) Network storage device using dynamic weights based on resource utilization
US10387202B2 (en) Quality of service implementation in a networked storage system with hierarchical schedulers
US10534653B2 (en) Hypervisor-based virtual machine isolation apparatus and method
US9043571B2 (en) Management apparatus and management method
US10078533B2 (en) Coordinated admission control for network-accessible block storage
US20150196841A1 (en) Load balancing system and method for rendering service in cloud gaming environment
KR20160070636A (ko) 분산 클라우드 환경에서의 마이그레이션 제어 장치 및 이를 이용한 마이그레이션 제어 방법
KR102016683B1 (ko) 소프트웨어 정의 네트워크의 모니터링 기능 자원 자율 스케일링 장치 및 방법
US10496541B2 (en) Dynamic cache partition manager in heterogeneous virtualization cloud cache environment
US20150026306A1 (en) Method and apparatus for providing virtual desktop service
US10250673B1 (en) Storage workload management using redirected messages
US10146446B1 (en) Data storage system with port congestion hinting for host multipathing
US10394607B2 (en) Prioritization of low active thread count virtual machines in virtualized computing environment
KR101140914B1 (ko) 컴퓨팅 자원들을 제어하는 기술
US10474383B1 (en) Using overload correlations between units of managed storage objects to apply performance controls in a data storage system
US20240036756A1 (en) Systems, methods, and devices for partition management of storage resources
JP5879117B2 (ja) 情報処理システムおよび運用管理方法
JP4121525B2 (ja) リソース利用率を制御する方法およびコンピュータシステム
CN116302327A (zh) 资源调度方法及相关设备
KR101691578B1 (ko) 가상화 환경에서의 가상화된 장치들에 대한 모니터링 데이터 수집 장치, 방법 및 그 방법을 실행하기 위한 프로그램을 기록하고 있는 컴퓨터 판독가능한 기록매체
US8694699B2 (en) Path selection for application commands
KR20170094899A (ko) 컴퓨팅 리소스 관리 시스템 및 방법
US20230176893A1 (en) Method and apparatus for migrating virtual machine in memory-disaggregated environment
US20240036767A1 (en) Systems and methods for input/output dispatch

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal