KR102419165B1 - Io redirection methods with cost estimation - Google Patents

Io redirection methods with cost estimation Download PDF

Info

Publication number
KR102419165B1
KR102419165B1 KR1020170103708A KR20170103708A KR102419165B1 KR 102419165 B1 KR102419165 B1 KR 102419165B1 KR 1020170103708 A KR1020170103708 A KR 1020170103708A KR 20170103708 A KR20170103708 A KR 20170103708A KR 102419165 B1 KR102419165 B1 KR 102419165B1
Authority
KR
South Korea
Prior art keywords
time
garbage collection
local
estimated
remote
Prior art date
Application number
KR1020170103708A
Other languages
Korean (ko)
Other versions
KR20180030382A (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
Priority claimed from US15/336,772 external-priority patent/US20170123700A1/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180030382A publication Critical patent/KR20180030382A/en
Application granted granted Critical
Publication of KR102419165B1 publication Critical patent/KR102419165B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

Abstract

분산 저장 시스템 노드가 개시된다. 분산 저장 시스템 노드는, 입력/출력 (I/O) 요청에 따른 데이터에 대한 주 복제본으로 동작하는, 적어도 하나의 저장 장치를 포함할 수 있다. 비용 분석기는 주 복제본에서 I/O 요청을 완료하기 위한 로컬 추정 소요 시간, 및 보조 복제본에서 I/O 요청을 완료하기 위한 원격 추정 소요 시간을 계산할 수 있다. I/O 재배치기는 로컬 추정 소요 시간 및 하나의 원격 추정 소요 시간에 기초하여, 주 복제본 또는 보조 복제본으로 I/O 요청을 보낼 수 있다.A distributed storage system node is disclosed. A distributed storage system node may include at least one storage device, which acts as a primary replica for data according to input/output (I/O) requests. The cost analyzer may calculate a local estimated time taken to complete an I/O request at the primary replica, and a remote estimated time taken to complete an I/O request at the secondary replica. The I/O redirector may direct I/O requests to either the primary replica or the secondary replica based on a local estimated time spent and one remote estimated time spent.

Description

비용 추정을 이용한 IO 재배치 방법{IO REDIRECTION METHODS WITH COST ESTIMATION}IO REDIRECTION METHODS WITH COST ESTIMATION

본 발명의 사상들은 저장 장치에 관한 것으로, 좀 더 상세하게는 주저장장치가 지연될 수 있는 입력/출력(I/O) 동작을 향상시키는 것에 관한 것이다.The present invention relates to a storage device, and more particularly, to improving an input/output (I/O) operation that may be delayed by a primary storage device.

Ceph와 같은 분산 저장 시스템(distributed storage system)들은 드라이브 및 저장 노드(node) 장애들 전반에 대한 데이터 가용성을 보장하기 위해 데이터 복제(data replication) 및/또는 이레이저 코딩(erasure coding)을 사용한다. 이러한 분산 저장 시스템들은 솔리드 스테이트 드라이브(solid state drive; 이하 SSD)들을 사용할 수 있다. 데이터 접근이 빠르다는 점 및 데이터 접근이 데이터가 있을 수 있는 드라이브 상의 위치에 의존하지 않는다는 점에서, SSD들은 전통적인 하드 디스크 드라이브에 대해 장점들을 가진다.Distributed storage systems such as Ceph use data replication and/or erasure coding to ensure data availability across drive and storage node failures. These distributed storage systems may use solid state drives (SSDs). SSDs have advantages over traditional hard disk drives in that data access is fast and data access does not depend on the location on the drive where the data may be.

SSD들은 페이지 단위들로 데이터를 읽고 쓴다. 즉, 어느 데이터를 읽기 위해 전체 페이지가 접근되고, 어느 데이터를 쓰기 위해 전체 페이지가 SSD 상의 사용 가능한 페이지에 쓰인다. 하지만 데이터가 쓰일 때, 그 데이터는 빈 페이지에 쓰인다. 즉, 존재하는 데이터는 덮어 쓰이지 않는다. 그러므로, 데이터가 SSD 상에 수정되면, 존재하는 페이지는 유효하지 않은 것으로 표시되고 새로운 페이지가 SSD에 쓰인다. 그러므로, SSD들의 페이지들은 세 개의 상태들 중 하나를 갖는다. 세 개의 상태들은 비어있는 상태(사용 가능한 상태, free), 유효한 상태(데이터를 저장하는 상태, valid), 및 유효하지 않는 상태(더 이상 유효한 데이터를 저장하지 않는 상태, invalid)를 포함한다.SSDs read and write data in units of pages. That is, the entire page is accessed to read some data, and the entire page is written to available pages on the SSD to write some data. But when data is written, that data is written to a blank page. That is, existing data is not overwritten. Therefore, when data is modified on the SSD, the existing page is marked as invalid and a new page is written to the SSD. Therefore, pages of SSDs have one of three states. The three states include an empty state (available state, free), a valid state (a state that stores data, valid), and an invalid state (a state that no longer stores valid data, invalid).

시간이 지남에 따라, 유효하지 않은 페이지들은 SSD 상에 축적되고 유효하지 않은 페이지들은 비어있는 상태로 상태로 바뀌게 해야 한다. 하지만, SSD들은 블록들(몇 개의 페이지들을 포함하는) 또는 슈퍼블록들(몇 개의 블록들을 포함하는)의 단위들로 데이터를 삭제(소거)한다. 블록 또는 슈퍼블록을 삭제하는 것을 시도하기 전, 삭제 블록 또는 슈퍼 블록의 모든 페이지들이 유효해지지 않을 때까지 SSD가 기다린다면, SSD는 가득 차고, 비어 있는 블록이 없고 아무 블록도 비워질 수 없는 상태에 이를 수 있다. 그러므로, 유효하지 않은 페이지들을 복구하는 것은 전체 블록(또는 슈퍼 블록)이 삭제될 수 있도록 유효한 페이지들을 하나의 블록에서 다른 블록으로 옮기는 것을 포함할 수 있다.Over time, invalid pages accumulate on the SSD and invalid pages have to be brought to the empty state. However, SSDs erase (erase) data in units of blocks (including several pages) or superblocks (including several blocks). If the SSD waits until all pages in the erase block or superblock become invalid before attempting to delete a block or superblock, then the SSD is full, with no free blocks, and no blocks can be freed. This can be achieved. Therefore, recovering invalid pages may include moving valid pages from one block to another so that the entire block (or super block) can be erased.

블록들 또는 슈퍼블록들을 삭제하는 것은 시간을 소비하고, 이는 읽기들과 쓰기들을 수행하기 위해 요구되는 시간과 관련된다. 또한, 블록 또는 슈퍼블록이 삭제되는 중에, SSD의 부분 또는 전체 SSD는 사용되지 못할 수 있다. 그러므로, SSD들이 가비지 컬렉션(garbage collection)을 수행하는 때를 관리하는 것은 중요할 수 있다. 예를 들어, 분산 저장 시스템의 모든 SSD들이 동시에 가비지 컬렉션을 수행한다면, 어떠한 데이터 요청들도 제공될 수 없고, 국부적으로 데이터를 저장하고 가비지 컬렉션을 수행 중인 시스템보다 좋은 것이 없는(비록 일시적이긴 하지만) 분산 저장 시스템이 되게 할 수 있다.Erasing blocks or superblocks is time consuming, which is related to the time required to perform reads and writes. Also, while a block or superblock is being erased, part or the entire SSD of the SSD may not be used. Therefore, managing when SSDs perform garbage collection can be important. For example, if all SSDs in a distributed storage system are garbage collected at the same time, no data requests can be served, and there is nothing better (albeit temporary) than a system that stores data locally and is performing garbage collection. It can be a distributed storage system.

분산 저장 시스템에서의 가비지 컬렉션 동작들의 영향을 줄이기 위한 방법이 필요하다.A method is needed to reduce the impact of garbage collection operations in a distributed storage system.

본 발명은 I/O 재배치 방법을 위한 장치 및 시스템을 제공할 수 있다.The present invention may provide an apparatus and system for an I/O relocation method.

본 발명의 실시 예에 따르면, 분산 저장 시스템 노드는 적어도 하나의 저장장치, 비용 분석기, 및 I/O 재배치기를 포함할 수 있다. 적어도 하나의 저장 장치는 데이터의 주 복제본을 포함할 수 있다. 비용 분석기는 주 복제본에서 입력/출력(I/O) 요청을 완료하기 위한 로컬 추정 소요 시간 및 데이터의 적어도 하나의 보조 복제본들에서 I/O 요청을 완료하기 위한 적어도 하나의 원격 추정 소요 시간을 계산할 수 있다. I/O 재배치기는 로컬 추정 소요 시간 및 적어도 하나의 원격 추정 소요 시간에 응답하여 주 복제본 및 적어도 하나의 보조 복제본 중 하나로 I/O 요청을 보낼 수 있다.According to an embodiment of the present invention, a distributed storage system node may include at least one storage device, a cost analyzer, and an I/O relocator. At least one storage device may contain a primary copy of the data. The cost analyzer calculates a local estimated time to complete an input/output (I/O) request on the primary replica and at least one remote estimated time to complete an I/O request on at least one secondary replica of the data. can The I/O redirector may direct the I/O request to one of the primary replica and the at least one secondary replica in response to the local estimated duration and the at least one remote estimated duration.

본 발명의 실시 예에 따르면, 분산 저장 시스템의 입력/출력(I/O) 성능이 향상될 수 있다.According to an embodiment of the present invention, input/output (I/O) performance of a distributed storage system may be improved.

도 1은 본 발명의 실시 예에 따른 분산 저장 시스템을 보여주는 블록도 이다.
도 2는 도 1의 저장 노드를 구체적으로 보여주는 블록도 이다.
도 3은 도 1 내지 도 2의 저장 노드를 구체적으로 보여주는 블록도 이다.
도 4는 도 1의 분산 저장 시스템의 사용 중에 솔리드 스테이트 드라이브(SSD)가 있을 수 있는 단계들을 보여주는 흐름도 이다.
도 5는 도 1 내지 도 2의 SSD들로부터 프리 삭제 블록 카운트들(free erase block count)을 수신하는 도 2의 장치 가비지 컬렉션 모니터를 보여주는 블록도 이다.
도 6은 도 1 내지 도 2의 SSD들로부터의 도 5의 프리 삭제 블록 카운트들에 기초하여 가비지 컬렉션을 위한 SSD를 선택하는 도 2의 장치 가비지 컬렉션 모니터를 보여주는 블록도 이다.
도 7은 도 6에서 선택된 SSD에서 가비지 컬렉션을 수행하는데 요구되는 시간을 추정하는 도 2의 장치 가비지 컬렉션 모니터를 보여주는 블록도 이다.
도 8은 도 6에서 선택된 SSD에서 가비지 컬렉션을 수행하고 스케줄하기 위해 도 1의 모니터와 상호작용하는 도 2의 가비지 컬렉션 조정기를 보여주는 블록도 이다.
도 9a 내지 도 9b는, 본 발명의 실시 예들에 따라, 도 6에서 선택된 SSD를 위한 읽기 요청들을 처리하는 도 2의 입력/출력(I/O) 재배치기를 보여주는 블록도들 이다.
도 10은 도 6에서 선택된 SSD를 위한 로깅(logging) 장치에 쓰기 요청들을 저장하는 도 2의 I/O 재배치기를 보여주는 블록도 이다.
도 11은 도 10의 로깅 장치에 저장된 쓰기 요청들을 처리하는 도 2의 I/O 재동기화기를 보여주는 블록도 이다.
도 12는, 본 발명의 일 실시 예에 따라, 도 6에서 선택된 SSD에 데이터를 복제하는 도 2의 I/O 재동기화기를 보여주는 블록도 이다.
도 13은 도 1의 모니터를 구체적으로 보여주는 블록도 이다.
도 14은 도 1의 모니터에 저장된 예시적인 도 13의 데이터 맵을 보여주는 개념도 이다.
도 15a 내지 도 15b는, 본 발명의 일 실시 예에 따라, 도 1 내지 도 2의 SSD에서 가비지 컬렉션을 수행하기 위한 도 1의 저장 노드에 의해 사용되는, 절차를 보여주는 흐름도 이다.
도 16a 내지 도 16b는, 본 발명의 일 실시 예에 따라, 가비지 컬렉션을 위한 SSD를 선택하기 위한 도 2의 장치 가비지 컬렉션 모니터에 의해 사용되는, 절차를 보여주는 흐름도 이다.
도 17은 도 2의 가비지 컬렉션 조정자가 도 6에서 선택된 SSD를 위해, 가비지 컬렉션을 스케줄 하기 위한 절차를 보여주는 흐름도 이다.
도 18은, 본 발명의 일 실시 예에 따라, 도 2의 I/O 재배치기가 읽기 요청들을 재배치 하기 위한 절차를 보여주는 흐름도 이다.
도 19는, 본 발명의 일 실시 예에 따라, 도 2의 I/O 재동기화기가 로그된 쓰기 요청들을 처리하기 위한 절차를 보여주는 흐름도 이다.
도 20 및 도 21은, 본 발명의 실시 예들에 따라, 도 1의 모니터가, 도 6에서 선택된 SSD가 가비지 컬렉션을 수행하는 시간을 다루기 위한 절차를 보여주는 흐름도들 이다.
도 22a 내지 도 22b는, 본 발명의 일 실시 예에 따라, 도 1의 모니터가, 도 6에서 선택된 SSD를 위한 가비지 컬렉션의 시작 시각 및 지속 시간을 결정하기 위한 절차를 보여주는 흐름도 이다.
도 23은, 본 발명의 일 실시 예에 따라, 도 1의 저장 노드에 I/O 요청을 전송하고, 그 다음 요청된 데이터의 복제본을 포함하는 다른 노드에 I/O 요청을 재배치하는 클라이언트(client)를 보여주는 블록도 이다.
도 24는 도 23의 비용 분석기를 구체적으로 보여주는 블록도 이다.
도 25는 도 23의 I/O 재배치기를 구체적으로 보여주는 블록도 이다.
도 26는 도 24의 로컬(local) 시간 추정기를 구체적으로 보여주는 블록도 이다.
도 27은 도 24의 원격(remote) 시간 추정기를 구체적으로 보여주는 블록도 이다.
도 28 및 도 29는 로컬 가비지 컬렉션 시간 및 로컬 예상 가비지 컬렉션 시간을 계산하는, 도 26의 로컬 가비지 컬렉션 시간 계산기 및 로컬 예상 가비지 컬렉션 계산기를 보여주는 블록도 이다.
도 30은 큐(queue) 처리 시간을 계산하는 도 26의 큐 처리시간 계산기를 보여주는 블록도 이다.
도 31은 도 24의 데이터베이스를 구체적으로 보여주는 블록도 이다.
도 32는 도 24의 로컬 예상 분석기를 구체적으로 보여주는 블록도 이다.
도 33은 도 26의 로컬 추정 소요 시간 계산기를 구체적으로 보여주는 블록도 이다.
도 34는 도 27의 통신 시간 계산기를 구체적으로 보여주는 블록도 이다.
도 35는 도 27의 원격 프로세서 시간 계산기를 구체적으로 보여주는 블록도 이다.
도 36은 도 24의 원격 예상 분석기를 구체적으로 보여주는 블록도 이다.
도 37은 도 27의 원격 예상 소요 시간 계산기를 구체적으로 보여주는 블록도 이다.
도 38은 도 25의 I/O 재배치기를 구체적으로 보여주는 블록도 이다.
도 39a 내지 도 39b는, 본 발명의 일 실시 예에 따라, 도 23의 비용 분석기 및 I/O 재배치기가 어디로 I/O 요청을 전송할지를 결정하기 위한 절차를 보여주는 흐름도 이다.
도 40은 본 발명의 일 실시 예에 따라, 도 26의 로컬 추정 소요 시간 계산기가 로컬 추정 소요 시간을 계산하기 위한 절차를 보여주는 흐름도 이다.
도 41a 내지 도 41b는, 본 발명의 일 실시 예에 따라, 도 26의 로컬 가비지 컬렉션 시간 계산기 및 로컬 예상 가비지 컬렉션 시간 계산기, 및 도 27의 원격 가비지 컬렉션 시간 계산기가 가비지 컬렉션 시간을 계산하기 위한 절차를 보여주는 흐름도 이다.
도 42는 본 발명의 일 실시 예에 따라, 도 26의 큐 처리 시간 계산기가 큐 처리 시간을 계산하기 위한 절차를 보여주는 흐름도 이다.
도 43은 본 발명의 일 실시 예에 따라, I/O 요청을 처리하기 위해 필요한 소요 시간을 예측하기 위한 절차를 보여주는 흐름도 이다.
도 44는 본 발명의 일 실시 예에 따라, 도 26 및 도 27의 가중치들을 결정하기 위해, 선형 회귀 분석(linear regression analysis)을 사용하기 위한 절차를 보여주는 흐름도 이다.
도 45는 본 발명의 일 실시 예에 따라, 도 27의 원격 예상 소요 시간 계산기가 원격 예상 소요 시간을 계산하기 위한 절차를 보여주는 흐름도 이다.
도 46은 본 발명의 일 실시 예에 따라, 도 27의 통신 시간 계산기가 보조복제본과의 통신 시간을 결정하기 위한 절차를 보여주는 흐름도 이다.
도 47은 본 발명의 일 실시 예에 따라, 도 27의 원격 프로세서 시간 계산기가 원격 프로세서 시간을 결정하기 위한 절차를 보여주는 흐름도 이다.
1 is a block diagram illustrating a distributed storage system according to an embodiment of the present invention.
FIG. 2 is a block diagram specifically illustrating the storage node of FIG. 1 .
3 is a block diagram specifically illustrating the storage node of FIGS. 1 to 2 .
FIG. 4 is a flow diagram showing the steps a solid state drive (SSD) may be in use of the distributed storage system of FIG. 1 ;
FIG. 5 is a block diagram illustrating the device garbage collection monitor of FIG. 2 receiving free erase block counts from the SSDs of FIGS. 1-2;
FIG. 6 is a block diagram illustrating the device garbage collection monitor of FIG. 2 that selects an SSD for garbage collection based on pre-erase block counts of FIG. 5 from the SSDs of FIGS. 1-2;
FIG. 7 is a block diagram illustrating the device garbage collection monitor of FIG. 2 for estimating a time required to perform garbage collection in the SSD selected in FIG. 6 .
FIG. 8 is a block diagram showing the garbage collection coordinator of FIG. 2 interacting with the monitor of FIG. 1 to perform and schedule garbage collection on the SSD selected in FIG. 6 ;
9A to 9B are block diagrams illustrating input/output (I/O) relocation of FIG. 2 for processing read requests for the SSD selected in FIG. 6 according to embodiments of the present invention.
FIG. 10 is a block diagram illustrating the I/O relocation of FIG. 2 for storing write requests in a logging device for the SSD selected in FIG. 6 .
11 is a block diagram illustrating the I/O resynchronizer of FIG. 2 for processing write requests stored in the logging device of FIG. 10 .
12 is a block diagram illustrating the I/O resynchronizer of FIG. 2 that copies data to the SSD selected in FIG. 6 according to an embodiment of the present invention.
13 is a block diagram specifically illustrating the monitor of FIG. 1 .
14 is a conceptual diagram illustrating an exemplary data map of FIG. 13 stored in the monitor of FIG. 1 .
15A to 15B are flowcharts illustrating a procedure used by the storage node of FIG. 1 for performing garbage collection in the SSD of FIGS. 1 to 2 , according to an embodiment of the present invention.
16A to 16B are flowcharts illustrating a procedure used by the device garbage collection monitor of FIG. 2 for selecting an SSD for garbage collection, according to an embodiment of the present invention.
17 is a flowchart illustrating a procedure for the garbage collection coordinator of FIG. 2 to schedule garbage collection for the SSD selected in FIG. 6 .
18 is a flowchart illustrating a procedure for relocating read requests by the I/O relocation of FIG. 2 according to an embodiment of the present invention.
19 is a flowchart illustrating a procedure for the I/O resynchronizer of FIG. 2 to process logged write requests, according to an embodiment of the present invention.
20 and 21 are flowcharts illustrating a procedure for the monitor of FIG. 1 and the SSD selected in FIG. 6 to handle the time during which garbage collection is performed, according to embodiments of the present invention.
22A to 22B are flowcharts illustrating a procedure for the monitor of FIG. 1 to determine a start time and duration of garbage collection for the SSD selected in FIG. 6 , according to an embodiment of the present invention.
23 is a view showing a client sending an I/O request to the storage node of FIG. 1 , and then relocating the I/O request to another node including a copy of the requested data, according to an embodiment of the present invention. ) is a block diagram showing
24 is a block diagram specifically showing the cost analyzer of FIG. 23 .
25 is a block diagram specifically illustrating the I/O relocation of FIG. 23 .
26 is a block diagram specifically illustrating the local time estimator of FIG. 24 .
FIG. 27 is a block diagram specifically illustrating the remote time estimator of FIG. 24 .
28 and 29 are block diagrams illustrating the local garbage collection time calculator and the local expected garbage collection calculator of FIG. 26 for calculating a local garbage collection time and a local expected garbage collection time.
30 is a block diagram illustrating the queue processing time calculator of FIG. 26 for calculating a queue processing time.
FIG. 31 is a block diagram specifically showing the database of FIG. 24 .
32 is a block diagram specifically illustrating the local prediction analyzer of FIG. 24 .
33 is a block diagram specifically illustrating the local estimated required time calculator of FIG. 26 .
34 is a block diagram specifically showing the communication time calculator of FIG. 27 .
FIG. 35 is a block diagram specifically illustrating the remote processor time calculator of FIG. 27 .
FIG. 36 is a block diagram specifically illustrating the remote prediction analyzer of FIG. 24 .
37 is a block diagram specifically illustrating the remote estimated required time calculator of FIG. 27 .
38 is a block diagram specifically illustrating the I/O relocation of FIG. 25 .
39A to 39B are flowcharts illustrating a procedure for determining where the cost analyzer and I/O relocator of FIG. 23 determine where to send an I/O request, according to an embodiment of the present invention.
40 is a flowchart illustrating a procedure for calculating a local estimated required time by the local estimated required time calculator of FIG. 26 according to an embodiment of the present invention.
41A to 41B are procedures for calculating garbage collection times by the local garbage collection time calculator and local expected garbage collection time calculator of FIG. 26, and the remote garbage collection time calculator of FIG. 27, according to an embodiment of the present invention. is a flow chart showing
42 is a flowchart illustrating a procedure for calculating a queue processing time by the queue processing time calculator of FIG. 26 according to an embodiment of the present invention.
43 is a flowchart illustrating a procedure for estimating a required time required to process an I/O request according to an embodiment of the present invention.
44 is a flowchart illustrating a procedure for using linear regression analysis to determine the weights of FIGS. 26 and 27 , according to an embodiment of the present invention.
45 is a flowchart illustrating a procedure for calculating the remote estimated required time by the remote estimated required time calculator of FIG. 27 according to an embodiment of the present invention.
46 is a flowchart illustrating a procedure for the communication time calculator of FIG. 27 to determine the communication time with the secondary replica, according to an embodiment of the present invention.
47 is a flowchart illustrating a procedure for the remote processor time calculator of FIG. 27 to determine a remote processor time, according to an embodiment of the present invention.

본 발명의 기술적 사상의 실시 예들이 참조되며, 이들의 예들이 첨부된 도면들에 도시된다. 후술되는 상세한 설명에서, 다양한 특정한 상세들이 본 발명의 기술적 사상의 충분한 이해를 돕기 위하여 제공된다. 그러나 이 분야에 통상적인 기술을 가진 자들은 이러한 특정한 상세들 없이도 본 발명의 기술적 사상을 구현할 수 있다. 다른 예들로서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 측면들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않는다.Reference is made to embodiments of the technical idea of the present invention, examples of which are shown in the accompanying drawings. In the following detailed description, various specific details are provided in order to provide a sufficient understanding of the technical spirit of the present invention. However, those skilled in the art may implement the technical spirit of the present invention without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.

여기에서 제 1, 제 2 등과 같은 용어들이 다양한 원소들을 설명하기 위하여 사용되지만, 이러한 원소들은 이러한 용어들에 의해 한정되지 않는다. 이러한 용어들은 하나의 원소를 다른 하나의 원소와 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 기술적 사상의 범위로부터 멀어지지 않으면서 제 1 모듈은 제 2 모듈로 명명될 수 있다. 마찬가지로, 제 2 모듈은 제 1 모듈로 명명될 수 있다.Although terms such as first, second, etc. are used herein to describe various elements, these elements are not limited by these terms. These terms are only used to distinguish one element from another. For example, a first module may be referred to as a second module without departing from the scope of the inventive concept. Likewise, the second module may be referred to as the first module.

본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 발명의 기술적 사상의 설명 및 첨부된 청구항들에서 사용되는 바와 같이, 맥락에서 명확하게 명시되지 않으면 단수 표현들은 복수 표현들 또한 포함하는 것으로 의도된다. "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 항목들의 임의의 그리고 가능한 모든 조합들을 포함하는 것으로 참조된다. "포함한다" 그리고/또는 "포함하는"의 용어들은 상세한 설명에서 사용된 때에 언급된 특성들, 정수들, 단계들, 동작들, 원소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특성들, 정수들, 단계들, 동작들, 원소들, 구성 요소들, 그리고/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특성들은 실제 비율에 필수적으로 비례하지 않는다.Terms used in the description of the technical spirit of the present invention are used only for the purpose of describing specific embodiments, and are not intended to limit the technical spirit of the present invention. As used in the description of the present invention and in the appended claims, singular expressions are intended to include plural expressions as well unless the context clearly dictates otherwise. It is intended that the term “and/or” includes any and all possible combinations of one or more associated items. The terms “comprises” and/or “comprising,” when used in the specification, specify the presence of recited properties, integers, steps, operations, elements, and/or components, one or It does not exclude the presence or addition of many other properties, integers, steps, operations, elements, components, and/or groups thereof. Elements and characteristics in the drawings are not necessarily to scale.

도 1은 본 발명의 실시 예에 따른 분산 저장 시스템을 보여주는 블록도 이다. 도 1에서, 클라이언트들(105, 110, 및 115)은 네트워크(120)와 통신하는 것으로 표시된다. 클라이언트들(105, 110, 및 115)은 데스크탑 컴퓨터들, 노트북 컴퓨터들, 테블릿 컴퓨터들, 서버들, 스마트폰들 등을 포함하는 임의의 바람직한 유형들의 장치들일 수 있다. 또한, 도 1은 세 개의 클라이언트들(105, 110, 및 115)을 보여주지만, 본 발명의 실시 예들은 임의의 개수의 클라이언트들을 지원할 수 있다. 클럭 동기화는 네크워크 타임 프로토콜(Network Time Protocol) 등과 같은 서비스들을 사용하는 저장 시스템의 다양한 저장 노드들 전반에서 유지될 수 있다.1 is a block diagram illustrating a distributed storage system according to an embodiment of the present invention. In FIG. 1 , clients 105 , 110 , and 115 are shown in communication with a network 120 . Clients 105, 110, and 115 may be any desired types of devices, including desktop computers, notebook computers, tablet computers, servers, smartphones, and the like. Also, although Figure 1 shows three clients 105, 110, and 115, embodiments of the present invention may support any number of clients. Clock synchronization may be maintained across various storage nodes of the storage system using services such as Network Time Protocol and the like.

네트워크(120)는 근거리 통신망(Local Area Network; LAN), 광역망(Wide Area Network; WAN), 인터넷과 같은 글로벌 네트워크를 포함하는 임의의 다양한 네트워크 일 수 있다. 네트워크(120)는 여러 다양한 네트워크들의 조합도 포함할 수 있다. 예를 들어, 네트워크(120)는 통신을 보안하기 위해 가상사설망(Virtual Private Network; VPN)을 사용하는 글로벌 네트워크를 통해, 서로 통신할 수 있는 다수의 근거리 통신망들을 포함할 수 있다.The network 120 may be any of a variety of networks including a global network such as a local area network (LAN), a wide area network (WAN), and the Internet. Network 120 may also include a combination of several different networks. For example, the network 120 may include a plurality of local area networks capable of communicating with each other through a global network using a virtual private network (VPN) to secure communication.

저장 노드들(125, 130, 및 135) 또한 네트워크(120)에 연결되어 있다. 각각의 저장 노드(125, 130, 및 135)는 분산 네트워크를 위한 스토리지를 제공한다. 각각의 저장 노드(125, 130, 및 135)는, 저장 노드(125) 내의 플래쉬 드라이브(솔리드 스테이트 드라이브 또는 SSD로도 지칭됨)들(140, 145), 저장 노드(130) 내의 플래쉬 드라이브들(150, 155), 및 저장 노드(135) 내의 플래쉬 드라이브들(160, 165)과 같은 다양한 저장 장치들을 포함할 수 있다. 도 1이 세 개의 저장 노드들(125, 130, 및 135)을 보여주지만, 본 발명의 실시 예들은 임의의 개수의 저장 노드들을 지원할 수 있다. 또한, 도 1은 두 개의 플래쉬 드라이브들을 지원하는 각각의 저장 노드(125, 130, 및 135)를 보여주지만, 본 발명의 실시 예들은 각각의 저장 노드들(125, 130, 및 135)에서 임의의 개수의 플래쉬 드라이브 들을 지원할 수 있다. 저장 노드들(125, 130, 및 135)은, 조정된(coordinated) 가비지 컬렉션으로부터 이점을 얻거나 얻지 못하는 전통적인 하드 디스크 드라이브들과 같은 다른 유형들의 저장 장치들을 포함할 수도 있다. 예를 들어, 전통적인 하드 디스크 드라이브들은 흩어진 파일들의 부분들을 합치기 위한 조각 모음(defragmentation)을 때때로 필요로 한다. 조각 모음은 시간을 소비하는 동작일 수 있고, 또한 플래쉬 드라이브들에서의 가비지 컬렉션과 같은, 조정(coordination)으로부터 이점을 얻을 수 있다. 저장 노드들(125, 130, 및 135)은 네트워크 접속 기반 SSD(Network Attached SSD)들 및 이더넷 SSD(Ethernet SSD)들과 같은, SSD들의 변형들도 포함할 수 있다. 저장 노드들(125, 130, 및 135)은 이하 도 2 내지 도 3, 및 도 5 내지 도 12를 참조하여 더 설명된다.Storage nodes 125 , 130 , and 135 are also coupled to network 120 . Each storage node 125 , 130 , and 135 provides storage for the distributed network. Each storage node 125 , 130 , and 135 includes flash drives (also referred to as solid state drives or SSDs) 140 , 145 in storage node 125 , and flash drives 150 in storage node 130 . , 155 ), and various storage devices such as flash drives 160 , 165 in storage node 135 . Although FIG. 1 shows three storage nodes 125 , 130 , and 135 , embodiments of the present invention may support any number of storage nodes. Also, although FIG. 1 shows each storage node 125, 130, and 135 supporting two flash drives, embodiments of the present invention may It can support any number of flash drives. Storage nodes 125 , 130 , and 135 may include other types of storage devices, such as traditional hard disk drives that may or may not benefit from coordinated garbage collection. For example, traditional hard disk drives sometimes require defragmentation to merge parts of scattered files. Defragmentation can be a time consuming operation and can also benefit from coordination, such as garbage collection on flash drives. Storage nodes 125 , 130 , and 135 may also include variants of SSDs, such as network attached SSDs and Ethernet SSDs. Storage nodes 125 , 130 , and 135 are further described with reference to FIGS. 2-3 and 5-12 below.

모니터들(모니터 노드들이라고도 지칭됨)(170, 175, 및 180)도 네트워크(120)에 연결된다. 모니터들(170, 175, 및 180)은 클러스터(cluster) 구성을 추적하는 것 및 클러스터(cluster) 구성의 변화들의 실체들을 알리는 것을 책임지고 있다. 이러한 변화들의 예시들은 저장 노드들의 추가 또는 제거, 저장 노드들 상의 스토리지의 가용성의 변화들(플래쉬 드라이브의 추가 또는 제거와 같은) 등을 포함할 수 있다. 이 문맥에서의 “변화들”은 분산 저장 시스템을 바꾸기 위한 의도적인 동작에 국한되지 않음을 주의하라. 예를 들어, 네트워크 연결이 끊어진 경우, 저장 노드가 여전히 동작 중이고, 분산 시스템 나머지와 통신을 시도하는 중이라고 하더라도, 저장 노드(125)를 분산 저장 시스템으로부터 제거하고, 그 동작은 클러스터 구성을 모니터들(170, 175, 및 180)에 의해 처리되는 방식으로 변화시킨다. 모니터들(170, 175, 및 180)은 이하 도 4, 도 8, 및 도 13을 참조하여 더 설명 된다.Monitors (also referred to as monitor nodes) 170 , 175 , and 180 are also coupled to network 120 . Monitors 170 , 175 , and 180 are responsible for tracking cluster configuration and notifying entities of changes in cluster configuration. Examples of such changes may include addition or removal of storage nodes, changes in availability of storage on storage nodes (such as addition or removal of a flash drive), and the like. Note that "changes" in this context are not limited to intentional actions to change distributed storage systems. For example, if the network connection is lost, the storage node 125 is removed from the distributed storage system, even though the storage node is still up and trying to communicate with the rest of the distributed system, and its operation monitors the cluster configuration ( 170, 175, and 180). Monitors 170 , 175 , and 180 are further described with reference to FIGS. 4 , 8 , and 13 below.

이하 나머지의 설명은 SSD들에 초점을 맞추지만, 본 발명의 실시 예들은 SSD들과 유사한 방식으로 가비지 컬렉션을 수행하는 임의의 저장 장치들에 적용될 수 있다. 이하 SSD에 대한 임의의 참조는 가비지 컬렉션을 수행하는 다른 저장 장치들도 포함하도록 의도되기도 한다.Although the remainder of the description below focuses on SSDs, embodiments of the present invention may be applied to any storage devices that perform garbage collection in a manner similar to SSDs. Any reference to SSD below is also intended to include other storage devices that perform garbage collection as well.

도 2는 도 1의 저장 노드(125)를 구체적으로 보여주는 블록도 이다. 도 2에서, 저장 노드(125)는 구체적으로 표시된다. 저장 노드들(130, 135)은 도 2의 저장 노드(125)와 유사할 수 있다. 저장 노드(125)는 장치 가비지 컬렉션 모니터(205), 가비지 컬렉션 조정기(210), 입력/출력(I/O) 재배치기(215), I/O 재동기화기(220), 및 네 개의 플래쉬 드라이브들(140, 145, 225, 및 230)을 포함하는 것으로 표시되어 있다. 장치 가비지 컬렉션 모니터(205)는 어떤 플래쉬 드라이브들이 가비지 컬랙션을 수행해야 하는지 결정할 수 있고, 또한 플래쉬 드라이브가 가비지 컬렉션을 수행하는데 걸리는 시간을 추정할 수 있다. 가비지 컬렉션 조정기(210)는, 선택된 플래쉬 드라이브를 위한 가비지 컬렉션을 스케줄 하기 위해 도 1의 하나 이상의 모니터들(170, 175, 및 180)과 통신할 수 있고, 또한 선택된 플래쉬 드라이브에 언제 가비지 컬렉션을 수행하고 얼마나 오래 가비지 컬렉션을 가지는지를 지시할 수 있다. I/O 재배치기(215)는, 플래쉬 드라이브가 가비지 컬렉션을 수행하는 동안 선택된 플래쉬 드라이버로 지정된 읽기 및 쓰기 요청들을 재배치 할 수 있다. 또한, I/O 재동기화기(220)는, 가비지 컬렉션이 완료된 후에 데이터 변화들과 관련하여 플래쉬 드라이브를 최신으로 가져올 수 있다.FIG. 2 is a block diagram specifically illustrating the storage node 125 of FIG. 1 . In Fig. 2, the storage node 125 is specifically indicated. Storage nodes 130 , 135 may be similar to storage node 125 of FIG. 2 . The storage node 125 includes a device garbage collection monitor 205 , a garbage collection coordinator 210 , an input/output (I/O) relocator 215 , an I/O resynchronizer 220 , and four flash drives. (140, 145, 225, and 230). The device garbage collection monitor 205 may determine which flash drives should perform garbage collection, and may estimate the time it takes for the flash drives to perform garbage collection. The garbage collection coordinator 210 may communicate with one or more monitors 170 , 175 , and 180 of FIG. 1 to schedule garbage collection for the selected flash drive, and also when to perform garbage collection on the selected flash drive. and how long it will hold garbage collection. The I/O relocation 215 may relocate read and write requests directed to the selected flash driver while the flash drive performs garbage collection. Also, the I/O resynchronizer 220 may bring the flash drive up to date with respect to data changes after garbage collection is complete.

도 3은 도 1 내지 도 2의 저장 노드(125)를 구체적으로 보여주는 블록도 이다. 도 3에서, 일반적으로, 저장 노드(125)는, 저장 노드(125)의 구성요소들의 동작들을 조정하는데 사용될 수 있는, 메모리 컨트롤러(310) 및 클럭(315)를 포함하는, 하나 이상의 프로세서들(305)을 포함할 수 있다. 프로세서들(305)은, 예시들로서, 램 메모리(random access memory; RAM), 롬 메모리(read-only memory; ROM), 또는 다른 상태 보존 매체를 포함할 수 있는, 메모리(320)와 연결될 수 있다. 프로세서들(305)은 저장 장치들(140 및 145), 및 예를 들어 이더넷 커넥터(Ethernet connector)일 수 있는, 네트워크 커넥터(325)와도 연결될 수 있다. 프로세서들(305)은 버스(330)와도 연결될 수 있고, 버스(330)는 다른 구성요소들 사이에서, 입력/출력 엔진(340)을 사용하여 관리될 수 있는 사용자 인터페이스(335) 및 입력/출력 인터페이스 포트들에 부착될 수 있다. 저장 노드의 다른 표시는 도 3에 표시된 것과 같이, 단일 패키지 또는 ASIC에 집적되고, 도 1의 네트워크(120)에 직접 연결된 모든 별개의 구성요소들일 수 있다. 3 is a block diagram specifically illustrating the storage node 125 of FIGS. 1 to 2 . 3 , generally, storage node 125 includes one or more processors, including memory controller 310 and clock 315 , which may be used to coordinate operations of components of storage node 125 . 305) may be included. Processors 305 may be coupled with memory 320 , which may include, as examples, random access memory (RAM), read-only memory (ROM), or other stateful medium. . Processors 305 may also be coupled to storage devices 140 and 145 , and a network connector 325 , which may be, for example, an Ethernet connector. Processors 305 may also be coupled to a bus 330 , which, among other components, includes a user interface 335 and input/output that may be managed using an input/output engine 340 . may be attached to the interface ports. Another representation of a storage node could be a single package or ASIC, as shown in FIG. 3 , and all discrete components that are directly connected to the network 120 of FIG. 1 .

도 4는 도 1의 분산 저장 시스템이 사용 중에 솔리드 스테이트 드라이브(SSD)가 있을 수 있는 단계들을 보여주는 흐름도 이다. 도 4에서, SSD들은 구성 단계(405)에서 시작 한다. 구성 단계(405)에서, SSD들은 오직 도 1 내지 도 2의 저장 노드로부터의 명령에 의한 가비지 컬렉션을 수행하기 위해 구성될 수 있다. 점선으로 표시된 바와 같이, 구성 단계(405)는 선택적이다. 어떤 SSD들은 구성을 지원하지 않거나, SSD들이 구성될 수 있음에도, 분산 저장 시스템은 SSD들을 구성하지 않기로 선택할 수 있다. 그 뒤 정상 단계(410)에서, SSD들은 전달된 읽기 및 쓰기 요청들에 응답하여, 정상적으로 동작한다.FIG. 4 is a flow chart showing the steps in which the distributed storage system of FIG. 1 may have a solid state drive (SSD) in use; In FIG. 4 , SSDs start at configuration step 405 . In the configuration step 405 , the SSDs may be configured to perform garbage collection by command only from the storage node of FIGS. 1-2 . As indicated by the dashed line, the configuration step 405 is optional. Some SSDs do not support configuration, or even though SSDs may be configured, a distributed storage system may choose not to configure SSDs. Then, in a normal step 410 , the SSDs operate normally in response to the forwarded read and write requests.

SSD가 가비지 컬렉션을 수행할 필요가 있을 때, SSD는 준비 단계(415)에 진입할 수 있다. 준비 단계(415)는, SSD가 언제 가비지 컬렉션을 수행할지 및 SSD가 가비지 컬렉션을 수행하기 위해 얼마나 많은 시간을 가져야 할지를 결정하는 것을 포함할 수 있다. 준비 단계(415)에서, SSD는 여전히 읽기 및 쓰기 요청들을 정상적으로 처리할 수 있다는 것을 주의하라. 그 뒤, 적절한 시간에, SSD는 표시 단계(420)로 진입할 수 있다. 표시 단계(420)에서, 도 1의 모니터들(170, 175, 및 180)은 SSD를 가비지 컬렉션을 수행하는 것으로 표시할 수 있고, 따라서 SSD는 사용할 수 없을 수 있다. SSD는 그 뒤 가비지 컬렉션 단계(425)에 진입할 수 있고, 여기서 SSD는 가비지 컬렉션을 수행할 수 있다.When the SSD needs to perform garbage collection, the SSD may enter a preparation phase 415 . The preparation step 415 may include determining when the SSD will perform garbage collection and how much time the SSD should have to perform garbage collection. Note that in the preparation phase 415 , the SSD can still process read and write requests normally. Thereafter, at an appropriate time, the SSD may enter the display step 420 . At mark step 420 , monitors 170 , 175 , and 180 of FIG. 1 may mark the SSD as performing garbage collection, and thus the SSD may be unavailable. The SSD may then enter a garbage collection phase 425 , where the SSD may perform a garbage collection.

SSD가 가비지 컬렉션을 완료할 때, 또는 가비지 컬렉션을 위해 할당된 시간이 만료된 때, SSD는 재동기 단계(430)에 진입할 수 있다. 재동기 단계(430)에서, SSD는 SSD에 영향을 주는 데이터 변화들과 관련하여 업데이트 될 수 있다. 재동기 단계(430)가 완료된 이후, SSD는 표시 제거 단계(435)에 진입할 수 있고, 여기서 도 1의 모니터들(170, 175, 및 180)은 다시 SSD를 사용 가능하다고 표시할 수 있다(즉, 표시 단계(420)에서의 동작들을 반전 시킴). 마지막으로, SSD는 정상 단계(410)로 돌아가고, 읽기 및 쓰기 요청들을 정상적으로 처리할 수 있다.When the SSD completes garbage collection, or when the time allotted for garbage collection has expired, the SSD may enter the resynchronization phase 430 . In the resynchronization step 430 , the SSD may be updated with respect to data changes affecting the SSD. After the resynchronization step 430 is complete, the SSD may enter an indication removal step 435 , where the monitors 170 , 175 , and 180 of FIG. 1 may again indicate the SSD as available ( That is, the operations in the display step 420 are reversed). Finally, the SSD returns to the normal step 410 and may normally process read and write requests.

도 5는 도 1 내지 도 2의 SSD들로부터 프리 삭제(소거) 블록 카운트(free erase block count)들을 수신하는 도 2의 장치 가비지 컬렉션 모니터를 보여주는 블록도 이다. 도 5에서, 장치 가비지 컬렉션 모니터(205)는 도 1의 저장 노드(125)의 플래쉬 드라이브들(140, 145, 225, 및 230)과 상호작용하는 것으로 표시된다. 일반적으로, 장치 가비지 컬렉션 모니터(205)는 장치 가비지 컬렉션 모니터(205)를 포함하는 저장 노드 상의 저장 장치들과만 상호작용한다. 하지만, 본 발명의 실시 예들은 다른 저장 노드들의 저장 장치들과 상호작용하는 장치 가비지 컬렉션 모니터(205)를 가질 수 있다.FIG. 5 is a block diagram illustrating the device garbage collection monitor of FIG. 2 receiving free erase (erase) block counts from the SSDs of FIGS. 1-2; In FIG. 5 , the device garbage collection monitor 205 is shown interacting with the flash drives 140 , 145 , 225 , and 230 of the storage node 125 of FIG. 1 . In general, the device garbage collection monitor 205 only interacts with storage devices on the storage node that contains the device garbage collection monitor 205 . However, embodiments of the present invention may have a device garbage collection monitor 205 that interacts with the storage devices of other storage nodes.

장치 가비지 컬렉션 모니터(205)는 플래시 드라이브들(140, 145, 225, 230)로부터 프리 삭제 블록 카운트들(FEB; 505, 510, 515, 및 520)을 각각 주기적으로 수신할 수 있다. 프리 삭제 블록 카운트들(505, 510, 515, 및 520)은 각각의 플래시 드라이브들(140, 145, 225, 및 230)의 현재 비어있는 블록들(또는 슈퍼 블록들)의 비율 또는 개수를 나타낼 수 있다. SSD의 사용 가능한 블록들의 총 개수와 관련하여, 프리 삭제 블록 카운트는 SSD가 얼마나 차있는지에 대한 좋은 지표가 될 수 있다. 프리 삭제 블록 카운트가 감소함에 따라, SSD는 채워지는 중이고, 가비지 컬렉션은 프리 삭제 블록들의 개수를 증가시키기 위해 필요해질 수 있다. Device garbage collection monitor 205 may periodically receive free erase block counts (FEBs) 505 , 510 , 515 , and 520 from flash drives 140 , 145 , 225 , 230 , respectively. The pre-erase block counts 505 , 510 , 515 , and 520 may indicate the percentage or number of currently empty blocks (or super blocks) of the flash drives 140 , 145 , 225 , and 230 respectively. have. Regarding the total number of usable blocks of the SSD, the pre-erase block count can be a good indicator of how full the SSD is. As the pre-erase block count decreases, the SSD is filling up, and garbage collection may be needed to increase the number of pre-erase blocks.

본 발명의 몇몇 실시 예들에서, 플래시 드라이브들(140, 145, 225, 및 230)은 프리 삭제 블록 카운트들(505, 510, 515, 및 520)을 장치 가비지 컬렉션 모니터(205)로 자동 전송한다. 본 발명의 다른 실시 예들에서, 장치 가비지 컬렉션 모니터(205)는 플래시 드라이브들(140, 145, 225, 및 230)에게 언제 플래시 드라이브들(140, 145, 225, 및 230)이 그들의 프리 삭제 블록 카운트들(505, 510, 515, 및 520)을 알고 싶어 하는지를 문의할 수 있다. 이러한 문의 들은 폴(poll)들(525 530, 535, 및 540)로 각각 표시된다. 본 발명의 모든 실시 예들이, 플래시 드라이브들(140, 150, 225, 및 230)에서 프리 삭제 블록 카운트들(505, 510, 515, 및 520)의 정보를 얻는 장치 가비지 컬렉션 모니터(205)를 가지는 것은 아니기 때문에, 폴들(525, 530, 535, 및 540)은 점선으로 표시된다.In some embodiments of the present invention, flash drives 140 , 145 , 225 , and 230 automatically send pre-erase block counts 505 , 510 , 515 , and 520 to device garbage collection monitor 205 . In other embodiments of the present invention, device garbage collection monitor 205 informs flash drives 140, 145, 225, and 230 when flash drives 140, 145, 225, and 230 have their pre-erase block count. You can ask if you would like to know the fields 505 , 510 , 515 , and 520 . These queries are indicated by polls 525 530 , 535 , and 540 respectively. All embodiments of the present invention have a device garbage collection monitor 205 that obtains information of pre-erase block counts 505, 510, 515, and 520 in flash drives 140, 150, 225, and 230. poles 525 , 530 , 535 , and 540 are indicated by dashed lines.

플래시 드라이브들(140, 145, 225, 및 230)은 단지 프리 삭제 블록 카운트들(505, 510, 515, 및 520) 이상을 장치 가비지 컬렉션 모니터(205)로 돌려줄 수 있다. 예를 들어, 플래시 드라이브들(140, 145, 225, 및 230)은 장치 가비지 컬렉션 모니터에 정적 웨어 레벨링(static wear leveling)을 수행할 필요가 있음을 나타낼 수 있다. 간단히 말해서, SSD 내의 데이터 셀들은 데이터 셀들이 실패를(오동작을) 시작하기 전에 아주 많은 쓰기 및 삭제 동작들을 수행할 수 있다. SSD의 제조자는 데이터 셀들에서 평균적으로 얼마나 많은 쓰기 및 삭제 동작들이 발생할 수 있는지 안다. SSD들은 모든 데이터 셀들 전반에서 쓰기 및 삭제 동작들의 수를 상당히 균등하게 유지하려고 하기 위해 정적 웨어 레벨링을 사용할 수 있고, 바람직하게는 작은 수의 데이터 셀들을 과도하게 사용함으로 인한 SSD의 초기 오류를 피할 수 있도록 할 수 있다. Flash drives 140 , 145 , 225 , and 230 may return more than just pre-erase block counts 505 , 510 , 515 , and 520 to the device garbage collection monitor 205 . For example, flash drives 140 , 145 , 225 , and 230 may indicate to the device garbage collection monitor that it needs to perform static wear leveling. Simply put, data cells in an SSD can perform a lot of write and erase operations before the data cells start failing (misbehaving). The manufacturer of an SSD knows how many write and erase operations can occur on average in data cells. SSDs may use static wear leveling to try to keep the number of write and erase operations fairly evenly across all data cells, preferably avoiding initial errors of the SSD due to overusing a small number of data cells. can make it

도 6은 도 1 내지 도 2의 SSD들로부터 수신되는 도 5의 프리 삭제 블록 카운트들(505, 510, 515, 및 520)에 기초하여 가비지 컬렉션을 위한 SSD를 선택하는 도 2의 장치 가비지 컬렉션 모니터(205)를 보여주는 블록도 이다. 도 6에서, 장치 가비지 컬렉션 모니터(205)는 프리 삭제 블록 카운트들(505, 510, 505, 및 520)을 프리 삭제 블록 문턱 값(610)과 비교하기 위해 비교기(605)를 사용할 수 있다. 프리 삭제 블록 카운트들(505, 510, 505, 및 520) 중 어느 하나가 프리 삭제 블록 문턱 값(610) 보다 작은 경우, 그 뒤 그러한 프리 삭제 블록 카운트를 제공하는 SSD는 가비지 컬렉션을 위한 선택된 SSD(615)가 될 수 있다.6 is a device garbage collection monitor of FIG. 2 that selects an SSD for garbage collection based on pre-erase block counts 505 , 510 , 515 , and 520 of FIG. 5 received from the SSDs of FIGS. 1 and 2 . It is a block diagram showing (205). 6 , device garbage collection monitor 205 may use comparator 605 to compare pre-erase block counts 505 , 510 , 505 , and 520 with pre-erase block threshold 610 . If any one of the pre-erase block counts 505, 510, 505, and 520 is less than the pre-erase block threshold 610, then the SSD providing that pre-erase block count is the selected SSD for garbage collection ( 615) can be

도 6은 단일의 프리 삭제 블록 문턱 값(610)을 보여주지만, 본 발명의 실시 예들은 다수의 프리 삭제 블록 문턱 값(610)들을 지원할 수 있다. 즉, 문제의 플래시 드라이브에 따라, 비교기(605)는 프리 삭제 블록 카운트들(505, 510, 505, 및 520)을 상이한 프리 삭제 블록 문턱 값(610)들과 비교할 수 있다. 이러한 방식으로, 본 발명의 실시 예들은 상이한 블록 크기들 및 카운트들을 가질 수 있는 SSD들을 인식할 수 있고, 그러므로 플래시 드라이브가 얼마나 차있는지를 나타내는 상이한 문턱 값들을 가질 수 있다.6 shows a single pre-erase block threshold 610 , embodiments of the present invention may support multiple pre-erase block thresholds 610 . That is, depending on the flash drive in question, the comparator 605 may compare the pre-erase block counts 505 , 510 , 505 , and 520 with different pre-erase block thresholds 610 . In this way, embodiments of the present invention may recognize SSDs that may have different block sizes and counts, and thus may have different thresholds indicating how full the flash drive is.

본 발명의 몇몇 실시 예들에서, 프리 삭제 블록 문턱 값(610)은 고정 된 값일 수 있다. 예를 들어, 512 GB의 총 용량 및 2048 KB의 블록 크기를 갖는 SSD를 고려해 보자. 이러한 SSD는 250,000개의 블록들을 가진다. 이러한 SSD는 50,000으로 설정된 프리 삭제 블록 문턱 값(610)을 가질 수 있다. 반면, 256 GB의 총 용량 및 512 KB의 블록 크기를 갖는 SSD는 500,000개의 블록들을 가질 것이고, 100,000으로 설정된 프리 삭제 블록 문턱 값(610)을 가질 수 있다.In some embodiments of the present invention, the pre-erase block threshold 610 may be a fixed value. For example, consider an SSD with a total capacity of 512 GB and a block size of 2048 KB. This SSD has 250,000 blocks. Such an SSD may have a pre-erase block threshold 610 set to 50,000. On the other hand, an SSD with a total capacity of 256 GB and a block size of 512 KB will have 500,000 blocks and may have a pre-erase block threshold 610 set to 100,000.

본 발명의 다른 실시 예들에서, 프리 삭제 블록 문턱 값(610)은 20%와 같은 백분율일 수 있다. 즉, SSD가 총 블록 개수들의 20% 이하인 프리 삭제 블록 카운트를 가질 때, 그 SSD는 가비지 컬렉션을 수행할 필요가 있다. 프리 삭제 블록 문턱 값(610)을 20%(고정된 값이 아님)로 설정하는 것은, 고정된 개수의 블록들을 사용할 때 상이한 프리 삭제 블록 문턱 값들을 필요로 하는, 위에서 설명된 두 개의 예시적인 SSD들을 모두 포함할 수 있다는 것을 주의하라.In other embodiments of the present invention, the pre-erase block threshold 610 may be a percentage, such as 20%. That is, when the SSD has a pre-erase block count that is less than or equal to 20% of the total number of blocks, the SSD needs to perform garbage collection. Setting the pre-erase block threshold 610 to 20% (not a fixed value) is the two example SSDs described above, requiring different pre-erase block thresholds when using a fixed number of blocks. Note that it can contain all of them.

도 7은 도 6의 선택된 SSD(615) 상에서 가비지 컬렉션을 수행하는데 요구되는 시간을 추정하는 도 2의 장치 가비지 컬렉션 모니터(205)를 보여주는 블록도 이다. 도 7에서, 장치 가비지 컬렉션 모니터(205)는 시간 추정기(705)를 포함할 수 있다. 시간 추정기(705)는 도 6의 선택된 SSD(615)에서 가비지 컬렉션을 수행하기 위한 소요 시간을 추정할 수 있다.FIG. 7 is a block diagram illustrating the device garbage collection monitor 205 of FIG. 2 for estimating the time required to perform garbage collection on the selected SSD 615 of FIG. 6 . In FIG. 7 , the device garbage collection monitor 205 may include a time estimator 705 . The time estimator 705 may estimate a time required to perform garbage collection in the selected SSD 615 of FIG. 6 .

시간 추정기(705)는 도 6의 선택된 SSD(615)에서 가비지 컬렉션을 수행하기 위한 소요 시간을 추정하기 위해 다양한 데이터를 사용할 수 있다. 이 데이터는 삭제 사이클 시간(710)(도 6의 선택된 SSD(615)의 블록을 삭제하는데 필요로 되는 시간), 선행 소요 시간(715)(가비지 컬렉션을 수행했던 도 6의 이전 시간에 선택된 SSD(615)에서 가비지 컬렉션을 수행하기 위해, 선택된 SSD(615)에 의해 필요로 되는 시간), 및 SSD 용량(720)(도 6의 선택된 SSD(615)의 총 용량)을 포함할 수 있다. 삭제될 블록들의 개수가 알려진 경우, 시간 추정기(705)는 도 6의 선택된 SSD(615)에서 삭제될 블록들의 개수도 사용할 수 있다. 이러한 데이터는 도 6의 선택된 SSD(615)가 얼마나 오래 가비지 컬렉션을 수행하는지에 대해 적절한(완벽하지 않다면) 추정치를 제공한다.The time estimator 705 may use various data to estimate a time required to perform garbage collection in the selected SSD 615 of FIG. 6 . This data includes the erase cycle time 710 (the time required to erase a block of the selected SSD 615 in FIG. 6), the preceding time required 715 (the SSD selected at the previous time in FIG. 6 that performed garbage collection). time required by the selected SSD 615 to perform garbage collection at 615 ), and the SSD capacity 720 (total capacity of the selected SSD 615 in FIG. 6 ). If the number of blocks to be erased is known, the time estimator 705 may also use the number of blocks to be erased in the selected SSD 615 of FIG. 6 . This data provides a reasonable (if not perfect) estimate of how long the selected SSD 615 of FIG. 6 will perform garbage collection.

도 8은 도 6에서 선택된 SSD(615)에서 가비지 컬렉션을 스케줄하고 수행하기 위해 도 1의 모니터(170)와 상호작용하는 도 2의 가비지 컬렉션 조정기(210)를 보여주는 블록도 이다. 도 8에서, 가비지 컬렉션 조정기(210)는 도 6의 선택된 SSD(615)의 식별자(805)를, 도 6의 선택된 SSD(615) 상에서 가비지 컬렉션을 수행하기 위해 필요로 되는 추정 시간(725)과 함께, 모니터(170)로 전송할 수 있다. 가비지 컬렉션 조정기(210)는, 가비지 컬렉션 조정기(210)에 의해 선택될 수 있는, 스케줄된 시작 시간(810)을 모니터(170)에 전송할 수 있다. 그 뒤, 모니터(170)는 도 6의 선택된 SSD(615)에서의 가비지 컬렉션을 알기 위해 이 정보를 사용할 수 있다. 이러한 정보의 교환은 교환(815)으로 표시된다.8 is a block diagram illustrating the garbage collection coordinator 210 of FIG. 2 interacting with the monitor 170 of FIG. 1 to schedule and perform garbage collection on the SSD 615 selected in FIG. 6 . In FIG. 8 , the garbage collection coordinator 210 determines the identifier 805 of the selected SSD 615 of FIG. 6 with an estimated time 725 required to perform garbage collection on the selected SSD 615 of FIG. 6 and Together, it can be transmitted to the monitor 170 . The garbage collection coordinator 210 may send to the monitor 170 a scheduled start time 810 , which may be selected by the garbage collection coordinator 210 . The monitor 170 may then use this information to learn about garbage collection on the selected SSD 615 of FIG. 6 . This exchange of information is denoted exchange 815 .

모니터(170)가 동작할 수 있는 방법에 대한 상이한 모델들이 있다. 응답(승인) 있는 가비지 컬렉션(GC with Acknowledgment)이라고 불리는, 하나의 모델에서, 모니터(170)(분산 저장 시스템의 다른 모니터들과 조정될 수 있음)는 언제 각각의 SSD가 가비지 컬렉션을 수행하고, 얼마나 오래 SSD가 가비지 컬렉션에 시간을 소비하는지를 결정할 수 있다. 이 모델에서, 모니터(170)가 가비지 컬렉션 조정기(210)에게 언제 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행할 수 있는지 및 얼마나 오래 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행해야 하는지에 관하여 알리기 전까지, 가비지 컬렉션 조정기(210)는 선택된 SSD(615)에게 가비지 컬렉션을 시작하라고 지시하지 않는다. 즉, 모니터(170)가 가비지 컬렉션 조정기(210)에게 가비지 컬렉션을 언제 수행하는지에 관하여 알리기 전까지, 도 6의 선택된 SSD(615)은 도 4의 정상 단계(410)에 남아 있는다.There are different models of how monitor 170 may operate. In one model, called GC with Acknowledgment, monitor 170 (which can be coordinated with other monitors in the distributed storage system) determines when each SSD performs garbage collection, and how much. You can determine how long an SSD spends time on garbage collection. In this model, monitor 170 tells garbage collection coordinator 210 when the selected SSD 615 of FIG. 6 can perform garbage collection and how long the selected SSD 615 of FIG. 6 should perform garbage collection. The garbage collection coordinator 210 does not instruct the selected SSD 615 to start garbage collection until it is informed as to whether to do so. That is, the selected SSD 615 of FIG. 6 remains in the normal stage 410 of FIG. 4 until the monitor 170 notifies the garbage collection coordinator 210 about when to perform garbage collection.

응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 가비지 컬렉션 조정기(210)에 의해 선택된 스케줄된 시작 시간(810), 및 추정 시간(725)은 바인딩(구속) 되지 않는다. 모니터(170)에 의해 지정된 스케줄된 시작 시간(810) 및 지속 시간(820)만이 사용 된다. 가비지 컬렉션 조정기(210)에 의해 전송된 정보는 단지 모니터(170)에 대한 제안일 뿐이다.In embodiments of the present invention using responsive garbage collection, the scheduled start time 810 and the estimated time 725 selected by the garbage collection coordinator 210 are not bound (bound). Only the scheduled start time 810 and duration 820 specified by the monitor 170 are used. The information sent by the garbage collection coordinator 210 is merely a suggestion to the monitor 170 .

응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 모니터(170)(분산 저장 시스템의 다른 모니터들과 조정 가능)는, 도 1의 클라이언트들(105, 110, 및 115)에서의 가비지 컬렉션의 영향을 최소화 하기 위해 가비지 컬렉션을 필요로 하는 각각의 SSD를 스케줄 할 수 있다. 예를 들어, 두 개의 상이한 SSD들이 각각 가비지 컬렉션을 수행하고자 할 경우, 모니터(170)는 우선적으로 어떤 SSD가 먼저 가비지 컬렉션을 수행할 수 있는지 우선 순위를 정하고, 다른 SSD는 기다리게 한다. 이러한 방식으로, 어느 시간이든 오직 하나의 SSD만이 가비지 컬렉션을 수행함으로써, 데이터 요청이 어느 SSD에 의해 제공되지 않을 수 있는 가능성이 줄어든다.In embodiments of the invention that use responsive garbage collection, monitor 170 (which is coordinating with other monitors in the distributed storage system) may To minimize the impact, you can schedule each SSD that needs garbage collection. For example, when two different SSDs each want to perform garbage collection, the monitor 170 prioritizes which SSD can perform garbage collection first, and causes the other SSD to wait. In this way, only one SSD performs garbage collection at any time, reducing the likelihood that a data request may not be served by either SSD.

본 발명의 다른 실시 예들에서, 모니터(170)는 응답 없는 가비지 컬렉션이라고 불리는 모델에서 동작할 수 있다. 이 모델에서, 모니터(170)는 SSD들이 언제 가비지 컬렉션을 수행하는지 추적할 수 있으나, 모니터(170)는 가비지 컬렉션 조정기(210) 의해 선택된 스케줄된 시작 시간(810) 및 추정 시간(725)에 응답하거나, 가비지 컬렉션 조정기(210) 의해 선택된 스케줄된 시작 시간(810) 및 추정 시간(725)을 바꾸지 않는다. 응답 없는 가비지 컬렉션을 사용하는 실시 예들에서, 다수의 SSD들은 동시에 가비지 컬렉션을 수행할 수 있다. 하지만, 분산 저장 시스템에서의 데이터의 중복 수준이 충분한 경우, SSD가 가비지 컬렉션을 완료하기 전까지 데이터 요청이 지연될 가능성은 미미하다. 예를 들어, 분산 저장 시스템이 각각의 단위 데이터의 세 개의 복사본들을 포함하는 경우, 도 1의 클라이언트(105)에 의해 요청될 때 세 개의 모든 복사본들이 사용 불가능한 가능성은 수용 가능할 만큼 충분히 작을 수 있다.In other embodiments of the invention, monitor 170 may operate on a model called unresponsive garbage collection. In this model, monitor 170 can track when SSDs perform garbage collection, but monitor 170 responds to scheduled start time 810 and estimated time 725 selected by garbage collection coordinator 210 . Otherwise, the scheduled start time 810 and the estimated time 725 selected by the garbage collection coordinator 210 are not changed. In embodiments using non-responsive garbage collection, a plurality of SSDs may concurrently perform garbage collection. However, if the data redundancy level in the distributed storage system is sufficient, the possibility that data requests will be delayed until the SSD completes garbage collection is minimal. For example, if the distributed storage system includes three copies of each unit of data, the probability that all three copies will be unavailable when requested by the client 105 of FIG. 1 may be small enough to be acceptable.

각각의 단위 데이터의 복사본들의 개수 및 임의의 시간에 사용 가능한 복사본들이 없을 가능성 사이에는 수학적 관계가 있다(예를 들어 SSD에서 얼마나 자주 가비지 컬렉션이 발생하는지 또는 얼마나 오래 가비지 컬렉션이 소요 되는지와 같은 다른 다양한 변수들과 함께). 원하는 신뢰도가 주어지면(즉, 각각의 단위 데이터의 적어도 하나의 복사본이 임의의 시간에 사용 가능하면), 각각의 단위 데이터의 복사본들의 개수는, 그 원하는 신뢰도를 제공하기 위해 계산될 수 있다.There is a mathematical relationship between the number of copies of each unit of data and the likelihood that no copies are available at any time (for example, how often garbage collection occurs on an SSD or how long it takes to be garbage collected). with variables). Given a desired reliability (ie, if at least one copy of each unit data is available at any time), the number of copies of each unit data may be calculated to provide that desired reliability.

응답 있는 가비지 컬렉션이 사용되는지 또는 응답 없는 가비지 컬렉션이 사용되는지 여부와는 관계없이, 결국 가비지 컬렉션 조정기(210)는, 가비지 컬렉션 시작 메시지(825)에 의해 표시되는 바와 같이, 가비지 컬렉션이 플래시 드라이브(140) 상에서 시작되는 중이라고 모니터(170)에게 알릴 수 있다. 가비지 컬렉션 조정기(210)는 가비지 컬렉션 시작 지시(830)에 의해 표시된 바와 같이, 플래시 드라이브(140)에게 가비지 컬렉션을 시작하라고 지시할 수도 있다. 결국, 지속 시간(820)이 지난 이후, 가비지 컬렉션 조정기(210)는, 가비지 컬렉션 종료 지시(835)에 의해 표시된 바와 같이, 플래시 드라이브(140)에게 가비지 컬렉션을 종료하라고 지시할 수 있다. 최종적으로, 가비지 컬렉션 조정기(210)는, 가비지 컬렉션 완료 메시지(840)에 의해 표시된 바와 같이, 모니터(170)에게 가비지 컬렉션이 플래시 드라이브(140) 상에서 완료되었다고 알릴 수 있다.Irrespective of whether responsive or non-responsive garbage collection is used, the garbage collection coordinator 210 eventually determines that garbage collection is may inform monitor 170 that it is starting on 140 . The garbage collection coordinator 210 may instruct the flash drive 140 to begin garbage collection, as indicated by the garbage collection start instruction 830 . Eventually, after the duration 820 has elapsed, the garbage collection coordinator 210 may instruct the flash drive 140 to end garbage collection, as indicated by the garbage collection end instruction 835 . Finally, garbage collection coordinator 210 may inform monitor 170 that garbage collection has completed on flash drive 140 , as indicated by garbage collection complete message 840 .

본 발명의 실시 예들은 도 8의 모든 메시지들을 필요로 하지 않는다는 것을 주의하라. 위에서 설명된 바와 같이, 응답 없는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 모니터(170)는 가비지 컬렉션 조정기(210)에게 어떠한 응답도 전송하지 않는다. 또한, 모니터(170)가 가지비 컬렉션이 언제 시작되고 종료되도록 스케줄된지 알기 때문에, 가비지 컬렉션 조정기(210)는 메시지들(825 및 840)을 모니터(170)에 보내는 것을 생략할 수 있다. 또한, 지시(835)는 플래시 드라이브(140)가 가비지 컬렉션이 중단되는 것을 허용할 때만 유용하다. 가비지 컬렉션이 플래시 드라이브(140)에서 중단되지 않는다면, 그 뒤 플래시 드라이브(140)는 지시(835)를 처리하지 않을 것이다. 하지만, 플래시 드라이브(140)가 가비지 컬렉션이 중단되는 것을 지시(835)를 통해 허용하지 않는다면, 모니터(170)에게 플래시 드라이브(140)가 언제 가비지 컬렉션을 완료했는지를 알리기 위해, 이후 메시지(840)가 필요할 수 있다. 예를 들어, 플래시 드라이브(140)가 가비지 컬렉션이 중단되도록 허용하지 않지만, 지속 시간(820)은 플래시 드라이브(140)에서 가비지 컬렉션이 수행되기 위한 소요 시간보다 짧은 시나리오를 고려해 보자. 지속 시간(820)이 지난 뒤 모니터(170)가, 플래시 드라이브(140)가 가비지 컬렉션을 완료한 것으로 가정하는 경우, 모니터(170)는 플래시 메모리(140)가 사용 가능하지 않을 때 플래시 드라이브(140)가 사용 가능한 것으로 생각할 수 있고, 이는 다수의 SSD들이 가비지 컬렉션을 동시에 수행하는 동안 데이터 요청들이 지연되는 결과를 낳을 수 있다.Note that embodiments of the present invention do not require all the messages of FIG. 8 . As described above, in embodiments of the present invention using no-response garbage collection, monitor 170 does not send any response to garbage collection coordinator 210 . Also, since the monitor 170 knows when garbage collection is scheduled to start and end, the garbage collection coordinator 210 may skip sending messages 825 and 840 to the monitor 170 . Also, instruction 835 is useful only when flash drive 140 allows garbage collection to abort. If garbage collection is not aborted on flash drive 140 , then flash drive 140 will not process instruction 835 . However, if flash drive 140 does not allow, via instruction 835 , to stop garbage collection, then message 840 to inform monitor 170 when flash drive 140 has completed garbage collection. may be needed For example, consider a scenario where flash drive 140 does not allow garbage collection to be interrupted, but duration 820 is shorter than the time it takes for garbage collection to be performed on flash drive 140 . If, after the duration 820 has passed, the monitor 170 assumes that the flash drive 140 has completed garbage collection, the monitor 170 displays the flash drive 140 when the flash memory 140 is not available. ) is available, which may result in data requests being delayed while multiple SSDs are performing garbage collection at the same time.

도 9a 내지 도 9b는, 본 발명의 실시 예들에 따라, 도 6에서 선택된 SSD(615)를 위한 읽기 요청들을 처리하는 도 2의 입력/출력(I/O) 재배치기(215)를 보여주는 블록도들 이다. 도 9a의 본 발명의 몇몇 실시 예들에서, I/O 재배치기(215)는 플래시 드라이브(140)로 전달되도록 지정된 읽기 요청(905)을 수신할 수 있다. 하지만, 플래시 드라이브(140)가 가비지 컬렉션을 수행 중이라면, 읽기 요청(905)이 플래시 드라이브(140)로 전달되도록 하는 것은, 요청된 데이터를 반환하는 것이 지연되는 결과를 낳을 수 있다. 그러므로, I/O 재배치기(215)는 플래시 드라이브(140)로의 읽기 요청(905)의 전달을 취소할 수 있고(삭제된 화살표(910)에 의해 표시된 바와 같이), 대신 I/O 재배치기(215)는 읽기 요청(905)을 플래시 드라이브(145)로 재배치 할 수 있다(화살표(915)에 의해 표시된 바와 같이). I/O 재배치기(215)는 분산 저장 시스템의 어떠한 저장 장치들이 요청된 데이터의 다른 복사본들을 저장하는지를 결정하기 위해, 국부적으로 저장 되거나 도 1의 모니터(170)로부터 접근될 수 있는 맵(920)을 사용할 수 있다. 그 뒤, I/O 재배치기(215)는 읽기 요청(905)을, 플래시 드라이브(415)와 같은 적절한 장치로 재배치 할 수 있다. 그 뒤, 플래시 드라이브(145)는 데이터(925)에 접근하고, 데이터(925)를 요청하는 클라이언트로 직접 반환할 수 있다.9A to 9B are block diagrams illustrating the input/output (I/O) relocator 215 of FIG. 2 for processing read requests for the SSD 615 selected in FIG. 6 , according to embodiments of the present invention. they are In some embodiments of the invention of FIG. 9A , the I/O relocator 215 may receive a read request 905 that is directed to the flash drive 140 . However, if the flash drive 140 is performing garbage collection, allowing the read request 905 to be delivered to the flash drive 140 may result in delayed return of the requested data. Therefore, I/O relocator 215 may cancel forwarding of read request 905 to flash drive 140 (as indicated by deleted arrow 910 ), and instead I/O relocator ( 215 may redirect read request 905 to flash drive 145 (as indicated by arrow 915 ). I/O relocator 215 maps 920 that can be stored locally or accessed from monitor 170 of FIG. 1 to determine which storage devices in the distributed storage system store different copies of the requested data. can be used I/O relocator 215 may then relocate read request 905 to an appropriate device, such as flash drive 415 . Flash drive 145 can then access data 925 and return data 925 directly to the requesting client.

도 9b에서, 본 발명의 다른 실시 예들에서, I/O 재배치기(215)는, 가비지 컬렉션을 수행하는 중인, 플래시 드라이브(140)로 전달되도록 지정된 읽기 요청(905)을 가로챌(가로막을) 수 있다. 하지만, 읽기 요청(905)을 플래시 드라이브(145)로 재배치 하는 대신, I/O 재배치기(215)는 교환(930)에서, 플래시 드라이브(145)로부터 데이터를 자체적으로 요청할 수 있다. 그 뒤, 플래시 드라이브(145)는 교환(930)에서 데이터(925)를 I/O 재배치기(215)로 돌려줄 수 있고, 그 뒤 메시지(935)에서 데이터(925)를 요청하는 클라이언트로 반환할 수 있다. 도 9b에 표시된 본 발명의 실시 예들에서, 요청하는 클라이언트는, 요청하는 클라이언트가 이러한 가능성을 대비하지 못한 경우 요청하는 클라이언트를 혼동시킬 수 있는, 예상치 못한 소스로부터 데이터를 받지 않을 수 있다.9B , in other embodiments of the present invention, I/O relocator 215 intercepts (intercepts) read request 905 directed to flash drive 140, which is undergoing garbage collection. can However, instead of relocating the read request 905 to the flash drive 145 , the I/O relocator 215 may itself request data from the flash drive 145 , at the exchange 930 . Flash drive 145 may then return data 925 to I/O relocator 215 in exchange 930 , which then returns data 925 to the requesting client in message 935 . can do. 9B , the requesting client may not receive data from an unexpected source, which may confuse the requesting client if the requesting client is not prepared for this possibility.

도 9a 내지 도 9b의 읽기 요청(905)과 같이, 가비지 컬렉션을 수행하는 SSD로 전달되기로 지정된 쓰기 요청들이 지연되는 결과가 발생할 수 있다. 도 10은 이러한 지연들을 피하기 위해, 도 6에서 선택된 SSD(615)를 위한 로깅(logging) 장치에 쓰기 요청들을 저장하는 도 2의 I/O 재배치기(215)를 보여주는 블록도 이다. 쓰기 요청(1005)을 플래시 드라이브(145)로 전달하는 대신, I/O 재배치기(215)는 쓰기 요청(1005)을 가로챌 수 있다(삭제된 화살표(1010)에 의해 표시된 바와 같이). 그 뒤, I/O 재배치기(215)는 화살표(1020)에 의해 표시된 바와 같이 로깅 장치(1015)에 쓰기 요청(1005)을 저장할 수 있다. 로깅 장치(1015)는 도 1의 저장 노드(125)에 국부적인, 플래시 드라이브(140)의 내부 또는 원하는 곳 어디든지, 위치할 수 있다.As with the read request 905 of FIGS. 9A to 9B , write requests designated to be transferred to the SSD performing garbage collection may be delayed as a result. FIG. 10 is a block diagram illustrating the I/O relocation 215 of FIG. 2 storing write requests to a logging device for the SSD 615 selected in FIG. 6 to avoid these delays. Instead of forwarding the write request 1005 to the flash drive 145 , the I/O relocation 215 may intercept the write request 1005 (as indicated by the deleted arrow 1010 ). I/O relocator 215 may then store write request 1005 to logging device 1015 as indicated by arrow 1020 . The logging device 1015 may be located anywhere within the flash drive 140 , local to the storage node 125 of FIG. 1 , or wherever desired.

도 11은 도 10의 로깅 장치(1015)에 저장된 쓰기 요청들을 처리하는 도 2의 I/O 재동기화기(220)를 보여주는 블록도 이다. 일단 가비지 컬렉션이 도 6의 선택된 SSD(615)에서 완료되면, I/O 재동기화기(220)는 화살표(1105)에 의해 표시된 바와 같이, 로깅 장치(1015)로부터 쓰기 요청(1005)에 접근할 수 있다. 그 뒤, I/O 재동기화기(220)는 화살표(1110)에 의해 표시된 바와 같이, 플래쉬 드라이브(140)에서 쓰기 요청을 수행할 수 있다. 그 뒤, 쓰기 요청(1005)은 삭제(1115)에 의해 표시된 바와 같이, 로깅 장치(1015)로부터 삭제될 수 있다.11 is a block diagram illustrating the I/O resynchronizer 220 of FIG. 2 for processing write requests stored in the logging device 1015 of FIG. 10 . Once garbage collection is complete on the selected SSD 615 of FIG. 6 , the I/O resynchronizer 220 can access the write request 1005 from the logging device 1015 , as indicated by arrow 1105 . have. I/O resynchronizer 220 may then perform a write request from flash drive 140 , as indicated by arrow 1110 . The write request 1005 may then be deleted from the logging device 1015 , as indicated by delete 1115 .

데이터 쓰기들과 관련하여 플래시 드라이브(140)가 현재 진행 중임을 보장하기 위해 로깅 장치(1015)가 간단한 방법을 제공하지만, 로깅 장치(1015)는 플래시 드라이브(140)를 재동기화 시키기 위한 유일한 수단이 아니다. 다른 가능성은, 플래시 드라이브(140)의 어떠한 페이지들, 블록들, 또는 슈퍼 블록들이, 플래시 드라이브(140)가 가비지 컬렉션을 수행했을 동안 도착했던 쓰기 요청들에 의해, 바뀔 예정이었는지에 관한 정보를 저장하는 것일 수 있다. 그 뒤, I/O 재동기화기(220)는, 다른 SSD들 또는 다른 저장 장치들 상의 이러한 페이지들/블록들/슈퍼블록들의 복제된 복사본들로부터의 업데이트된 데이터에 접근하고, 업데이트 된 데이터를 플래시 드라이브(140)에 쓸 수 있다. 도 12는 재동기화의 이러한 형태를 보여준다.Although logging device 1015 provides a simple way to ensure that flash drive 140 is currently in progress with respect to data writes, logging device 1015 is the only means for resynchronizing flash drive 140 . not. Another possibility stores information about which pages, blocks, or super blocks of flash drive 140 were to be changed by write requests that arrived while flash drive 140 was garbage collected. may be doing The I/O resynchronizer 220 then accesses the updated data from the replicated copies of these pages/blocks/superblocks on other SSDs or other storage devices, and flashes the updated data. It can be written to the drive 140 . 12 shows this form of resynchronization.

도 12는, 본 발명의 실시 예들에 따라, 도 6에서 선택된 SSD(615)에 데이터를 복제하는 도 2의 I/O 재동기화기(220)를 보여주는 블록도 이다. 도 12에서, I/O 재동기화기(220)는, 접근 교환(1205)에서, 플래시 드라이브(145)로부터 업데이트 된 데이터를 요청하고, 플래시 드라이브(145)로부터 데이터(925)를 수신할 수 있다. 위에서 도 9a 내지 도 9b를 참조하여 설명된 바와 같이, I/O 재동기화기(220)는, 아마도 맵(920)을 사용하여, 어떤 SSD들이 업데이트된 데이터를 저장하는지 식별하고, 그에 따라 데이터를 요청할 수 있을 것이다. 플래시 드라이브(145)는 필수적으로 모든 업데이트된 데이터를 저장하지 않을 것이다. 그 뒤 I/O 재동기화기(220)는 데이터(925)를 복제 메시지(1210)로 플래시 드라이브(140)에게 제공할 수 있다.FIG. 12 is a block diagram illustrating the I/O resynchronizer 220 of FIG. 2 that copies data to the SSD 615 selected in FIG. 6 according to embodiments of the present invention. 12 , I/O resynchronizer 220 may request updated data from flash drive 145 and receive data 925 from flash drive 145 at access exchange 1205 . As described above with reference to FIGS. 9A-9B , I/O resynchronizer 220 , possibly using map 920 , identifies which SSDs are storing updated data, and requests data accordingly. will be able Flash drive 145 will not necessarily store all updated data. The I/O resynchronizer 220 may then provide the data 925 to the flash drive 140 in a duplicate message 1210 .

도 13은 도 1의 모니터(170)를 구체적으로 보여주는 블록도 이다. 도 13에서, 모니터(170)는 맵(1310) 및 대기 목록(1315)을 포함할 수 있는, 스토리지(1305)를 포함할 수 있다. 모니터(170)는 수신기(1330), 송신기(1325), 및 스케줄러(1320)도 포함할 수 있다. 맵(1310)은, 어떠한 장치들이 사용가능 하고 사용 불가능한지와 함께, 데이터가 분산 저장 시스템의 다양한 저장 장치들의 어디에 저장되는지에 관한 정보를 저장할 수 있다. 맵(1310)은 이하 도 14를 참조하며 더 설명된다. 위에서 도 8을 참조하여 설명된 바와 같이, 대기 목록(1315)은 가비지 컬렉션을 수행하고자 하지만, 다른 SSD들이 가비지 컬렉션을 수행하는 동안 현재 지연되는, SSD들에 관한 정보를 저장할 수 있다. 맵 업데이트기(1335)는 분산 저장 시스템 전반의 데이터 스토리지가 변함에 따라 맵(1310)을 업데이트 할 수 있다. 수신기(1330) 및 송신기(1325)는, 도 2의 가비지 컬렉션 조정기(210)와 같은 다른 장치들로부터 정보를 수신하고, 도 2의 가비지 컬렉션 조정기(210)와 같은 다른 장치들로 정보를 전송하기 위해 사용될 수 있다. 스케줄러(1320)는 도 6의 선택된 SSD(615)를 위한 가비지 컬렉션 요청을 스케줄 할 수 있고, 그 SSD의 가비지 컬렉션을 위한 시간 및 지속 시간을 선택한다.13 is a block diagram specifically illustrating the monitor 170 of FIG. 1 . In FIG. 13 , monitor 170 may include storage 1305 , which may include map 1310 and waiting list 1315 . The monitor 170 may also include a receiver 1330 , a transmitter 1325 , and a scheduler 1320 . The map 1310 may store information regarding where data is stored in various storage devices of a distributed storage system, along with which devices are available and unavailable. Map 1310 is further described with reference to FIG. 14 below. As described above with reference to FIG. 8 , the waiting list 1315 may store information about SSDs that intend to perform garbage collection, but are currently delayed while other SSDs perform garbage collection. The map updater 1335 may update the map 1310 as data storage throughout the distributed storage system changes. Receiver 1330 and transmitter 1325 receive information from other devices, such as garbage collection coordinator 210 of FIG. 2, and send information to other devices, such as garbage collection coordinator 210 of FIG. can be used for The scheduler 1320 may schedule a garbage collection request for the selected SSD 615 of FIG. 6 , and selects a time and duration for garbage collection of the SSD.

도 14은 도 1의 모니터(170)에 저장된 예시적인 도 13의 데이터 맵(1310)을 보여주는 개념도 이다. 도 14에서, 맵(1310)은 다양한 단위 데이터들(1403, 1406, 1409, 및 1412)의 표시기(indicator)들을 포함할 수 있다. 예를 들어, 단위 데이터(1403)는 파일 A의 블록 0을 식별하고, 단위 데이터(1406)는 파일 A의 블록 1을 식별하고, 단위 데이터(1409)는 파일 A의 블록 2를 식별하고, 단위 데이터(1412)는 파일 B의 블록 0을 식별한다. 각각의 단위 데이터는 카운트들(1415, 1418, 1421, 및 1424)과 같은, 카운트를 포함할 수 있고, 카운트는 각각의 단위 데이터의 복사본들이 얼마나 많은지를 나타낸다. 예를 들어, 카운트들(1415, 1418, 및 1421)은 각각의 단위 데이터들(1403, 1406, 및 1409)의 복사본들에 세 개가 있다는 것을 나타내며, 카운트(1424)는 단위 데이터(1412)의 복사본이 두 개가 있다는 것을 나타낸다.FIG. 14 is a conceptual diagram illustrating an exemplary data map 1310 of FIG. 13 stored in the monitor 170 of FIG. 1 . In FIG. 14 , a map 1310 may include indicators of various unit data 1403 , 1406 , 1409 , and 1412 . For example, unit data 1403 identifies block 0 of file A, unit data 1406 identifies block 1 of file A, unit data 1409 identifies block 2 of file A, and unit Data 1412 identifies block 0 of file B. Each unit data may include a count, such as counts 1415 , 1418 , 1421 , and 1424 , the count indicating how many copies of each unit data are there. For example, counts 1415 , 1418 , and 1421 indicate that there are three copies of unit data 1403 , 1406 , and 1409 respectively, and count 1424 is a copy of unit data 1412 . This indicates that there are two.

맵(1310)은 다양한 단위 데이터들을 찾을 수 있는 위치도 포함할 수 있다. 이것들은 위치들(1427, 1430, 1433, 1436, 1439, 1442, 1445, 1448, 1451, 1454, 및 1457)로 표시 된다. 위치(1460)는 단위 데이터(1412)가 결국 3번째 복사본을 갖는 경우에 이용 가능하지만, 분산 저장 시스템에 단위 데이터(1412)의 복사본이 단지 2 개만 있기 때문에, 위치(1460)는 현재 비어있다.The map 1310 may also include a location where various unit data can be found. These are indicated by positions 1427 , 1430 , 1433 , 1436 , 1439 , 1442 , 1445 , 1448 , 1451 , 1454 , and 1457 . Location 1460 is available if unit data 1412 eventually has a third copy, but since there are only two copies of unit data 1412 in the distributed storage system, location 1460 is currently empty.

도 14는 네 개의 단위 데이터들 및 각각의 단위 데이터를 위한 최대 세 개의 복사본들을 포함하는 맵(1310)을 보여주지만, 본 발명의 실시 예들은 임의의 수의 단위 데이터들, 및 각각의 단위 데이터를 위한 임의의 수의 복사본들을 지원할 수 있다. 그러므로, 맵(1310)은 이론적으로 수백만(또는 그 이상)의 단위 데이터들을 포함할 수 있고, 분산 저장 시스템 전반에 각각의 단위 데이터의 여섯 개의 사본들을 가질 수 있다.Although FIG. 14 shows a map 1310 including four unit data and up to three copies for each unit data, embodiments of the present invention include any number of unit data, and each unit data. Any number of copies can be supported for Thus, the map 1310 could theoretically contain millions (or more) of unit data, and could have six copies of each unit data throughout the distributed storage system.

도 15a 내지 도 15b는, 본 발명의 일 실시 예에 따라, 도 1 내지 도 2의 SSD에서 가비지 컬렉션을 수행하기 위한 도 1의 저장 노드(125)에 의해 사용되는, 절차를 보여주는 흐름도 이다. 도 15a의 블록(1505)에서, 도 2의 장치 가비지 컬렉션 모니터(205)는 가비지 컬렉션을 수행하기 위해 도 1의 플래시 드라이브(140)와 같은, SSD를 선택할 수 있다. 블록(1510)에서, 도 2의 장치 가비지 컬렉션 모니터(205)는 도 1의 플래시 드라이브(140)가 가비지 컬렉션을 수행하기 위한 추정 소요 시간을 결정할 수 있다. 도 2의 장치 가비지 컬렉션 모니터(205)가 고려할 수 있는 요소들 중에는 플래시 드라이브(140)를 위해 필요한 삭제 사이클 시간, 도 1의 플래시 드라이브(140)에 의한 선행 가비지 컬렉션 이벤트에 필요한 시간, 및 도 1의 플래시 드라이브(140)의 가용 용량이 있다. 블록(1515)에서, 도 2의 가비지 컬렉션 조정기(210)는, 도 1의 플래시 드라이브(140)가 가비지 컬렉션을 수행하기 위한 스케줄된 시작 시간을 결정할 수 있다. 블록(1520)에서, 스케줄된 시작 시간에, 도 2의 가비지 컬렉션 조정기(210)는 도 1의 플래시 드라이브(140)에게 가비지 컬렉션을 시작하라고 지시할 수 있다.15A to 15B are flowcharts illustrating a procedure used by the storage node 125 of FIG. 1 to perform garbage collection on the SSD of FIGS. 1 to 2 , according to an embodiment of the present invention. At block 1505 of FIG. 15A , the device garbage collection monitor 205 of FIG. 2 may select an SSD, such as flash drive 140 of FIG. 1 , to perform garbage collection. At block 1510 , the device garbage collection monitor 205 of FIG. 2 may determine an estimated time required for the flash drive 140 of FIG. 1 to perform garbage collection. Among the factors that the device garbage collection monitor 205 of FIG. 2 may consider are the erase cycle time required for the flash drive 140 , the time required for a preceding garbage collection event by the flash drive 140 of FIG. 1 , and FIG. 1 . There is a usable capacity of the flash drive 140 of. At block 1515 , the garbage collection coordinator 210 of FIG. 2 may determine a scheduled start time for the flash drive 140 of FIG. 1 to perform garbage collection. At block 1520 , at the scheduled start time, garbage collection coordinator 210 of FIG. 2 may instruct flash drive 140 of FIG. 1 to begin garbage collection.

블록(1525) 에서, 도 1의 플래시 드라이브(140)가 가비지 컬렉션을 수행하는 동안, 도 2의 I/O 재배치기(215)는 읽기 요청(905)들을 도 1의 플래시 드라이브(140)로부터 떨어지게 재배치 할 수 있다. 블록(1530)에서, 도 1의 플래시 드라이브(140)가 가비지 컬렉션을 수행하는 동안, I/O 재배치기(215)는 도 10의 재배치 쓰기 요청(1005)들을 도 1의 플래시 드라이브(140)로부터 떨어지게(도 10의 쓰기 요청(1005)들을 저장하기 위한 로깅 장치 또는 도 10의 쓰기 요청(1005)을 수행하기 위한 다른 저장 장치에) 재배치 할 수도 있다. 블록(1535)에서, 도 1의 저장 노드(125)는 도 1의 플래시 드라이브(140)가 가비지 컬렉션을 완료할 때까지 대기할 수 있다. 블록(1540)에서, 도 2의 가비지 컬렉션 조정기(210)는 도 1의 플래시 드라이브(140)에게 가비지 컬렉션을 종료하라고 지시할 수 있다. 위에서 도 8을 참조하여 설명된 바와 같이, 가비지 컬렉션 동안 플래시 드라이브(140)가 중단되지 않는 경우 블록(1540)이 생략될 수 있다.At block 1525 , while flash drive 140 of FIG. 1 performs garbage collection, I/O relocation 215 of FIG. 2 redirects read requests 905 away from flash drive 140 of FIG. 1 . can be rearranged At block 1530 , while flash drive 140 of FIG. 1 is performing garbage collection, I/O relocator 215 sends relocation write requests 1005 of FIG. 10 from flash drive 140 of FIG. It may be relocated separately (to a logging device for storing write requests 1005 of FIG. 10 or another storage device for performing write requests 1005 of FIG. 10 ). At block 1535 , storage node 125 of FIG. 1 may wait until flash drive 140 of FIG. 1 completes garbage collection. At block 1540 , garbage collection coordinator 210 of FIG. 2 may instruct flash drive 140 of FIG. 1 to terminate garbage collection. As described above with reference to FIG. 8 , block 1540 may be omitted if flash drive 140 is not interrupted during garbage collection.

블록 (1545)에서(도 15b), 도 2의 I/O 재동기화기(220)는 재배치된 쓰기 요청(1005)들이 있는지를(블록 1530 에서) 결정할 수 있다. 재배치된 쓰기 요청(1005)들이 있다면, 그 뒤 블록(1550)에서 도 2의 I/O 재동기화기(220)는 도 10의 로깅 장치(1015)으로부터 도 10의 쓰기 요청(1005)에 접근하고 재생할 수 있고, 블록(1555)에서 도 2의 I/O 재동기화기(220)는 도 10의 로깅 장치(1015)로부터 도 10의 쓰기 요청(1005)을 삭제할 수 있다. 위에서 도 12를 참조하여 설명된 바와 같이, 블록(1550)에서 도 10의 쓰기 요청(1005)을 재생하는 것은, 원래의 쓰기 요청(1005)을 실제로 재생하는 것보다, 도 1의 플래시 드라이브(145)로부터 업데이트 된 데이터에 접근하는 것을 포함할 수 있다. 그러므로, 그 대신, 블록(1560)에서 도 2의 I/O 재동기화기(220)는, 도 10의 쓰기 요청(1005)을 처리한 다른 저장 장치로부터의 도 10의 쓰기 요청(1005)에 의해 바뀐 데이터를 복사할 수 있다. 그 뒤 제어는 도 10의 로깅 장치(1015)에서 도 10의 쓰기 요청(1005)들을 더 체크 하기 위해 블록(1545)으로 되돌아 갈 수 있다.At block 1545 ( FIG. 15B ), I/O resynchronizer 220 of FIG. 2 may determine (at block 1530 ) whether there are relocated write requests 1005 . If there are relocated write requests 1005, then at block 1550 the I/O resynchronizer 220 of FIG. 2 accesses and plays the write request 1005 of FIG. 10 from the logging device 1015 of FIG. and at block 1555 , the I/O resynchronizer 220 of FIG. 2 may delete the write request 1005 of FIG. 10 from the logging device 1015 of FIG. 10 . As described above with reference to FIG. 12 , replaying the write request 1005 of FIG. 10 at block 1550 is more important than actually replaying the original write request 1005 of FIG. 1 , the flash drive 145 of FIG. 1 . ) may include accessing updated data from Therefore, instead, at block 1560 I/O resynchronizer 220 of FIG. 2 is replaced by write request 1005 of FIG. 10 from another storage device that has processed write request 1005 of FIG. Data can be copied. Control may then return to block 1545 to further check write requests 1005 of FIG. 10 in logging device 1015 of FIG. 10 .

도 16a 내지 도 16b는, 본 발명의 일 실시 예에 따라, 가비지 컬렉션을 위한 SSD를 선택하기 위한 도 2의 장치 가비지 컬렉션 모니터에 의해 사용되는, 절차를 보여주는 흐름도 이다. 도 16a에서, 블록(1605)에서, 도 2의 장치 가비지 컬렉션 모니터(205)는 도 1 내지 도 2의 플래시 드라이브들(140, 145, 225, 및 230)에서 프리 삭제 블록 카운트들을 폴링(polling, 조사)할 수 있다. 블록(1610)에서, 도 1의 장치 가비지 컬렉션 모니터(205)는 도 1 내지 도 2의 플래시 드라이브들(140, 145, 225, 및 230)로부터 도 5의 프리 삭제 블록 카운트들(505, 510, 515, 및 520)을 수신할 수 있다.16A to 16B are flowcharts illustrating a procedure used by the device garbage collection monitor of FIG. 2 for selecting an SSD for garbage collection, according to an embodiment of the present invention. In FIG. 16A , at block 1605 , the device garbage collection monitor 205 of FIG. 2 polls the pre-erase block counts from the flash drives 140 , 145 , 225 , and 230 of FIGS. 1-2 . can be investigated). At block 1610, the device garbage collection monitor 205 of FIG. 1 performs the pre-erase block counts 505, 510, 515, and 520).

블록(1615)에서(도 16b), 도 2의 장치 가비지 컬렉션 모니터(205)는 처리해야 하는 남은 프리 삭제 블록 카운트들이 있는지 결정할 수 있다. 처리해야 하는 남은 프리 삭제 블록 카운트들이 있다면, 그 뒤 블록(1620)에서, 도 2의 장치 가비지 컬렉션 모니터(205)는 프리 삭제 블록 카운트들 중 하나를 선택할 수 있다. 블록(1625)에서, 도 2의 장치 가비지 컬렉션 모니터(205)는 선택된 프리 삭제 블록 카운트가 도 6의 프리 삭제 블록 문턱 값(610) 보다 작은지 여부를 결정할 수 있다. 선택된 프리 삭제 카운트가 도 6의 프리 삭제 블록 문턱 값(610) 보다 작은 경우, 그 뒤 블록(1630)에서, 도 2의 장치 가비지 컬렉션 모니터(205)는 대응하는 SSD가 가비지 컬렉션에 적격임을 알 수 있다. 그 뒤 제어는 처리할 프리 삭제 블록 카운트들이 더 있는지 체크하기 위해 블록(1615)으로 되돌아 갈 수 있다.At block 1615 ( FIG. 16B ), the device garbage collection monitor 205 of FIG. 2 may determine if there are remaining free erase block counts to process. If there are remaining pre-erase block counts to process, then at block 1620, the device garbage collection monitor 205 of FIG. 2 may select one of the pre-erase block counts. At block 1625 , the device garbage collection monitor 205 of FIG. 2 may determine whether the selected pre-erase block count is less than the pre-erase block threshold 610 of FIG. 6 . If the selected pre-erase count is less than the pre-erase block threshold 610 of FIG. 6, then at block 1630, the device garbage collection monitor 205 of FIG. 2 may know that the corresponding SSD is eligible for garbage collection. have. Control may then return to block 1615 to check if there are more pre-erase block counts to process.

블록(1615)에서, 처리할 남은 프리 삭제 블록 카운트들이 없는 경우, 그 뒤 블록(1635)에서 도 2의 장치 가비지 컬렉션 모니터(205)는 가비지 컬렉션에 적격인 SSD들 중 하나를 선택할 수 있다. 가비지 컬렉션에 적격인 SSD가 하나만 있는 경우, 그 뒤 그 SSD는 선택될 수 있다. 적격인 SSD가 하나 이상 있는 경우, 그 뒤 도 2의 장치 가비지 컬렉션 모니터(205)는 임의의 바람직한 알고리즘을 사용하여 적격인 SSD들 중 하나를 선택할 수 있다. 사용될 수 있는 가능한 알고리즘들은, 가장 적은 프리 삭제 블록 카운트 또는 가장 적은 백분율의 프리 삭제 블록들을 갖는 적격인 SSD를 선택하거나, 또는 적격인 SSD를 임의로 선택하는 것을 포함한다. 도 2의 장치 가비지 컬렉션 모니터(205)는 또한 가비지 컬렉션에 적격인 하나 이상의 SSD를 선택할 수도 있다. 도 1의 모니터(170)는 동시에 다수의 SSD들이 가비지 컬렉션을 수행하는 것을 피하는 방식으로 가비지 컬렉션에 적격인 모든 SSD들을 스케줄할 수 있기 때문에, 가비지 컬렉션에 적격인 SSD를 하나 이상 고르는 것은 도 1의 모니터(170)가 응답 있는 가비지 컬렉션을 사용하는 곳에서 특히 유용하다.At block 1615 , if there are no remaining pre-erase block counts to process, then at block 1635 the device garbage collection monitor 205 of FIG. 2 may select one of the SSDs eligible for garbage collection. If there is only one SSD eligible for garbage collection, then that SSD can be selected. If there is more than one eligible SSD, then device garbage collection monitor 205 of FIG. 2 may select one of the eligible SSDs using any desired algorithm. Possible algorithms that may be used include selecting an eligible SSD with the lowest pre-erase block count or the smallest percentage of pre-erase blocks, or randomly selecting an eligible SSD. The device garbage collection monitor 205 of FIG. 2 may also select one or more SSDs eligible for garbage collection. Since the monitor 170 of FIG. 1 can schedule all SSDs eligible for garbage collection in a way that avoids multiple SSDs performing garbage collection at the same time, selecting one or more SSDs eligible for garbage collection is This is particularly useful where the monitor 170 uses responsive garbage collection.

도 17은 도 2의 가비지 컬렉션 조정기(210)가 도 6에서 선택된 SSD(615)를 위해, 가비지 컬렉션을 스케줄 하기 위한 절차를 보여주는 흐름도 이다. 도 17에서, 블록(1705)에서, 도 2의 가비지 컬렉션 조정기(210)는 도 6의 선택된 SSD(615)를 위한 스케줄된 시작 시간(810)을 선택할 수 있다. 위에서 도 8을 참조하여 설명된 바와 같이, 도 2의 가비지 컬렉션 조정기(210)에 의해 선택된 스케줄된 시작 시간(810)은 바인딩(구속) 될 필요가 없고, 도 8의 다른 스케줄된 시작 시간(810)이 도 1의 모니터(170)에 의해 할당될 수 있다. 블록(1710)에서 도 2의 가비지 컬렉션 조정기(210)는 도 1의 모니터(170)에게 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행할 필요가 있다고 알릴 수 있다. 블록(1715)에서, 도 2의 가비지 컬렉션 조정기(210)는, 가비지 컬렉션을 수행하기 위해 도 6의 선택된 SSD(615)에 의해 필요로 되는 도 8의 선택된 시작 시간(810) 및 도 7의 추정 시간(725)을 도 1의 모니터(170)에게 알릴 수 있다.17 is a flowchart illustrating a procedure for the garbage collection coordinator 210 of FIG. 2 to schedule garbage collection for the SSD 615 selected in FIG. 6 . In FIG. 17 , at block 1705 , the garbage collection coordinator 210 of FIG. 2 may select a scheduled start time 810 for the selected SSD 615 of FIG. 6 . As described above with reference to FIG. 8, the scheduled start time 810 selected by the garbage collection coordinator 210 of FIG. 2 does not need to be bound (constrained), and the other scheduled start time 810 of FIG. ) may be assigned by the monitor 170 of FIG. 1 . At block 1710 , the garbage collection coordinator 210 of FIG. 2 may notify the monitor 170 of FIG. 1 that the selected SSD 615 of FIG. 6 needs to perform garbage collection. At block 1715 , the garbage collection coordinator 210 of FIG. 2 estimates the selected start time 810 of FIG. 8 and the estimate of FIG. 7 as needed by the selected SSD 615 of FIG. 6 to perform garbage collection. Time 725 may be communicated to monitor 170 of FIG. 1 .

여기에서, 본 발명의 실시 예들이 응답 있는 가비지 컬렉션을 사용하는지 또는 응답 없는 가비지 컬렉션을 사용하는지 여부에 따라, 순서도는 나누어질 수 있다. 응답 없는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 블록(1720)에서 도 2의 가비지 콜렉션 조정기(210)는, 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행하는 데 필요한 도 8의 스케줄된 시작 시간(810) 및 도 7의 추정 시간(725)을 사용하고, 도 8의 스케줄된 시작 시간(810)에 가비지 컬렉션을 수행하도록 도 6의 선택된 SSD(615)에 지시할 수 있다.Here, the flowchart may be divided according to whether the embodiments of the present invention use responsive garbage collection or non-responsive garbage collection. In embodiments of the present invention that use unresponsive garbage collection, the garbage collection coordinator 210 of FIG. 2 at block 1720 determines the schedule of FIG. 8 for the selected SSD 615 of FIG. 6 to perform garbage collection. The selected SSD 615 of FIG. 6 may be instructed to perform garbage collection at the scheduled start time 810 of FIG. 8 using the estimated start time 810 and the estimated time 725 of FIG. 7 .

응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 블록(1725)에서 도 2의 가비지 컬렉션 조정기(210)는 도 1의 모니터(170)로부터 도 8의 스케줄된 시작 시간(810) 및 도 8의 지속 시간(820)을 수신할 수 있다. 그 뒤, 블록(1730)에서 가비지 컬렉션 조정기(210)는 도 1의 모니터(170)로부터 수신된 도 8의 스케줄된 시작 시간(810) 및 도 8의 지속 시간(820)을 도 6의 선택된 SSD(615)가 언제 가비지 컬렉션을 수행하는지를 스케줄하기 위해 사용할 수 있다.In embodiments of the present invention that use responsive garbage collection, at block 1725 the garbage collection coordinator 210 of FIG. 2 receives the scheduled start time 810 of FIG. 8 from the monitor 170 of FIG. may receive the duration 820 of . Thereafter, at block 1730 the garbage collection coordinator 210 compares the scheduled start time 810 of FIG. 8 and the duration 820 of FIG. 8 received from the monitor 170 of FIG. 1 to the selected SSD of FIG. (615) can be used to schedule when to perform garbage collection.

도 18은, 본 발명의 일 실시 예에 따라, 도 2의 I/O 재배치기(215)가 도 9의 읽기 요청(905)들을 재배치 하기 위한 절차를 보여주는 흐름도 이다. 도 18에서, 블록(1805)에서 도 2의 I/O 재배치기(215)는, 요청된 데이터의 복제된 복사본을 저장하는 것으로서 도 1의 플래시 드라이브(145)를 식별할 수 있다. 위에서 도 9a 내지 도 9b를 참조하여 설명된 바와 같이, 도 2의 I/O 재배치기(215)는, 도 1의 플래시 드라이브(145)가 요청된 데이터의 복제된 복사본을 저장하는지를 결정하기 위해 도 9a 내지 도 9b의 맵(920)을 사용할 수 있고, 도 9a 내지 도 9b의 맵(920)은 도 1의 모니터(170)상의 도 1의 저장 노드(125)에 국부적으로 저장되거나 어디든 바람직한 곳에 저장될 수 있다.18 is a flowchart illustrating a procedure for the I/O relocation 215 of FIG. 2 to relocate the read requests 905 of FIG. 9 according to an embodiment of the present invention. In FIG. 18 , I/O relocation 215 of FIG. 2 at block 1805 may identify the flash drive 145 of FIG. 1 as storing a duplicated copy of the requested data. As described above with reference to FIGS. 9A-9B , the I/O relocation 215 of FIG. 2 is used to determine whether flash drive 145 of FIG. 1 stores a duplicated copy of the requested data. The map 920 of FIGS. 9A-9B may be used, and the map 920 of FIGS. 9A-9B is stored locally on the storage node 125 of FIG. 1 on the monitor 170 of FIG. 1 or stored anywhere desired. can be

일단 도 2의 I/O 재배치기(215)가, 도 1의 플래시 드라이브(145)가 요청된 데이터의 복제된 복사본을 저장하고 있는지를 결정하면, 본 발명의 다른 실시 예들은 다른 방법들을 진행할 수 있다. 본 발명의 몇몇 실시 예들에서, 블록(1810)에서 도 2의 I/O 재배치기(215)는 단순히 도 9a 내지 도 9b의 읽기 요청(905)을 도 1의 플래시 드라이브(145)로 재배치 할 수 있고, 도 1의 플래시 드라이브(145)가 도 9a 내지 도 9b의 데이터(905)를 요청하는 클라이언트에 직접 제공하도록 할 수 있다. 본 발명의 다른 실시 예들에서, 블록(1815)에서 도 2의 I/O 재배치기(215)는 도 1의 플래시 드라이브(145)로부터 데이터를 요청하고, 블록(1820)에서 도 2의 I/O 재배치기(215)는 도 9a 내지 도 9b의 데이터(925)를 요청하는 클라이언트에 제공할 수 있다.Once the I/O relocator 215 of FIG. 2 has determined that the flash drive 145 of FIG. 1 is storing a duplicated copy of the requested data, other embodiments of the present invention may proceed with other methods. have. In some embodiments of the present invention, I/O relocation 215 of FIG. 2 at block 1810 may simply relocate read request 905 of FIGS. 9A-9B to flash drive 145 of FIG. 1 . In this case, the flash drive 145 of FIG. 1 may directly provide the data 905 of FIGS. 9A to 9B to the requesting client. In other embodiments of the invention, at block 1815 I/O relocation 215 of FIG. 2 requests data from flash drive 145 of FIG. 1 , and at block 1820 I/O of FIG. 2 . The relocator 215 may provide the data 925 of FIGS. 9A-9B to the requesting client.

도 19는, 본 발명의 일 실시 예에 따라, 도 2의 I/O 재동기화기(220)가 도 10의 로그된 쓰기 요청(1005)들을 처리하기 위한 절차를 보여주는 흐름도 이다. 도 2의 I/O 재동기화기(220)가 도 10의 로그된 쓰기 요청(1005)들을 어떻게 처리하는지는 도 10의 로깅 장치(1015)가 어떻게 사용되었는지에 의존한다. 도 10의 로깅 장치(1015)가 요청하는 클라이언트에 의해 처음 생성된 것으로 도 10의 쓰기 요청(1005)들을 저장한다면, 그 뒤 블록(1905)에서 도 2의 I/O 재동기화기(220)는 마치 방금 수신한 것처럼 도 10의 쓰기 요청(1005)들을 단순히 재생할 수 있다.19 is a flowchart illustrating a procedure for the I/O resynchronizer 220 of FIG. 2 to process the logged write requests 1005 of FIG. 10 according to an embodiment of the present invention. How the I/O resynchronizer 220 of FIG. 2 handles the logged write requests 1005 of FIG. 10 depends on how the logging device 1015 of FIG. 10 is used. If the logging device 1015 of FIG. 10 stores the write requests 1005 of FIG. 10 as initially generated by the requesting client, then in block 1905, the I/O resynchronizer 220 of FIG. 2 is as if You can simply replay the write requests 1005 of FIG. 10 as you just received.

하지만 도 10의 로깅 장치(1015)는, 어떤 페이지들, 블록들, 또는 슈퍼블록들이 도 10의 쓰기 요청(1005)들에 의해 영향을 받는 지의, 표시기를 저장할 수 있다. 그 경우, 블록(1910)에서 도 2의 I/O 재동기화기(220)는 업데이트된 데이터의 복제된 복사본을 저장하는 것으로서 도 1의 플래시 드라이브(145)를 식별할 수 있다. 위에서 도 12를 참조하여 설명된 바와 같이, 도 2의 I/O 재동기화기(220)는 도 1의 플래시 드라이브(145)가 업데이트된 데이터의 복제된 복사본을 저장하는지를 결정하기 위해 도 12의 맵(920)을 사용할 수 있고, 도 12의 맵(920)은 도 1의 모니터(170)상의, 도 1의 저장 노드(125)에 국부적으로 저장되거나, 어디든 바람직한 곳에 저장될 수 있다.However, the logging device 1015 of FIG. 10 may store an indicator of which pages, blocks, or superblocks are affected by the write requests 1005 of FIG. 10 . In that case, at block 1910 I/O resynchronizer 220 of FIG. 2 may identify flash drive 145 of FIG. 1 as storing a duplicate copy of the updated data. As described above with reference to FIG. 12, the I/O resynchronizer 220 of FIG. 2 uses the map of FIG. 12 ( 920), and the map 920 of FIG. 12 may be stored locally on the monitor 170 of FIG. 1, at the storage node 125 of FIG. 1, or wherever desired.

일단 도 2의 I/O 재동기화기(220)가, 플래시 드라이브(145)가 업데이트된 데이터의 복제된 복사본을 저장하는지를 식별하면, 블록(1915)에서 도 2의 I/O 재동기화기(220)는 도 1의 플래시 드라이브(145)로부터 업데이트된 데이터에 접근할 수 있다. 그 뒤, 블록(1920)에서 도 2의 I/O 재동기화기(220)는 도 6의 선택된 SSD(615)에게 업데이트된 데이터를 쓰라고 지시할 수 있다.Once the I/O resynchronizer 220 of FIG. 2 has identified that the flash drive 145 stores a duplicate copy of the updated data, at block 1915 the I/O resynchronizer 220 of FIG. The updated data can be accessed from the flash drive 145 of FIG. 1 . Thereafter, at block 1920 , the I/O resynchronizer 220 of FIG. 2 may instruct the selected SSD 615 of FIG. 6 to write the updated data.

도 20 및 도 21은, 본 발명의 실시 예들에 따라, 도 1의 모니터(170)가 도 6에서 선택된 SSD(615)가 가비지 컬렉션을 수행하는 시간을 다루기 위한 절차를 보여주는 흐름도들 이다. 도 20에서, 블록(2005)에서 도 1의 모니터(170)는 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행하는 것을 필요로 한다는 알림을 도 1의 가비지 컬렉션 조정기(210)로부터 수신할 수 있다. 이 알림은 가비지 컬렉션을 수행하기 위해 도 6의 선택된 SSD(615)에 의해 필요로 되는, 도 7의 추정 시간(725) 및 도 8의 스케줄된 시작 시간(810)을 포함할 수 있다. 블록(2010)에서, 도 1의 모니터(170)는 가비지 컬렉션을 수행하기 위해, 도 6의 선택된 SSD(615)를 위한 스케줄된 시작 시간을 선택할 수 있고, 블록(2015)에서 도 1의 모니터(170)는 가비지 컬렉션을 수행하기 위해, 도 6의 선택된 SSD(615)를 위한 지속 시간을 선택할 수 있다. 블록(2020)에서, 도 1의 모니터(170)는 도 2의 가비지 컬렉션 조정기(210)에게, 도 8의 스케줄된 시작 시간(810) 및 지속 시간(820)을 알릴 수 있다.20 and 21 are flowcharts illustrating a procedure for the monitor 170 of FIG. 1 to handle the time when the SSD 615 selected in FIG. 6 performs garbage collection, according to embodiments of the present invention. 20, at block 2005 the monitor 170 of FIG. 1 may receive a notification from the garbage collection coordinator 210 of FIG. 1 that the selected SSD 615 of FIG. 6 needs to perform a garbage collection. have. This notification may include the estimated time 725 of FIG. 7 and the scheduled start time 810 of FIG. 8, which are needed by the selected SSD 615 of FIG. 6 to perform garbage collection. At block 2010, the monitor 170 of FIG. 1 may select a scheduled start time for the selected SSD 615 of FIG. 6 to perform garbage collection, and at block 2015 the monitor 170 of FIG. 170 may select a duration for the selected SSD 615 of FIG. 6 to perform garbage collection. At block 2020 , the monitor 170 of FIG. 1 may inform the garbage collection coordinator 210 of FIG. 2 of the scheduled start time 810 and duration 820 of FIG. 8 .

블록(2025)에서, 가비지 컬렉션을 위한 도 8의 스케줄된 시작 시간(810)이 도착할 때, 도 1의 모니터(170)는 도 6의 선택된 SSD(615)가 지금 사용 불가능하다는 것을 반영하기 위해, 분산 저장 시스템의 도 13의 맵(1310)의 데이터를 업데이트 할 수 있다. 도 1의 모니터(170)는 도 2의 가비지 컬렉션 조정기(210)로부터의 알림을 통해, 도 6의 선택된 SSD(615)에서 가비지 컬렉션이 시작되었다는 것을 알게 될 수 있다. 블록(2030)에서, 가비지 컬렉션이 완료될 때, 도 1의 모니터(170)는 도 6의 선택된 SSD(615)가 이제 다시 사용 가능하다는 것을 반영하기 위해, 분산 저장 시스템의 도 13의 맵(1310)의 데이터를 업데이트 할 수 있다. 도 1의 모니터(170)는 도 2의 가비지 컬렉션 조정기(210)로부터의 알림을 통해, 도 6의 선택된 SSD(615)에서 가비지 컬렉션이 종료되었다는 것을 알게 될 수 있다.At block 2025, when the scheduled start time 810 of FIG. 8 for garbage collection arrives, the monitor 170 of FIG. 1 reflects that the selected SSD 615 of FIG. 6 is now unavailable. Data of the map 1310 of FIG. 13 of the distributed storage system may be updated. The monitor 170 of FIG. 1 may know that garbage collection has started in the selected SSD 615 of FIG. 6 through a notification from the garbage collection coordinator 210 of FIG. 2 . At block 2030 , when garbage collection is complete, the monitor 170 of FIG. 1 displays the map 1310 of FIG. 13 of the distributed storage system to reflect that the selected SSD 615 of FIG. 6 is now available again. ) can be updated. The monitor 170 of FIG. 1 may know that the garbage collection has ended in the selected SSD 615 of FIG. 6 through a notification from the garbage collection coordinator 210 of FIG. 2 .

도 20은 응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들을 표시한다. 응답 없는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 도 1의 모니터(170)가 도 6의 선택된 SSD에서의 가비지 컬렉션을 위한 도 8의 스케줄된 시작 시간(810) 또는 지속 시간(820)을 선택하지 않으므로, 블록들(2010, 2015, 및 2020)은 생략될 것이다.20 shows embodiments of the present invention using responsive garbage collection. In embodiments of the present invention that use unresponsive garbage collection, monitor 170 of FIG. 1 monitors the scheduled start time 810 or duration 820 of FIG. 8 for garbage collection on the selected SSD of FIG. Since no selection is made, blocks 2010, 2015, and 2020 will be omitted.

도 21은 도 20과 유사하다. 도 20 및 도 21사이의 차이점은 도 21에서 블록들(2025 및 2030)이 블록들(2105 및 2110)으로 대체된다는 것이다. 블록(2105)에서, 가비지 컬렉션을 위한 도 8의 스케줄된 시작 시간(810)이 수신된 때, 도 1의 모니터(170)는, 도 6의 선택된 SSD(615)에 저장된 데이터가 지금 사용 불가능 하다는 것을 반영하기 위해 분산 저장 시스템의 도 13의 데이터 맵(1310)에서 도 14의 각각의 단위 데이터(1403, 1406, 1409, 및 1412)의 도 14의 카운트들(1415, 1418, 1421, 및 1424)을 감소시킬 수 있다. 도 1의 모니터(170)는 도 2의 가비지 컬렉션 조정기(210)로부터의 알림을 통해 도 6의 선택된 SSD(615)에서 가비지 컬렉션이 시작된 것을 알게 될 수 있다. 블록(2110)에서, 가비지 컬렉션이 완료된 때, 도 1의 모니터(170)는, 도 6의 선택된 SSD(615)에 저장된 데이터가 지금 다시 사용 가능 하다는 것을 반영하기 위해 분산 저장 시스템의 도 13의 데이터 맵(1310)에서 도 14의 각각의 단위 데이터(1403, 1406, 1409, 및 1412)의 도 14의 카운트들(1415, 1418, 1421, 및 1424)을 증가시킬 수 있다. 도 1의 모니터(170)는 도 2의 가비지 컬렉션 조정기(210)로부터의 알림을 통해 도 6의 선택된 SSD(615)에서 가비지 컬렉션이 종료된 것을 알게 될 수 있다.FIG. 21 is similar to FIG. 20 . The difference between FIGS. 20 and 21 is that in FIG. 21 blocks 2025 and 2030 are replaced with blocks 2105 and 2110 . At block 2105 , when the scheduled start time 810 of FIG. 8 for garbage collection is received, the monitor 170 of FIG. 1 indicates that the data stored on the selected SSD 615 of FIG. 6 is now unavailable. 14 counts 1415 , 1418 , 1421 , and 1424 of each unit data 1403 , 1406 , 1409 , and 1412 of FIG. 14 in the data map 1310 of FIG. 13 of the distributed storage system to reflect can reduce The monitor 170 of FIG. 1 may know that garbage collection has started in the selected SSD 615 of FIG. 6 through a notification from the garbage collection coordinator 210 of FIG. 2 . At block 2110, when garbage collection is complete, the monitor 170 of FIG. 1 displays the data of FIG. 13 in the distributed storage system to reflect that the data stored on the selected SSD 615 of FIG. 6 is now available again. The map 1310 may increment the counts 1415 , 1418 , 1421 , and 1424 of FIG. 14 of each unit data 1403 , 1406 , 1409 , and 1412 of FIG. 14 . The monitor 170 of FIG. 1 may know that garbage collection has ended in the selected SSD 615 of FIG. 6 through a notification from the garbage collection coordinator 210 of FIG. 2 .

도 22a 내지 도 22b는, 본 발명의 일 실시 예에 따라, 도 1의 모니터가, 도 6에서 선택된 SSD(615)를 위한, 도 8의 가비지 컬렉션의 스케줄된 시작 시각(810) 및 지속 시간(820)을 결정하기 위한 절차를 보여주는 흐름도 이다. 도 22a에서, 블록(2205) 에서, 도 1의 모니터(170)는 도 2의 가비지 컬렉션 조정기(210)에 의해 선택된 대로 도 8의 스케줄된 시작 시간(810)을 수신할 수 있다. 블록(2210)에서, 도 1의 모니터(170)는, 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행하기 위해 필요로 하는, 도 7의 추정 시간(725)을 수신할 수 있다. 22A to 22B show a scheduled start time 810 and duration of garbage collection of FIG. 8 for the SSD 615 selected in FIG. 6 by the monitor of FIG. 1 , according to an embodiment of the present invention. 820) is a flowchart showing the procedure for determining In FIG. 22A , at block 2205 , the monitor 170 of FIG. 1 may receive the scheduled start time 810 of FIG. 8 as selected by the garbage collection coordinator 210 of FIG. 2 . At block 2210 , monitor 170 of FIG. 1 may receive the estimated time 725 of FIG. 7 that the selected SSD 615 of FIG. 6 needs to perform garbage collection.

여기에서, 본 발명의 실시 예들이 응답 있는 가비지 컬렉션을 사용하는지 또는 응답 없는 가비지 컬렉션을 사용하는지 여부에 따라, 흐름도는 나누어질 수 있다. 응답 없는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 블록(2215)에서, 모니터(170)는 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행하기 위해 필요로 하는 도 8의 스케줄된 시작 시간(810) 및 도 7의 추정 시간(725)을 저장할 수 있다. 분산 저장 시스템이 응답 없는 가비지 컬렉션을 사용할 때 모니터(170)는 응답을 보내지 않기 때문에, 여기에서 도 1의 모니터(170)는 도 8의 스케줄된 시작 시간(810) 및 지속 시간(820)의 결정을 완료한다.Here, the flowchart may be divided according to whether the embodiments of the present invention use responsive garbage collection or non-responsive garbage collection. In embodiments of the invention that use unresponsive garbage collection, at block 2215, monitor 170 determines the scheduled start time of FIG. 8 that the selected SSD 615 of FIG. 6 needs to perform garbage collection. 810 and the estimated time 725 of FIG. 7 may be stored. Since monitor 170 does not send a response when the distributed storage system uses unresponsive garbage collection, monitor 170 of FIG. 1 here determines the scheduled start time 810 and duration 820 of FIG. to complete

응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 블록(2220)에서 (도 22b) 모니터(170)는 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행하기 위한 시작 시작을 선택할 수 있다. 블록(2225)에서, 도 1의 모니터(170)는 선택된 SSD(615)가 가비지 컬렉션을 수행하기 위해 할당된 시간을 선택할 수 있다. 블록(2230)에서, 도 1의 모니터(170)는 도 6의 선택된 SSD(615)를 위해 선택된 시작 시간, 및 할당된 시간이, 도 6의 선택된 SSD(615)에 저장된 데이터가 사용 가능해질 것이라는 것(다른 저장 장치들의 복제된 복사본을 통해)을 보장하는지를 검사할 수 있다 블록(2235)에서, 도 1의 모니터(170)는 도 6의 선택된 SSD(615)를 위해 선택된 시작 시간 및 할당된 시간이 가비지 컬렉션을 수행하는 다른 SSD들과 겹치고, 많은 장치들을 동시에 사용 불가능하게 하는지 검사할 수 있다. 블록들(2230 및 2235)중 하나에서의 검사가 부정적인 결과를 반환하면(데이터가 완전히 사용 불가능하거나, 너무 많은 SSD들이 동시에 가비지 컬렉션을 수행하는 경우), 그 뒤 제어는, 도 1의 모니터(170)가 새로운 시작 시간 및 할당된 시간을 선택할 수 있도록 블록(2220)으로 돌아간다. 그렇지 않으면, 블록(2240)에서 모니터(170)는 도 8의 스케줄된 시작 시간(810) 및 지속 시간(820)대로 선택된 시작 시간 및 할당된 시간을 도 2의 가비지 컬렉션 조정기(210)로 전송할 수 있다.In embodiments of the present invention that use responsive garbage collection, at block 2220 ( FIG. 22B ), monitor 170 may select a starting start for the selected SSD 615 of FIG. 6 to perform garbage collection. At block 2225 , the monitor 170 of FIG. 1 may select an allotted time for the selected SSD 615 to perform garbage collection. At block 2230 , the monitor 170 of FIG. 1 indicates that the selected start time, and the allotted time for the selected SSD 615 of FIG. 6 , indicates that the data stored on the selected SSD 615 of FIG. 6 will become available. At block 2235 , the monitor 170 of FIG. 1 displays the selected start time and the allocated time for the selected SSD 615 of FIG. 6 . You can check if it overlaps with other SSDs doing this garbage collection and disables many devices at the same time. If the check in one of blocks 2230 and 2235 returns a negative result (data is completely unavailable, or too many SSDs are performing garbage collection at the same time), then control returns to monitor 170 in FIG. ) returns to block 2220 to select a new start time and an assigned time. Otherwise, at block 2240, the monitor 170 may transmit the selected start time and the assigned time as the scheduled start time 810 and duration 820 of FIG. 8 to the garbage collection coordinator 210 of FIG. have.

블록들(2230 및 2235)의 두 개의 검사들은 상이하다는 것을 주의하라. 예를 들어, 블록(2230)이 선택된 SSD(615) 상의 데이터의 복제된 복사본들이 다른 저장 장치들에서 사용 가능하다고 지시하는 것이 발생할 수 있지만, 너무 많은 수의 다른 SSD들이 동시에 가비지 컬렉션을 수행 중이기 때문에, 블록(2235)는 실패할 것이다. 반면, 하나의 다른 SSD만이 동시에 가비지 컬렉션을 수행 중인 경우, 블록(2235)은 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행할 수 있다고 지시할 수 있다. 하지만 가비지 컬렉션을 수행하는 다른 SSD가 도 6의 선택된 SSD(615) 상의 몇몇 데이터의 다른 복사본만을 가지고 있었다면, 블록(2230)은 실패할 것이다.Note that the two checks of blocks 2230 and 2235 are different. For example, it may occur that block 2230 indicates that replicated copies of data on selected SSD 615 are available in other storage devices, but because too many other SSDs are concurrently garbage collection. , block 2235 will fail. On the other hand, if only one other SSD is performing garbage collection at the same time, block 2235 may indicate that the selected SSD 615 of FIG. 6 may perform garbage collection. However, if another SSD performing the garbage collection had only another copy of some data on the selected SSD 615 of FIG. 6 , block 2230 would fail.

또한, 블록(2230)으로부터 블록(2235)으로 향하는 화살표는 “예/아니오”라고 표시되어 있음을 주의하라. 선택된 SSD(615)가 가비지 컬렉션을 수행함에도 불구하고 블록(2230)이 데이터가 사용가능 할 것이라고 지시한다면, 그 뒤 제어는 블록(2235)으로 진행할 것이다. 하지만, 선택된 SSD(615)가 분산 시스템 상의 몇몇의 데이터의 유일한 복사본을 가지는 경우가 발생할 수 있다. 이것이 발생할 경우, 그 뒤 도 6의 선택된 SSD(615)는 사용 불가능하게 된 몇몇의 데이터 없이 언제라도 가비지 컬렉션을 위해 스케줄될 수 없다(적어도, 그 데이터가 복제되기 전까지). 이 상황에서, 도 6의 선택된 SSD(615)는, 몇몇의 데이터가 사용 불가능하게 될 것이라는 사실에도 불구하고, 가비지 컬렉션을 수행하는 것이 허용되도록 해야할 수 있다.Also note that the arrow from block 2230 to block 2235 is marked "yes/no". If block 2230 indicates that the data will be available despite the selected SSD 615 performing garbage collection, then control will proceed to block 2235 . However, it may happen that the selected SSD 615 has a unique copy of some data on the distributed system. When this occurs, then the selected SSD 615 of FIG. 6 cannot be scheduled for garbage collection at any time without some data becoming unavailable (at least until the data is copied). In this situation, the selected SSD 615 of FIG. 6 may need to be allowed to perform garbage collection, despite the fact that some data will become unusable.

몇몇의 데이터가 사용 불가능해짐에도 불구하고 왜 도 6의 선택된 SSD(615)가 가비지 컬렉션을 위해 스케줄될 수 있는가의 또 다른 이유는 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행하기 위해 충분한 양의 시간을 대기한 경우일 수 있다. 즉, 도 6의 선택된 SSD(615)가 몇몇의 문턱 시간 값을 초과하여 가비지 컬렉션을 수행하기 위해 대기중인 경우, 그 사실이 분산 저장 시스템의 몇몇의 데이터가 사용 불가능할 것이라는 것을 의미하더라도, 도 6의 선택된 SSD(615)는 가비지 컬렉션을 수행하도록 허용될 수 있다.Another reason why the selected SSD 615 of FIG. 6 may be scheduled for garbage collection even though some data becomes unavailable is that the selected SSD 615 of FIG. 6 has a sufficient amount to perform garbage collection. It may be a case of waiting for the time of That is, if the selected SSD 615 of FIG. 6 exceeds some threshold time value and is waiting to perform garbage collection, even if that fact means that some data in the distributed storage system will be unavailable, The selected SSD 615 may be allowed to perform garbage collection.

도 22a 내지 도 22b는 도 13의 대기 목록(1315)을 사용하는 도 1의 모니터(170)를 보여주지 않는다. 너무 많은 SSD들이 가비지 컬렉션을 수행하는 중이기 때문에 도 1의 모니터(170)가 도 6의 선택된 SSD(615)를 가비지 컬렉션을 위해 스케줄할 수 없다면, 도 1의 모니터(170)는 더 적은 SSD들이 가비지 컬렉션을 수행할 때까지 도 13의 대기 목록(1315)에 도 6의 선택된 SSD(615)에 관한 정보를 저장할 수 있다. 그 뒤, 모니터(170)는 도 13의 대기 목록(1315)으로부터 도 6의 선택된 SSD(615)를 제거하고, 도 6의 선택된 SSD(615)를 위한 가비지 컬렉션을 스케줄하는 것을 다시 시도하기 위해 제어를 블록(2220)으로 돌려줄 수 있다.22A-22B do not show the monitor 170 of FIG. 1 using the waiting list 1315 of FIG. 13 . If monitor 170 of FIG. 1 cannot schedule the selected SSD 615 of FIG. 6 for garbage collection because too many SSDs are performing garbage collection, monitor 170 of FIG. 1 indicates that fewer SSDs are garbage collected. Until collection is performed, information about the selected SSD 615 of FIG. 6 may be stored in the waiting list 1315 of FIG. 13 . Thereafter, the monitor 170 controls to remove the selected SSD 615 of FIG. 6 from the waiting list 1315 of FIG. 13 and retry scheduling garbage collection for the selected SSD 615 of FIG. 6 . may be returned to block 2220 .

너무 많은 SSD들이 동시에 가비지 컬렉션을 수행하고자 하고, 도 1의 모니터(170)가 그들을 모두 스케줄 하지 않을 수 있다면, 도 1의 모니터(170)는 어떤 SSD들이 가비지 컬렉션을 수행할지를 선택하기 위해 임의의 바람직한 알고리즘을 사용할 수 있다. 가능한 접근법들은 임의로 적절한 개수의 SSD들을 선택하는 것, 도 2의 가비지 컬렉션 조정기(210)로부터의 알림들의 도달 시간들에 기초하여 SSD들을 선택하는 것, 가장 중요한 것으로 고려되는 SSD들을 선택하는 것(새로운 데이터 쓰기들을 위해 가능한 한 SSD들을 열어둔 채로 유지하기 위해), 또는 가장 적은 양의 중요한 데이터를 저장하는 SSD들을 선택하는 것(중요한 데이터를 사용 가능하도록 유지하기 위해). 얼마나 많은 수의 SSD들이 동시에 가비지 컬렉션을 수행하도록 허용될 수 있는지는, 시스템 파라미터 이고, 고정된 값 또는 사용 가능한 SSD들의 백분율 값으로서 구체화 될 수 있고, 정적으로(분산 저장 시스템이 배치될 때) 또는 동적으로(분산 저장 시스템 내의 조건들이 변함에 따라 변하는) 구체화 될 수 있다.If too many SSDs want to perform garbage collection at the same time, and monitor 170 of FIG. 1 may not schedule them all, then monitor 170 of FIG. algorithms can be used. Possible approaches are to randomly select an appropriate number of SSDs, to select SSDs based on the arrival times of notifications from the garbage collection coordinator 210 of FIG. 2 , to select SSDs considered to be most important (new To keep SSDs open as much as possible for data writes), or to choose SSDs that store the least amount of critical data (to keep important data available). How many SSDs can be allowed to perform garbage collection at the same time is a system parameter, and can be specified as a fixed value or a percentage value of available SSDs, statically (when a distributed storage system is deployed) or dynamic (which changes as conditions within the distributed storage system change) can be specified as

도 22a 내지 도 22b가 단 하나의 도 6의 선택된 SSD(615)와 관련하여 도 1의 모니터(170)의 예시 동작을 설명하지만, 도 1의 모니터(170)는 동시에 많은 수의 SSD들을 위해 도 22a 내지 도 22b의 예시 절차를 수행할 수 있다. 예를 들어, 도 1의 모니터(170)는 많은 수의 SSD들이 모두 가비지 컬렉션을 수행할 필요가 있다는 알림을 동시에 수신할 수 있다. 도 1의 모니터(170)는 모든 SSD들을 위해 도 22a 내지 도 22b의 예시 절차를 동시에 수행할 수 있다. Although FIGS. 22A-22B illustrate example operation of the monitor 170 of FIG. 1 with respect to only one selected SSD 615 of FIG. 6 , the monitor 170 of FIG. 22A-22B may be performed. For example, the monitor 170 of FIG. 1 may simultaneously receive a notification that a large number of SSDs need to perform garbage collection. The monitor 170 of FIG. 1 may simultaneously perform the exemplary procedure of FIGS. 22A-22B for all SSDs.

위 설명은, 어떻게 저장 장치가 가비지 컬렉션을 수행할 때 I/O 요청이 재배치 될 수 있는지를 나타낸다. 하지만, 저장 장치가 가비지 컬렉션을 수행하는 중임에도 불구하고, I/O 요청을 국부적으로 처리하는 것이 계속 선호되는 상황들이 있을 수 있다. 예를 들어, 저장 장치가 단지 수 마이크로초 동안 가비지 컬렉션을 더 수행 할 것인 경우, 다른 데이터의 복제본과 통신하기 위해 필요한 시간은 저장 장치가 단순히 가비지 컬렉션을 완료하고 I/O 요청을 처리하도록 하는데 필요한 시간보다 많을 것이다. I/O 요청을 보조 복제본으로 보내기 보다, 주 복제본에서 I/O 요청을 처리하는 것이 더 효율적일 수 있는 다른 이유들이 또한 있다. 또한, 주 복제본이 가비지 컬렉션을 수행하지 않는 상황들이 있을 수 있지만, 그럼에도 불구하고 주 복제본이 아닌 보조복제본에서 I/O 요청을 처리하는 것이 더 효율적일 수 있다.The above description shows how I/O requests can be relocated when the storage device performs garbage collection. However, there may be situations in which it is still preferable to handle I/O requests locally even though the storage device is performing garbage collection. For example, if the storage device is only going to be garbage collected for a few more microseconds, then the time needed to communicate with another replica of the data is just enough for the storage device to complete the garbage collection and process the I/O request. It will take more time than necessary. There are also other reasons why it may be more efficient to process I/O requests on the primary replica rather than sending the I/O requests to the secondary replica. Also, there may be situations where the primary will not be garbage collected, but it may nevertheless be more efficient to handle I/O requests from the secondary rather than the primary.

도 23은, 본 발명의 일 실시 예에 따라, 도 1의 저장 노드에 I/O 요청을 전송하는 클라이언트, 그 다음 요청된 데이터의 복제본을 포함하는 다른 노드에 I/O 요청을 재배치하는 클라이언트를 보여주는 블록도 이다. 도 23에서, 클라이언트(2305)는 읽기 요청(905)을 저장 (시스템) 노드(125)로 전송할 수 있다. 임의의 다른 I/O 요청은 일반성을 잃지 않고 읽기 요청(905)으로 대체될 수 있다.23 is a view illustrating a client transmitting an I/O request to the storage node of FIG. 1 , and then relocating an I/O request to another node including a copy of the requested data according to an embodiment of the present invention; It is a block diagram showing In FIG. 23 , the client 2305 may send a read request 905 to the storage (system) node 125 . Any other I/O requests may be replaced with read requests 905 without loss of generality.

저장 노드(125)(그리고 저장 노드들(130 및 135) 또한)는 저장 장치(들)뿐만 아니라 비용 분석기(2310) 및 I/O 재배치기(215)를 포함할 수 있다. 도 23에서, 저장 노드(125)는 문제가 되는 데이터의 주 복사본을 저장할 수 있으므로, 저장 노드(125)의 저장 장치는 주 복제본(2315)으로 식별 된다. 반면, 저장 노드들(130 및 135)은 문제가 되는 데이터의 백업 복사본들을 저장하기 때문에, 저장 노드들(130 및 135)의 저장 장치들은 보조 복제본들(2320 및 2325)로 식별 된다.Storage node 125 (and also storage nodes 130 and 135 ) may include a storage device(s) as well as a cost analyzer 2310 and an I/O relocator 215 . In FIG. 23 , storage node 125 is capable of storing a primary copy of the data in question, so the storage device of storage node 125 is identified as primary replica 2315 . On the other hand, since storage nodes 130 and 135 store backup copies of the data in question, the storage devices of storage nodes 130 and 135 are identified as secondary replicas 2320 and 2325 .

아래에서 도 24 내지 도 38을 참조하여 설명된 바와 같이, 비용 분석기(2310)은 국부적으로(주 복제본에서) 및 원격으로(보조 복제본들 중 하나에서) I/O 요청을 처리하는 것과 관련된 비용들을 결정할 수 있다. 이 문맥에서, “비용”은 “시간”으로 해석될 수 있다. 즉, 보조 복제본들(2320 및 2325) 중 하나와 관련된 주 복제본(2315)에서 I/O 요청(905)을 처리하기 위한 시간이 다소 걸릴 것인가 하는 것이다. 하지만, 본 발명의 다른 실시 예들에서, “비용”은 I/O 퍼포먼스 매트릭스(performance metrics)(IOPS, 지연 시간, 처리율 등), 상이한 서비스 레벨들 등과 같은, 시간 이외의 다른 개념을 의미할 수 있다. 그 뒤 I/O 재배치기(215)는 주 복제본(2315)에서 I/O 요청(905)을 수행하기 위한 비용을 보조 복제본들(2320 및 2325)들과 비교하고, 이에 따라 복제본을 선택할 수 있다.As described below with reference to FIGS. 24-38 , the cost analyzer 2310 calculates costs associated with processing I/O requests locally (at the primary replica) and remotely (at one of the secondary replicas). can decide In this context, “cost” can be interpreted as “time”. That is, it will take some time to process the I/O request 905 from the primary replica 2315 associated with one of the secondary replicas 2320 and 2325. However, in other embodiments of the present invention, “cost” may refer to a concept other than time, such as I/O performance metrics (IOPS, latency, throughput, etc.), different service levels, etc. . The I/O relocator 215 may then compare the cost of performing the I/O request 905 on the primary replica 2315 with the secondary replicas 2320 and 2325 and select the replica accordingly. .

도 24는 도 23의 비용 분석기(2310)를 구체적으로 보여주는 블록도 이다. 도 24에서, 비용 분석기(2310)는 로컬(국부) 시간 추정기(2405), 원격 시간 추정기(2410), 문의 로직(2415), 수신 로직(2420), 데이터베이스(2425), 로컬 예상 분석기(2435), 및 원격 예상 분석기(2435)를 포함할 수 있다. 로컬 시간 추정기(2405) 및 원격 시간 추정기(2410)는 현재 정보에 기초하여, 도 23의 주 복제본(2315) 및 도 23의 보조 복제본들(2320 및 2325)에서 도 23의 I/O 요청(905)을 처리하기 위해 필요한 시간을 계산하려고 할 수 있다. 로컬 시간 추정기(2405) 및 원격 시간 추정기(2410)는 이하 도 26 및 도 27을 참조하여 아래에서 각각 더 설명된다.24 is a block diagram specifically illustrating the cost analyzer 2310 of FIG. 23 . In FIG. 24 , the cost analyzer 2310 includes a local (local) time estimator 2405 , a remote time estimator 2410 , query logic 2415 , reception logic 2420 , database 2425 , local forecast analyzer 2435 . , and a remote prediction analyzer 2435 . The local time estimator 2405 and the remote time estimator 2410 perform the I/O request 905 of FIG. 23 at the primary replica 2315 of FIG. 23 and the secondary replicas 2320 and 2325 of FIG. 23 based on the current information. ), you may want to calculate the time required to process it. A local time estimator 2405 and a remote time estimator 2410 are further described below with reference to FIGS. 26 and 27, respectively, below.

문의 로직(2415) 및 수신 로직(2420)은 정보를 위한 요청들을 전송하고, 그 요청들에 대한 응답들을 수신하는데 사용될 수 있다. 예를 들어, 도 28을 참조하여 아래에 설명된 바와 같이, 문의 로직(2415)은 빈 페이지들의 수를 도 23의 주 복제본(2315)에 문의할 수 있고, 수신 로직(2420)은 도 23의 주 복제본(2315)으로부터 빈 페이지들의 수를 수신할 수 있다. 문의 로직(2415)은 도 23의 주 복제본(2315) 또는 보조 복제본들(2320 및 2325)의 빈 페이지들 수의 문턱 값 및 빈 페이지들 수, 도 23의 주 복제본(2315)에서 계류중인 I/O 요청들의 수 및 각각의 I/O 요청들을 처리하는데 필요한 시간, 도 23의 보조 복제본들(2320 및 2325)을 포함하는, (스토리지) 시스템 노드들(130 및 135)과 통신 하는데 필요한 시간, 및 도 23의 보조 복제본들(2320 및 2325)을 포함하는, 시스템 노드들(130 및 135)과 관련된 프로세서들로부터의 원격 프로세서 로드 및 원격 소프트웨어 스택 로드와 같은 정보를, 최종 사용을 위한 복제본들에 대한 현재 정보를 유지하기 위해 필요에 따라(즉, 로컬 시간 추정기(2405)가 도 23의 주 복제본(2315)에서 도 23의 I/O 요청(905)을 처리하기 위한 로컬 추정 소요 시간을 계산할 필요가 있을 때) 또는 주기적으로(일반적으로, 매 10초 마다, 몇 초마다, 매초마다, 또는 모든 초의 부분마다 같은 어떤 일정한 간격으로) 요청할 수 있다.Query logic 2415 and receive logic 2420 may be used to send requests for information and receive responses to the requests. For example, as described below with reference to FIG. 28 , the query logic 2415 may query the primary replica 2315 of FIG. 23 for the number of empty pages, and the receive logic 2420 of FIG. It may receive the number of blank pages from the primary replica 2315 . Query logic 2415 calculates the threshold number of empty pages and number of empty pages of primary replica 2315 or secondary replicas 2320 and 2325 of FIG. 23 , the pending I/ the number of O requests and the time required to process each I/O request, the time required to communicate with the (storage) system nodes 130 and 135, including the secondary replicas 2320 and 2325 of FIG. 23, and Information such as remote processor load and remote software stack load from processors associated with system nodes 130 and 135, including auxiliary replicas 2320 and 2325 of FIG. 23, to the replicas for end use. As needed to keep current information (i.e., the local time estimator 2405 needs to calculate the local estimated time required to process the I/O request 905 of FIG. 23 on the primary replica 2315 of FIG. ) or periodically (generally every 10 seconds, every few seconds, every second, or at some regular interval, such as every fraction of a second).

데이터베이스(2425)는 로컬 시간 추정기(2405), 원격 시간 추정기(2410), 로컬 예상 분석기(2430), 및 원격 예상 분석기(2435)와 같은, 다양한 비용 분석기(2310)의 모듈들에 의해 사용되는 정보를 저장할 수 있다. 데이터베이스(2425)는 이하 도 31을 참조하여 더 설명된다. 마지막으로, 로컬 예상 분석기(2430) 및 원격 예상 분석기(2435)는, 예전 데이터에 기초하여 국부적으로 또는 원격으로 도 23의 I/O 요청(905)을 처리하기 위해 필요한 시간에 관하여 예측을 할 수 있다. 로컬 예상 분석기(2430) 및 원격 예상 분석기(2435)는 이하 도 32 내지 36을 참조하여 각각 더 설명된다.Database 2425 contains information used by the modules of various cost analyzer 2310 , such as local time estimator 2405 , remote time estimator 2410 , local forecast analyzer 2430 , and remote forecast analyzer 2435 . can be saved. Database 2425 is further described with reference to FIG. 31 below. Finally, the local prediction analyzer 2430 and the remote prediction analyzer 2435 can make predictions regarding the time required to process the I/O request 905 of FIG. 23 either locally or remotely based on historical data. have. Local prediction analyzer 2430 and remote prediction analyzer 2435 are further described with reference to FIGS. 32-36, respectively, below.

도 25는 도 23의 I/O 재배치기(215)를 구체적으로 보여주는 블록도 이다. 도 25에서, I/O 재배치기(215)는 스토리지(2505), 제 1 비교기(2510), 제 2 비교기(2515), 및 선택기(2520)을 포함할 수 있다. 스토리지(2505)는 문턱 시간(2525)와 같은 정보를 저장할 수 있다. 문턱 시간(2525)은, 그 이하에서 보조 복제본에 도 23의 I/O 요청(905)을 전송할 때 값이 없는 문턱 시간일 수 있다. 예를 들어, 문턱 시간(2525)은 도 23의 보조 복제본들(2320 및 2325)과 통신하는데 필요한 시간보다 적은 양의 시간일 수 있다. 도 23의 주 복제본(2315)에서 도 23의 I/O 요청(905)을 처리하는데 필요한 시간이 문턱 시간(2525)보다 작은 경우, 도 23의 보조 복제본들(2320 및 2325)에서 도 23의 I/O 요청(905)을 처리하는데 필요한 시간을 계산할 필요조차 없다. I/O 재배치기(215)는 이 결정을 내리기 위해 제 1 비교기(2510)을 사용하여, 도 23의 주 복제본(2315)에서 도 23의 I/O 요청(905)을 처리하는데 필요한 추정 시간을 비교할 수 있다. FIG. 25 is a block diagram specifically illustrating the I/O relocation 215 of FIG. 23 . In FIG. 25 , I/O relocator 215 may include storage 2505 , a first comparator 2510 , a second comparator 2515 , and a selector 2520 . Storage 2505 may store information such as threshold time 2525 . Threshold time 2525 may be a threshold time that has no value when sending I/O request 905 of FIG. 23 to the secondary replica thereafter. For example, threshold time 2525 may be an amount of time less than the time required to communicate with secondary replicas 2320 and 2325 of FIG. 23 . 23 at secondary replicas 2320 and 2325 of FIG. 23 when the time required for the primary replica 2315 of FIG. 23 to process the I/O request 905 of FIG. 23 is less than the threshold time 2525 It is not even necessary to calculate the time required to process the /O request 905 . The I/O relocator 215 uses the first comparator 2510 to make this determination to estimate the estimated time required to process the I/O request 905 of FIG. 23 on the primary replica 2315 of FIG. can be compared.

제 1 비교기(2510)는 도 2의 주 복제본(2315)에서 도 23의 I/O 요청(905)을 처리하는데 필요한 추정 시간을 도 23의 보조 복제본들(2320 및 2325)에서 도 23의 I/O 요청(905)을 처리하는데 필요한 추정 시간과 비교할 수 있다. 그 뒤 선택기(2520)는 제 2 비교기(2515)의 결과들에 기초하여, 도 23의 주 복제본(2315) 및 도 23의 보조 복제본들(2320 및 2325) 중 하나를 선택할 수 있다.The first comparator 2510 calculates the estimated time required to process the I/O request 905 of FIG. 23 at the primary replica 2315 of FIG. 2 at the secondary replicas 2320 and 2325 of FIG. This can be compared to the estimated time required to process the O request 905 . The selector 2520 may then select one of the primary replica 2315 of FIG. 23 and the secondary replicas 2320 and 2325 of FIG. 23 based on the results of the second comparator 2515 .

도 26은 도 24의 로컬 시간 추정기(2405)를 구체적으로 보여주는 블록도 이다. 로컬 시간 추정기(2405)는 도 23의 I/O 요청(905)을 충족시키기 위해 도 23의 주 복제본(2315)이 얼마나 오래 걸리는지 추정할 수 있다. 이 동작을 지원하기 위해, 로컬 시간 추정기(2405)는 로컬 가비지 컬렉션 시간 계산기(2605), 로컬 예상 가비지 컬렉션 시간 계산기(2610), 큐 처리 시간 계산기(2615), 스토리지(2620), 로컬 추정 소요 시간 계산기(2625), 및 가중치 생성기(2630)을 포함할 수 있다. 로컬 가비지 컬렉션 시간 계산기(2605)는, 도 23의 주 복제본(2315)이 현재 가비지 컬렉션을 수행중인 때, 도 23의 주 복제본(2315)를 위한 로컬 가비지 컬렉션 시간을 계산할 수 있다. 로컬 예상 가비지 컬렉션 시간 계산기(2610)가 도 23의 주 복제본(2315)이 다가올 가비지 컬렉션을 수행할 때 걸릴 시간을 추정한다는 점을 제외하고, 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 로컬 가비지 컬렉션 시간 계산기(2605)와 유사하다. 큐 처리 시간 계산기(2615)는 도 23의 주 복제본(2315)에서 큐 내의 I/O 요청(905)들을 처리하는데 걸릴 시간을 계산할 수 있다(도 23의 주 복제본(2315)이 I/O 요청들을 수신된 순서대로 처리한다고 가정하면, 이는 도 23의 I/O 요청(905)이 처리되기 전에 완료될 것이다). 스토리지(2620)는 로컬 시간 추정기(2405)에 의해 사용되는, 로컬 가비지 컬렉션 가중치(2635), 로컬 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)와 같은, 정보를 저장할 수 있다. 가중치 생성기(2630)에 의해 생성될 수 있는, 이러한 가중치들은 이하 도 33을 참조하여 더 설명된다. 마지막으로, 로컬 추정 소요 시간 계산기(2625)는 실제 현재 정보 보다는 이전 정보에 기초하여, 도 23의 I/O 요청(905)의 처리를 완료하는데 필요한 시간의 추정을 생성할 수 있다.FIG. 26 is a block diagram specifically illustrating the local time estimator 2405 of FIG. 24 . The local time estimator 2405 may estimate how long it will take for the primary replica 2315 of FIG. 23 to satisfy the I/O request 905 of FIG. 23 . To support this operation, the local time estimator 2405 includes a local garbage collection time calculator 2605 , a local estimated garbage collection time calculator 2610 , a queue processing time calculator 2615 , storage 2620 , and a local estimated time spent a calculator 2625 , and a weight generator 2630 . The local garbage collection time calculator 2605 may calculate a local garbage collection time for the primary replica 2315 of FIG. 23 when the primary replica 2315 of FIG. 23 is currently performing garbage collection. Local Estimated Garbage Collection Time Calculator 2610 calculates Local Garbage Collection Time, except that Local Estimated Garbage Collection Time Calculator 2610 estimates how long it will take for the primary replica 2315 of FIG. 23 to perform an upcoming garbage collection. Similar to calculator 2605 . Queue processing time calculator 2615 may calculate the time it will take for primary replica 2315 of FIG. 23 to process I/O requests 905 in the queue (primary replica 2315 of FIG. Assuming processing in the order received, this will be completed before I/O request 905 in FIG. 23 is processed). Storage 2620 may store information, such as local garbage collection weights 2635 , local expected garbage collection weights 2640 , and queue processing weights 2645 , used by local time estimator 2405 . These weights, which may be generated by weight generator 2630 , are further described below with reference to FIG. 33 . Finally, the local estimated time required calculator 2625 may generate an estimate of the time required to complete the processing of the I/O request 905 of FIG. 23 based on prior information rather than the actual current information.

도 27은 도 24의 원격 시간 추정기(2410)를 구체적으로 보여주는 블록도 이다. 원격 시간 추정기(2410)는 도 23의 I/O 요청(905)을 만족 시키기 위해 도 23의 보조 복제본들(2320 및 2325)이 걸릴 시간을 추정할 수 있다. 이 동작을 지원하기 위해, 원격 시간 추정기(2410)는 통신 시간 계산기(2705), 원격 프로세싱 시간 계산기(2710), 원격 가비지 컬렉션 시간 계산기(2715), 스토리지(2720), 원격 추정 소요 시간 계산기(2725), 및 가중치 생성기(2730)를 포함할 수 있다. 통신 시간 계산기(2705)는, 도 23의 보조 복제본들(2320 및 2325)과의 통신에 필요한 시간을 계산할 수 있다. 원격 프로세서 시간 계산기(2710)는, 도 23에서 (보조 복제본들(2320 및 2325)을 각각 포함하는) 시스템 노드들(130 및 135)의 프로세서들 상의 현재 로드들에 기초하여, 도 23의 I/O 요청(905)을 처리하는데 필요한 시간을 계산할 수 있다. 도 23의 보조 복제본들(2320 및/또는 2325)이 현재 가비지 컬렉션을 수행 중이라고 가정할 때, 원격 가비지 컬렉션 시간 계산기(2715)는 도 23의 보조 복제본들(2320 및 2325)을 위한 원격 가비지 컬렉션 시간을 계산할 수 있다. 스토리지(2720)는 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 가중치(2745)와 같은, 원격 시간 추정기(2405)에 의해 사용되는 정보를 저장할 수 있다. 가중치 생성기(2630)에 의해 생성될 수 있는, 이러한 가중치들은 이하 도 37을 참조하여 더 설명된다. 마지막으로, 원격 추정 소요 시간 계산기(2725)는 실제의 현재 정보 보다는 이전 정보에 기초하여, 도 23의 I/O 요청(905)의 처리를 완료하는데 필요한 시간의 추정을 생성할 수 있다. FIG. 27 is a block diagram specifically illustrating the remote time estimator 2410 of FIG. 24 . The remote time estimator 2410 may estimate the time it will take the secondary replicas 2320 and 2325 of FIG. 23 to satisfy the I/O request 905 of FIG. 23 . To support this operation, remote time estimator 2410 includes communication time calculator 2705 , remote processing time calculator 2710 , remote garbage collection time calculator 2715 , storage 2720 , and remote estimated time spent calculator 2725 . ), and a weight generator 2730 . The communication time calculator 2705 may calculate the time required for communication with the secondary replicas 2320 and 2325 of FIG. 23 . The remote processor time calculator 2710 calculates the I/ of FIG. 23 , based on current loads on the processors of system nodes 130 and 135 (including auxiliary replicas 2320 and 2325 , respectively) in FIG. 23 . We can calculate the time required to process the O request 905 . Assuming that secondary replicas 2320 and/or 2325 of FIG. 23 are currently performing garbage collection, remote garbage collection time calculator 2715 calculates the remote garbage collection time for secondary replicas 2320 and 2325 of FIG. 23 . can be calculated. Storage 2720 may store information used by remote time estimator 2405 , such as communication time weights 2735 , remote processor time weights 2740 , and remote garbage collection weights 2745 . These weights, which may be generated by weight generator 2630 , are further described below with reference to FIG. 37 . Finally, remote estimated time required calculator 2725 may generate an estimate of the time required to complete processing of I/O request 905 of FIG. 23 based on prior information rather than actual current information.

도 28 및 도 29는 로컬 가비지 컬렉션 시간 및 로컬 예상 가비지 컬렉션 시간을 계산하는, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 계산기(2610)를 보여주는 블록도 이다. 이 두 계산기들의 동작들은 서로 유사하기 때문에, 함께 설명될 것이다. 두 계산기들의 동작들의 유일한 차이점은, 로컬 가비지 컬렉션 시간 계산기(2605)가 도 23의 주 복제본(2315)에서 이미 진행중인 가비지 컬렉션 동작을 완료하기 위해 필요한 시간을 결정한다는 것이며, 반면 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 시작할 예정인(하지만 아직 실제로 시작되지 않은) 가비지 컬렉션 동작을 수행하는데 필요한 시간을 결정한다.28 and 29 are block diagrams illustrating the local garbage collection time calculator 2605 and the local expected garbage collection calculator 2610 of FIG. 26 for calculating a local garbage collection time and a local expected garbage collection time. Since the operations of these two calculators are similar to each other, they will be described together. The only difference between the operations of the two calculators is that the local garbage collection time calculator 2605 determines the time required to complete a garbage collection operation already in progress on the primary replica 2315 of FIG. 23 , whereas the local estimated garbage collection time calculator 2605 . 2610 determines the time required to perform a garbage collection operation that is scheduled to start (but has not actually started yet).

각각의 경우에서, 도 24의 문의 로직(2415)은 실제 빈 페이지들의 수(2805) 및 빈 페이지 문턱 값(2810)을 위해 도 23의 주 복제본(2315)에 문의할 수 있다. (그 대신, 빈 페이지 문턱 값(2810)은 일반적으로 주어진 저장 장치의 모델에 대해 일정한 값이므로, 도 23의 주 복제본(2315)에 문의하기 보다, 빈 페이지 문턱 값(2810)은 도 26의 스토리지(2620)에 저장되고 그로부터 접근될 수 있다.) 빈 페이지들의 수(2805)는 도 23의 주 복제본(2315)에 얼마나 많은 빈 페이지들이 현재 존재하는지 나타낼 수 있다. 빈 페이지 문턱 값(2810)은 도 23의 주 복제본(2315)에서 필요한 빈 페이지들의 최소 개수를 나타낼 수 있다. 빈 페이지들의 수(2805)가 빈 페이지 문턱 값(2810) 이하로 떨어질 경우, 도 23의 주 복제본(2315)은 데이터 쓰기들을 위한 더 많은 페이지들을 비우기 위해 가비지 컬렉션을 수행할 것이다. In each case, the query logic 2415 of FIG. 24 may query the primary replica 2315 of FIG. 23 for the actual number of empty pages 2805 and the empty page threshold 2810 . (Instead, the empty page threshold 2810 is generally a constant value for a given model of storage, so rather than querying the primary replica 2315 of FIG. It can be stored and accessed from 2620 ). The number of empty pages 2805 may indicate how many empty pages are currently present in the primary replica 2315 of FIG. 23 . The blank page threshold 2810 may indicate the minimum number of blank pages required in the primary replica 2315 of FIG. 23 . When the number of empty pages 2805 drops below the empty page threshold 2810 , the primary replica 2315 of FIG. 23 will perform a garbage collection to free more pages for data writes.

일단 도 24의 수신 로직(2420)이 빈 페이지들의 수(2805) 및 빈 페이지 문턱 값(2810)을 수신하면, 로컬 가지비 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)은 로컬 평균 가비지 컬렉션 시간(2815)을 결정할 수 있다. 로컬 평균 가비지 컬력션 시간(2815)은 도 23의 주 복제본(2315)에서 하나의 페이지를 비우는데 평균적으로 필요한 시간의 양을 나타낼 수 있다. 로컬 평균 가비지 컬렉션 시간(2815)은, 도 26의 스토리지(2620) 또는 도 24의 데이터베이스(2425)에 저장될 수 있는 고정 값에 접근 함으로써 결정될 수 있고, 또한 도 23의 주 복제본(2315)에서의 가비지 컬렉션 동작들에 관한 이전 정보로부터 계산될 수 있다. 이전 정보는 도 24의 데이터베이스(2425)에 저장될 수 있다.Once the receiving logic 2420 of FIG. 24 has received the number of empty pages 2805 and the empty page threshold 2810, the local garbage collection time calculator 2605 and the local expected garbage collection time calculator 2610 An average garbage collection time 2815 may be determined. The local average garbage collection time 2815 may indicate an average amount of time required to empty one page in the primary replica 2315 of FIG. 23 . The local average garbage collection time 2815 can be determined by accessing a fixed value that can be stored in the storage 2620 of FIG. 26 or the database 2425 of FIG. 24 , and also at the primary replica 2315 of FIG. It can be calculated from previous information about garbage collection operations. Previous information may be stored in the database 2425 of FIG. 24 .

로컬 평균 가비지 컬렉션 시간(2815)은 이름에 “평균”이라는 용어를 포함하지만, 로컬 평균 가비지 컬렉션 시간(2815)은 어떠한 바람직한 방식으로 계산될 수 있다. 예를 들어, 로컬 평균 가비지 컬렉션 시간(2815)은, 도 23의 주 복제본(2315)에서 수행되는 모든 가비지 컬렉션 동작들에 대해 하나의 페이지를 복구하는데 걸리는 시간의 평균값, 중간값, 또는 최빈값(mode)으로서 계산될 수 있다. 또는, 로컬 평균 가비지 컬렉션 시간(2815)은, 도 23의 주 복제본(2315)의 이전 로컬 가비지 컬렉션 정보에 대해 선형 회귀 분석을 사용하여 계산될 수 있다. 또는, 로컬 평균 가비지 컬렉션 시간(2815)은 가장 최근의 가비지 컬렉션 동작들(예로서, 가장 최근의 10(또는 다른 임의의 바람직한 숫자)번의 가비지 컬렉션 동작들)의 슬라이딩 윈도(sliding window)에 기초하여 계산될 수 있다. 로컬 평균 가비지 컬렉션 시간(2815)을 계산하기 위한 다른 기술들도 여전히 사용될 수 있다.Although the local average garbage collection time 2815 includes the term “average” in its name, the local average garbage collection time 2815 may be calculated in any desired manner. For example, the local average garbage collection time 2815 is the average, median, or mode of the time it takes to recover one page for all garbage collection operations performed on the primary replica 2315 of FIG. 23 . ) can be calculated as Alternatively, the local average garbage collection time 2815 may be calculated using linear regression analysis on previous local garbage collection information of the primary replica 2315 of FIG. 23 . Alternatively, the local average garbage collection time 2815 is based on a sliding window of the most recent garbage collection operations (eg, the most recent 10 (or any other desired number) garbage collection operations). can be calculated. Other techniques for calculating the local average garbage collection time 2815 may still be used.

로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는, 로컬 평균 가비지 컬렉션 시간(2815)과 곱해진, 도 23의 주 복제본(2315)상의 실제 빈 페이지들의 수(2805) 및 빈 페이지 문턱 값(2810) 사이의 차이로서 로컬 가비지 컬렉션 시간(2820) 및 로컬 예상 가비지 컬렉션 시간(2905)을 계산할 수 있다.The local garbage collection time calculator 2605 and the local expected garbage collection time calculator 2610 calculate the actual number of empty pages 2805 on the primary replica 2315 of FIG. 23 multiplied by the local average garbage collection time 2815 and A local garbage collection time 2820 and a local expected garbage collection time 2905 may be calculated as the difference between the empty page threshold value 2810 .

선택적으로, 로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는, 삭제 블록들이 삭제 되기 전에 다른 페이지들로 삭제 블록들의 유효한 페이지들을 프로그램 하는데 필요한 시간을 설명할 수 있는, 프로그래밍 지연(2825)을 포함시킬 수도 있다. 로컬 평균 가비지 컬렉션 시간(2815)와 같이 프로그래밍 지연(2825)은, 미리 결정된 고정 값이거나 로컬 평균 가비지 컬렉션 시간(2815)과 거의 같은 방식으로 이전 정보로부터 계산될 수 있다. 프로그래밍 지연(2825)은 로컬 가비지 컬렉션 시간(2820) 및 로컬 예상 가비지 컬렉션 시간(2905)에 일정한 값으로서 포함될 수 있거나, 실제 빈 페이지들의 수(2805) 및 빈 페이지 문턱 값(2810) 사이의 차이와 곱해질 수 있다(프로그래밍을 요구하는 페이지들의 수가 가변적일 수 있다는 사실을 고려하기 위해). Optionally, local garbage collection time calculator 2605 and local expected garbage collection time calculator 2610 can account for the time required to program valid pages of erase blocks into other pages before they are erased. A delay 2825 may also be included. The programming delay 2825 , like the local average garbage collection time 2815 , may be a predetermined fixed value or may be calculated from previous information in much the same way as the local average garbage collection time 2815 . The programming delay 2825 may be included as a constant value in the local garbage collection time 2820 and the local expected garbage collection time 2905, or the difference between the actual number of empty pages 2805 and the empty page threshold 2810 may be multiplied (to account for the fact that the number of pages requiring programming may vary).

로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는, 두 변형들을 모두 포함하는 하나의 로직을 사용하여 구현될 수 있는 본 발명의 실시 예들에서, 아주 유사하게 동작한다. 로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 논리 회로들 또는 프로세서(예로서, SSD상의 저장 장치 내부 프로세서(In-Storage Processor))에서 실행되는 소프트웨어를 사용하여 각각 구현될 수 있다. 또한, 도 27의 원격 가비지 컬렉션 시간 계산기(2715)는, 문의들이 도 23의 보조 복제본들(2320 및 2325)의 가비지 컬렉션 상태에 관련된다는 것을 제외하고, 로컬 가비지 컬렉션 시간 계산기(2805)와 유사하게 동작한다. 그러므로, 도 27의 원격 가비지 컬렉션 시간 계산기(2715)는 로컬 가비지 컬렉션 시간 계산기(2605)의 설명에 기초하여 이해될 수 있으며, 추가적인 상세한 설명은 생략된다.Local garbage collection time calculator 2605 and local expected garbage collection time calculator 2610 operate very similarly, in embodiments of the invention, which may be implemented using one logic that includes both variants. Local garbage collection time calculator 2605 and local expected garbage collection time calculator 2610 are implemented using logic circuits or software running on a processor (eg, an In-Storage Processor on an SSD, respectively), respectively. can be Also, remote garbage collection time calculator 2715 of FIG. 27 is similar to local garbage collection time calculator 2805, except that queries relate to the garbage collection status of secondary replicas 2320 and 2325 of FIG. It works. Therefore, the remote garbage collection time calculator 2715 of FIG. 27 can be understood based on the description of the local garbage collection time calculator 2605 , and further detailed descriptions are omitted.

도 30은 큐(queue) 처리 시간을 계산하는 도 26의 큐 처리시간 계산기(2615)를 보여주는 블록도 이다. 큐 처리 시간 계산기(2615)는 큐 처리 시간(3015)을 결정하기 위해 계류중인 I/O 요청들의 수(3005) 및 하나의 I/O 요청을 처리하기 위한 소요 시간(3010)을 획득하고, 두 개의 값들을 곱할 수 있다.30 is a block diagram illustrating the queue processing time calculator 2615 of FIG. 26 for calculating a queue processing time. The queue processing time calculator 2615 obtains the number of pending I/O requests 3005 and the time taken to process one I/O request 3010 to determine the queue processing time 3015, values can be multiplied.

도 24의 문의 로직(2415)은 도 24의 수신 로직(2420)이 수신할 수 있는, 계류중인 요청들의 수를 위해 도 23의 주 복제본(2315)에 문의할 수 있다. 소요 시간(3010)은 일반적으로 고정 값이고 도 24의 데이터베이스(2425) 또는 도 26의 스토리지(2620)에 저장될 수 있으나, 소요 시간(3010)은 도 24의 데이터베이스(2425)에 저장된 이전 정보로부터 계산될 수도 있다. 도 28의 로컬 평균 가비지 컬렉션 시간(2815)과 아주 유사하게, 소요 시간(3010)은, 도 23의 주 복제본(2315)에서 I/O 명령을 이전에 수행하는데 필요한 시간들의 평균 값, 중간 값, 또는 최빈값으로서 계산될 수 있거나, 이러한 이전 정보로부터 선형 회귀 분석을 사용하여 계산될 수 있다. 또한, 사용된 이전 정보는 모든 이전 데이터 또는 단지 이전 정보의 슬라이딩 윈도를 포함할 수 있다.Query logic 2415 of FIG. 24 may query primary replica 2315 of FIG. 23 for the number of pending requests that receive logic 2420 of FIG. 24 may receive. The required time 3010 is generally a fixed value and may be stored in the database 2425 of FIG. 24 or the storage 2620 of FIG. 26 , but the time required 3010 is determined from previous information stored in the database 2425 of FIG. 24 . may be calculated. Much like the local average garbage collection time 2815 of FIG. 28 , the time taken 3010 is the average, median value of the times required to previously perform an I/O instruction on the primary replica 2315 of FIG. 23 , Or it can be calculated as the mode, or it can be calculated from this previous information using linear regression analysis. Also, the previous information used may include a sliding window of all previous data or just previous information.

도 31은 도 24의 데이터베이스(2425)를 구체적으로 보여주는 블록도 이다. 도 31에서, 데이터베이스(2425)는 다양한 정보를 저장하는 것으로 나타내어져 있다. 이 정보는 아래와 같은 정보를 포함할 수 있다.FIG. 31 is a block diagram specifically illustrating the database 2425 of FIG. 24 . In Fig. 31, database 2425 is shown to store various information. This information may include the following information.

이전(Historical) 로컬 가비지 컬렉션 정보(3105): 도 23의 주 복제본(2315)에서 가비지 컬렉션이 수행될 때, 가비지 컬렉션이 얼마나 오래 걸렸는지에 관한 이전 정보.Historical Local Garbage Collection Information 3105: When garbage collection is performed on the primary replica 2315 of FIG. 23, historical information on how long the garbage collection took.

최악의 경우 로컬 가비지 컬렉션 정보(3110): 조 23의 주 복제본(2315)에서 가비지 컬렉션이 수행될 때, 최악의 경우에 가비지 컬렉션이 걸린 시간.Worst case local garbage collection information 3110: When garbage collection is performed on the primary replica 2315 of Article 23, the time taken for garbage collection in the worst case.

평균적인 경우 로컬 가비지 컬렉션 정보(3115): 도 23의 주 복제본(2315)에서 가비지 컬렉션이 수행될 때, 가비지 컬렉션이 평균적으로 걸린 시간.Average case local garbage collection information 3115: When garbage collection is performed on the primary replica 2315 of FIG. 23, the average time it takes for garbage collection.

이전 처리 시간 정보(3120): 도 23의 주 복제본(2315)이 하나의 I/O 요청(905)을 처리하는데 필요했던 시간에 관한 이전 정보Previous Processing Time Information 3120: Previous information regarding the time required for the primary replica 2315 of FIG. 23 to process one I/O request 905

최악의 경우 처리 시간 정보(3125): 최악의 경우에, 도 23의 주 복제본(2315)이 하나의 I/O 요청(905)을 처리하는데 필요했던 시간Worst case processing time information 3125: In the worst case, the time required for the primary replica 2315 of FIG. 23 to process one I/O request 905

평균적인 경우 처리 시간 정보(3130): 평균적으로 도 23의 주 복제본(2315)이 하나의 I/O 요청(905)을 처리하는데 필요했던 시간Average case processing time information 3130: on average, the time required for the primary replica 2315 of FIG. 23 to process one I/O request 905

이전 통신 시간 정보(3135): 도 23의 보조 복제본들(2320 및 2325)과 통신을 하는데 걸린 시간에 관한 이전 정보.Previous Communication Time Information 3135: Previous information regarding the time taken to communicate with the secondary replicas 2320 and 2325 of FIG. 23 .

최악의 경우 통신 시간 정보(3140): 최악의 경우에 도 23의 보조 복제본들(2320 및 2325)과 통신하는데 걸린 시간.Worst case communication time information 3140: The time taken to communicate with the secondary replicas 2320 and 2325 of FIG. 23 in the worst case.

평균적인 경우 통신 시간 정보(3145): 평균적으로 도 23의 보조 복제본들(2320 및 2325)과 통신하는데 걸린 시간.Average Case Communication Time Information 3145: The average time taken to communicate with the secondary replicas 2320 and 2325 of FIG. 23 .

이전 원격 프로세서 시간 정보(3150): 도 23의 보조 복제본들(2320 및 2325)을 포함하는 시스템 노드들(130 및 135)과 관련되는 프로세서들 상의 프로세서 및 소프트웨어 스택 로드(부하)들에 관한 이전 정보, 그리고 도 23의 보조 복제본들(2320 및 2325)에서 하나의 I/O 요청(905)을 처리하는데 필요한 시간에 영향을 주었던 방법.Previous remote processor time information 3150: Previous information regarding the processor and software stack loads (loads) on the processors associated with system nodes 130 and 135 including secondary replicas 2320 and 2325 of FIG. 23 . , and how it affects the time required to process one I/O request 905 in secondary replicas 2320 and 2325 of FIG. 23 .

최악의 경우 원격 프로세서 시간 정보(3155): 최악의 경우에, 도 23 의 보조 복제본들(2320 및 2325)을 포함하는 시스템 노드들(130 및 135)과 관련된 프로세서들의 원격 프로세서 및 소프트웨어 스택 로드들의 시간 영향.Worst case remote processor time information 3155: In the worst case, the time of remote processor and software stack loads of processors associated with system nodes 130 and 135 including secondary replicas 2320 and 2325 of FIG. 23 . effect.

평균적인 경우 원격 프로세서 시간 정보(3160): 도 23의 보조 복제본들(2320 및 2325)을 포함하는 시스템 노드들(130 및 135)과 관련된 프로세서들의 원격 프로세서 및 소프트웨어 스택 로드들의 평균적인 시간 영향.Remote Processor Time Information 3160 in Average Case: The average temporal impact of remote processor and software stack loads of processors associated with system nodes 130 and 135 including auxiliary replicas 2320 and 2325 of FIG. 23 .

이전 원격 가비지 컬렉션 정보(3165): 도 23의 보조 복제본들(2320 및 2325)에서 가비지 컬렉션이 수행될 때, 가비지 컬렉션이 걸린 시간에 관한 이전 정보.Previous remote garbage collection information 3165: When garbage collection is performed on the secondary replicas 2320 and 2325 of FIG. 23, previous information about the time it took for the garbage collection to take place.

최악의 경우 원격 가비지 컬렉션 정보(3170): 도 23의 보조 복제본들(2320 및 2325)에서 가비지 컬렉션이 수행될 때, 최악의 경우에 가지비 컬렉션이 걸린 시간.Worst case remote garbage collection information 3170: When garbage collection is performed on secondary replicas 2320 and 2325 of FIG. 23, the time taken for garbage collection in the worst case.

평균적인 경우 원격 가비지 컬렉션 정보(3175): 도 23의 보조 복제본들(2320 및 2325)에서 가비지 컬렉션이 수행될 때, 평균적으로 가비지 컬렉션이 걸린 시간.Average case remote garbage collection information 3175: When garbage collection is performed on the secondary replicas 2320 and 2325 of FIG. 23, the average time taken for garbage collection.

데이터베이스(2425)에 저장 될 수 있는 정보의 빠른 검토에서 알 수 있듯이, 이 정보 중 일부는 도 24의 로컬 시간 추정기(2405)와 관련 있고, 이 정보 중 일부는 도 24의 원격 시간 추정기(2410)과 관련 있다. 도 24 및 도 31는 이러한 모든 정보가 하나의 데이터베이스(즉 데이터베이스(2425))에 저장되는 것을 제안하지만, 본 발명의 실시 예들은 이 정보를 다수의 데이터베이스들로 나누고, 정보를 다양한 위치들에 저장할 수 있다. 예를 들어, 정보(3105 내지 3130)는 (도 26의 스토리지(2620) 내부에 있을 수 있는)도 24의 로컬 시간 추정기(2405) 내부의 데이터베이스에 저장될 수 있고, 정보(3135 내지 3175)는 (도 27의 스토리지(2720) 내부에 있을 수 있는) 도 24의 원격 시간 추정기(2410) 내부의 데이터베이스에 저장될 수 있다.As can be seen from a quick review of information that may be stored in database 2425 , some of this information relates to local time estimator 2405 of FIG. 24 , and some of this information relates to remote time estimator 2410 of FIG. 24 . is related to 24 and 31 suggest that all such information is stored in one database (ie, database 2425), embodiments of the present invention divide this information into multiple databases and store the information in various locations. can For example, information 3105 - 3130 may be stored in a database within local time estimator 2405 of FIG. 24 (which may be within storage 2620 of FIG. 26 ), and information 3135 - 3175 may be It may be stored in a database within the remote time estimator 2410 of FIG. 24 (which may be within storage 2720 of FIG. 27 ).

도 32는 도 24의 로컬 예상 분석기(2430)를 구체적으로 보여주는 블록도 이다. 도 26의 로컬 가비지 컬렉션 시간 계산기(2605), 로컬 예상 가비지 컬렉션 시간 계산기(2610), 및 큐 처리 시간 계산기(2615) 모두는 도 23의 주 복제본(2315)이 도 23의 I/O 처리 요청(905)을 처리하기 위해 걸리는 시간을 추정하기 위한 도 23의 주 복제본(2315)에 관한 현재 정보를 사용할 수 있다. 반면, 로컬 예상 분석기(2430)는 이전 정보만에 기초하여 도 23의 주 복제본(2315)이 도 23의 I/O 요청(905)을 처리하는데 필요한 시간을 추정할 수 있다. 이러한 방식으로 이전 정보를 사용하는 것은 도 26의 로컬 가비지 컬렉션 시간 계산기(2605), 로컬 예상 가비지 컬렉션 시간 계산기(2610), 및 큐 처리 시간 계산기(2615)에 의해 제공되는 정보에 대조(counterpoint)를 제공할 수 있다.32 is a block diagram specifically illustrating the local prediction analyzer 2430 of FIG. 24 . The local garbage collection time calculator 2605, the local expected garbage collection time calculator 2610, and the queue processing time calculator 2615 of FIG. 26 all indicate that the primary replica 2315 of FIG. The current information about the primary replica 2315 of FIG. 23 can be used to estimate the time it will take to process 905 . On the other hand, the local prediction analyzer 2430 can estimate the time required for the primary replica 2315 of FIG. 23 to process the I/O request 905 of FIG. 23 based only on previous information. Using previous information in this manner counterpoints the information provided by local garbage collection time calculator 2605, local expected garbage collection time calculator 2610, and queue processing time calculator 2615 of FIG. can provide

또한, 로컬 예상 분석기(2430)는, 주 복제본(2315)이 도 26의 로컬 가비지 컬렉션 시간 계산기(2605), 로컬 예상 가비지 컬렉션 시간 계산기(2610), 및 큐 처리 시간 계산기(2615)에 의해 필요로 되는 정보를 제공할 수 없는 상황들에서, 도 23의 주 복제본(2315)이 도 23의 I/O 요청(905)을 처리하는데 필요한 예상 시간을 제공할 수 있다. 예를 들어, 주 복제본(2315)이 도 28의 빈 페이지들의 수(2805)에 관한 정보를 제공하지 않는 경우, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 도 23의 주 복제본(2315)에서 가비지 컬렉션을 수행하는데 필요한 시간을 추정하지 않을 수 있다. 반면, 로컬 예상 분석기(2430)는 이전 정보만을 사용하고, 도 23의 주 복제본(2315)으로부터의 정보에 접근할 수 있는 것에 의존하지 않는다. In addition, the local prediction analyzer 2430 provides that the primary replica 2315 is required by the local garbage collection time calculator 2605, the local expected garbage collection time calculator 2610, and the queue processing time calculator 2615 of FIG. In situations where it is not possible to provide the required information, the primary replica 2315 of FIG. 23 may provide the estimated time needed to process the I/O request 905 of FIG. 23 . For example, if the primary replica 2315 does not provide information about the number of empty pages 2805 of FIG. 28 , then the local garbage collection time calculator 2605 and the local expected garbage collection time calculator 2610 of FIG. may not estimate the time required to perform garbage collection on the primary replica 2315 of FIG. 23 . In contrast, the local prediction analyzer 2430 uses only previous information and does not rely on having access to information from the primary replica 2315 of FIG. 23 .

로컬 예상 분석기(2430)는 데이터 베이스(2425)로부터의 정보에 접근할 수 있고, 그 정보를, 도 23의 주 복제본(2315)이 도 23의 I/O 요청(905)을 완료하는데 걸리는 시간을 예측할 수 있는, 예상 로컬 시간(3205)을 생성하는데 사용할 수 있다. 예를 들어, 로컬 예상 분석기(2430)는 도 23의 주 복제본(2315)이 과거에 처리하는데 걸린 시간에 관한 이전 정보를 얻을 수 있고, 도 23의 주 복제본(2315)이 도 23의 I/O 요청(905)을 처리하는데 걸릴 시간에 관한 예상을 하기 위해 그 정보를 사용할 수 있다. 로컬 예상 분석기(2430)는 도 23의 주 복제본(2315)에 관한 현재 정보 보다는 이전 정보를 사용하기 때문에, 예상 로컬 시간(3205)은 정확하지 않을 수 있다는 것을 주의하라. 도 23의 주 복제본(2315)이 과거 보다 더 바쁠 경우(예로서, 도 23의 주 복제본(2315)이 보통의 양보다 많은 양의 가비지 컬렉션을 수행해야 하는 경우), 예상 로컬 시간(3205)은 실제 소요 시간보다 작을 수 있다. 반면, 도 23의 주 복제본(2315)이 과거만큼 바쁘지 않은 경우(예로서, 도 23의 주 복제본(2315)이 적은 양의 계류중인 I/O 요청들을 처리하느라 바쁘지만, 가비지 컬렉션을 수행할 필요가 없는 경우) 예상 로컬 시간(3205)은 실제 소요 시간보다 클 수 있다.The local prediction analyzer 2430 can access information from the database 2425 and use that information to determine the time it takes for the primary replica 2315 of FIG. 23 to complete the I/O request 905 of FIG. It can be used to generate a predictable, expected local time 3205 . For example, the local prediction analyzer 2430 can obtain historical information regarding the time it took the primary replica 2315 of FIG. 23 to process in the past, and the primary replica 2315 of FIG. The information may be used to make an estimate regarding the time it will take to process the request 905 . Note that because the local prediction analyzer 2430 uses older information rather than the current information about the primary replica 2315 of FIG. 23 , the estimated local time 3205 may not be accurate. If the primary replica 2315 of FIG. 23 is busier than in the past (eg, if the primary replica 2315 of FIG. 23 needs to perform a greater than normal amount of garbage collection), the estimated local time 3205 is It may be less than the actual time required. On the other hand, if the primary replica 2315 of FIG. 23 is not as busy as in the past (eg, the primary replica 2315 of FIG. 23 is busy processing a small amount of pending I/O requests, but does not need to perform garbage collection). If not), the estimated local time 3205 may be greater than the actual required time.

로컬 예상 분석기(2430)는 임의의 바람직한 방식으로 데이터 베이스(2425)의 정보로부터 예상 로컬 시간(3205)을 계산할 수 있다. 예를 들어, 로컬 예상 분석기(2430)는 도 31의 이전 로컬 가비지 컬렉션 정보(3105)의 평균 값, 중간 값 또는 최빈값을 계산할 수 있고, 그리고 도 31의 이전 처리 시간 정보(3120)의 평균 값, 중간 값 또는 최빈값을 계산할 수 있고, 이후 가중치 합산을 이용하여 두 개의 통계 계산들을 결합할 수 있다. 또는, 로컬 예상 분석기(2430)는 도 31의 이전 로컬 가비지 컬렉션 정보(3105)만을 고려하고, 임의의 처리 시간 정보는 무시할 수 있다. 또는 로컬 예상 분석기(2430)는 데이터 베이스(2425)내의 정보의 슬라이딩 윈도만을 고려할 수 있다. 본 발명의 실시 예들은 로컬 예상 분석기(2430)가 어떻게 예상 로컬 시간 (3205)을 계산하는지에 대한 모든 변형들을 포함하도록 의도된다.The local prediction analyzer 2430 may calculate the expected local time 3205 from the information in the database 2425 in any desired manner. For example, the local prediction analyzer 2430 may calculate the average value, median value, or mode of the previous local garbage collection information 3105 of FIG. 31 , and the average value of the previous processing time information 3120 of FIG. 31 , The median or mode can be computed, and then the two statistical calculations can be combined using weighted summation. Alternatively, the local prediction analyzer 2430 may consider only the previous local garbage collection information 3105 of FIG. 31 and ignore any processing time information. Alternatively, the local prediction analyzer 2430 may consider only the sliding window of information in the database 2425 . Embodiments of the present invention are intended to include all variations on how the local prediction analyzer 2430 computes the expected local time 3205 .

도 33은 도 26의 로컬 추정 소요 시간 계산기(2625)를 구체적으로 보여주는 블록도 이다. 도 33에서, 로컬 추정 소요 시간 계산기(2625)는 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 및 큐 처리 시간(3015)와 같은 정보를 얻을 수 있고, 로컬 추정 소요 시간(3305)을 계산하기 위해 그들을 결합할 수 있다. 로컬 추정 소요 시간 계산기(2625)는 로컬 가비지 컬렉션 가중치(2635), 로컬 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)를 포함할 수도 있다. 이 가중치들은 각각의 대응하는 시간이 로컬 추정 소요 시간(3305)의 계산에서 얼마나 중요하게 고려되는지를 나타낼 수 있다. 예를 들어, 시간들 각각은 대응 하는 가중치와 곱해질 수 있고, 그 결과 들은 로컬 추정 소요 시간(3305)을 계산하기 위해 함께 더해질 수 있다. 33 is a block diagram specifically illustrating the local estimated required time calculator 2625 of FIG. 26 . 33, the local estimated time spent calculator 2625 can obtain information such as a local garbage collection time 2820, a local estimated garbage collection time 2905, and a queue processing time 3015, and a local estimated time taken ( 3305), we can combine them. The local estimated time required calculator 2625 may include a local garbage collection weight 2635 , a local expected garbage collection weight 2640 , and a queue processing weight 2645 . These weights may indicate how important each corresponding time is considered in the calculation of the local estimated time taken 3305 . For example, each of the times may be multiplied by a corresponding weight, and the results may be added together to calculate the local estimated time taken 3305 .

로컬 가비지 컬렉션 가중치(2635), 로컬 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)는 임의의 바람직한 수단들에 의해 계산될 수 있다. 예를 들어, 도 26의 가중치 생성기(2630) 가중치들을 계산하기 위해 도 24의 데이터 베이스(2425)상의 정보에 대해 선형 회귀 분석을 수행할 수 있다. 이 선형 회귀 분석은 도 24의 데이터 베이스(2425)의 모든 정보에 대해 수행될 수 있고, 또는 데이터 베이스(2425) 정보의 슬라이딩 윈도에 대해 수행될 수 있다. The local garbage collection weight 2635 , the local expected garbage collection weight 2640 , and the queue processing weight 2645 may be calculated by any desired means. For example, linear regression analysis may be performed on information on the database 2425 of FIG. 24 to calculate weights of the weight generator 2630 of FIG. 26 . This linear regression analysis may be performed on all information in the database 2425 of FIG. 24 , or may be performed on a sliding window of information in the database 2425 .

로컬 추정 소요 시간 계산기(2625)는, 로컬 예상 가중치(3310)에 의해 또한 선택적으로 가중될 수도 있는(도 26의 가중치 생성기(2630)에 의해 또한 생성될 수도 있는), 예상 로컬 시간(3205)을 또한 고려할 수 있다. 예상 로컬 시간(3205)을 고려함으로써, 로컬 추정 소요 시간 계산기(2625)는 비정상적으로 낮거나 높은 추정 소요 시간들로 이어질 수 있는 도 23의 주 복제본(2315)으로부터 오는 비정상 정보를 상쇄시킬 수 있다. The local estimated time spent calculator 2625 calculates the estimated local time 3205 , which may also be optionally weighted by the local expected weights 3310 (which may also be generated by the weight generator 2630 of FIG. 26 ). can also be considered. By taking the estimated local time 3205 into account, the local estimated time-spent calculator 2625 can counteract anomalous information coming from the primary replica 2315 of FIG. 23 that may lead to unusually low or high estimated times.

위의 설명이 가중치들(2635, 2640, 2645, 및 3310)을 사용하지만, 가중된 계산은 선택적이다. 예를 들어, 로컬 추정 소요 시간 계산기(2625)는 값들에 어떠한 가중치들을 적용하지 않은 합을 계산할 수 있다. 바꾸어 말하면, 가중치들(2635, 2640, 2645, 및 3310)은 모두 도 26의 스토리지(2620)내에 실제로 저장되기 보다는, 암시된 가중치들일 수 있다. 유사한 방식으로, 로컬 추정 소요 시간 계산기(2625)가 사용 가능한 값들의 서브셋(subset)(예로서, 단지 로컬 가비지 컬렉션 시간(2820))만을 사용하여 로컬 추정 소요 시간(3305)을 계산하도록 설계되는 경우, 다른 값들에 적용된 "가중치들"은 0으로 설정될 수 있는데, 그러한 값들이 결과에 영향을 미치는 것을 피하기 위해서 이다. 다시, 이 상황에서, 가중치들은 이하 설명들을 암시할 수 있다. 로컬 가비지 컬렉션 가중치(2635)가 암시적으로 1이고, 가중치들(2640, 2645, 및 3310)은 0일 수 있다. 물론, 가중치가 0으로 설정된 상황들에서, 대응하는 값은 처음에 계산될 필요도 없으며, 그 값을 생성하는 대응하는 구성 요소들은 적절하게 본 발명의 개념의 실시 예들로부터 생략 될 수 있다.Although the above description uses weights 2635, 2640, 2645, and 3310, the weighted calculation is optional. For example, the local estimated time required calculator 2625 may calculate the sum of values without applying any weights. In other words, weights 2635 , 2640 , 2645 , and 3310 may all be implied weights rather than actually stored in storage 2620 of FIG. 26 . In a similar manner, if the local estimated time spent calculator 2625 is designed to calculate the local estimated time spent 3305 using only a subset of available values (eg, only the local garbage collection time 2820 ). , "weights" applied to other values may be set to zero, to avoid such values affecting the result. Again, in this situation, the weights may imply the following descriptions. Local garbage collection weight 2635 may be implicitly equal to one, and weights 2640 , 2645 , and 3310 may be zero. Of course, in situations where the weight is set to zero, the corresponding value does not need to be calculated at first, and the corresponding components generating the value may be appropriately omitted from the embodiments of the inventive concept.

도 34는 도 27의 통신 시간 계산기(2705)를 구체적으로 보여주는 블록도 이다. 통신 시간 계산기(2705)는 노드들과 통신하는데 필요한 시간을 결정하기 위해 도 23의 보조 복제본들(2320 및 2325)을 포함하는 시스템 노드들(130 및 135)의 통신상태를 검사할 수 있는, 핑(ping) 로직(3405)를 포함할 수 있다. 또는, 통신 시간 계산기(2705)는 도 31의 데이터 베이스(2425)로부터의 이전 통신 시간 정보(3135), 최악의 경우 통신 시간(3140), 및 평균적인 경우 통신 시간(3145)에 접근할 수 있고, 그 정보를 통신 시간(3410)을 계산하는데 사용할 수 있다. 본 발명의 실시 예들은 시스템 노드들(130 및 135)과의 통신시간을 계산하기 위한 다른 접근법들을 또한 포함할 수 있다. 예로서, 핑 로직(3405)은 작은 데이터 요청을 도 23의 보조 복제본들(2320 및 2325)로 전송할 수 있고, 이 작은 데이터 요청을 이용하여 도 23의 보조 복제본들(2320 및 2325)과 통신하는데 걸리는 시간을 측정할 수 있다. FIG. 34 is a block diagram specifically showing the communication time calculator 2705 of FIG. 27 . Communication time calculator 2705 may check the communication status of system nodes 130 and 135 including secondary replicas 2320 and 2325 of FIG. 23 to determine the time required to communicate with the nodes. (ping) logic 3405 . Alternatively, communication time calculator 2705 can access previous communication time information 3135 from database 2425 of FIG. 31 , worst case communication time 3140 , and average case communication time 3145 and , that information can be used to calculate the communication time 3410 . Embodiments of the present invention may also include other approaches for calculating communication time with system nodes 130 and 135 . As an example, the ping logic 3405 may send a small data request to the secondary replicas 2320 and 2325 of FIG. 23 and use the small data request to communicate with the secondary replicas 2320 and 2325 of FIG. time can be measured.

도 35는 도 27의 원격 프로세서 시간 계산기(2710)를 구체적으로 보여주는 블록도 이다. 도 35에서, 원격 프로세서 시간 계산기(2710)은 원격 프로세서 로드(3505) 및 원격 소프트웨서 스택 로드(3510)을 얻을 수 있다. 도 24의 문의 로직(2415) 및 수신 로직(2420)은 도 23의 보조 복제본들(2320 및 2325)을 포함하는 도 23의 시스템 노드들(130 및 135)과 관련된 프로세서로부터 원격 프로세서 로드(3505) 및 원격 소프트웨어 스택 로드(3510)를 요청 및 수신할 수 있다. 원격 프로세서 로드(3505)는 도 23의 시스템 노드들(130 및 135)의 프로세서상의 로드를 나타낼 수 있고, 반면 원격 소프트웨어 스택 로드(3510)는 도 23의 시스템 노드들(130 및 135)의 프로세서에서 실행되는 소프트웨어상의 로드들을 나타낼 수 있다. 원격 프로세서 시간 계산기(2710)는 로드들(3505 및 3510)을 원격 프로세서 시간(3515)로 변환하기 위한 임의의 바람직한 접근법을 사용할 수 있다. 또한, 원격 프로세서 시간 계산기(2710)는 두 로드들(3505 및 3510) 모두 보다는 두 로드들(3505 및 3510) 중 하나에만 기초하여 원격 프로세서 시간(3515)를 계산할 수 있다.FIG. 35 is a block diagram specifically illustrating the remote processor time calculator 2710 of FIG. 27 . In FIG. 35 , remote processor time calculator 2710 can obtain remote processor load 3505 and remote software stack load 3510 . Query logic 2415 and receive logic 2420 of FIG. 24 load 3505 remote processor from processor associated with system nodes 130 and 135 of FIG. 23 including secondary replicas 2320 and 2325 of FIG. and remote software stack loads 3510 . Remote processor load 3505 may represent a load on the processor of system nodes 130 and 135 of FIG. 23 , while remote software stack load 3510 may represent a load on the processor of system nodes 130 and 135 of FIG. 23 . It may represent loads on the software being executed. The remote processor time calculator 2710 may use any desirable approach to convert loads 3505 and 3510 to remote processor time 3515 . Further, remote processor time calculator 2710 may calculate remote processor time 3515 based on only one of two loads 3505 and 3510 rather than both loads 3505 and 3510 .

도 36은 도 24의 원격 예상 분석기(2435)를 구체적으로 보여주는 블록도 이다. 도 27의 통신 시간 계산기(2705), 원격 프로세서 시간 계산기(2710), 및 원격 가비지 컬렉션 시간 계산기(2715)는 도 23의 보조 복제본들(2320 및 2325)이 도 23의 I/O 요청(905)을 처리하기 위해 걸리는 시간을 추정하기 위한 도 23의 보조 복제본들(2320 및 2325)에 관한 현재 정보를 사용할 수 있다. 반면, 원격 예상 분석기(2435)는 이전 정보에만 기초하여, 도 23의 보조 복제본들(2320 및 2325)이 도 23의 I/O 요청(905)을 처리하기 위해 필요한 시간을 추정할 수 있다. 이전 정보를 이러한 방식으로 사용하는 것은 도 27의 통신 시간 계산기(2705), 원격 프로세서 시간 계산기(2710), 및 원격 가비지 컬렉션 시간 계산기(2715)에 의해 제공되는 정보로 counterpoint를 제공할 수 있다.FIG. 36 is a block diagram specifically illustrating the remote prediction analyzer 2435 of FIG. 24 . Communication time calculator 2705, remote processor time calculator 2710, and remote garbage collection time calculator 2715 of FIG. 27 allow secondary replicas 2320 and 2325 of FIG. We can use the current information about the secondary replicas 2320 and 2325 of FIG. 23 to estimate the time it takes to process . On the other hand, the remote prediction analyzer 2435 may estimate the time required for the secondary replicas 2320 and 2325 of FIG. 23 to process the I/O request 905 of FIG. 23 based only on the previous information. Using previous information in this manner may provide a counterpoint to the information provided by communication time calculator 2705 , remote processor time calculator 2710 , and remote garbage collection time calculator 2715 of FIG. 27 .

또한, 원격 예상 분석기(2435)는, 보조 복제본들(2320 및 2325)이 도 26의 통신 시간 계산기(2705), 원격 프로세서 시간 계산기(2710), 및 원격 가비지 컬렉션 시간 계산기(2715)에 의해 필요로 되는 정보를 제공하지 않는 상황들에서, 도 23의 보조 복제본들(2320 및 2325)이 도 23의 I/O 요청(905)을 처리하는데 필요한 예상 시간을 제공할 수 있다. 예를 들어, 보조 복제본들(2320 및 2325)이 도 28의 빈 페이지들의 수(2805)에 관한 정보를 제공하지 않는 경우, 도 27의 원격 가비지 컬렉션 시간 계산기(2715)는 도 23의 보조 복제본들(2320 및 2325)에서 가비지 컬렉션을 수행하는데 필요한 시간을 추정하지 않을 수 있다. 반면, 원격 예상 분석기(2435)는 이전 정보만을 사용하고, 도 23의 보조 복제본들(2320 및 2325)로부터의 정보에 접근할 수 있음에 의존하지 않는다. In addition, the remote prediction analyzer 2435 provides that auxiliary replicas 2320 and 2325 are required by the communication time calculator 2705, the remote processor time calculator 2710, and the remote garbage collection time calculator 2715 of FIG. In situations that do not provide the required information, the secondary replicas 2320 and 2325 of FIG. 23 may provide the estimated time needed to process the I/O request 905 of FIG. 23 . For example, if secondary replicas 2320 and 2325 do not provide information about the number of empty pages 2805 of FIG. 28 , remote garbage collection time calculator 2715 of FIG. At (2320 and 2325), the time required to perform garbage collection may not be estimated. In contrast, the teleprediction analyzer 2435 uses only previous information and does not rely on being able to access information from the secondary replicas 2320 and 2325 of FIG. 23 .

원격 예상 분석기(2435)는 데이터 베이스(2425)로부터의 정보에 접근하고, 도 23의 보조 복제본들(2320 및 2325)이 도 23의 I/O 요청(905)을 완료하는데 걸리는 시간을 예측할 수 있는, 예상 원격 시간(3605)을 생성하기 위해 그 정보를 사용할 수 있다. 예를 들어, 원격 예상 분석기(2435)는, 도 23의 보조 복제본들(2320 및 2325)이 과거에 처리하는데 걸린 시간에 관한 이전 정보를 얻을 수 있고, 도 23의 보조 복제본들(2320 및 2325)이 도 23의 I/O 요청(905)을 처리하는데 걸릴 시간에 관한 예상을 하기 위해 그 정보를 사용할 수 있다. 원격 예상 분석기(2435)는 도 23의 보조 복제본들(2320 및 2325)에 관한 현재 정보보다는 이전 정보를 사용하기 때문에, 예상 원격 시간(3605)은 정확하지 않을 수 있다는 것을 주의하라. 도 23의 보조 복제본들(2320 및 2325)이 과거 보다 바쁜 경우(예로서, 도 23의 보조 복제본들(2320 및 2325)이 보통의 가비지 컬렉션 양보다 많은 양을 수행할 필요가 있는 경우), 예상 원격 시간(3605)은 실제 소요 시간 보다 짧을 수 있다. 반면, 도 23의 보조 복제본들(2320 및 2325)이 과거만큼 바쁘지 않은 경우(예로서, 도 23의 보조 복제본들(2320 및 2325)이 적은 수의 계류중인 I/O 요청들을 처리하느라 바쁘지만, 가비지 컬렉션을 수행할 필요가 없는 경우), 예상 원격 시간(3605)는 실제 소요 시간 보다 길 수 있다.The teleprediction analyzer 2435 can access information from the database 2425 and estimate the time it will take for secondary replicas 2320 and 2325 of FIG. 23 to complete the I/O request 905 of FIG. , may use that information to generate an estimated remote time 3605 . For example, the teleprediction analyzer 2435 can obtain historical information regarding the time it took the auxiliary replicas 2320 and 2325 of FIG. 23 to process in the past, and the auxiliary replicas 2320 and 2325 of FIG. 23 . That information can be used to make an estimate regarding the time it will take to process the I/O request 905 of this figure. Note that the estimated remote time 3605 may not be accurate because the remote prediction analyzer 2435 uses older information rather than the current information about the auxiliary replicas 2320 and 2325 of FIG. 23 . If secondary replicas 2320 and 2325 of FIG. 23 are busier than in the past (eg, secondary replicas 2320 and 2325 of FIG. 23 need to perform a larger amount than their normal garbage collection amount), the expected The remote time 3605 may be shorter than the actual required time. On the other hand, if secondary replicas 2320 and 2325 of FIG. 23 are not as busy as in the past (eg, secondary replicas 2320 and 2325 of FIG. 23 are busy processing a small number of pending I/O requests, but garbage If there is no need to perform the collection), the estimated remote time 3605 may be longer than the actual required time.

원격 예상 분석기(2435)는 임의의 바람직한 방식으로 데이터 베이스(2425)내이 정보로부터 예상 원격 시간(3605)을 계산할 수 있다. 예를 들어, 원격 예상 분석기(2435)는 도 31의 이전 원격 가비지 컬렉션 정보(3165)의 평균 값, 중간 값, 또는 최빈값을 계산할 수 있고, 도 31의 이전 통신 시간 정보(3135)의 평균 값, 중간 값, 또는 최빈값을 계산할 수 있고, 그리고 가중치 합산을 이용하여 두 개의 통계 계산들을 결합할 수 있다. 또는, 원격 예상 분석기(2435)는 도 31의 이전 원격 가비지 컬렉션 정보(3165)만을 고려하고, 통신 시간 및 원격 프로세서 시간 정보는 무시할 수 있다. 또는, 원격 예상 분석기(2435)는 데이터 베이스(2425)내의 정보의 슬라이딩 윈도만을 고려할 수 있다. 본 발명의 실시 예들은 원격 예상 분석기(2435)가 예상 원격 시간(3605)을 계산하는 방법의 모든 변형들을 포함하도록 의도될 수 있다.The remote prediction analyzer 2435 may calculate the expected remote time 3605 from this information in the database 2425 in any desired manner. For example, the remote prediction analyzer 2435 may calculate an average value, a median value, or a mode of the previous remote garbage collection information 3165 of FIG. 31 , the average value of the previous communication time information 3135 of FIG. 31 , One can compute the median, or mode, and combine the two statistical calculations using weighted summation. Alternatively, the remote prediction analyzer 2435 may consider only the previous remote garbage collection information 3165 of FIG. 31 and ignore the communication time and remote processor time information. Alternatively, the remote prediction analyzer 2435 may consider only the sliding window of information in the database 2425 . Embodiments of the present invention may be intended to include all variations of the method by which the remote prediction analyzer 2435 calculates the expected remote time 3605 .

도 37은 도 27의 원격 추정 소요 시간 계산기(2725)를 구체적으로 보여주는 블록도 이다. 도 37에서, 원격 추정 소요 시간 계산기(2725)는 통신 시간(3410), 원격 프로세서 시간(3515), 및 원격 가비지 컬렉션 시간(3705)과 같은 정보를 얻을 수 있고, 원격 추정 소요 시간(3710)을 계산하기 위해 그들을 결합할 수 있다. 원격 추정 소요 시간 계산기(2725)는 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)도 포함할 수 있다. 이러한 가중치들은 각각의 대응하는 시간이 원격 추정 소요 시간(3710)의 계산에서 얼마나 중요하게 고려되는지를 나타낼 수 있다. 예를 들어, 시간들 각각은 대응하는 가중치와 곱해지고, 그 결과들은 원격 추정 소요 시간(3710)을 계산하기 위해 함께 합산될 수 있다. FIG. 37 is a block diagram specifically illustrating the remote estimation required time calculator 2725 of FIG. 27 . In FIG. 37 , a remote estimated time spent calculator 2725 can obtain information such as a communication time 3410 , a remote processor time 3515 , and a remote garbage collection time 3705 , and calculates a remote estimated time spent 3710 . You can combine them to calculate. The remote estimated time required calculator 2725 may also include a communication time weight 2735 , a remote processor time weight 2740 , and a remote garbage collection time weight 2745 . These weights may indicate how important each corresponding time is considered in the calculation of the remote estimated time taken 3710 . For example, each of the times may be multiplied by a corresponding weight, and the results may be summed together to calculate the remote estimated time required 3710 .

통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)는 임의의 바람직한 수단들에 의해 계산될 수 있다. 예를 들어, 도 27의 가중치 생성기(2730)는 가중치들을 계산하기 위해 도 24의 데이터 베이스(2425)상의 정보들에 대해 선형 회귀 분석을 수행할 수 있다. 이 선형 회귀 분석은 도 24의 데이터 베이스(2425)내의 모든 정보에 대해 수행될 수 있고, 또는 데이터 베이스(2425)내의 정보의 슬라이딩 윈도에 대해 수행될 수 있다. Communication time weight 2735 , remote processor time weight 2740 , and remote garbage collection time weight 2745 may be calculated by any desired means. For example, the weight generator 2730 of FIG. 27 may perform linear regression analysis on information on the database 2425 of FIG. 24 to calculate weights. This linear regression analysis may be performed on all information in database 2425 of FIG. 24 , or it may be performed on a sliding window of information in database 2425 .

원격 추정 소요 시간 계산기(2725)는 원격 예상 가중치(3715)에 의해 선택적으로 가중될 수 있는(도 27의 가중치 생성기(2730)에 의해 생성될 수도 있는), 예상 원격 시간(3605)을 고려할 수 있다. 예상 원격 시간(3605)을 고려함으로써, 원격 추정 소요 시간(2725)은, 비정상적으로 낮거나 높게 추정되는 소요 시간들로 이어질 수 있는 도 23의 보조 복제본들(2320 및 2325)로부터 나오는 비정상 정보를 상쇄 시킬 수 있다.The remote estimated time required calculator 2725 may take into account the estimated remote time 3605 , which may optionally be weighted by the remote estimated weights 3715 (which may also be generated by the weight generator 2730 of FIG. 27 ). . By taking into account the estimated remote time 3605, the estimated remote time 2725 cancels out anomalous information from the secondary replicas 2320 and 2325 of FIG. can do it

위의 설명은 가중치들(2735, 2740, 2745, 및 3715)을 사용하지만, 가중된 계산은 선택적이다. 예를 들어, 원격 추정 소요 시간 계산기(2725)는 값들에 어떠한 가중치들을 적용하지 않고 합을 계산할 수 있다. 바꾸어 말하면, 가중치들(2735, 2740, 2745, 및 3715)은, 도 27의 스토리지(2720)에 실제로 저장되기 보다는, 암시된 가중치들일 수 있다. 유사한 방식으로, 원격 추정 소요 시간 계산기(2725)이 사용 가능한 값들의 하위 집합(예로서, 단지 원격 가비지 컬렉션 시간(3705))만을 이용하여 원격 추정 소요 시간(3710)을 계산하도록 설계된 경우, 다른 값들에 적용된 “가중치들”은, 결과에 영향을 주는 것을 피하기 위해 0으로 설정될 수 있다. 다시, 이러한 상황에서, 가중치들은 암시될 수 있다. 원격 가비지 컬렉션 가중치(2745)는 암시적으로 1일 수 있고, 가중치들(2735, 2740 및 3715)은 0일 수 있다. 물론, 가중치가 0으로 설정된 이 상황들에서, 대응하는 값은 처음에 계산될 필요도 없고, 대응하는 값을 생성하는 구성요소들은 적절하게 본 발명의 실시 예들로부터 생략될 수도 있다.Although the above description uses weights 2735, 2740, 2745, and 3715, the weighted calculation is optional. For example, the remote estimated time required calculator 2725 may calculate the sum without applying any weights to the values. In other words, weights 2735 , 2740 , 2745 , and 3715 may be implied weights rather than actually stored in storage 2720 of FIG. 27 . In a similar manner, if the remote estimated time spent calculator 2725 is designed to calculate the remote estimated time spent 3710 using only a subset of the available values (eg, only the remote garbage collection time 3705), other values The “weights” applied to can be set to zero to avoid affecting the result. Again, in this situation, weights can be implied. The remote garbage collection weight 2745 may be implicitly one, and the weights 2735 , 2740 and 3715 may be zero. Of course, in these situations where the weight is set to zero, the corresponding value does not need to be calculated at first, and components generating the corresponding value may be appropriately omitted from the embodiments of the present invention.

도 38은 도 25의 I/O 재배치기(215)를 구체적으로 보여주는 블록도 이다. 도 38에서, I/O 재배치기(215)는 문턱 시간(2525) 및 로컬 추정 소요 시간(3305)을 수신할 수 있다. 제 1 비교기(2510)는 이 값들을 계산할 수 있다. 박스(3805)에 표시된 바와 같이, 로컬 추정 소요 시간(3305)이 문턱 시간(2525)보다 짧을 경우, I/O 재배치기(215)는 도 23의 I/O 요청(905)을 도 23의 주 복제본(2315)으로 보낼 수 있다. 그렇지 않을 경우, 로컬 추정 소요 시간(3305)은, 도 23의 각각의 보조 복제본(130 및 135)에 대한 원격 추정 소요 시간(3710)도 수신할 수 있는, 제 2 비교기(2515)로 전달될 수 있다. 그 뒤 선택기(2520)는, I/O 재배치기(215)가 선택된 복제본으로 도 23의 I/O 요청(905)을 이후에 전송할 수 있는, 가장 적은 추정 소요 시간을 갖는지에 기초하여, 도 23의 보조 복제본들(2320 및 2325) 및 주 복제본(2315) 중 하나를 선택할 수 있다(박스(3805)에 표시된 도 23의 주 복제본(2315) 또는 박스(3810)에 표시된 바와 같은 도 23의 보조 복제본들(2320 및 2325) 중 하나).38 is a block diagram specifically illustrating the I/O relocation 215 of FIG. 25 . In FIG. 38 , I/O relocation 215 may receive a threshold time 2525 and a local estimated time taken 3305 . The first comparator 2510 may calculate these values. As indicated in box 3805, if the local estimated time taken 3305 is less than the threshold time 2525, then the I/O relocator 215 redirects the I/O request 905 of FIG. can be sent to the replica 2315. Otherwise, the local estimated time taken 3305 may be passed to a second comparator 2515 , which may also receive a remote estimated time taken 3710 for each secondary replica 130 and 135 of FIG. 23 . have. The selector 2520 then selects the selector 2520, based on whether the I/O relocator 215 has the least estimated time required to later send the I/O request 905 of FIG. 23 to the selected replica. You can select one of secondary replicas 2320 and 2325 and primary replica 2315 of (one of 2320 and 2325).

도 39a 내지 도 39b는, 본 발명의 일 실시 예에 따라, 도 23의 비용 분석기(2310) 및 I/O 재배치기(215)가 어디로 도 23의 I/O 요청(905)을 전송할지 결정하기 위한 절차를 보여주는 흐름도 이다. 도 39a의, 블록(3905)에서, 도 23의 시스템 노트(125)는 도 23의 I/O 요청(905)을 수신할 수 있다. 블록(3910)에서, 도 23의 I/O 재배치기(215)는 도 23의 주 복제본(2315)이 현재 가비지 컬렉션을 수행하는 중인지 여부를 결정할 수 있다. 도 23의 주 복제본(2315)이 현재 가비지 컬렉션을 수행하는 중이 아닌 경우, 블록(3915)에서, 도 23의 I/O 재배치기(215)는 도 23의 I/O 요청(905)을 도 23의 주 복제본(2315)로 전송할 수 있다.Figures 39A-39B show where the cost analyzer 2310 and the I/O relocator 215 of Figure 23 determine where to send the I/O request 905 of Figure 23, in accordance with an embodiment of the present invention. It is a flow chart showing the procedure for At block 3905 of FIG. 39A , the system note 125 of FIG. 23 may receive the I/O request 905 of FIG. 23 . At block 3910 , I/O relocation 215 of FIG. 23 may determine whether primary replica 2315 of FIG. 23 is currently performing garbage collection. If the primary replica 2315 of FIG. 23 is not currently performing garbage collection, then at block 3915 , the I/O relocation 215 of FIG. 23 redirects the I/O request 905 of FIG. 23 to the primary replica 2315 of

도 23의 주 복제본(2315)이 현재 가비지 컬렉션을 수행하는 중인 경우, 블록(3920)에서, 도 26의 로컬 추정 소요 시간 계산기(2625)는 도 33의 로컬 추정 소요 시간(3305)을 계산할 수 있다. 블록(3925)에서, 제 1 비교기(2510)는 도 33의 로컬 추정 소요 시간(3305)을 도 25의 문턱 시간(2525)과 비교할 수 있다. 블록(3930)에서, 제 1 비교기(2510)는 도 33의 로컬 추정 소요 시간(3305)이 도 25의 문턱 시간(2525)보다 짧은지 여부를 결정할 수 있다. 만약 도 33의 로컬 추정 소요 시간(3305)이 도 25의 문턱 시간(2525)보다 짧으면, 블록(3915)에서 처리는 도 23의 I/O 재배치기(205)가 도 23의 I/O 요청(905)을 도 23의 주 복제본(2315)로 전송하는 것을 계속할 수 있다.If the primary replica 2315 of FIG. 23 is currently performing garbage collection, at block 3920 , the local estimated time spent calculator 2625 of FIG. 26 may calculate the local estimated time spent 3305 of FIG. 33 . . In block 3925 , the first comparator 2510 may compare the local estimated required time 3305 of FIG. 33 with the threshold time 2525 of FIG. 25 . In block 3930 , the first comparator 2510 may determine whether the local estimated required time 3305 of FIG. 33 is shorter than the threshold time 2525 of FIG. 25 . If the local estimated time required 3305 of FIG. 33 is less than the threshold time 2525 of FIG. 25, then at block 3915, the process returns to the I/O relocation 205 of FIG. 23 with the I/O request ( 905) to the primary replica 2315 of FIG. 23 may continue.

반면, 도 33의 로컬 추정 소요 시간(3305)이 도 25의 문턱 시간(2525)보다 긴 경우, 블록(3935)(도 39b)에서, 도 23의 비용 추정기(2310)는 도 23의 보조 복제본들(2320 및 2325) 중 하나를 선택한다. 블록(3940)에서, 도 27의 원격 추정 소요 시간 계산기(2725)는 도 37의 원격 추정 소요 시간(3710)을 계산할 수 있다. 블록(3945)에서, 도 23의 비용 추정기(2310)는 도 23의 I/O 요청(905)에 의해 요청된 데이터의 보조 복제본들이 더 있는지를 결정할 수 있다. 보조 복제본들이 더 있는 경우, 처리는 다른 보조 복제본에 대한 도 37의 원격 추정 소요 시간(3710)을 계산하기 위해 블록(3935)로 돌아 갈 수 있다. 그렇지 않다면, 블록(3950)에서, 제 2 비교기(2515)는, 도 33의 로컬 추정 소요 시간(3305)를 도 23의 보조 복제본들(2320 및 2325) 각각에 대한 도 37의 원격 추정 소요 시간(3710)과 비교할 수 있다. 블록(3955)에서, 선택기(2520)는, 어떤 것이 관련된 가장 낮은 추정 소요 시간을 갖는지에 기초하여, 도 23의 주 복제본(2315) 및 보조 복제본들(2320 및 2325) 중 하나를 선택할 수 있다. 최종적으로, 블록(3960)에서, 도 23의 I/O 재배치기(215)는 도 23의 I/O 요청(905)을 선택된 복제본에 재배치할 수 있고, 이후 처리가 완료된다.On the other hand, if the local estimated required time 3305 of FIG. 33 is longer than the threshold time 2525 of FIG. 25 , then at block 3935 ( FIG. 39B ), the cost estimator 2310 of FIG. Select one of (2320 and 2325). At block 3940 , the remote estimated time required calculator 2725 of FIG. 27 may calculate the remote estimated time required 3710 of FIG. 37 . At block 3945 , the cost estimator 2310 of FIG. 23 may determine whether there are more secondary copies of the data requested by the I/O request 905 of FIG. 23 . If there are more secondary replicas, processing may return to block 3935 to compute the remote estimated time taken 3710 of FIG. 37 for the other secondary replicas. Otherwise, at block 3950, the second comparator 2515 compares the local estimated duration 3305 of FIG. 3710) can be compared. At block 3955 , selector 2520 may select one of primary replica 2315 and secondary replicas 2320 and 2325 of FIG. 23 based on which one has the lowest estimated turnaround time associated. Finally, at block 3960 , the I/O relocator 215 of FIG. 23 may relocate the I/O request 905 of FIG. 23 to the selected replica, after which processing is complete.

도 39a 내지 39b에서, 흐름도는, 도 23의 주 복제본(2315)이 현재 가비지 컬렉션을 수행하는 중이 아닌 경우, 도 23의 I/O 요청(905)을 도 23의 주 복제본(2315)에 전송하는 도 23의 I/O 재배치기(215)를 보여준다. 가비지 컬렉션은 종종, 왜 도 23의 I/O 요청(905)을 도 23의 보조 복제본들(2320 및 2325)중 하나로 전송하는게 더 효율적인지에 대한 주요한 이유이다. 그러므로, 도 23의 주 복제본(2315)이 가비지 컬렉션을 수행하는 중이 아닌 경우, 도 23의 I/O 요청(905)은 종종 도 23의 주 복제본(2315)에서 가장 효율적으로 처리될 수 있다. 하지만, 본 발명의 몇몇 실시 예들에서, 블록(3910)은 생략되고, 도 23의 주 복제본(2315)이 가비지 컬렉션을 수행하는 경우에도, 도 23의 비용 추정기(2310)는 로컬 및 원격 소요 시간들을 계산할 수 있다.39A to 39B , the flowchart is for sending the I/O request 905 of FIG. 23 to the primary replica 2315 of FIG. 23 when the primary replica 2315 of FIG. 23 is not currently performing garbage collection. 23 shows the I/O relocation 215 . Garbage collection is often the main reason why it is more efficient to send the I/O request 905 of FIG. 23 to one of the secondary replicas 2320 and 2325 of FIG. Therefore, when the primary replica 2315 of FIG. 23 is not performing garbage collection, the I/O request 905 of FIG. 23 can often be most efficiently handled by the primary replica 2315 of FIG. However, in some embodiments of the present invention, block 3910 is omitted, and even if primary replica 2315 of FIG. 23 performs garbage collection, cost estimator 2310 of FIG. 23 calculates local and remote time spent. can be calculated

도 40은 본 발명의 일 실시 예에 따라, 도 26의 로컬 추정 소요 시간 계산기(2625)가 도 33의 로컬 추정 소요 시간(3305)을 계산하기 위한 절차를 보여주는 흐름도 이다. 도 40의 블록(4005)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605)는 도 28의 로컬 가비지 컬렉션 시간(2820)을 계산할 수 있다. 블록(4010)에서, 도 26의 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 도 29의 로컬 예상 가비지 컬렉션 시간(2905)을 계산할 수 있다. 블록(4015)에서, 도 26의 큐 처리 시간 계산기(2615)는도 30의 큐 처리 시간(3105)을 계산할 수 있다. 블록(4020)에서, 도 24의 로컬 예상 분석기(2430)는 도 32의 예상 로컬 시간(3205)을 계산할 수 있다. 블록(4025)에서, 도 26의 가중치 생성기(2630)는, 도 33의 로컬 추정 소요 시간(3305)을 계산하는 데 있어 사용되는, 다양한 시간들에 적용되는 가중치들을 계산할 수 있다. 최종적으로, 블록(4030)에서, 도 26의 로컬 추정 소요 시간 계산기(2625)는 다양한 시간들 및 가중치들로부터 도 33의 로컬 추정 소요 시간(3305)을 계산할 수 있다. 40 is a flowchart illustrating a procedure for calculating the local estimated required time 3305 of FIG. 33 by the local estimated required time calculator 2625 of FIG. 26 according to an embodiment of the present invention. At block 4005 of FIG. 40 , the local garbage collection time calculator 2605 of FIG. 26 may calculate the local garbage collection time 2820 of FIG. 28 . At block 4010 , the local expected garbage collection time calculator 2610 of FIG. 26 may calculate the local expected garbage collection time 2905 of FIG. 29 . At block 4015 , the queue processing time calculator 2615 of FIG. 26 may calculate the queue processing time 3105 of FIG. 30 . At block 4020 , the local prediction analyzer 2430 of FIG. 24 may calculate the expected local time 3205 of FIG. 32 . At block 4025 , the weight generator 2630 of FIG. 26 may calculate weights applied to various times, which are used in calculating the local estimated time taken 3305 of FIG. 33 . Finally, at block 4030 , the local estimated time required calculator 2625 of FIG. 26 may calculate the local estimated time required 3305 of FIG. 33 from the various times and weights.

도 41a 내지 도 41b는, 본 발명의 일 실시 예에 따라, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610), 및 도 27의 원격 가비지 컬렉션 시간 계산기(2715)가 도 28의 로컬 가비지 컬렉션 시간(2820), 도 29의 로컬 예상 가비지 컬렉션 시간(2905), 및 도 37의 원격 가비지 컬렉션 시간(3705)을 계산하기 위한 절차를 보여주는 흐름도 이다. 설명의 단순화를 위해, 도 41a 내지 도 41b를 참조하여, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605)에 대한 모든 참조들은 도 26의 로컬 예상 가비지 컬렉션 시간 계산기(2610) 및 도 27의 원격 가비지 컬렉션 시간 계산기(2715)도 참조하도록 의도된다. 도 23의 주 복제본(2315)에 대한 모든 참조들은 도 23의 보조 복제본들(2320 및 2325)도 참조하도록 의도된다. 도 28의 로컬 평균 가비지 컬렉션 시간(2815)에 대한 모든 참조들은 원격 평균 가비지 컬렉션 시간도 참조하도록 의도된다. 또한, 도 28의 로컬 가비지 컬렉션 시간(2805)에 대한 모든 참조들은 도 29의 로컬 예상 가비지 컬렉션 시간(2905) 및 도 37의 원격 가비지 컬렉션 시간(3705)도 참조하도록 의도된다. 41A-41B illustrate a local garbage collection time calculator 2605 and a local expected garbage collection time calculator 2610 of FIG. 26, and a remote garbage collection time calculator 2715 of FIG. 27, according to an embodiment of the present invention. is a flowchart showing a procedure for calculating the local garbage collection time 2820 of FIG. 28 , the local expected garbage collection time 2905 of FIG. 29 , and the remote garbage collection time 3705 of FIG. 37 . For simplicity of explanation, with reference to FIGS. 41A-41B , all references to the local garbage collection time calculator 2605 of FIG. 26 are referenced to the local estimated garbage collection time calculator 2610 of FIG. 26 and the remote garbage collection of FIG. 27 . Reference is also made to the time calculator 2715 . All references to primary replica 2315 of FIG. 23 are intended to also refer to secondary replicas 2320 and 2325 of FIG. 23 . All references to local average garbage collection time 2815 in FIG. 28 are intended to also refer to remote average garbage collection time. Further, all references to local garbage collection time 2805 of FIG. 28 are intended to also refer to local expected garbage collection time 2905 of FIG. 29 and remote garbage collection time 3705 of FIG. 37 .

도 41a의 블록(4105)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605)는, 도 23의 주 복제본(2315)이 가비지 컬렉션을 수행하는 중 이거나 곧 수행할 것인지를 검사할 수 있다. 이 검사는 도 28의 빈 페이지들의 수(2805)를 도 28의 빈 페이지 문턱 값(2810)과 비교함으로써 완료될 수 있다. 도 28의 빈 페이지들의 수(2805)가 도 28의 빈 페이지 문턱 값(2810) 보다 작은 경우, 도 23의 주 복제본(2315)은 가비지 컬렉션을 수행 중이거나 곧 시작한다. At block 4105 of FIG. 41A , the local garbage collection time calculator 2605 of FIG. 26 may check whether the primary replica 2315 of FIG. 23 is or will be performing garbage collection. This check may be completed by comparing the number of empty pages 2805 of FIG. 28 to the empty page threshold 2810 of FIG. If the number of empty pages 2805 of FIG. 28 is less than the empty page threshold 2810 of FIG. 28 , the primary replica 2315 of FIG. 23 is performing or is about to start garbage collection.

도 23의 주 복제본(2315)이 가비지 컬렉션을 수행중이 아니거나 곧 시작하는 것이 아닌 경우, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605)는 도 28의 로컬 가비지 컬렉션 시간(2820)을 0으로서 반환할 수 있다. 그렇지 않다면, 도 23의 주 복제본(2315)은 가비지 컬렉션을 수행 중 이거나 곧 시작한다.If the primary replica 2315 of FIG. 23 is not performing garbage collection or is not starting soon, the local garbage collection time calculator 2605 of FIG. 26 returns the local garbage collection time 2820 of FIG. 28 as zero. can do. Otherwise, the primary replica 2315 of FIG. 23 is performing garbage collection or is starting soon.

이 시점에서, 취할 수 있는 두 가지 가능한 접근법들이 있다. 하나의 접근법은, 도 24의 데이터베이스(2425)에 저장된, 도 23의 주 복제본(2315)에서의 가비지 컬렉션에 관한 이전 정보를 사용하는 것이다. 블록(4110)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605)는 도 24의 데이터베이스(2425) 내의 이전 정보에 접근할 수 있고, 블록(4115)에서 도 26의 로컬 가비지 컬렉션 시간 계산기(2605)는 이전 정보를 사용하여 도 28의 로컬 가비지 컬렉션 시간(2820)을 계산할 수 있다. At this point, there are two possible approaches you can take. One approach is to use previous information about garbage collection in the primary replica 2315 of FIG. 23 , stored in the database 2425 of FIG. 24 . At block 4110 , the local garbage collection time calculator 2605 of FIG. 26 can access previous information in the database 2425 of FIG. 24 , and at block 4115 , the local garbage collection time calculator 2605 of FIG. 26 . may calculate the local garbage collection time 2820 of FIG. 28 using the previous information.

다른 접근법은 도 41b에 표시된다. 블록(4120)에서, 도 24의 문의 로직(2415)은 도 28의 빈 페이지들의 수(2805)를 문의 할 수 있다. 점선 화살표(4125)로 표시된 바와 같이, 블록(4120)은 필요한 만큼 반복될 수 있다. 도 24의 문의 로직(2415)이 정기적으로 문의를 하도록 설정되거나, 문의를 할 다수의 복제본들이 있기 때문이다(예로서, 도 29의 모든 가능한 원격 가비지 컬렉션 시간들(2905)을 계산하기 위해 문의를 할 다수의 보조 복제본들이 있을 수 있다.). 블록(4130)에서, 도 24의 수신 로직(2420)은 복제본(들)로부터 도 28의 빈 페이지들의 수(2805)를 수신할 수 있다. 블록(4135)에서 도 24의 문의 로직(2415)은 도 28의 빈 페이지 문턱 값(2810)을 문의 할 수 있다. 점선 화살표(4140)으로 표시된 바와 같이, 블록(4135)는 필요한 만큼 반복될 수 있다. 도 24의 문의 로직(2415)이 정기적으로 문의를 하도록 설정되거나, 문의를 할 다수의 복제본들이 있기 때문이다(예로서, 모든 가능한 도 29의 원격 가비지 컬렉션 시간들(2905)을 계산하기 위해 문의할 다수의 보조 복제본들이 있을 수 있다.). 블록(4145)에서, 도 24의 수신 로직(2420)은 복제본(들)로부터 도 28의 빈 페이지 문턱 값(들)(2810)을 수신할 수 있다.Another approach is shown in FIG. 41B . At block 4120 , the query logic 2415 of FIG. 24 may query the number of empty pages 2805 of FIG. 28 . As indicated by dashed arrow 4125 , block 4120 may be repeated as needed. This is because the query logic 2415 of FIG. 24 is set up to make a query on a regular basis, or there are multiple replicas to query (eg, to calculate all possible remote garbage collection times 2905 of FIG. 29 ). There may be multiple secondary replicas to do). At block 4130 , the receive logic 2420 of FIG. 24 may receive the number of empty pages 2805 of FIG. 28 from the replica(s). In block 4135 , the query logic 2415 of FIG. 24 may query the empty page threshold 2810 of FIG. 28 . As indicated by dashed arrow 4140 , block 4135 may be repeated as needed. This is because the query logic 2415 of FIG. 24 is set up to query regularly, or there are multiple replicas to query (eg, query to calculate all possible remote garbage collection times 2905 of FIG. 29 ). There may be multiple secondary replicas). At block 4145 , the receive logic 2420 of FIG. 24 may receive the empty page threshold(s) 2810 of FIG. 28 from the replica(s).

블록(4150)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2625)는 도 28의 빈 페이지들의 수(2805) 및 도 28의 빈 페이지 문턱 값(2810) 사이의 차이 값을 계산할 수 있다. 이 차이 값은, 도 23의 주 복제본(2315)을 가비지 컬렉션 상태에서 벗어나게 하기 위해 비워져야 하는 페이지들의 수를 나타낼 수 있다. 블록(4155)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2625)는 삭제되는 중인 블록들의 프로그래밍 유효 페이지들과 관련된 지연을 추가할 수 있다. 블록(4160)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2625)는 위 결과를 도 28의 로컬 평균 가비지 컬렉션 시간(2815)에 곱함으로서 도 28의 로컬 가비지 컬렉션 시간(2820)을 계산할 수 있다.At block 4150 , the local garbage collection time calculator 2625 of FIG. 26 may calculate a difference value between the number of empty pages 2805 of FIG. 28 and the empty page threshold 2810 of FIG. 28 . This difference value may indicate the number of pages that must be emptied to bring the primary replica 2315 of FIG. 23 out of the garbage collection state. At block 4155 , the local garbage collection time calculator 2625 of FIG. 26 may add a delay associated with programmable valid pages of blocks being erased. At block 4160, the local garbage collection time calculator 2625 of FIG. 26 may calculate the local garbage collection time 2820 of FIG. 28 by multiplying the above result by the local average garbage collection time 2815 of FIG.

도 42는 본 발명의 일 실시 예에 따라, 도 26의 큐 처리 시간 계산기(2615)가 도 30의 큐 처리 시간(3015)을 계산하기 위한 절차를 보여주는 흐름도 이다. 도 42의 블록(4205)에서, 도 24의 문의 로직(2415)은 큐 깊이(즉, 도 30의 계류중인 I/O 요청들의 수(3005))를 도 23의 주 복제본(2315)에 요청할 수 있다. 블록(4210)에서, 도 24의 수신 로직(2420)은 도 23의 주 복제본(2315)으로부터 큐 깊이를 수신할 수 있다. 블록(4215)에서, 도 26의 큐 처리 시간 계산기(2615)는 하나의 I/O 요청을 처리 하기 위한 도 30의 소요 시간(3010)을 결정할 수 있다. 블록(4220)에서, 도 26의 큐 처리 시간 계산기(2615)는, 도 30의 큐 깊이(3005)를 하나의 I/O 요청을 처리하기 위한 도 30의 소요 시간(3010)과 곱함으로써 도 30의 큐 처리 시간(3015)을 계산할 수 있다.42 is a flowchart illustrating a procedure for calculating the queue processing time 3015 of FIG. 30 by the queue processing time calculator 2615 of FIG. 26 according to an embodiment of the present invention. At block 4205 of FIG. 42 , the query logic 2415 of FIG. 24 may request the queue depth (ie, the number of pending I/O requests 3005 of FIG. 30 ) from the primary replica 2315 of FIG. have. At block 4210 , the receive logic 2420 of FIG. 24 may receive the queue depth from the primary replica 2315 of FIG. 23 . At block 4215, the queue processing time calculator 2615 of FIG. 26 may determine the time required 3010 of FIG. 30 to process one I/O request. At block 4220, the queue processing time calculator 2615 of FIG. 26 multiplies the queue depth 3005 of FIG. 30 by the time taken 3010 of FIG. 30 to process one I/O request. A queue processing time 3015 of can be calculated.

도 43은 본 발명의 일 실시 예에 따라, 도 23의 I/O 요청(905)을 처리하기 위해 필요한 소요 시간을 예측하기 위한 절차를 보여주는 흐름도 이다. 도 43은 도 24의 로컬 예상 분석기(2430) 또는 도 24의 원격 예상 분석기(2435)에 의해 사용되는 절차를 보여줄 수 있다. 도 24의 로컬 예상 분석기(2430)에 대한 임의의 참조는 도 24의 원격 예상 분석기(2435)도 참조하도록 의도된다.43 is a flowchart illustrating a procedure for estimating a required time required to process the I/O request 905 of FIG. 23 according to an embodiment of the present invention. 43 may show a procedure used by the local prediction analyzer 2430 of FIG. 24 or the remote prediction analyzer 2435 of FIG. 24 . Any reference to the local prediction analyzer 2430 of FIG. 24 is intended to also refer to the remote prediction analyzer 2435 of FIG. 24 .

블록(4305)에서, 도 24의 로컬 예상 분석기(2430)은 도 24의 데이터베이스(2425)로부터의 이전 정보에 접근할 수 있다. 블록(4310)에서, 도 24의 로컬 예상 분석기(2430)는 도 24의 데이터베이스(2425)내의 이전 정보에 기초하여 소요 시간을 예상할 수 있다. 도 24의 로컬 예상 분석기(2430)는 소요 시간을 예상하기 위해 임의의 바람직한 접근법을 사용할 수 있다. 예시적인 접근법들은 이전 정보의 평균 값, 중간 값, 및 최빈값을 계산하는 것, 가중된 함수들을 이전 정보에 적용하는 것, 및 선형 회귀 분석을 수행하는 것을 포함한다. 본 발명의 실시 예들은 다른 접근법들을 소요 시간을 예상하는 데에도 적용할 수 있다.At block 4305 , the local prediction analyzer 2430 of FIG. 24 may access historical information from the database 2425 of FIG. 24 . At block 4310 , the local prediction analyzer 2430 of FIG. 24 may estimate the required time based on previous information in the database 2425 of FIG. 24 . The local prediction analyzer 2430 of FIG. 24 may use any desired approach for estimating the lead time. Exemplary approaches include calculating the mean, median, and mode of the prior information, applying weighted functions to the prior information, and performing a linear regression analysis. Embodiments of the present invention may also apply other approaches to estimating the required time.

도 44는 본 발명의 일 실시 예에 따라, 도 26의 가중치들(2635, 2640, 및 2645), 도 27의 가중치들(2735, 2740 및 2745), 도 33의 가중치(3310), 및 도 37의 가중치(3715)를 결정하기 위해, 선형 회귀 분석을 사용하기 위한 절차를 보여주는 흐름도 이다. 블록(4405)에서, 도 26의 가중치 생성기(2630) 및 도 27의 가중치 생성기(2730)는 도 24의 데이터베이스(2425) 내의 이전 정보를 위해 사용하기 위한 슬라이딩 윈도를 결정할 수 있다. 블록(4410)에서, 도 26의 가중치 생성기(2630) 및 도 27의 가중치 생성기(2730)는, 도 24의 데이터베이스(2425) 내에 윈도들을 통해 선형 회귀 분석을 사용하여 가중치 들을 생성할 수 있다. 44 shows weights 2635, 2640, and 2645 of FIG. 26, weights 2735, 2740 and 2745 of FIG. 27, weight 3310 of FIG. 33, and FIG. 37, according to an embodiment of the present invention. A flow chart showing the procedure for using linear regression analysis to determine the weights 3715 of . At block 4405 , weight generator 2630 of FIG. 26 and weight generator 2730 of FIG. 27 may determine a sliding window to use for previous information in database 2425 of FIG. 24 . At block 4410 , weight generator 2630 of FIG. 26 and weight generator 2730 of FIG. 27 may generate weights using linear regression analysis through windows in database 2425 of FIG. 24 .

도 45는 본 발명의 일 실시 예에 따라, 도 27의 원격 추정 소요 시간 계산기(2725)가 도 37의 원격 추정 소요 시간(3710)을 계산하기 위한 절차를 보여주는 흐름도 이다. 블록(4505)에서, 도 27의 통신 시간 계산기(2705)는 도 34의 통신 시간(3410)을 계산할 수 있다. 블록(4510)에서, 도 27의 원격 프로세서 시간 계산기(2710)는 도 35의 원격 프로세서 시간(3515)을 계산할 수 있다. 블록(4515)에서, 도 27의 원격 가비지 컬렉션 시간 계산기(2715)는 원격 가비지 컬렉션 시간을 계산할 수 있다. 블록(4520)에서, 도 24의 원격 예상 분석기(2435)는 도 36의 예상 원격 시간(3605)을 계산할 수 있다. 블록(4525)에서, 도 27의 가중치 생성기(2730)는, 도 37의 원격 추정 소요 시간(3710)을 계산하는데 사용되기 위해 다양한 시간들에 적용 되는 가중치들을 계산할 수 있다. 최종적으로, 블록 4530에서, 도 27의 원격 추정 소요 시간 계산기(2725)는 이 모든 정보로부터 도 37의 원격 추정 소요 시간(3710)을 계산할 수 있다.45 is a flowchart illustrating a procedure for calculating the remote estimated required time 3710 of FIG. 37 by the remote estimated required time calculator 2725 of FIG. 27 according to an embodiment of the present invention. At block 4505 , the communication time calculator 2705 of FIG. 27 may calculate the communication time 3410 of FIG. 34 . At block 4510 , the remote processor time calculator 2710 of FIG. 27 may calculate the remote processor time 3515 of FIG. 35 . At block 4515 , the remote garbage collection time calculator 2715 of FIG. 27 may calculate the remote garbage collection time. At block 4520 , the teleprediction analyzer 2435 of FIG. 24 may calculate the expected remote time 3605 of FIG. 36 . At block 4525 , the weight generator 2730 of FIG. 27 may calculate weights applied at various times to be used in calculating the remote estimated time required 3710 of FIG. 37 . Finally, in block 4530 , the remote estimated time required calculator 2725 of FIG. 27 may calculate the remote estimated time required 3710 of FIG. 37 from all this information.

도 46은 본 발명의 일 실시 예에 따라, 도 27의 통신 시간 계산기(2705)가 도 23의 보조 복제본들(2320 및 2325)과의 도 34의 통신 시간(3410)을 결정하기 위한 절차를 보여주는 흐름도 이다. 도 46의 블록(4605)에서, 도 34의 핑 로직(3405)은 도 23의 보조 복제본들(2320 및 2325) 각각의 통신상태를 검사할 수 있다. 하나 이상의 보조 복제본들이 있을 수 있기 때문에, 점선 화살표(4610)은 블록(4605)이 필요한 만큼 반복될 수 있다. 또는, 블록(4615)에서, 도 27의 통신 시간 계산기(2705)는, 도 34의 통신 시간(3410)을 계산하기 위해 도 24의 데이터베이스(2425) 내에 저장된 이전 정보로부터 도 34의 통신 시간(3410)을 계산 할 수 있다. 도 27의 통신 시간 계산기(2705)는, 도 24의 데이터베이스(2425) 내의 이전 정보의 평균 값, 중간 값, 및 최빈값을 계산하는 것 또는 도 24의 데이터베이스(2425) 내의 이전 정보에 대해 선형 회귀 분석을 수행하는 것을 포함하는, 도 34의 통신 시간(3410)을 계산하기 위한 임의의 바람직한 접근법을 사용할 수 있다. 또는, 도 27의 통신 시간 계산기(2705)는 다양한 노드들의 레이아웃 및 노드들 간의 거리들, 지연들, 및 대역폭에 관한 정보의 저장 그래프에 접근할 수 있다. 이 정보로부터, 도 27의 통신 시간 계산기(2705)는 도 34의 통신 시간(3410)을 계산할 수 있다.46 shows a procedure for the communication time calculator 2705 of FIG. 27 to determine the communication time 3410 of FIG. 34 with the secondary replicas 2320 and 2325 of FIG. 23, according to an embodiment of the present invention. is a flow chart. At block 4605 of FIG. 46 , the ping logic 3405 of FIG. 34 may check the communication state of each of the secondary replicas 2320 and 2325 of FIG. 23 . Since there may be more than one secondary replica, dashed arrow 4610 may be repeated as many times as block 4605 is needed. Alternatively, at block 4615 , the communication time calculator 2705 of FIG. 27 calculates the communication time 3410 of FIG. 34 from previous information stored in the database 2425 of FIG. 24 to calculate the communication time 3410 of FIG. ) can be calculated. The communication time calculator 2705 of FIG. 27 calculates the mean, median, and mode of the prior information in the database 2425 of FIG. 24 or a linear regression analysis on the prior information in the database 2425 of FIG. Any preferred approach for calculating the communication time 3410 of FIG. 34 may be used, including performing Alternatively, the communication time calculator 2705 of FIG. 27 may access a storage graph of information regarding the layout of various nodes and distances, delays, and bandwidths between nodes. From this information, the communication time calculator 2705 of FIG. 27 can calculate the communication time 3410 of FIG. 34 .

도 47은 본 발명의 일 실시 예에 따라, 도 27의 원격 프로세서 시간 계산기(2710)가 도 35의 원격 프로세서 시간(3515)을 결정하기 위한 절차를 보여주는 흐름도 이다. 도 47의 블록 (4705)에서, 도 24의 문의 로직(2415)은 도 23의 보조 복제본들(2320 및 2325)에 도 35의 프로세서 로드들(3505)을 문의할 수 있다. 하나 이상의 보조 복제본들이 있을 수 있기 때문에, 점선 화살표(4710)는, 블록(4705)이 모든 보조 복제본들에게 문의 하는데 필요한 만큼 반복될 수 있다는 것을 보여준다. 블록(4715)에서, 도 24의 수신 로직(2420)은 보조 복제본들로부터 원격 프로세서 로드(들)을 수신할 수 있다. 47 is a flowchart illustrating a procedure for the remote processor time calculator 2710 of FIG. 27 to determine the remote processor time 3515 of FIG. 35 according to an embodiment of the present invention. At block 4705 of FIG. 47 , the query logic 2415 of FIG. 24 may interrogate the processor loads 3505 of FIG. 35 to auxiliary replicas 2320 and 2325 of FIG. 23 . Because there may be more than one secondary replica, dashed arrow 4710 shows that block 4705 may be repeated as many times as necessary to query all secondary replicas. At block 4715 , the receive logic 2420 of FIG. 24 may receive the remote processor load(s) from the secondary replicas.

블록(4720)에서, 도 24의 문의 로직(2415)은 도 23의 보조 복제본들(2320 및 2325)에게 도 35의 소프트웨어 스택 로드들(3510)을 문의 할 수 있다. 하나 이상의 보조 복제본들이 있을 수 있기 때문에, 점선 화살표(4725)는, 블록(4720)이 모든 보조 복제본들에게 문의 하는데 필요한 만큼 반복될 수 있다는 것을 보여준다. 블록(4730)에서, 도 24의 수신 로직(2420)은 보조 복제본들로부터 원격 소프트웨어 스택 로드(들)을 수신할 수 있다.At block 4720 , the query logic 2415 of FIG. 24 may query the secondary replicas 2320 and 2325 of FIG. 23 for the software stack loads 3510 of FIG. 35 . Because there may be more than one secondary replica, dashed arrow 4725 shows that block 4720 may be repeated as many times as necessary to query all secondary replicas. At block 4730 , the receive logic 2420 of FIG. 24 may receive the remote software stack load(s) from the secondary replicas.

최종적으로, 블록(4735)에서, 도 27의 원격 프로세서 시간 계산기(2710)는 도 35의 원격 프로세서 로드(들)(3505) 및 원격 소프트웨어 스택 로드(들)(3510)을 도 35의 원격 프로세서 시간(3515)에 맵핑 할 수 있다.Finally, at block 4735 , the remote processor time calculator 2710 of FIG. 27 calculates the remote processor load(s) 3505 and remote software stack load(s) 3510 of FIG. 35 into the remote processor time of FIG. 35 . (3515) can be mapped.

도 15a 내지 도 22b 및 도 39a 내지 도 47에서, 본 발명의 몇몇 실시 예들이 표시된다. 하지만, 통상의 기술자는, 블록들의 순서를 바꿈으로써, 블록들을 생략함으로써, 또는 도면들에 나타나지 않은 연결들을 포함시킴으로써, 본 발명의 다른 실시 예들을 인지할 것이다. 명시적으로 기술되었든 되지 않았든, 순서도들의 이러한 모든 변형들은, 본 발명의 실시 예들로 간주된다.15A-22B and 39A-47 , some embodiments of the present invention are shown. However, those skilled in the art will recognize other embodiments of the present invention by changing the order of blocks, omitting blocks, or including connections not shown in the drawings. All such variations of flowcharts, whether explicitly described or not, are considered embodiments of the present invention.

아래의 설명은 본 발명의 기술적 사상의 일부 측면들이 구현되는 적절한 기계 또는 기계들의 짧고 일반적인 설명을 제공하고자 한다. 기계 또는 기계들은 적어도 일부는 다른 기계로부터 수신되는 지시들, 가상현실(VR) 환경과의 상호 작용, 생체 피드백, 또는 다른 입력 신호뿐 아니라 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력에 의해 제어될 수 있다. 여기에서 사용되는 바와 같이, 용어 "기계"는 단일 기계, 가상 기계, 또는 기계들, 가상 기계들 또는 함께 동작하는 장치들과 통신하도록 결합된 시스템을 넓게 포함하는 것으로 의도된다. 예시적인 기계들은 예를 들어 자동차, 기차, 택시 등과 같은 개인용 또는 공공 수송과 같은 수송 장치들뿐 아니라 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들을 포함할 수 있다.The following description is intended to provide a brief and general description of a suitable machine or machines in which some aspects of the inventive subject matter may be implemented. The machine or machines are at least in part by instructions received from another machine, interaction with a virtual reality (VR) environment, biofeedback, or other input signals as well as input from conventional input devices such as a keyboard, mouse, etc. can be controlled. As used herein, the term “machine” is intended to broadly encompass a single machine, a virtual machine, or a system coupled to communicate with machines, virtual machines, or devices operating together. Exemplary machines include personal computers, workstations, servers, portable computers, handheld devices, phones, tablets, as well as transport devices such as personal or public transport such as, for example, cars, trains, taxis, etc. computing devices, such as

기계 또는 기계들은 프로그램 가능한 또는 프로그램 불가능한 논리 장치들 또는 어레이들, ASIC (Application Specific Integrated Circuit), 임베디드 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 결합들을 통해서와 같이 하나 또는 그보다 많은 원격 기계들에 대한 하나 또는 그보다 많은 연결들을 활용할 수 있다. 기계들은 인트라넷, 인터넷, LAN (local area networks), WAN (wide area networks) 등과 같은 물리적 그리고/또는 논리적 네트워크의 수단으로 서로 연결될 수 있다. 이 분야에 숙련된 자는 네트워크 통신이 다양한 유선 그리고/또는 무선 근거리 또는 원거리 캐리어들 및 무선 주파수(RF), 위성, 마이크로파, IEEE 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 프로토콜을 활용함을 이해할 것이다.The machine or machines may include embedded controllers such as programmable or non-programmable logic devices or arrays, application specific integrated circuits (ASICs), embedded computers, smart cards, and the like. The machine or machines may utilize one or more connections to one or more remote machines, such as through a network interface, modem, or other communication couplings. Machines may be connected to each other by means of physical and/or logical networks such as intranets, the Internet, local area networks (LANs), wide area networks (WANs), and the like. Those skilled in the art will appreciate that network communication utilizes a variety of wired and/or wireless near or far carriers and protocols including radio frequency (RF), satellite, microwave, IEEE 802.11, Bluetooth, optical, infrared, cable, laser, etc. will understand that

본 발명의 기술적 사상의 실시 예들은, 기계에 의해 액세스되는 때에 기계가 작업들을 수행하거나 또는 추상적인 데이터 타입들 또는 저 레벨 하드웨어 콘텍스트들을 정의하는 것을 유발하는 함수들, 절차들, 데이터 구조들, 응용 프로그램들 등을 포함하는 연관된 데이터를 참조하여 또는 협력하여 설명될 수 있다. 연관된 데이터는, 예를 들어 RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 또는 다른 스토리지 장치들, 그리고 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 연관된 스토리지 매체에 저장될 수 있다. 연관된 데이터는 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 거쳐 패킷들, 직렬 데이터, 병렬 데이터, 전송신호들 등의 형태로 전달되고, 압축된 또는 암호화된 포맷으로 이용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 기계 액세스에 대해 지역적 그리고/또는 원격으로 저장될 수 있다.Embodiments of the inventive concept are functions, procedures, data structures, applications that, when accessed by a machine, cause a machine to perform tasks or define abstract data types or low-level hardware contexts. It may be described with reference to or cooperatively with associated data, including programs and the like. Associated data may include, for example, volatile and/or non-volatile memory such as RAM, ROM, etc., or other storage devices, and hard drives, floppy disks, optical storage, tapes, flash memory, memory sticks, digital video disks, etc. , may be stored in an associated storage medium including bio-storage and the like. The associated data may be transmitted in the form of packets, serial data, parallel data, transmission signals, etc., via transmission environments including physical and/or logical networks, and may be used in a compressed or encrypted format. Associated data may be used in a distributed environment and may be stored locally and/or remotely for machine access.

본 발명의 기술적 사상의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행 가능하며 여기에 설명된 바와 같이 본 발명의 기술적 사상의 구성요소들을 수행하게 하는 명령들을 포함하는 실재하는 비임시 기계 독출 매체를 포함할 수 있다.Embodiments of the inventive concept are tangible, non-transitory machine-readable media that are executable by one or more processors and contain instructions for performing the elements of the inventive concept as described herein. may include

도시된 실시 예들을 참조하여 본 발명의 원칙들이 설명되고 도시되었기 때문에, 도시된 실시 예들이 이러한 원칙들로부터 멀어지지 않으면서 순서대로 및 구체적으로 변형될 수 있고, 임의의 바람직한 방식으로 조합될 수 있음이 이해될 것이다. 앞선 논의가 구체적인 실시 예들에 집중하였지만, 다른 구성들 또한 고려된다. 구체적으로, "본 발명의 기술적 사상의 실시 예에 따른"과 같은 설명들 또는 유사한 표현들이 본 명세서에 사용되었지만, 이러한 문구들은 일반적으로 실시 예의 가능성들을 참조하며, 본 발명의 기술적 사상을 구체적인 실시 예의 구성들로 한정하는 것을 의도하지 않는다. 본 명세서에서 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들로 조합 가능한, 동일한 또는 상이한 실시 예들을 참조할 수 있다.Since the principles of the present invention have been described and illustrated with reference to the illustrated embodiments, the illustrated embodiments may be modified in order and in detail, and may be combined in any desired manner, without departing from these principles. This will be understood. Although the preceding discussion has focused on specific embodiments, other configurations are also contemplated. Specifically, although descriptions such as "according to an embodiment of the technical idea of the present invention" or similar expressions are used in this specification, these phrases generally refer to possibilities of the embodiment, and refer to the technical spirit of the present invention in the specific embodiment. It is not intended to be limited to configurations. As used herein, these terms may refer to the same or different embodiments, combinable into other embodiments.

앞서 설명된 실시 예들은 본 발명의 기술적 사상을 그것들로 한정하는 것으로 해석되지 않는다. 적은 수의 실시 예들이 설명되었지만, 이 분야에 숙련된 자들은 본 기재의 신규한 설명들 및 장점들로부터 실질적으로 멀어지지 않으면서 이러한 실시 예들에 많은 변형들이 가능함을 충분히 이해할 것이다. 따라서, 이러한 모든 변형들은 청구 범위에서 정의되는 바와 같이 본 발명의 기술적 사상의 범위 내에 포함되는 것으로 의도된다.The above-described embodiments are not to be construed as limiting the technical spirit of the present invention thereto. Although a small number of embodiments have been described, those skilled in the art will fully appreciate that many modifications are possible to these embodiments without departing substantially from the novel descriptions and advantages of the present disclosure. Accordingly, all such modifications are intended to be included within the scope of the present invention as defined in the claims.

본 발명의 실시 예들은 제한 없이, 이하 설명들로 확장될 수 있다:Embodiments of the present invention may be extended to the following descriptions without limitation:

설명 1. 본 발명의 일 실시 예는,Description 1. An embodiment of the present invention,

데이터의 주 복제본(2315)을 포함하는 적어도 하나의 저장 장치(140, 145, 150, 155, 160, 165, 225, 230);at least one storage device (140, 145, 150, 155, 160, 165, 225, 230) comprising a primary replica (2315) of data;

주 복제본(2315)에서 입력/출력(I/O) 요청(905)을 완료하기 위한 로컬 추정 소요 시간(3305) 및 데이터의 보조 복제본들(2320, 2325) 중 적어도 하나에서 I/O 요청(905)을 완료하기 위한 원격 추정 소요 시간(3710)을 계산하기 위한 비용 분석기(2310); 및Local estimated time taken 3305 to complete input/output (I/O) request 905 on primary replica 2315 and I/O request 905 on at least one of secondary replicas 2320 , 2325 of data ) a cost analyzer 2310 for calculating a remote estimated time required to complete 3710; and

로컬 추정 소요 시간(3305) 및 적어도 하나의 원격 추정 소요 시간(3710)에 응답하여 주 복제본(2315) 및 적어도 하나의 보조 복제본(2320, 2325) 중 하나로 I/O 요청(905)을 보내기 위한 I/O 재배치기(215)를 포함하는 분산 저장 시스템 노드(124, 130, 135)를 포함한다. I for sending an I/O request 905 to one of the primary replica 2315 and the at least one secondary replica 2320 , 2325 in response to the local estimated time spent 3305 and the at least one remote estimated time spent 3710 . Distributed storage system nodes 124 , 130 , 135 including /O relocator 215 .

설명 2. 본 발명의 실시 예는 설명 1에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 적어도 하나의 저장 장치(140, 145, 150, 155, 160, 165, 225, 230)는 솔리드 스테이트 드라이브(SSD)(140, 145, 150, 155, 160, 165, 225, 230)를 포함한다.Description 2. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to Description 1, and includes at least one storage device 140, 145, 150, 155, 160, 165, 225, 230. includes solid state drives (SSDs) 140 , 145 , 150 , 155 , 160 , 165 , 225 , 230 .

설명 3. 본 발명의 실시 예는 설명 1에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 분산 저장 시스템 노드(125, 130, 135)는 네트워크 결합 솔리드 스테이트 드라이브(Network Attached SSD) 및 이더넷 SSD를 포함하는 세트로부터 나온다.Description 3. An embodiment of the present invention includes the distributed storage system nodes 125, 130, and 135 according to the description 1, wherein the distributed storage system nodes 125, 130 and 135 are network attached solid state drives (Network Attached SSD). and an Ethernet SSD.

설명 4. 본 발명의 실시 예는 설명 1에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 적어도 하나의 저장 장치(140, 145, 150, 155, 160, 165, 225, 230)가 현재 가비지 컬렉션을 수행하는 중인 경우에만, I/O 재배치기(215)는 I/O 요청(905)을 재배치 하기 위해 동작 한다. Description 4. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to Description 1 , and includes at least one storage device 140 , 145 , 150 , 155 , 160 , 165 , 225 , 230 . Only when is currently performing garbage collection, the I/O relocation 215 operates to relocate the I/O request 905 .

설명 5. 본 발명의 실시 예는 설명 4에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 5. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 4,

비용 분석기(2310)는, 주 복제본(2315)에서 I/O 요청(905)을 처리하기 위한 로컬 추정 소요 시간(3305)을 계산하기 위한 로컬 시간 추정기(2405)를 포함하고;The cost analyzer 2310 includes a local time estimator 2405 for calculating a local estimated time taken 3305 for processing an I/O request 905 at the primary replica 2315 ;

I/O 재배치기(215)는I/O relocation 215 is

문턱 시간(2525)을 위한 스토리지(2505); 및storage 2505 for threshold time 2525; and

로컬 추정 소요 시간(3305)을 문턱 시간과 비교하기 위한 제 1 비교기를 포함한다.and a first comparator for comparing the local estimated required time 3305 with a threshold time.

설명 6. 본 발명의 실시 예는 설명 5에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 6. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 5,

로컬 추정 소요 시간(3305)이 문턱 시간 보다 짧은 경우, I/O 재배치기(215)는 I/O 요청(905)을 주 복제본(2315)으로 보내기 위해 동작한다.If the local estimated turnaround time 3305 is less than the threshold time, the I/O relocation 215 operates to direct the I/O request 905 to the primary replica 2315 .

설명 7. 본 발명의 실시 예는 설명 5에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 시간 추정기(2405)는Description 7. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 5, wherein the local time estimator 2405 is

로컬 가비지 컬렉션 시간(2820)을 계산하기 위한 로컬 가비지 컬렉션 시간 계산기(2605);a local garbage collection time calculator 2605 for calculating a local garbage collection time 2820;

로컬 예상 가비지 컬렉션 시간(2905)을 계산하기 위한 로컬 예상 가비지 컬렉션 시간 계산기(2610);a local estimated garbage collection time calculator 2610 for calculating a local estimated garbage collection time 2905;

로컬 가비지 컬렉션 가중치(2636) 및 예상 가비지 컬렉션 가중치(2640)를 위한 스토리지(2620); 및 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)로부터 로컬 추정 소요 시간(3305)을 계산하기 위한 로컬 추정 소요 시간 계산기(2625)를 포함한다.storage 2620 for local garbage collection weights 2636 and expected garbage collection weights 2640; and a local estimated time taken to compute a local estimated time taken 3305 from the local garbage collection time 2820 , the local estimated garbage collection time 2905 , the local garbage collection weight 2635 , and the expected garbage collection weight 2640 . A calculator 2625 is included.

설명 8. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값 및 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)를 곱한 값의 합으로서 로컬 추정 소요 시간(3305)를 계산하도록 동작할 수 있다.Description 8. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , and 135 according to the description 7 , wherein the local estimation time required calculator 2625 sets the local garbage collection weight to the local garbage collection time 2820 . and calculate the local estimated required time 3305 as the sum of the product multiplied by 2635 and the local estimated garbage collection time 2905 multiplied by the expected garbage collection weight 2640 .

설명 9. 본 발명의 실시 예는 설명 8에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값, 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)을 곱한 값, 및 큐 처리 시간(3015)에 큐 처리 가중치(2645)를 곱한 값의 합으로서 로컬 추정 소요 시간(3305)를 계산하도록 동작할 수 있다. Description 9. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , and 135 according to the description 8 , wherein the local estimation time required calculator 2625 sets the local garbage collection weight to the local garbage collection time 2820 . (2635) times the local estimated garbage collection time (2905) multiplied by the expected garbage collection weight (2640), and the queuing time (3015) multiplied by the queuing weight (2645). operable to calculate time 3305 .

설명 10. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 10. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 7,

비용 분석기(2310)는,The cost analyzer 2310 is

주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하기 위한 문의 로직; 및query logic to query the primary replica 2315 for the actual number of empty pages 2805; and

주 복제본(2315)으로부터 실제 빈 페이지들의 수(2805)를 수신하기 위한 수신 로직(2420)을 더 포함하고,further comprising receiving logic (2420) for receiving the actual number of empty pages (2805) from the primary replica (2315);

로컬 가비지 컬렉션 시간 계산기(2605)는, 주 복제본(2315)에 대한 빈 페이지들의 수의 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하고, 차이 값을 로컬 평균 가비지 컬렉션 시간(2815)에 곱하여 로컬 가비지 컬렉션 시간(2820)을 계산하도록 동작한다.The local garbage collection time calculator 2605 calculates a difference value by subtracting the actual number of empty pages 2805 from a threshold value 2810 of the number of empty pages for the primary replica 2315, and calculates the difference value as the local average garbage It operates to multiply the collection time 2815 to calculate a local garbage collection time 2820 .

설명 11. 본 발명의 실시 예는 설명 10에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 가비지 컬렉션 시간 계산기(2605)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 로컬 가비지 컬렉션 시간(2820)에 더하는 동작을 더 한다.Description 11. An embodiment of the present invention includes a distributed storage system node 125, 130, 135 according to statement 10, wherein the local garbage collection time calculator 2605 determines the delay associated with programmable valid pages within each erase block. 2825) is added to the local garbage collection time 2820.

설명 12. 본 발명의 실시 예는 설명 10에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 주기적으로 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하기 위해 동작한다.Description 12. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to description 10 , wherein the query logic 2415 periodically places the actual number of empty pages in the primary replica 2315 ( 2805 ). works to inquire about

설명 13. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 13. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 7,

비용 분석기(2310)는,The cost analyzer 2310 is

주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의 하기 위한 문의 로직; 및query logic to query the primary replica 2315 for the actual number of empty pages 2805; and

주 복제본(2315)로부터 실제 빈 페이지들의 수(2805)를 수신하기 위한 수신 로직(2420)을 더 포함하고,further comprising receiving logic (2420) for receiving the actual number of empty pages (2805) from the primary replica (2315);

로컬 예상 가비지 컬렉션 시간 계산기(2610)는, 주 복제본(2315)에 대한 빈 페이지들 수의 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하고, 차이 값을 로컬 평균 가비지 컬렉션 시간(2815)에 곱하여 로컬 예상 가비지 컬렉션 시간(2905)을 계산하도록 동작한다.The local expected garbage collection time calculator 2610 computes a difference value by subtracting the actual number of empty pages 2805 from a threshold value of the number of empty pages for the primary replica 2315 ( 2810 ), and the difference value as a local average It operates to multiply the garbage collection time 2815 to calculate a local expected garbage collection time 2905 .

설명 14. 본 발명의 실시 예는 설명 13에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 로컬 가비지 컬렉션 시간(2820)에 더하는 동작을 더 한다.Description 14. An embodiment of the present invention includes a distributed storage system node 125, 130, 135 according to statement 13, wherein the local expected garbage collection time calculator 2610 is a delay associated with programmable valid pages within each erase block. (2825) is added to the local garbage collection time (2820).

설명 15. 본 발명의 실시 예는 설명 13에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 주기적으로 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하기 위해 동작한다.Description 15. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to description 13 , wherein the query logic 2415 periodically places the actual number of empty pages in the primary replica 2315 ( 2805 ). works to inquire about

설명 16. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 16. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 7,

로컬 시간 추정기(2405)는 큐 처리 시간(3015)을 계산하기 위한 큐 처리 시간 계산기(2615)를 포함하고;local time estimator 2405 includes queue processing time calculator 2615 for calculating queue processing time 3015;

스토리지(2620)는 큐 처리 가중치(2645)를 위한 스토리지를 포함하고;storage 2620 includes storage for queue processing weights 2645 ;

로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 큐 처리 시간(3015), 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640) 및 큐 처리 가중치(2645)로부터 로컬 추정 소요 시간을 계산하도록 동작할 수 있다.The local estimated time spent calculator 2625 includes a local garbage collection time 2820, a local estimated garbage collection time 2905, a queue processing time 3015, a local garbage collection weight 2635, an estimated garbage collection weight 2640, and It may operate to calculate a local estimated time taken from the queue processing weight 2645 .

설명 17. 본 발명의 실시 예는 설명 16에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 17. An embodiment of the present invention comprises the distributed storage system nodes 125, 130, 135 according to description 16,

비용 분석기(2310)는,The cost analyzer 2310 is

주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 주 복제본(2315)에 문의 하기 위한 문의 로직; 및query logic for querying the primary replica 2315 for the number 3005 of I/O requests 905 pending on the primary replica 2315; and

주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 주 복제본(2315)으로부터 수신하기 위한 수신 로직을 더 포함하고,receiving logic for receiving from the primary replica (2315) a number (3005) of I/O requests (905) pending on the primary replica (2315);

큐 처리 시간 계산기(2615)는 주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 하나의 I/O 요청(905)을 처리하디 위한 소요 시간(3010)에 곱하여 큐 처리 시간(3015)을 계산하도록 동작할 수 있다.The queue processing time calculator 2615 multiplies the number of I/O requests 905 pending on the primary replica 2315 ( 3005 ) by the time required to process one I/O request ( 905 ) 3010 to create a queue operable to calculate processing time 3015 .

설명 18. 본 발명의 실시 예는 설명 17에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 주기적으로 주 복제본(2315)에 주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 문의 하도록 동작한다.Description 18. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to statement 17 , wherein the query logic 2415 is periodically pending on the primary replica 2315 on the primary replica 2315 . It operates to query the number 3005 of I/O requests 905 .

설명 19. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 비용 분석기(2310)는,Description 19. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 7, wherein the cost analyzer 2310 comprises:

주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315) 상의 최악의 경우 추정 로컬 가비지 컬렉션(3110), 주 복제본(2315) 상의 평균적인 경우 추정 로컬 가비지 컬렉션(3115), 주 복제본(2315)에 대한 이전 처리 시간 정보(3120), 및 주 복제본(2315) 상의 평균적인 경우 추정 처리 시간(3130) 중 적어도 하나를 포함하는 정보를 저장하는 데이터베이스(2425); 및Previous local garbage collection information 3105 on the primary replica 2315, worst case estimated local garbage collection 3110 on the primary 2315, average case estimated local garbage collection 3115 on the primary 2315, a database 2425 storing information including at least one of prior processing time information 3120 for the primary replica 2315, and an average case estimated processing time 3130 on the primary replica 2315; and

데이터베이스(2425)에 저장된 정보로부터 주 복제본(2315)에 대한 예상 로컬 시간을 계산하기 위한 로컬 예상 분석기(2430)를 더 포함한다. It further includes a local prediction analyzer 2430 for calculating an expected local time for the primary replica 2315 from information stored in the database 2425 .

설명 20. 본 발명의 실시 예는 설명 19에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 예상 로컬 시간(3205), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하도록 동작한다. Description 20. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to description 19 , wherein the local estimated time required calculator 2625 includes: a local garbage collection time 2820 , a local estimated garbage collection It operates to calculate a local estimated time taken 3305 from the time 2905 , the expected local time 3205 , the local garbage collection weight 2635 , and the expected garbage collection weight 2640 .

설명 21. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 시간 추정기(2405)는 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하기 위한 가중치 생성기(2630)를 더 포함한다. Description 21. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 7, wherein the local time estimator 2405 includes a local garbage collection weight 2635 and an expected garbage collection weight 2640 It further includes a weight generator 2630 for generating .

설명 22. 본 발명의 실시 예는 설명 21에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 가중치 생성기(2630)는, 주 복제본(2315)에 대한 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)을 생성하도록 동작한다.Description 22. An embodiment of the present invention comprises distributed storage system nodes 125, 130, 135 according to statement 21, wherein the weight generator 2630 performs a linear regression analysis based on previous data on the primary replica 2315. used to generate a local garbage collection weight 2635 and an expected garbage collection weight 2640 .

설명 23. 본 발명의 실시 예는 설명 22에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 이전 데이터는 주 복제본(2315)의 슬라이딩 윈도 사용으로부터 나온다.Description 23. An embodiment of the present invention comprises a distributed storage system node 125 , 130 , 135 according to statement 22 , wherein the old data comes from the use of a sliding window of the primary replica 2315 .

설명 24. 본 발명의 실시 예는 설명 5에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 24. An embodiment of the present invention comprises the distributed storage system nodes 125, 130, 135 according to description 5,

비용 분석기(2310)는, 적어도 하나의 보조 복제본들(2320, 2325)에서의 I/O 요청(905)을 처리하기 위한, 적어도 하나의 원격 추정 소요 시간(3710)을 계산하기 위한 원격 시간 추정기(2410)을 더 포함하고,The cost analyzer 2310 includes a remote time estimator ( 2410),

I/O 재배치기(215)는,I/O relocation 215 is,

로컬 추정 소요 시간(3305)를 적어도 하나의 원격 추정 소요 시간(3710)과 비교하기 위한 제 2 비교기(2515); 및a second comparator 2515 for comparing the local estimated time spent 3305 with the at least one remote estimated time spent 3710; and

주 복제본(2315), 및 로컬 추정 소요 시간(3305) 및 적어도 하나의 원격 추정 소요 시간(3710)으로부터의 최소 시간으로 I/O 요청(905)을 처리하기 위한 적어도 하나의 보조 복제본(2320, 2325) 중 하나를 선택하기 위한 선택기(2520)를 더 포함한다. A primary replica 2315, and at least one secondary replica 2320, 2325 for handling I/O requests 905 with a minimum time from a local estimated time spent 3305 and at least one remote estimated time spent 3710 ) further includes a selector 2520 for selecting one.

설명 25. 본 발명의 실시 예는 설명 24에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 25. An embodiment of the present invention comprises the distributed storage system nodes 125, 130, 135 according to description 24,

원격 시간 추정기(2410)는,The remote time estimator 2410 includes:

분산 저장 시스템 노드(125, 130, 135) 및 적어도 하나의 보조 복제본(2320, 2325)을 포함하는 적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 사이의 통신 시간(3410)을 계산하기 위한 통신 시간 계산기(2705);for calculating a communication time 3410 between distributed storage system nodes 125 , 130 , 135 and at least one secondary storage system node 125 , 130 , 135 comprising at least one secondary replica 2320 , 2325 . communication time calculator 2705;

적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 대한 원격 프로세서 시간(3515)을 계산하기 위한 원격 프로세서 시간 계산기(2710); a remote processor time calculator (2710) for calculating remote processor time (3515) for at least one secondary storage system node (125, 130, 135);

적어도 하나의 보조 복제본(2320, 2325)을 위한 원격 가비지 컬렉션 시간(3705)을 계산하기 위한 원격 가비지 컬렉션 시간 계산기(2715);a remote garbage collection time calculator (2715) for calculating a remote garbage collection time (3705) for at least one secondary replica (2320, 2325);

통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치를 위한 스토리지(2720); 및storage 2720 for communication time weights 2735 , remote processor time weights 2740 , and remote garbage collection time weights; and

통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)으로부터 원격 추정 소요 시간(3710)을 계산하기 위한 원격 추정 소요 시간 계산기(2725)를 포함한다.Remote estimated time taken from communication time 3410 , remote processor time 3515 , remote garbage collection time 3705 , communication time weight 2735 , remote processor time weight 2740 , and remote garbage collection time weight 2745 . and a remote estimated time required calculator 2725 for calculating 3710 .

설명 26. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 원격 추정 소요 시간 계산기(2725)는 통신 시간(3410)에 통신 시간 가중치(2735)을 곱한 값, 원격 프로세서 시간(3515)에 원격 프로세서 시간 가중치(2740)을 곱한 값, 및 원격 가비지 컬렉션 시간(3705)에 원격 가비지 컬렉션 시간 가중치(2745)를 곱한 값의 합으로서 원격 추정 소요 시간(3710)을 계산하도록 동작할 수 있다.Description 26. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to description 25 , wherein the remote estimated time required calculator 2725 calculates the communication time weight 2735 to the communication time 3410 . Remote estimated time taken 3710 as the sum of the product, remote processor time 3515 multiplied by remote processor time weight 2740, and remote garbage collection time 3705 multiplied by remote garbage collection time weight 2745 ) can be operated to calculate

설명 27. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 통신 시간 계산기(2705)는 통신 시간(3410)을 측정하기 위한 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하기 위한 핑 로직(3405)을 포함한다. Description 27. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to statement 25 , wherein the communication time calculator 2705 is at least one auxiliary storage system for measuring the communication time 3410 . and a ping logic 3405 for checking the communication status of the nodes 125, 130, and 135.

설명 28. 본 발명의 실시 예는 설명 27에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 핑 로직(3405)은 주기적으로 통신 시간(3410)을 측정하기 위한 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하도록 동작한다. Description 28. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to description 27 , wherein the ping logic 3405 periodically has at least one auxiliary storage for measuring the communication time 3410 . It operates to check the communication state of the system nodes (125, 130, 135).

설명 29. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 29. An embodiment of the present invention comprises the distributed storage system nodes 125, 130, 135 according to description 25,

비용 분석기(2310)는,The cost analyzer 2310 is

적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 상의 원격 프로세서 로드(3505)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 문의하기 위한 문의 로직(2415); 및query logic 2415 for querying the at least one secondary storage system node (125, 130, 135) for a remote processor load (3505) on the at least one secondary storage system node (125, 130, 135); and

원격 프로세서 로드(3505)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)로부터 수신하기 위한 수신 로직(2420)을 더 포함하고,further comprising receiving logic (2420) for receiving a remote processor load (3505) from at least one secondary storage system node (125, 130, 135);

원격 프로세서 시간 계산기(2710)는 원격 프로세서 로드(3505)에 응답하여 원격 프로세서 시간(3515)을 계산하도록 동작한다.The remote processor time calculator 2710 is operative to calculate the remote processor time 3515 in response to the remote processor load 3505 .

설명 30. 본 발명의 실시 예는 설명 29에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 원격 프로세서 로드(3505)를 주기적으로 문의하도록 동작한다.Statement 30. An embodiment of the present invention includes a distributed storage system node (125, 130, 135) according to statement 29, wherein the query logic 2415 is remote to at least one secondary storage system node (125, 130, 135). It operates to periodically query the processor load 3505 .

설명 31. 본 발명의 실시 예는 설명 29에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 31. An embodiment of the present invention comprises the distributed storage system nodes 125, 130, 135 according to description 29,

문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 상의 원격 소프트웨어 스택 로드(3515)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 문의하도록 동작하고;query logic 2415 is operative to query at least one secondary storage system node 125 , 130 , 135 for a remote software stack load 3515 on at least one secondary storage system node 125 , 130 , 135 ;

수신 로직(2420)은 원격 소프트웨어 스택 로드(3510)을 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)로부터 수신하도록 동작하고,receive logic 2420 is operative to receive remote software stack load 3510 from at least one secondary storage system node 125 , 130 , 135 ;

원격 프로세서 시간 계산기(2710)는 원격 프로세서 로드(3505) 및 원격 소프트웨어 스택 로드(3510)에 응답하여 원격 프로세서 시간(3515)를 계산하도록 동작한다.The remote processor time calculator 2710 is operative to calculate the remote processor time 3515 in response to the remote processor load 3505 and the remote software stack load 3510 .

설명 32. 본 발명의 실시 예는 설명 31에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 원격 소프트웨어 스택 로드(3510)을 주기적으로 문의하도록 동작한다.Description 32. An embodiment of the present invention includes a distributed storage system node (125, 130, 135) according to statement 31, wherein the query logic 2415 is remote to at least one secondary storage system node (125, 130, 135). It operates to periodically query the software stack load 3510 .

설명 33. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 33. An embodiment of the present invention comprises the distributed storage system nodes 125, 130, 135 according to description 25,

비용 분석기(2310)는,The cost analyzer 2310 is

실제 빈 페이지들의 수(2805)를 적어도 하나의 보조 복제본(2320, 2325)에 문의하기 위한 문의 로직(2415); 및query logic 2415 for querying the actual number of empty pages 2805 to the at least one secondary replica 2320 , 2325 ; and

적어도 하나의 보조 복제본(2320, 2325)으로부터 실제 빈 페이지들의 수(2805)를 수신하기 위한 수신 로직(2420)을 더 포함하고,further comprising receiving logic (2420) for receiving the actual number of empty pages (2805) from the at least one secondary replica (2320, 2325);

원격 가비지 컬렉션 시간 계산기(2715)는, 적어도 하나의 보조 복제본(2320, 2325)에 대한 빈 페이지들 수의 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하고, 차이 값에 원격 평균 가비지 컬렉션 시간을 곱하여(4160) 원격 가비지 컬렉션 시간(3705)을 계산하도록 동작한다.The remote garbage collection time calculator 2715 calculates a difference value by subtracting the actual number of empty pages 2805 from a threshold value 2810 of the number of empty pages for the at least one secondary replica 2320 , 2325 , the difference and multiply the value by the remote average garbage collection time ( 4160 ) to calculate a remote garbage collection time ( 3705 ).

설명 34. 본 발명의 실시 예는 설명 33에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 원격 가비지 컬렉션 시간 계산기(2715)는 각각의 삭제 블록의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 원격 가비지 컬렉션 시간(3705)에 더하는 동작을 더 한다. Statement 34. An embodiment of the present invention includes a distributed storage system node 125, 130, 135 according to statement 33, wherein the remote garbage collection time calculator 2715 computes a delay associated with the programmable valid pages of each erase block. 2825) is added to the remote garbage collection time 3705.

설명 35. 본 발명의 실시 예는 설명 33에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 복제본(2320, 2325)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하도록 동작한다.Description 35. An embodiment of the present invention includes the distributed storage system nodes 125, 130, 135 according to description 33, wherein the query logic 2415 is the number of actual empty pages in the at least one secondary replica 2320, 2325. (2805) operates to interrogate periodically.

설명 36. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 비용 분석기(2310)는,Description 36. An embodiment of the present invention comprises the distributed storage system nodes 125, 130, 135 according to description 25, wherein the cost analyzer 2310 comprises:

적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 통신 시간 정보(3135), 적어도 하나의 보조 복제본(2320, 2325)에 대한 통신 시간(3410)의 최악의 경우 추정(3140), 적어도 하나의 보조 복제본(2320, 2325)에 대한 통신 시간(3410)의 평균적인 경우 추정(3145), 적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 원격 프로세서 시간 정보(3150), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 프로세서 시간(3515)에 대한 최악의 경우 추정(3155), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 프로세서 시간(3515)에 대한 평균적인 경우 추정(3160), 적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 원격 가비지 컬렉션 정보(3165), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션에 대한 최악의 경우 추정(3170), 및 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션(3175)에 대한 평균적인 경우 추정 중 적어도 하나를 포함하는 정보를 저장하는 데이터베이스(2425); 및previous communication time information 3135 for at least one secondary replica 2320, 2325, worst case estimate 3140 of communication time 3410 for at least one secondary replica 2320, 2325, at least one secondary Average case estimate 3145 of communication time 3410 for replicas 2320, 2325, previous remote processor time information 3150 for at least one secondary replica 2320, 2325, at least one secondary replica 2320 , 2325 , worst case estimate 3155 for remote processor time 3515 , average case estimate 3160 for remote processor time 3515 on at least one secondary replica 2320 , 2325 , at least one Previous remote garbage collection information 3165 for secondary replicas 2320, 2325, worst case estimate 3170 for remote garbage collection on at least one secondary replica 2320, 2325, and at least one secondary replica 2320 , 2325) a database 2425 for storing information including at least one of an average case estimate for remote garbage collection 3175; and

데이터베이스(2425)에 저장된 정보(3135, 3140, 3145, 3150, 3155, 3160, 3165, 3170, 3175)로부터, 적어도 하나의 보조 복제본(2320, 2325)에 대한 예상 원격 시간(3605)을 계산하기 위한 원격 예상 분석기(2435)를 더 포함할 수 있다.from information 3135 , 3140 , 3145 , 3150 , 3155 , 3160 , 3165 , 3170 , 3175 stored in database 2425 , for calculating an estimated remote time 3605 for at least one secondary replica 2320 , 2325 . A remote prediction analyzer 2435 may be further included.

설명 37. 본 발명의 실시 예는 설명 36에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 원격 추정 소요 시간 계산기(2725)는 통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 예상 원격 시간(3605), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)로부터, 원격 추정 소요 시간(3710)을 계산하도록 동작한다. Description 37. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to statement 36 , wherein the remote estimated time spent calculator 2725 includes a communication time 3410 , a remote processor time 3515 , From the remote garbage collection time 3705 , the estimated remote time 3605 , the communication time weight 2735 , the remote processor time weight 2740 , and the remote garbage collection time weight 2745 , calculate a remote estimated time taken 3710 . act to do

설명 38. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 원격 시간 추정기(2410)는, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하기 위한 가중치 생성기(2730)를 더 포함할 수 있다.Description 38. An embodiment of the present invention includes the distributed storage system nodes 125 , 130 , 135 according to statement 25 , wherein the remote time estimator 2410 comprises: a communication time weight 2735 , a remote processor time weight 2740 . , and a weight generator 2730 for generating the remote garbage collection time weight 2745 .

설명 39. 본 발명의 실시 예는 설명 38에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 가중치 생성기(2730)는 적어도 하나의 보조 복제본(2320, 2325)의 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하도록 동작한다.Description 39. An embodiment of the present invention comprises a distributed storage system node (125, 130, 135) according to statement 38, wherein the weight generator (2730) is linear based on previous data of the at least one secondary replica (2320, 2325). The regression analysis is used to generate communication time weights 2735 , remote processor time weights 2740 , and remote garbage collection time weights 2745 .

설명 40. 본 발명의 실시 예는 설명 39에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 이전 데이터는 적어도 하나의 보조 복제본(2320, 2325) 의 슬라이딩 윈도 사용으로부터 나온다.Statement 40. An embodiment of the present invention comprises a distributed storage system node (125, 130, 135) according to statement 39, wherein the old data comes from the use of sliding windows of at least one secondary replica (2320, 2325).

설명 41. 본 발명의 실시 예는,Description 41. An embodiment of the present invention,

데이터의 주 복제본(2315)에서 입력/출력 (I/O) 요청(905)을 처리하기 위한 로컬 추정 소요 시간(3305)을 계산하고, 주 복제본(2315)은 저장 장치(140, 145, 150, 155, 160, 165, 225, 230)에 포함되는 로컬 시간 추정기(2405); 및Calculate a local estimated time taken 3305 to process an input/output (I/O) request 905 on the primary replica 2315 of the data, the primary replica 2315 being the storage devices 140 , 145 , 150 , a local time estimator 2405 included in 155, 160, 165, 225, 230; and

데이터의 적어도 하나의 보조 복제본(2320, 2325)에서 I/O 요청(905)을 처리하기 위한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하기 위한 원격 시간 추정기(2410)를 포함하는 비용 분석기를 포함하고, A cost analyzer comprising a remote time estimator 2410 for calculating at least one remote estimated time taken 3710 to process an I/O request 905 on at least one secondary replica 2320 , 2325 of data. including,

비용 분석기(2310)는, I/O 재배치기(215)가, 로컬 추정 소요 시간(3305) 및 적어도 하나의 원격 추정 소요 시간(3710)에 응답하여, I/O 요청(905)을 주 복제본(2315) 및 적어도 하나의 보조 복제본(2320, 2325) 중 하나에 전송할 수 있게 한다. The cost analyzer 2310 determines that the I/O relocator 215 converts the I/O request 905 to the primary replica, in response to the local estimated time spent 3305 and at least one remote estimated time spent 3710 . 2315) and at least one of the secondary replicas (2320, 2325).

설명 42. 본 발명의 실시 예는 설명 41에 따른 비용 분석기(2310)를 포함하고, 저장 장치(140, 145, 150, 155, 160, 165, 225, 230)는 솔리드 스테이트 드라이브(140, 145, 150, 155, 160, 165, 225, 230; SSD)를 포함한다. Statement 42. An embodiment of the present invention includes a cost analyzer 2310 according to statement 41, wherein the storage devices 140, 145, 150, 155, 160, 165, 225, 230 are solid state drives 140, 145, 150, 155, 160, 165, 225, 230 (SSD).

설명 43. 본 발명의 실시 예는 설명 41에 따른 비용 분석기(2310)를 포함하고, 비용 분석기(2310)는, 주 복제본(2315)이 가비지 컬렉션을 수행하는 중에만 활성화 된다. Description 43. An embodiment of the present invention includes a cost analyzer 2310 according to statement 41, wherein the cost analyzer 2310 is only activated while the primary replica 2315 is performing garbage collection.

설명 44. 본 발명의 실시 예는 설명 43에 따른 비용 분석기(2310)를 포함하고, 로컬 시간 추정기(2405)는,Description 44. An embodiment of the present invention comprises the cost analyzer 2310 according to statement 43, wherein the local time estimator 2405 comprises:

로컬 가비지 컬렉션 시간(2820)을 계산하기 위한 로컬 가비지 컬렉션 시간 계산기(2605);a local garbage collection time calculator 2605 for calculating a local garbage collection time 2820;

로컬 예상 가비지 컬렉션 시간(2905)을 계산하기 위한 로컬 예상 가비지 컬렉션 시간 계산기(2610);a local estimated garbage collection time calculator 2610 for calculating a local estimated garbage collection time 2905;

로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 위한 스토리지(2620); 및storage 2620 for local garbage collection weights 2635 and expected garbage collection weights 2640; and

로컬 가비지 컬렉션 시간(2820), 로컬 예상 가지비 컬렉션 시간(2905), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)를 계산하기 위한 로컬 추정 소요 시간 계산기(2625)를 포함한다.Local estimated time taken to compute a local estimated time taken 3305 from the local garbage collection time 2820 , the local estimated garbage collection time 2905 , the local garbage collection weights 2635 , and the expected garbage collection weights 2640 . A calculator 2625 is included.

설명 45. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값 및 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가지지 컬렉션 가중치(2640)을 곱한 값의 합으로서 로컬 추정 소요 시간(3305)을 계산하도록 동작한다. Description 45. An embodiment of the present invention includes the cost analyzer 2310 according to statement 44, wherein the local estimated time taken calculator 2625 multiplies the local garbage collection time 2820 by the local garbage collection weight 2635 and It operates to calculate the local estimated required time 3305 as the sum of the local estimated garbage collection time 2905 multiplied by the expected garbage collection weight 2640 .

설명 46. 본 발명의 실시 예는 설명 45에 따른 비용 분석기(2310)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치를 곱한 값, 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)을 곱한 값, 및 큐 처리 시간(3015)에 큐 처리 가중치(2645)를 곱한 값의 합으로서 로컬 추정 소요 시간(3305)을 계산하도록 동작한다.Description 46. An embodiment of the present invention includes the cost analyzer 2310 according to description 45, wherein the local estimated time required calculator 2625 multiplies the local garbage collection time 2820 by a local garbage collection weight, It operates to calculate a local estimated time required 3305 as the sum of the collection time 2905 times the expected garbage collection weight 2640 and the queue processing time 3015 times the queue processing weight 2645 .

설명 47. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고,Description 47. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 44,

비용 분석기(2310)는 실제 빈 페이지들의 수(2805)를 주 복제본(2315)에 문의하기 위한 문의 로직(2415); 및The cost analyzer 2310 includes query logic 2415 for querying the primary replica 2315 for the actual number of empty pages 2805; and

실제 빈 페이지들의 수(2805)를 주 복제본(2315)로부터 수신하기 위한 수신 로직(2420)을 더 포함하고,receiving logic (2420) for receiving the actual number of empty pages (2805) from the primary replica (2315);

로컬 가비지 컬렉션 시간 계산기(2605)는 빈 페이지들 수의 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하고, 차이 값에 로컬 평균 가비지 컬렉션 시간(2815)을 곱하여 로컬 가비지 컬렉션 시간(2820)을 계산하도록 동작한다.The local garbage collection time calculator 2605 calculates a difference value by subtracting the actual number of empty pages 2805 from a threshold value of the number of empty pages 2810, and multiplies the difference value by the local average garbage collection time 2815 to obtain the local It operates to calculate a garbage collection time 2820 .

설명 48. 본 발명의 실시 예는 설명 47에 따른 비용 분석기(2310)를 포함하고, 로컬 가비지 컬렉션 시간 계산기(2605)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 로컬 가비지 컬렉션 시간(2820)에 더하는 동작을 더 한다.Statement 48. An embodiment of the present invention includes a cost analyzer 2310 according to statement 47, wherein the local garbage collection time calculator 2605 calculates a delay 2825 associated with programmable valid pages within each erase block for local garbage collection. Add operation to time 2820 .

설명 49. 본 발명의 실시 예는 설명 47에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하도록 동작한다.Statement 49. An embodiment of the present invention includes a cost analyzer 2310 according to statement 47, wherein the query logic 2415 is configured to periodically query the at least one primary replica 2315 for the number of actual empty pages 2805. It works.

설명 50. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고,Statement 50. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 44,

비용 분석기(2310)는,The cost analyzer 2310 is

실제 빈 페이지들의 수(2805)를 주 복제본(2315)에 문의하기 위한 문의 로직(2415); 및query logic 2415 for querying the primary replica 2315 for the number of actual empty pages 2805; and

실제 빈 페이지들의 수(2805)를 주 복제본(2315)로부터 수신하기 위한 수신 로직(2420)을 더 포함하고,receiving logic (2420) for receiving the actual number of empty pages (2805) from the primary replica (2315);

로컬 예상 가비지 컬렉션 시간 계산기(2610)는 주 복제본(2315)에 대한 빈 페이지들 수의 문턱 값(2810)으로부터 실제 빈 페이지들의 수를 뺀 차이 값을 계산하고, 차이 값을 로컬 평균 가비지 컬렉션 시간(2815)에 곱하여 로컬 예상 가비지 컬렉션 시간(2905)을 계산하도록 동작 한다.The local estimated garbage collection time calculator 2610 calculates a difference value by subtracting the actual number of empty pages from the threshold value 2810 of the number of empty pages for the primary replica 2315, and calculates the difference value as the local average garbage collection time ( 2815) to calculate the local expected garbage collection time 2905.

설명 51. 본 발명의 실시 예는 설명 50에 따른 비용 분석기(2310)를 포함하고, 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 로컬 예상 가비지 컬렉션 시간(2905)에 더하는 동작을 더 한다.Description 51. An embodiment of the present invention includes a cost analyzer 2310 according to statement 50, wherein the local estimated garbage collection time calculator 2610 calculates a local estimate of a delay 2825 associated with programmable valid pages within each erase block. Add operation to garbage collection time 2905.

설명 52. 본 발명의 실시 예는 설명 50에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하도록 동작한다.Statement 52. An embodiment of the present invention includes a cost analyzer 2310 according to statement 50, wherein the query logic 2415 is configured to periodically query the at least one primary replica 2315 for the number of actual empty pages 2805. It works.

설명 53. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고,Description 53. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 44,

로컬 시간 추정기(2405)는 큐 처리 시간(3015)을 계산하기 위한 큐 처리 시간 계산기(2615)를 포함하고,local time estimator 2405 includes queue processing time calculator 2615 for calculating queue processing time 3015;

스토리지(2630)는 큐 처리 가중치(2645)를 위한 스토리지를 포함하고,Storage 2630 includes storage for queue processing weights 2645,

로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 큐 처리 시간(3015), 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)로부터 로컬 추정 소요 시간(3305)을 계산하도록 동작한다. The local estimated time taken calculator 2625 includes a local garbage collection time 2820, a local estimated garbage collection time 2905, a queue processing time 3015, a local garbage collection weight 2635, an estimated garbage collection weight 2640, and calculate a local estimated time taken 3305 from the queue processing weight 2645 .

설명 54. 본 발명의 실시 예는 설명 53에 따른 비용 분석기(2310)를 포함하고, Description 54. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 53,

비용 분석기(2310)는,The cost analyzer 2310 is

주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 주 복제본(2315)에 문의 하기 위한 문의 로직; 및query logic for querying the primary replica 2315 for the number 3005 of I/O requests 905 pending on the primary replica 2315; and

주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 주 복제본(2315)으로부터 수신하기 위한 수신 로직을 더 포함하고,receiving logic for receiving from the primary replica (2315) a number (3005) of I/O requests (905) pending on the primary replica (2315);

큐 처리 시간 계산기(2615)는 주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 하나의 I/O 요청(905)을 처리하는데 소요 시간(3010)에 곱하여 큐 처리 시간(3015)을 계산하도록 동작할 수 있다.Queue processing time calculator 2615 multiplies the number of I/O requests 905 pending on the primary replica 2315 ( 3005 ) by the time taken to process one I/O request ( 905 ) 3010 to process the queue. operable to calculate time 3015 .

설명 55. 본 발명의 실시 예는 설명 54에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 주 복제본(2315)에 주기적으로 문의 하도록 동작한다.Description 55. An embodiment of the present invention includes a cost analyzer 2310 according to statement 54, wherein the query logic 2415 notes the number 3005 of pending I/O requests 905 to the primary replica 2315. It operates to periodically inquire the replica 2315.

설명 56. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고,Statement 56. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 44,

주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315) 상의 최악의 경우 추정 로컬 가비지 컬렉션(3110), 주 복제본(2315) 상의 평균적인 경우 추정 로컬 가비지 컬렉션(3115), 주 복제본(2315)에 대한 이전 처리 시간 정보(3120), 및 주 복제본(2315) 상의 평균적인 경우 추정 처리 시간(3130) 중 적어도 하나를 포함하는 정보를 저장하는 데이터베이스(2425); 및Previous local garbage collection information 3105 on the primary replica 2315, worst case estimated local garbage collection 3110 on the primary 2315, average case estimated local garbage collection 3115 on the primary 2315, a database 2425 storing information including at least one of prior processing time information 3120 for the primary replica 2315, and an average case estimated processing time 3130 on the primary replica 2315; and

데이터베이스(2425)에 저장된 정보로부터 주 복제본(2315)에 대한 예상 로컬 시간을 계산하기 위한 로컬 예상 분석기(2430)를 더 포함한다.It further includes a local prediction analyzer 2430 for calculating an expected local time for the primary replica 2315 from information stored in the database 2425 .

설명 57. 본 발명의 실시 예는 설명 56에 따른 비용 분석기(2310)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 예상 로컬 시간(3205), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하도록 동작한다.Description 57. An embodiment of the present invention includes the cost analyzer 2310 according to statement 56, wherein the local estimated time taken calculator 2625 includes: a local garbage collection time 2820, a local estimated garbage collection time 2905, an estimated It operates to calculate a local estimated time taken 3305 from the local time 3205 , the local garbage collection weight 2635 , and the expected garbage collection weight 2640 .

설명 58. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고, 로컬 시간 추정기(2405)는 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하기 위한 가중치 생성기(2630)를 더 포함한다.Description 58. An embodiment of the present invention includes a cost analyzer 2310 according to statement 44, wherein the local time estimator 2405 is a weight generator for generating a local garbage collection weight 2635 and an expected garbage collection weight 2640. (2630).

설명 59. 본 발명의 실시 예는 설명 58에 따른 비용 분석기(2310)를 포함하고, 가중치 생성기(2630)는, 주 복제본(2315)에 대한 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)을 생성하도록 동작한다.Statement 59. An embodiment of the present invention includes a cost analyzer 2310 according to statement 58, wherein the weight generator 2630 uses a linear regression analysis based on previous data for the primary replica 2315 for local garbage collection. It operates to generate a weight 2635 and an expected garbage collection weight 2640 .

설명 60. 본 발명의 실시 예는 설명 59에 따른 비용 분석기(2310)를 포함하고, 이전 데이터는 주 복제본(2315) 사용의 슬라이딩 윈도로부터 나온다.Description 60. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 59, wherein the previous data comes from a sliding window of use of the primary replica 2315.

설명 61. 본 발명의 실시 예는 설명 43에 따른 비용 분석기(2310)를 포함하고, 원격 시간 추정기(2410)는,Description 61. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 43, wherein the remote time estimator 2410 comprises:

분산 저장 시스템 노드(125, 130, 135) 및 적어도 하나의 보조 복제본(2320, 2325)를 포함하는 적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 사이의 통신 시간(3410)을 계산하기 위한 통신 시간 계산기(2705);for calculating a communication time 3410 between distributed storage system nodes 125 , 130 , 135 and at least one secondary storage system node 125 , 130 , 135 comprising at least one secondary replica 2320 , 2325 . communication time calculator 2705;

적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 대한 원격 프로세서 시간(3515)을 계산하기 위한 원격 프로세서 시간 계산기(2710);a remote processor time calculator (2710) for calculating remote processor time (3515) for at least one secondary storage system node (125, 130, 135);

적어도 하나의 보조 복제본(2320, 2325)을 위한 원격 가비지 컬렉션 시간(3705)을 계산하기 위한 원격 가비지 컬렉션 시간 계산기(2715);a remote garbage collection time calculator (2715) for calculating a remote garbage collection time (3705) for at least one secondary replica (2320, 2325);

통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치를 위한 스토리지(2720); 및storage 2720 for communication time weights 2735 , remote processor time weights 2740 , and remote garbage collection time weights; and

통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)으로부터 원격 추정 소요 시간(3710)을 계산하기 위한 원격 추정 소요 시간 계산기(2725)를 포함한다.Remote estimated time taken from communication time 3410 , remote processor time 3515 , remote garbage collection time 3705 , communication time weight 2735 , remote processor time weight 2740 , and remote garbage collection time weight 2745 . and a remote estimated time required calculator 2725 for calculating 3710.

설명 62. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고, 원격 추정 소요 시간 계산기(2725)는 통신 시간(3410)에 통신 시간 가중치(2735)을 곱한 값, 원격 프로세서 시간(3515)에 원격 프로세서 시간 가중치(2740)을 곱한 값, 및 원격 가비지 컬렉션 시간(3705)에 원격 가비지 컬렉션 시간 가중치(2745)를 곱한 값의 합으로서 원격 추정 소요 시간(3710)을 계산하도록 동작할 수 있다.Description 62. An embodiment of the present invention includes the cost analyzer 2310 according to statement 61, wherein the remote estimated time required calculator 2725 is a communication time 3410 multiplied by a communication time weight 2735, remote processor time. calculate remote estimated time taken 3710 as the sum of 3515 multiplied by remote processor time weight 2740, and remote garbage collection time 3705 multiplied by remote garbage collection time weight 2745. can

설명 63. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고, 통신 시간 계산기(2705)는 통신 시간(3410)을 측정하기 위한 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하기 위한 핑 로직(3405)을 포함한다. Description 63. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 61 , wherein the communication time calculator 2705 comprises at least one auxiliary storage system node 125 , 130 , for measuring the communication time 3410 , 135) and includes a ping logic 3405 for checking the communication state.

설명 64. 본 발명의 실시 예는 설명 63에 따른 비용 분석기(2310)를 포함하고, 핑 로직(3405)은 주기적으로 통신 시간(3410)을 측정하기 위한 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하도록 동작한다.Description 64. An embodiment of the present invention includes a cost analyzer 2310 according to statement 63, wherein the ping logic 3405 is configured to periodically measure the communication time 3410 at least one secondary storage system node 125, 130 , 135) to check the communication status.

설명 65. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고,Description 65. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 61,

비용 분석기(2310)는,The cost analyzer 2310 is

적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 상의 원격 프로세서 로드(3505)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 문의하기 위한 문의 로직(2415); 및query logic 2415 for querying the at least one secondary storage system node (125, 130, 135) for a remote processor load (3505) on the at least one secondary storage system node (125, 130, 135); and

원격 프로세서 로드(3505)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)로부터 수신하기 위한 수신 로직(2420)을 더 포함하고,further comprising receiving logic (2420) for receiving a remote processor load (3505) from the at least one secondary storage system node (125, 130, 135);

원격 프로세서 시간 계산기(2710)는 원격 프로세서 로드(3505)에 응답하여 원격 프로세서 시간(3515)을 계산하도록 동작한다.The remote processor time calculator 2710 is operative to calculate the remote processor time 3515 in response to the remote processor load 3505 .

설명 66. 본 발명의 실시 예는 설명 65에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 원격 프로세서 로드(3505)를 주기적으로 문의하도록 동작한다Statement 66. An embodiment of the present invention includes a cost analyzer 2310 according to statement 65, wherein the query logic 2415 assigns the remote processor load 3505 to the at least one secondary storage system node 125, 130, 135. Operates to inquire periodically

설명 67. 본 발명의 실시 예는 설명 65에 따른 비용 분석기(2310)를 포함하고,Description 67. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 65,

문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 상의 원격 소프트웨어 스택 로드(3515)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 문의하도록 동작하고;query logic 2415 is operative to query at least one secondary storage system node 125 , 130 , 135 for a remote software stack load 3515 on at least one secondary storage system node 125 , 130 , 135 ;

수신 로직(2420)은 원격 소프트웨어 스택 로드(3510)을 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)로부터 수신하도록 동작하고,receive logic 2420 is operative to receive remote software stack load 3510 from at least one secondary storage system node 125 , 130 , 135 ;

원격 프로세서 시간 계산기(2710)는 원격 프로세서 로드(3505) 및 원격 소프트웨어 스택 로드(3510)에 응답하여 원격 프로세서 시간(3515)를 계산하도록 동작한다.The remote processor time calculator 2710 is operative to calculate the remote processor time 3515 in response to the remote processor load 3505 and the remote software stack load 3510 .

설명 68. 본 발명의 실시 예는 설명 67에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 원격 소프트웨어 스택 로드(3510)을 주기적으로 문의하도록 동작한다.Description 68. An embodiment of the present invention includes a cost analyzer 2310 according to statement 67, wherein the query logic 2415 loads the remote software stack 3510 onto the at least one secondary storage system node 125, 130, 135. It operates to inquire periodically.

설명 69. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고,Description 69. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 61,

비용 분석기(2310)는,The cost analyzer 2310 is

실제 빈 페이지들의 수(2805)를 적어도 하나의 보조 복제본(2320, 2325)에 문의하기 위한 문의 로직(2415); 및query logic 2415 for querying the actual number of empty pages 2805 to the at least one secondary replica 2320 , 2325 ; and

적어도 하나의 보조 복제본(2320, 2325)으로부터 실제 빈 페이지들의 수(2805)를 수신하기 위한 수신 로직(2420)을 더 포함하고,further comprising receiving logic (2420) for receiving the actual number of empty pages (2805) from the at least one secondary replica (2320, 2325);

원격 가비지 컬렉션 시간 계산기(2715)는, 적어도 하나의 보조 복제본(2320, 2325)에 대한 빈 페이지들 수의 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하고, 차이 값에 원격 평균 가비지 컬렉션 시간을 곱하여(4160) 원격 가비지 컬렉션 시간(3705)을 계산하도록 동작한다.The remote garbage collection time calculator 2715 calculates a difference value by subtracting the actual number of empty pages 2805 from a threshold value 2810 of the number of empty pages for the at least one secondary replica 2320 , 2325 , the difference and multiply the value by the remote average garbage collection time ( 4160 ) to calculate a remote garbage collection time ( 3705 ).

설명 70. 본 발명의 실시 예는 설명 69에 따른 비용 분석기(2310)를 포함하고, 원격 가비지 컬렉션 시간 계산기(2715)는 각각의 삭제 블록의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 원격 가비지 컬렉션 시간(3705)에 더하는 동작을 더 한다.Statement 70. An embodiment of the present invention includes a cost analyzer 2310 according to statement 69, wherein the remote garbage collection time calculator 2715 calculates a delay 2825 associated with programmable valid pages of each erase block for remote garbage collection. Add operation to time 3705 .

설명 71. 본 발명의 실시 예는 설명 69에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 복제본(2320, 2325)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하도록 동작한다.Description 71. An embodiment of the present invention includes a cost analyzer 2310 according to statement 69, wherein the query logic 2415 periodically records the number of actual empty pages 2805 in the at least one secondary replica 2320, 2325. act to inquire.

설명 72. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고, Description 72. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 61,

적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 통신 시간 정보(3135), 적어도 하나의 보조 복제본(2320, 2325)에 대한 통신 시간(3410)의 최악의 경우 추정(3140), 적어도 하나의 보조 복제본(2320, 2325)에 대한 통신 시간(3410)의 평균적인 경우 추정(3145), 적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 원격 프로세서 시간 정보(3150), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 프로세서 시간(3515)에 대한 최악의 경우 추정(3155), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 프로세서 시간(3515)에 대한 평균적인 경우 추정(3160), 적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 원격 가비지 컬렉션 정보(3165), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션에 대한 최악의 경우 추정(3170), 및 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션(3175)에 대한 평균적인 경우 추정 중 적어도 하나를 포함하는 정보를 저장하는 데이터베이스(2425); 및previous communication time information 3135 for at least one secondary replica 2320, 2325, worst case estimate 3140 of communication time 3410 for at least one secondary replica 2320, 2325, at least one secondary Average case estimate 3145 of communication time 3410 for replicas 2320, 2325, previous remote processor time information 3150 for at least one secondary replica 2320, 2325, at least one secondary replica 2320 , 2325 , worst case estimate 3155 for remote processor time 3515 , average case estimate 3160 for remote processor time 3515 on at least one secondary replica 2320 , 2325 , at least one Previous remote garbage collection information 3165 for secondary replicas 2320, 2325, worst case estimate 3170 for remote garbage collection on at least one secondary replica 2320, 2325, and at least one secondary replica 2320 , 2325) a database 2425 for storing information including at least one of an average case estimate for remote garbage collection 3175; and

데이터베이스(2425)에 저장된 정보(3135, 3140, 3145, 3150, 3155, 3160, 3165, 3170, 3175)로부터, 적어도 하나의 보조 복제본(2320, 2325)에 대한 예상 원격 시간(3605)을 계산하기 위한 원격 예상 분석기(2435)를 더 포함할 수 있다.from information 3135 , 3140 , 3145 , 3150 , 3155 , 3160 , 3165 , 3170 , 3175 stored in database 2425 , for calculating an estimated remote time 3605 for at least one secondary replica 2320 , 2325 . A remote prediction analyzer 2435 may be further included.

설명 73. 본 발명의 실시 예는 설명 72에 따른 비용 분석기(2310)를 포함하고, 원격 추정 소요 시간 계산기(2725)는 통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 예상 원격 시간(3605), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)로부터, 원격 추정 소요 시간(3710)을 계산하도록 동작한다.Statement 73. An embodiment of the present invention includes a cost analyzer 2310 according to statement 72, wherein the remote estimated time spent calculator 2725 includes a communication time 3410, a remote processor time 3515, and a remote garbage collection time 3705. ) , the estimated remote time 3605 , the communication time weight 2735 , the remote processor time weight 2740 , and the remote garbage collection time weight 2745 , to calculate the remote estimated time taken 3710 .

설명 74. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고, 원격 시간 추정기(2410)는, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하기 위한 가중치 생성기(2730)를 더 포함할 수 있다.Statement 74. An embodiment of the present invention includes a cost analyzer 2310 according to statement 61, wherein the remote time estimator 2410 includes: a communication time weight 2735, a remote processor time weight 2740, and a remote garbage collection time It may further include a weight generator 2730 for generating the weight 2745 .

설명 75. 본 발명의 실시 예는 설명 74에 따른 비용 분석기(2310)를 포함하고, 가중치 생성기(2730)는 적어도 하나의 보조 복제본(2320, 2325)의 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하도록 동작한다.Statement 75. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 74, wherein the weight generator 2730 uses a linear regression analysis based on previous data of at least one secondary replica 2320, 2325, operates to generate a communication time weight 2735 , a remote processor time weight 2740 , and a remote garbage collection time weight 2745 .

설명 76. 본 발명의 실시 예는 설명 75에 따른 비용 분석기(2310)를 포함하고, 이전 데이터는 적어도 하나의 보조 복제본(2320, 2325)의 슬라이딩 윈도 사용으로부터 나온다.Statement 76. An embodiment of the present invention comprises a cost analyzer 2310 according to statement 75, wherein the previous data comes from the use of sliding windows of at least one secondary replica 2320 , 2325 .

설명 77. 본 발명의 실시 예는,Description 77. An embodiment of the present invention,

분산 저장 시스템 노드(125, 130, 135)에서, 입력/출력 (I/O) 요청(905), 분산 저장 시스템 노드(125, 130, 135)에서의 주 복제본(2315)로부터 데이터를 요청하는 I/O 요청(905), 저장 장치(140, 145, 150, 155, 160, 165, 225, 230)를 포함하는 주 복제본(2315)을 수신하는 단계(3905);In the distributed storage system nodes (125, 130, 135), an input/output (I/O) request (905), I requesting data from the primary replica (2315) in the distributed storage system nodes (125, 130, 135) receiving 3905 a primary replica 2315 comprising an /O request 905, storage 140, 145, 150, 155, 160, 165, 225, 230;

I/O 요청(905)을 완료하기 위한 로컬 추정 소요 시간(3305)을 계산하는 단계(3920);calculating ( 3920 ) a local estimated time taken ( 3305 ) to complete an I/O request ( 905 );

요청된 데이터를 저장하는 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(3940);calculating ( 3940 ) at least one remote estimated time required ( 3710 ) for at least one secondary replica ( 2320 , 2325 ) storing the requested data;

로컬 추정 소요 시간(3305)을 적어도 하나의 원격 추정 소요 시간(3710)과 비교하는 단계(3950);comparing (3950) the local estimated time taken (3305) to the at least one remote estimated time taken (3710);

로컬 추정 소요 시간(3305) 및 적어도 하나의 원격 추정 소요 시간(3710)에 응답하여 주 복제본(2315) 및 적어도 하나의 보조 복제본(2320, 2325) 중 하나를 선택하는 단계(3955);selecting (3955) one of the primary replica (2315) and the at least one secondary replica (2320, 2325) in response to the local estimated time spent (3305) and the at least one remote estimated time spent (3710);

I/O 요청(905)를 주 복제본(2315) 및 적어도 하나의 보조 복제본(2320, 2325) 중 선택된 하나로 보내는 단계를 포함하는 방법을 포함한다.and sending an I/O request (905) to a selected one of a primary replica (2315) and at least one secondary replica (2320, 2325).

설명 78. 본 발명의 실시 예는 설명 77에 따른 방법을 포함하고, 분산 저장 시스템 노드(125, 130, 135)에서 I/O 요청(905)을 수신하는 단계(3905)는, 분산 저장 시스템 노드(125, 130, 135)에서 I/O 요청(905), 분산 저장 시스템 노드(125, 130, 135)에서의 주 복제본(2315)로부터 데이터를 요청하는 I/O 요청(905), 솔리드 스테이트 드라이브(SSD) (140, 145, 150, 155, 160, 165, 225, 230)를 포함하는 주 복제본(2315)을 수신하는 단계(3905)를 포함한다.Statement 78. An embodiment of the present invention comprises the method according to statement 77, wherein receiving ( 3905 ) an I/O request ( 905 ) at a distributed storage system node ( 125 , 130 , 135 ) comprises: I/O request 905 at (125, 130, 135), I/O request 905 requesting data from primary replica 2315 at distributed storage system nodes 125, 130, 135, solid state drive and receiving 3905 a primary replica 2315 comprising (SSD) 140 , 145 , 150 , 155 , 160 , 165 , 225 , 230 .

설명 79. 본 발명의 실시 예는 설명 77에 따른 방법을 포함하고, 분산 저장 시스템 노드(125, 130, 135)는 네트워크 결합 솔리드 스테이트 드라이브(SSD) 및 이더넷 SSD를 포함하는 세트로부터 나온다. Statement 79. An embodiment of the present invention comprises the method according to statement 77, wherein the distributed storage system nodes 125, 130, 135 emerge from a set comprising a network-attached solid state drive (SSD) and an Ethernet SSD.

설명 80. 본 발명의 실시 예는 설명 77에 따른 방법을 포함하고, 주 복제본(2315)이 가비지 컬렉션을 수행하는 중에만 이 방법을 수행하는 단계(3910)을 더 포함한다.Statement 80. An embodiment of the invention includes the method according to statement 77, further comprising performing 3910 the method only while the primary replica 2315 is performing garbage collection.

설명 81. 본 발명의 실시 예는 설명 80에 따른 방법을 포함하고,Description 81. An embodiment of the invention comprises a method according to statement 80,

로컬 추정 소요 시간(3305)을 문턱 시간(2525)와 비교하는 단계(3925); 및comparing 3925 the local estimated time taken 3305 to a threshold time 2525; and

로컬 추정 소요 시간(3305)이 문턱 시간(2525)보다 짧은 경우, 주 복제본에서의(2315) I/O 요청(905)을 처리하는 단계(3915)를 더 포함한다. processing 3915 the I/O request 905 at (2315) the primary replica if the local estimated turnaround time 3305 is less than the threshold time 2525.

설명 82. 본 발명의 실시 예는 설명 81에 따른 방법을 포함하고, 주 복제본(2315)에서의 I/O 요청(905)을 처리하는 단계(3915)는, 요청된 데이터를 저장하는 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(3940), 및 로컬 추정 소요 시간(3305)을 적어도 하나의 원격 추정 소요 시간(3710)과 비교하는 단계(3950)없이 주 복제본(2315)에서의 I/O 요청(905)을 처리하는 단계(3915)를 포함한다. Statement 82. An embodiment of the present invention includes the method according to statement 81, wherein processing 3915 an I/O request 905 at the primary replica 2315 comprises at least one of storing the requested data. calculating ( 3940 ) at least one remote estimated time spent ( 3710 ) for the secondary replicas ( 2320 , 2325 ), and comparing the local estimated time spent ( 3305 ) to the at least one remote estimated time spent ( 3710 ). and processing 3915 the I/O request 905 at the primary replica 2315 without 3950 .

설명 83. 본 발명의 실시 예는 설명 80에 따른 방법을 포함하고, I/O 요청(905)을 완료하기 위한 로컬 추정 소요 시간(3305)을 계산하는 단계(3920)는,Description 83. An embodiment of the present invention comprises the method according to statement 80, wherein calculating ( 3920 ) a local estimated time taken 3305 to complete an I/O request ( 905 ) comprises:

로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005);calculating (4005) a local garbage collection time (2820);

로컬 예상 가비지 컬렉션 시간(2905)을 계산하는 단계(4010);calculating 4010 a local expected garbage collection time 2905;

로컬 가비지 컬렉션 시간(2820), 로컬 예산 가비지 컬렉션 시간(2905), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 포함한다. calculating 4030 a local estimated time taken 3305 from a local garbage collection time 2820, a local budget garbage collection time 2905, a local garbage collection weight 2635, and an expected garbage collection weight 2640 do.

설명 84. 본 발명의 실시 예는 설명 83에 따른 방법을 포함하고, 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)는, 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값 및 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)을 곱한 값의 합으로서 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 포함한다.Description 84. An embodiment of the present invention includes the method according to statement 83, wherein the step of calculating 4030 the estimated local estimated time taken 3305 includes: adding a local garbage collection weight 2635 to a local garbage collection time 2820 and calculating 4030 the local estimated required time 3305 as the sum of the multiplied value and the local estimated garbage collection time 2905 multiplied by the expected garbage collection weight 2640 .

설명 85. 본 발명의 실시 예는 설명 84에 따른 방법을 포함하고, 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)는, 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값, 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)를 곱한 값, 및 큐 처리 시간(3015)에 큐 처리 가중치(2645)를 곱한 값의 합으로서 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 더 포함한다.Description 85. An embodiment of the present invention includes the method according to statement 84, wherein the step 4030 of calculating a local estimated time taken 3305 includes: a local garbage collection weight 2635 equal to a local garbage collection time 2820 Local estimated time taken 3305 as the sum of the product multiplied by the local estimated garbage collection time 2905 times the expected garbage collection weight 2640, and the queue processing time 3015 multiplied by the queuing weight 2645. The method further includes calculating 4030 .

설명 86. 본 발명의 실시 예는 설명 83에 따른 방법을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)는,Statement 86. An embodiment of the invention comprises the method according to statement 83, wherein calculating a local garbage collection time 2820 (4005) comprises:

주 복제본(2315)이 가비지 컬렉션을 수행하는 중인지 여부를 결정하는 단계(4105); 및determining ( 4105 ) whether the primary replica 2315 is performing garbage collection; and

주 복제본(2315)이 현재 가비지 컬렉션을 수행하는 중인 경우, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)를 포함한다.and calculating 4005 a local garbage collection time 2820 if the primary replica 2315 is currently performing garbage collection.

설명 87. 본 발명의 실시 예는 설명 86에 따른 방법을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계는,Statement 87. An embodiment of the invention comprises the method according to statement 86, wherein calculating a local garbage collection time 2820 comprises:

주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하는 단계;querying the primary replica 2315 for the actual number of empty pages 2805;

주 복제본(2315)에 대한 빈 페이지들의 수 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하는 단계(4105);calculating ( 4105 ) a difference value of the number of empty pages threshold ( 2810 ) for the primary replica ( 2315 ) minus the actual number of empty pages ( 2805 );

로컬 가비지 컬렉션 시간(2820)을 결정하기 위해, 그 차이 값에 로컬 평균 가비지 컬렉션 시간(2815)을 곱하는 단계를 더 포함한다.The method further includes multiplying the difference value by a local average garbage collection time 2815 to determine a local garbage collection time 2820 .

설명 88. 본 발명의 실시 예는 설명 87에 따른 방법을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들에 관련된 지연(2820)을 더하는 단계(4155)를 더 포함한다. Statement 88. An embodiment of the present invention includes the method according to statement 87, wherein calculating a local garbage collection time 2820 comprises 4005 adding a delay 2820 associated with programmable valid pages within each erase block. Step 4155 is further included.

설명 89. 본 발명의 실시 예는 설명 87에 따른 방법을 포함하고, 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하는 단계(4120, 4125)를 더 포함한다.Statement 89. An embodiment of the present invention includes the method according to statement 87, further comprising periodically querying the primary replica 2315 for the number of actual empty pages 2805 (4120, 4125).

설명 90. 본 발명의 실시 예는 설명 86에 따른 방법을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)는, 주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315)상의 로컬 가비지 컬렉션(3110)에 대한 최악의 경우 추정, 주 복제본(2315)상의 로컬 가비지 컬렉션(3115)에 대한 평균적인 경우 추정 중 적어도 하나를 이용하여 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4110, 4115)를 더 포함한다. Statement 90. An embodiment of the present invention includes the method according to statement 86, wherein calculating a local garbage collection time 2820 (4005) comprises: previous local garbage collection information (3105) for a primary replica (2315); Local garbage collection time 2820 using at least one of a worst case estimate for local garbage collection 3110 on primary replica 2315, average case estimate for local garbage collection 3115 on primary replica 2315 It further includes the step of calculating (4110, 4115).

설명 91. 본 발명의 실시 예는 설명 83에 따른 방법을 포함하고, 로컬 예상 가비지 컬렉션 시간(2905)을 계산하는 단계(4010)는,Description 91. An embodiment of the present invention comprises the method according to statement 83, wherein calculating 4010 a local expected garbage collection time 2905 comprises:

주 복제본(2315)이 곧 가비지 컬렉션을 시작할 것으로 예상되는지 결정하는 단계; 및determining whether the primary replica 2315 is expected to begin garbage collection soon; and

주 복제본이 곧 가비지 컬렉션을 수행하려는 경우에만 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)를 포함한다.and calculating 4010 an expected garbage collection time 2820 only if the primary replica is about to perform garbage collection soon.

설명 92. 본 발명의 실시 예는 설명 91에 따른 방법을 포함하고, 로컬 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)는,Description 92. An embodiment of the invention comprises the method according to statement 91, wherein calculating 4010 a local expected garbage collection time 2820 comprises:

주 복제본(2315)에 실제 빈 페이지들의 수(2820)를 문의하는 단계(4120);querying 4120 the number of actual blank pages 2820 to the primary replica 2315;

주 복제본(2315)에 대한 빈 페이지들 수 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하는 단계(4150); 및calculating ( 4150 ) a difference value of the number of empty pages threshold ( 2810 ) for the primary replica ( 2315 ) minus the actual number of empty pages ( 2805 ); and

로컬 추정 소요 시간(3305)을 결정하기 위해, 그 차이 값에 로컬 평균 가비지 컬렉션 시간(2815)을 곱하는 단계(4160)를 더 포함한다.The method further includes the step of multiplying the difference value by the local average garbage collection time 2815 ( 4160 ) to determine the local estimated time required ( 3305 ).

설명 93. 본 발명의 실시 예는 설명 92에 따른 방법을 포함하고, 로컬 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 더하는 단계(4155)를 더 포함한다. Statement 93. An embodiment of the present invention includes the method according to statement 92, wherein calculating (4010) a local expected garbage collection time (2820) reduces a delay (2825) associated with programmable valid pages within each erase block. The step of adding (4155) is further included.

설명 94. 본 발명의 실시 예는 설명 92에 따른 방법을 포함하고, 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하는 단계(4120)를 더 포함한다.Statement 94. An embodiment of the present invention includes the method according to statement 92, further comprising: periodically querying the primary replica 2315 for the number of actual empty pages 2805 (4120).

설명 95. 본 발명의 실시 예는 설명 91에 따른 방법을 포함하고, 로컬 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)는, 주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315)상의 로컬 가비지 컬렉션(3110)에 대한 최악의 경우 추정, 주 복제본(2315)상의 로컬 가비지 컬렉션(3115)에 대한 평균적인 경우 추정 중 적어도 하나를 이용하여 로컬 예상 가비지 컬렉션 시간(2905)을 계산하는 단계(4110, 4115)를 더 포함한다.Description 95. An embodiment of the present invention includes the method according to statement 91, wherein calculating (4010) a local expected garbage collection time (2820) includes previous local garbage collection information (3105) for the primary replica (2315). , the local estimated garbage collection time ( 2905), further comprising the step of calculating 4110, 4115.

설명 96. 본 발명의 실시 예는 설명 83에 따른 방법을 포함하고, I/O 요청(905)을 완료하기 위해 로컬 추정 소요 시간(3305)을 계산하는 단계(3920)는 큐 처리 시간(3015)을 계산하는 단계(4015)를 더 포함한다. Statement 96. An embodiment of the present invention includes the method according to statement 83, wherein calculating ( 3920 ) a local estimated time taken ( 3305 ) to complete an I/O request ( 905 ) includes a queue processing time ( 3015 ). The method further includes calculating 4015 .

설명 97. 본 발명의 실시 예는 설명 96에 따른 방법을 포함하고, 큐 처리 시간(3015)을 계산하는 단계(4015)는,Description 97. An embodiment of the invention comprises the method according to statement 96, wherein calculating 4015 queue processing time 3015 comprises:

주 복제본(2315)에 계류중인 I/O 요청(905)들의 큐에 대한 큐의 깊이를 결정하는 단계(4205, 4220); 및determining (4205, 4220) a queue depth for a queue of pending I/O requests (905) on the primary replica (2315); and

큐 깊이를 처리하는데 필요한 큐 처리 시간(3015)을 추정하는 단계(4210, 4215)를 포함한다. estimating (4210, 4215) the queue processing time 3015 required to process the queue depth.

설명 98. 본 발명의 실시 예는 설명 97에 따른 방법을 포함하고, 큐 깊이를 처리하는데 필요한 큐 처리 시간(3015)을 추정하는 단계(4210, 4215)는,Description 98. An embodiment of the present invention comprises the method according to statement 97, wherein estimating a queue processing time 3015 required to process a queue depth (4210, 4215) comprises:

하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 결정하는 단계(4210); 및determining 4210 a time required to process one I/O request 905 3010; and

하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)에 큐 처리 시간(3015)을 결정하기 위한 큐 깊이를 곱하는 단계를 포함한다.and multiplying the time required to process one I/O request (905) (3010) by the queue depth to determine the queue processing time (3015).

설명 99. 본 발명의 실시 예는 설명 98에 따른 방법을 포함하고, 하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 결정하는 단계(4210)는, 주 복제본(2315) 상의 이전 처리 시간 정보(3120), 주 복제본(2315) 상의 처리 시간(3125)에 대한 최악의 경우 추정(3125), 주 복제본(2315) 상의 처리 시간에 대한 평균적인 경우 추정(3130) 중 적어도 하나를 사용하여 하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 결정하는 단계(4210)를 포함한다.Description 99. An embodiment of the present invention comprises the method according to statement 98, wherein determining ( 4210 ) a time required for processing one I/O request ( 905 ) ( 4210 ) comprises: primary replica ( 2315 ) at least one of previous processing time information 3120 on the primary replica 2315, a worst case estimate 3125 for processing time 3125 on the primary replica 2315, and an average case estimate 3130 for processing time 3125 on the primary replica 2315 and determining ( 4210 ) a time required ( 3010 ) to process one I/O request ( 905 ) using

설명 100. 본 발명의 실시 예는 설명 83에 따른 방법을 포함하고, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하는 단계(4025)를 더 포함한다.Statement 100. An embodiment of the present invention includes the method according to statement 83, further comprising generating 4025 a local garbage collection weight 2635 and an expected garbage collection weight 2640.

설명 101. 본 발명의 실시 예는 설명 100에 따른 방법을 포함하고, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하는 단계(4025)는 큐 처리 가중치(2645)를 생성하는 단계(4025)를 포함한다.Description 101. An embodiment of the present invention comprises a method according to statement 100, wherein generating 4025 a local garbage collection weight 2635 and an expected garbage collection weight 2640 generates a queue processing weight 2645 Step 4025 is included.

설명 102. 본 발명의 실시 예는 설명 100에 따른 방법을 포함하고, 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)를 생성하는 단계(4025)는, 주 복제본(2315)에 대한 이전 데이터에 기초한 선형 회귀 분석을 사용하여 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)를 생성하는 단계(4410)를 포함한다. Description 102. An embodiment of the present invention comprises the method according to statement 100, wherein generating 4025 a local garbage collection weight 2635, an expected garbage collection weight 2640, and a queue processing weight 2645 comprises: generating (4410) a local garbage collection weight (2635), an expected garbage collection weight (2640), and a queuing weight (2645) using a linear regression analysis based on previous data for the primary replica (2315) .

설명 103. 본 발명의 실시 예는 설명 102에 따른 방법을 포함하고, 이전 데이터는 주 복제본(2315)의 슬라이딩 윈도 사용으로부터 나온다.Description 103. An embodiment of the invention comprises a method according to statement 102, wherein the old data comes from the use of a sliding window of the primary replica 2315.

설명 104. 본 발명의 실시 예는 설명 83에 따른 방법을 포함하고,Description 104. An embodiment of the present invention comprises a method according to statement 83,

I/O 요청(905)을 완료하기 위한 로컬 추정 소요 시간(3305)을 계산하는 단계(3920)는 예상 로컬 시간(3205)을 계산하는 단계(4020)를 더 포함하고; 및calculating ( 3920 ) an estimated local time taken to complete the I/O request ( 905 ) 3305 further includes calculating ( 4020 ) an estimated local time ( 3205 ); and

로컬 추정 소요 시간(3305)을 계산하는 단계(4030)는 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 예상 로컬 시간(3205), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 포함한다.Computing 4030 the local estimated time taken 3305 includes a local garbage collection time 2820, a local estimated garbage collection time 2905, an estimated local time 3205, a local garbage collection weight 2635, and an estimated garbage collection time. and calculating 4030 a local estimated time taken 3305 from the collection weights 2640 .

설명 105. 본 발명의 실시 예는 설명 80에 따른 방법을 포함하고, 요청된 데이터를 저장하는, 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(3940)는,Description 105. An embodiment of the present invention comprises the method according to statement 80, comprising calculating at least one remote estimated time required 3710 for at least one secondary replica 2320, 2325 storing requested data. Step 3940,

적어도 하나의 보조 복제본(2320, 2325)에 대한 통신 시간(3410)을 계산하는 단계(4505);calculating (4505) a communication time (3410) for the at least one secondary replica (2320, 2325);

적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서 시간(3515)을 계산하는 단계(4510);calculating (4510) remote processor time (3515) for at least one secondary replica (2320, 2325);

적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515); 및calculating (4515) a remote garbage collection time (3705) for the at least one secondary replica (2320, 2325); and

통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)으로부터 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4540)를 포함한다.at least one remote from communication time 3410 , remote processor time 3515 , remote garbage collection time 3705 , communication time weight 2735 , remote processor time weight 2740 , and remote garbage collection time weight 2745 . and calculating (4540) the estimated required time (3710).

설명 106. 본 발명의 실시 예는 설명 105에 따른 방법을 포함하고, 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)는, 통신 시간(3410)에 통신 시간 가중치(2735)를 곱한 값, 원격 프로세서 시간(3515)에 원격 프로세서 시간 가중치(2745)를 곱한 값, 및 원격 가비지 컬렉션 시간(3705)에 원격 가비지 컬렉션 시간 가중치(2745)를 곱한 값의 합으로서 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)을 포함한다.Description 106. An embodiment of the present invention comprises the method according to statement 105, wherein calculating (4530) at least one teleestimated required time (3710) comprises: communicating time weight (2735) to communication time (3410) At least one remote estimate required as the sum of the product, the remote processor time 3515 multiplied by the remote processor time weight 2745, and the remote garbage collection time 3705 times the remote garbage collection time weight 2745 and calculating 4530 time 3710 .

설명 107. 본 발명의 실시 예는 설명 105에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 통신 시간(3410)을 계산하는 단계(4505)는, 보조 복제본(2320, 2325)을 포함하는 보조 분산 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하는 단계(4605), 적어도 하나의 보조 복제본(2320, 2325)의 통신 시간(3410)에 대한 이전 정보에 접근하는 단계(4615), 및 분산 저장 시스템 노드(125, 130, 135) 및 보조 분산 저장 시스템 노드(125, 130, 135)에 대한 저장 그래프 정보에 접근하는 단계(4620) 중 하나를 포함한다.Description 107. An embodiment of the present invention comprises the method according to statement 105, wherein calculating 4505 communication time 3410 for at least one secondary replica 2320, 2325 comprises: ) Checking the communication state of the secondary distributed storage system nodes (125, 130, 135) including the step 4605, at least one secondary replica (2320, 2325) of accessing previous information about the communication time 3410 step 4615, and one of accessing storage graph information for distributed storage system nodes 125, 130, 135 and secondary distributed storage system nodes 125, 130, 135, 4620.

설명 108. 본 발명의 실시 예는 설명 107에 따른 방법을 포함하고, 통신 시간(3410)을 결정하기 위해, 보조 복제본(2320, 2325)을 포함하는 보조 분산 저장 시스템 노드(125, 130, 135)의 통신상태를 주기적으로 검사하는 단계(4605, 4610)를 더 포함한다.Description 108. An embodiment of the present invention comprises a method according to statement 107, wherein the secondary distributed storage system nodes (125, 130, 135) include secondary replicas (2320, 2325) for determining a communication time (3410). The method further includes periodically inspecting the communication state (4605, 4610).

설명 109. 본 발명의 실시 예는 설명 105에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서 시간(3515)을 계산하는 단계(4510)는,Description 109. An embodiment of the invention comprises the method according to statement 105, wherein calculating 4510 remote processor time 3515 for at least one secondary replica 2320, 2325 comprises:

적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 문의하는 단계(4705, 4720); 및querying (4705, 4720) the remote processor for the cost of the remote processor for the at least one secondary replica (2320, 2325); and

원격 프로세서 시간(3515)에 그 비용을 맵핑하는 단계(4735)를 포함한다.and mapping 4735 its cost to remote processor time 3515 .

설명 110. 본 발명의 실시 예는 설명 109에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 문의하는 단계(4705, 4720)는 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에 원격 프로세서 로드(3505)를 문의하는 단계(4705)를 포함한다. Statement 110. An embodiment of the present invention comprises the method according to statement 109, wherein the step of inquiring (4705, 4720) of the cost of the remote processor to the remote processor for at least one secondary replica (2320, 2325) comprises at least querying 4705 for a remote processor load 3505 to the remote processor for one secondary replica 2320 , 2325 .

설명 111. 본 발명의 실시 예는 설명 109에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 문의하는 단계(4705, 4720)는 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에 원격 소프트웨어 스택 로드(3510)을 문의하는 단계(4720)를 포함한다.Description 111. An embodiment of the present invention comprises a method according to statement 109, wherein the step of inquiring (4705, 4720) of the cost of the remote processor to the remote processor for at least one secondary replica (2320, 2325) comprises at least and querying (4720) the remote processor for a remote software stack load (3510) for one secondary replica (2320, 2325).

설명 112. 본 발명의 실시 예는 설명 109에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 주기적으로 문의하는 단계(4705, 4710, 4720, 4725)를 더 포함한다.Statement 112. An embodiment of the present invention comprises the method according to statement 109, comprising periodically querying (4705, 4710) the remote processor for a cost for the remote processor for at least one secondary replica (2320, 2325). 4720, 4725).

설명 113. 본 발명의 실시 예는 설명 105에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515)는,Description 113. An embodiment of the present invention comprises the method according to statement 105, wherein calculating (4515) a remote garbage collection time (3705) for at least one secondary replica (2320, 2325) comprises:

실제 빈 페이지들의 수(2805)를 적어도 하나의 보조 복제본(2320, 2325)에 문의하는 단계(4120);querying (4120) the actual number of empty pages (2805) to the at least one secondary replica (2320, 2325);

적어도 하나의 보조 복제본(2320, 2325)에 대한 빈 페이지들 수 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2305)를 뺀 차이 값을 계산하는 단계(4150);calculating ( 4150 ) a difference value by subtracting the actual number of empty pages ( 2305 ) from a blank page count threshold ( 2810 ) for the at least one secondary replica ( 2320 , 2325 );

원격 가비지 컬렉션 시간(3705)을 결정하기 위해, 그 차이 값을 원격 평균 가비지 컬렉션 시간에 곱하는 단계를 포함한다.and multiplying the difference value by the remote average garbage collection time to determine the remote garbage collection time 3705 .

설명 114. 본 발명의 실시 예는 설명 113에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515)는, 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 더하는 단계(4155)를 더 포함한다.Description 114. An embodiment of the present invention includes the method according to statement 113, wherein calculating (4515) a remote garbage collection time (3705) for at least one secondary replica (2320, 2325) comprises: each erase block The method further includes adding (4155) a delay (2825) associated with programmable valid pages in .

설명 115. 본 발명의 실시 예는 설명 113에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하는 단계(4120, 4125)를 더 포함한다.Description 115. An embodiment of the present invention comprises the method according to statement 113, further comprising periodically querying the at least one secondary replica 2320, 2325 for the actual number of empty pages 2805 (4120, 4125) include

설명 116. 본 발명의 실시 예는 설명 105에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515)는, 적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 원격 가비지 컬렉션 정보(3165), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션(317)에 대한 최악의 경우 추정(3170), 적어도 하나의 보조 복제본 상의 원격 가비지 컬렉션에 대한 평균적인 경우 추정(3175) 중 적어도 하나를 사용하여, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4110, 4115)를 포함한다. Description 116. An embodiment of the present invention includes the method according to statement 105, wherein calculating (4515) a remote garbage collection time (3705) for at least one secondary replica (2320, 2325) comprises: at least one secondary replica (2320, 2325). Previous remote garbage collection information 3165 for replicas 2320, 2325, worst case estimate 3170 for remote garbage collection 317 on at least one secondary replica 2320, 2325, on at least one secondary replica calculating (4110, 4115) a remote garbage collection time (3705) for at least one secondary replica (2320, 2325) using at least one of an average case estimate (3175) for remote garbage collection. .

설명 117. 본 발명의 실시 예는 설명 105에 따른 방법을 포함하고, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하는 단계(4525)를 더 포함한다.Description 117. An embodiment of the present invention comprises a method according to statement 105, comprising generating (4525) a communication time weight (2735), a remote processor time weight (2740), and a remote garbage collection time weight (2745) include more

설명 118. 본 발명의 실시 예는 설명 117에 따른 방법을 포함하고, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하는 단계(4525)는, 주 복제본(2315)의 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하는 단계(4410)를 포함한다. Description 118. An embodiment of the present invention comprises a method according to statement 117, wherein generating 4525 a communication time weight 2735, a remote processor time weight 2740, and a remote garbage collection time weight 2745 , generating 4410 a communication time weight 2735, a remote processor time weight 2740, and a remote garbage collection time weight 2745 using a linear regression analysis based on previous data of the primary replica 2315. include

설명 119. 본 발명의 실시 예는 설명 118에 따른 방법을 포함하고, 이전 데이터는 주 복제본(2315)의 슬라이딩 윈도 사용으로부터 나온다.Description 119. An embodiment of the invention comprises a method according to statement 118, wherein the old data comes from the use of a sliding window of the primary replica 2315.

설명 120. 본 발명의 실시 예는 설명 105에 따른 방법을 포함하고, Description 120. An embodiment of the invention comprises a method according to statement 105,

요청된 데이터를 저장하는 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(3940)는 예상 원격 시간(3605)을 계산하는 단계(4520)를 더 포함하고;Calculating ( 3940 ) at least one remote estimated time required for at least one secondary replica ( 2320 , 2325 ) storing the requested data ( 3940 ) includes calculating ( 4520 ) an estimated remote time ( 3605 ). further comprising;

적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)는, 통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 예상 원격 시간(3605), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)로부터 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)를 포함한다. Computing 4530 at least one remote estimated time required 3710 includes communication time 3410, remote processor time 3515, remote garbage collection time 3705, estimated remote time 3605, communication time weights. calculating 4530 at least one remote estimated time required 3710 from 2735 , the remote processor time weight 2740 , and the remote garbage collection time weight 2745 .

설명 121. 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는Description 121. An embodiment of the present invention includes an article, including a tangible storage medium, and when executed by a machine, the tangible storage medium comprises:

분산 저장 시스템 노드(125, 130, 135)에서, 입력/출력 (I/O) 요청(905), 분산 저장 시스템 노드(125, 130, 135)에서의 주 복제본(2315)으로부터 데이터를 요청하는 I/O 요청(905), 저장 장치(140, 145, 150, 155, 160, 165, 225, 230)를 포함하는 주 복제본(2315)을 수신하는 단계(3905);In the distributed storage system nodes (125, 130, 135), an input/output (I/O) request (905), I requesting data from the primary replica (2315) in the distributed storage system nodes (125, 130, 135) receiving 3905 a primary replica 2315 comprising an /O request 905, storage 140, 145, 150, 155, 160, 165, 225, 230;

I/O 요청(905)을 완료하기 위한 로컬 추정 소요 시간(3305)을 계산하는 단계(3920);calculating ( 3920 ) a local estimated time taken ( 3305 ) to complete an I/O request ( 905 );

요청된 데이터를 저장하는 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(3940);calculating ( 3940 ) at least one remote estimated time required ( 3710 ) for at least one secondary replica ( 2320 , 2325 ) storing the requested data;

로컬 추정 소요 시간(3305)을 적어도 하나의 원격 추정 소요 시간(3710)과 비교하는 단계(3950);comparing (3950) the local estimated time taken (3305) to the at least one remote estimated time taken (3710);

로컬 추정 소요 시간(3305) 및 적어도 하나의 원격 추정 소요 시간(3710)에 응답하여 주 복제본(2315) 및 적어도 하나의 보조 복제본(2320, 2325) 중 하나를 선택하는 단계(3955);selecting (3955) one of the primary replica (2315) and the at least one secondary replica (2320, 2325) in response to the local estimated time spent (3305) and the at least one remote estimated time spent (3710);

I/O 요청(905)를 주 복제본(2315) 및 적어도 하나의 보조 복제본(2320, 2325) 중 선택된 하나로 보내는 단계를 야기하는 비 일시적인 명령들을 더 저장한다.It further stores non-transitory instructions that cause the I/O request 905 to be sent to a selected one of a primary replica 2315 and at least one secondary replica 2320 , 2325 .

설명 122. 본 발명의 실시 예는 설명 121에 따른 물건을 포함하고, 분산 저장 시스템 노드(125, 130, 135)에서 I/O 요청(905)을 수신하는 단계(3905)는, 분산 저장 시스템 노드(125, 130, 135)에서 I/O 요청(905), 분산 저장 시스템 노드(125, 130, 135)에서의 주 복제본(2315)로부터 데이터를 요청하는 I/O 요청(905), 솔리드 스테이트 드라이브(SSD) (140, 145, 150, 155, 160, 165, 225, 230)를 포함하는 주 복제본(2315)을 수신하는 단계(3905)를 포함한다.Description 122. An embodiment of the present invention comprises the object according to statement 121, wherein the step 3905 of receiving the I/O request 905 at the distributed storage system node 125, 130, 135 comprises: I/O request 905 at (125, 130, 135), I/O request 905 requesting data from primary replica 2315 at distributed storage system nodes 125, 130, 135, solid state drive and receiving 3905 a primary replica 2315 comprising (SSD) 140 , 145 , 150 , 155 , 160 , 165 , 225 , 230 .

설명 123. 본 발명의 실시 예는 설명 121에 따른 물건을 포함하고, 분산 저장 시스템 노드(125, 130, 135)는 네트워크 결합 솔리드 스테이트 드라이브(SSD) 및 이더넷 SSD를 포함하는 세트로부터 나온다.Description 123. An embodiment of the present invention comprises an article according to statement 121, wherein the distributed storage system nodes 125, 130, 135 emerge from a set comprising a network-attached solid state drive (SSD) and an Ethernet SSD.

설명 124. 본 발명의 실시 예는 설명 121에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는 주 복제본(2315)이 가비지 컬렉션을 수행하는 중에만 이 방법을 수행하는 단계(3910)를 야기하는 비 일시적인 명령들을 더 저장한다.Description 124. An embodiment of the present invention comprises an article according to statement 121, and an embodiment of the present invention comprises an article, comprising a tangible storage medium, and when executed by a machine, the tangible storage medium comprises: It further stores non-transitory instructions that result in a step 3910 of performing this method only while the primary replica 2315 is performing garbage collection.

설명 125. 본 발명의 실시 예는 설명 124에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는Description 125. An embodiment of the present invention includes an article according to statement 124, wherein an embodiment of the present invention includes an article, comprising a tangible storage medium, wherein when executed by a machine, the tangible storage medium comprises:

로컬 추정 소요 시간(3305)을 문턱 시간(2525)와 비교하는 단계(3925); 및comparing 3925 the local estimated time taken 3305 to a threshold time 2525; and

로컬 추정 소요 시간(3305)이 문턱 시간(2525)보다 짧은 경우, 주 복제본에서의(2315) I/O 요청(905)을 처리하는 단계(3915)를 야기하는 비 일시적인 명령들을 더 저장한다.If the local estimated turnaround time 3305 is less than the threshold time 2525 , it stores more non-transitory instructions that result in a step 3915 processing the I/O request 905 at the primary replica 2315 .

설명 126. 본 발명의 실시 예는 설명 125에 따른 물건을 포함하고, 주 복제본(2315)에서의 I/O 요청(905)을 처리하는 단계(3915)는, 요청된 데이터를 저장하는 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(3940), 및 로컬 추정 소요 시간(3305)을 적어도 하나의 원격 추정 소요 시간(3710)과 비교하는 단계(3950)없이 주 복제본(2315)에서의 I/O 요청(905)을 처리하는 단계(3915)를 포함한다.Statement 126. An embodiment of the present invention comprises the product according to statement 125, wherein the processing 3915 of the I/O request 905 at the primary replica 2315 comprises at least one of at least one storing the requested data. calculating ( 3940 ) at least one remote estimated time spent ( 3710 ) for the secondary replicas ( 2320 , 2325 ), and comparing the local estimated time spent ( 3305 ) to the at least one remote estimated time spent ( 3710 ). and processing 3915 the I/O request 905 at the primary replica 2315 without 3950 .

설명 127. 본 발명의 실시 예는 설명 124에 따른 물건을 포함하고, I/O 요청(905)을 완료하기 위한 로컬 추정 소요 시간(3305)을 계산하는 단계(3920)는,Description 127. An embodiment of the present invention comprises the object according to statement 124, wherein calculating 3920 a local estimated time taken 3305 to complete an I/O request 905 comprises:

로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005);calculating (4005) a local garbage collection time (2820);

로컬 예상 가비지 컬렉션 시간(2905)을 계산하는 단계(4010);calculating 4010 a local expected garbage collection time 2905;

로컬 가비지 컬렉션 시간(2820), 로컬 예산 가비지 컬렉션 시간(2905), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 포함한다.calculating 4030 a local estimated time taken 3305 from a local garbage collection time 2820, a local budget garbage collection time 2905, a local garbage collection weight 2635, and an expected garbage collection weight 2640 do.

설명 128. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고, 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)는, 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값 및 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)을 곱한 값의 합으로서 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 포함한다.Description 128. An embodiment of the present invention includes the object according to description 127, wherein the step 4030 of calculating the local estimated time taken 3305 includes the local garbage collection weight 2635 for the local garbage collection time 2820. and calculating 4030 the local estimated required time 3305 as the sum of the multiplied value and the local estimated garbage collection time 2905 multiplied by the expected garbage collection weight 2640 .

설명 129. 본 발명의 실시 예는 설명 128에 따른 물건을 포함하고, 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)는, 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값, 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)을 곱한 값, 및 큐 처리 시간(3015)에 큐 처리 가중치(2645)를 곱한 값의 합으로서 로컬 추정 소요 시간(3305)을 계산하는 단계를 더 포함한다.Description 129. An embodiment of the present invention includes the object according to description 128, and the step 4030 of calculating a local estimated time taken 3305 includes: a local garbage collection weight 2635 for a local garbage collection time 2820. Local estimated time taken 3305 as the sum of the product multiplied by the local estimated garbage collection time 2905 times the expected garbage collection weight 2640, and the queue processing time 3015 multiplied by the queuing weight 2645. It further comprises the step of calculating

설명 130. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)는,Description 130. An embodiment of the present invention comprises the object according to statement 127, wherein calculating a local garbage collection time 2820 (4005) comprises:

주 복제본(2315)이 가비지 컬렉션을 수행하는 중인지 여부를 결정하는 단계(4105); 및determining (4105) whether the primary replica 2315 is performing garbage collection; and

주 복제본(2315)이 현재 가비지 컬렉션을 수행하는 중인 경우, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)를 포함한다.and calculating 4005 a local garbage collection time 2820 if the primary replica 2315 is currently performing garbage collection.

설명 131. 본 발명의 실시 예는 설명 130에 따른 물건을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계는,Description 131. An embodiment of the present invention includes the object according to description 130, and calculating a local garbage collection time 2820 comprises:

주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하는 단계;querying the primary replica 2315 for the actual number of empty pages 2805;

주 복제본(2315)에 대한 빈 페이지들의 수 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하는 단계(4105);calculating ( 4105 ) a difference value of the number of empty pages threshold ( 2810 ) for the primary replica ( 2315 ) minus the actual number of empty pages ( 2805 );

로컬 가비지 컬렉션 시간(2820)을 결정하기 위해, 그 차이 값에 로컬 평균 가비지 컬렉션 시간(2815)을 곱하는 단계를 더 포함한다.The method further includes multiplying the difference value by a local average garbage collection time 2815 to determine a local garbage collection time 2820 .

설명 132. 본 발명의 실시 예는 설명 131에 따른 물건을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들에 관련된 지연(2820)을 더하는 단계(4155)를 더 포함한다.Description 132. An embodiment of the present invention includes the object according to statement 131, wherein calculating a local garbage collection time 2820 (4005) adds a delay 2820 associated with programmable valid pages within each erase block. Step 4155 is further included.

설명 133. 본 발명의 실시 예는 설명 131에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하는 단계(4120, 4125)를 야기하는 비 일시적인 명령들을 더 저장한다.Description 133. An embodiment of the present invention includes an object according to statement 131, wherein an embodiment of the present invention includes an object, including a tangible storage medium, and when executed by a machine, the tangible storage medium comprises: It further stores non-transitory instructions that cause the primary replica 2315 to periodically query the actual number of empty pages 2805 ( 4120 , 4125 ).

설명 134. 본 발명의 실시 예는 설명 130에 따른 물건을 포함하고, 주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315)상의 로컬 가비지 컬렉션(3110)에 대한 최악의 경우 추정, 주 복제본(2315)상의 로컬 가비지 컬렉션(3115)에 대한 평균적인 경우 추정 중 적어도 하나를 이용하여 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4110, 4115)를 더 포함한다.Description 134. An embodiment of the present invention comprises the object according to statement 130, old local garbage collection information 3105 on primary replica 2315, worst case of local garbage collection 3110 on primary replica 2315 The method further includes calculating (4110, 4115) a local garbage collection time (2820) using at least one of a case estimate, an average case estimate for a local garbage collection (3115) on the primary replica (2315).

설명 135. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고, 로컬 예상 가비지 컬렉션 시간(2905)을 계산하는 단계(4010)는,Description 135. An embodiment of the present invention comprises the object according to statement 127, wherein calculating 4010 a local expected garbage collection time 2905 comprises:

주 복제본(2315)이 곧 가비지 컬렉션을 시작할 것으로 예상되는지 결정하는 단계; 및determining whether the primary replica 2315 is expected to begin garbage collection soon; and

주 복제본이 곧 가비지 컬렉션을 수행하려는 경우에만 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)를 포함한다.and calculating 4010 an expected garbage collection time 2820 only if the primary replica is about to perform garbage collection soon.

설명 136. 본 발명의 실시 예는 설명 135에 따른 물건을 포함하고, 로컬 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)는,Description 136. An embodiment of the present invention comprises the object according to statement 135, wherein calculating 4010 a local expected garbage collection time 2820 comprises:

주 복제본(2315)에 실제 빈 페이지들의 수(2820)를 문의하는 단계(4120);querying 4120 the number of actual blank pages 2820 to the primary replica 2315;

주 복제본(2315)에 대한 빈 페이지들 수 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2805)를 뺀 차이 값을 계산하는 단계(4150); 및calculating ( 4150 ) a difference value of the number of empty pages threshold ( 2810 ) for the primary replica ( 2315 ) minus the actual number of empty pages ( 2805 ); and

로컬 추정 소요 시간(3305)을 결정하기 위해, 그 차이값에 로컬 평균 가비지 컬렉션 시간(2815)을 곱하는 단계(4160)를 더 포함한다.The method further comprises a step 4160 of multiplying the difference by a local average garbage collection time 2815 to determine a local estimated time required 3305 .

설명 137. 본 발명의 실시 예는 설명 136에 따른 물건을 포함하고, 로컬 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 더하는 단계(4155)를 더 포함한다.Description 137. An embodiment of the present invention includes the object according to statement 136, wherein calculating a local expected garbage collection time 2820 4010 reduces a delay 2825 associated with programmable valid pages within each erase block. The step of adding (4155) is further included.

설명 138. 본 발명의 실시 예는 설명 136에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하는 단계(4120)를 야기하는 비 일시적인 명령들을 더 저장한다.Description 138. An embodiment of the present invention comprises an article according to statement 136, wherein an embodiment of the present invention comprises an article, comprising a tangible storage medium, wherein when executed by a machine, the tangible storage medium comprises: It further stores non-transitory instructions that result in a step 4120 of periodically querying the primary replica 2315 for the actual number of empty pages 2805.

설명 139. 본 발명의 실시 예는 설명 135에 따른 물건을 포함하고, 로컬 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)는, 주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315)상의 로컬 가비지 컬렉션(3110)에 대한 최악의 경우 추정, 주 복제본(2315)상의 로컬 가비지 컬렉션(3115)에 대한 평균적인 경우 추정 중 적어도 하나를 이용하여 로컬 예상 가비지 컬렉션 시간(2905)을 계산하는 단계(4110, 4115)를 더 포함한다.Description 139. An embodiment of the present invention comprises the object according to statement 135, wherein the step 4010 of calculating a local expected garbage collection time 2820 comprises previous local garbage collection information 3105 for the primary replica 2315 , the local estimated garbage collection time ( 2905), further comprising the step of calculating 4110, 4115.

설명 140. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고, I/O 요청(905)을 완료하기 위해 로컬 추정 소요 시간(3305)을 계산하는 단계(3920)는 큐 처리 시간(3015)을 계산하는 단계(4015)를 더 포함한다.Description 140. An embodiment of the present invention comprises an object according to statement 127, wherein calculating 3920 a local estimated time taken 3305 to complete an I/O request 905 comprises a queue processing time 3015 The method further includes calculating 4015 .

설명 141. 본 발명의 실시 예는 설명 140에 따른 물건을 포함하고, 큐 처리 시간(3015)을 계산하는 단계(4015)는,Description 141. An embodiment of the present invention includes the object according to description 140, and the step 4015 of calculating the queue processing time 3015 includes:

주 복제본(2315)에 계류중인 I/O 요청(905)들의 큐에 대한 큐의 깊이를 결정하는 단계(4205, 4220); 및determining (4205, 4220) a queue depth for a queue of pending I/O requests (905) on the primary replica (2315); and

큐 깊이를 처리하는데 필요한 큐 처리 시간(3015)을 추정하는 단계(4210, 4215)를 포함한다.estimating (4210, 4215) the queue processing time 3015 required to process the queue depth.

설명 142. 본 발명의 실시 예는 설명 141에 따른 물건을 포함하고, 큐 깊이를 처리하는데 필요한 큐 처리 시간(3015)을 추정하는 단계(4210, 4215)는,Description 142. An embodiment of the present invention includes the object according to description 141, and the steps of estimating the queue processing time 3015 required to process the queue depth (4210, 4215) include:

하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 결정하는 단계(4210);determining 4210 a time required to process one I/O request 905 3010;

큐 처리 시간(3015)을 결정하기 위해, 큐 깊이에 의해 하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 곱하는 단계(4215)를 포함한다.and multiplying (4215) the time required to process one I/O request (905) 3010 by the queue depth to determine the queue processing time (3015).

설명 143. 본 발명의 실시 예는 설명 142에 따른 물건을 포함하고, 하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 결정하는 단계(4210)는, 주 복제본(2315) 상의 이전 처리 시간 정보(3120), 주 복제본(2315) 상의 처리 시간(3125)에 대한 최악의 경우 추정(3125), 주 복제본(2315) 상의 처리 시간에 대한 평균적인 경우 추정(3130) 중 적어도 하나를 사용하여 하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 결정하는 단계(4210)를 포함한다.Description 143. An embodiment of the present invention comprises an object according to statement 142, wherein the step of determining ( 4210 ) a time required to process one I/O request ( 905 ) 3010 comprises: a primary replica ( 2315 ) at least one of previous processing time information 3120 on the primary replica 2315, a worst case estimate 3125 for processing time 3125 on the primary replica 2315, and an average case estimate 3130 for processing time 3125 on the primary replica 2315 and determining ( 4210 ) a time required to process one I/O request ( 905 ) 3010 .

설명 144. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하는 단계(4025)를 야기하는 비 일시적인 명령들을 더 저장한다.Description 144. An embodiment of the present invention comprises an article according to statement 127, wherein an embodiment of the present invention comprises an article, comprising a tangible storage medium, wherein when executed by a machine, the tangible storage medium comprises: It further stores non-transient instructions that result in a step 4025 of generating a local garbage collection weight 2635 and an expected garbage collection weight 2640 .

설명 145. 본 발명의 실시 예는 설명 144에 따른 물건을 포함하고, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하는 단계(4025)는 큐 처리 가중치(2645)를 생성하는 단계(4025)를 포함한다.Description 145. An embodiment of the present invention includes the object according to description 144, wherein the step 4025 of generating a local garbage collection weight 2635 and an expected garbage collection weight 2640 includes generating a queue processing weight 2645 Step 4025 is included.

설명 146. 본 발명의 실시 예는 설명 144에 따른 물건을 포함하고, 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)를 생성하는 단계(4025)는, 주 복제본(2315)에 대한 이전 데이터에 기초한 선형 회귀 분석을 사용하여 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)를 생성하는 단계(4410)를 포함한다.Description 146. An embodiment of the present invention includes the object according to description 144, wherein generating 4025 a local garbage collection weight 2635, an expected garbage collection weight 2640, and a queue processing weight 2645 comprises: generating (4410) local garbage collection weights (2635), expected garbage collection weights (2640), and queuing weights (2645) using linear regression analysis based on previous data for primary replica (2315) .

설명 147. 본 발명의 실시 예는 설명 144에 따른 물건을 포함하고, 이전 데이터는 주 복제본(2315)의 슬라이딩 윈도 사용으로부터 나온다.Description 147. An embodiment of the present invention comprises an object according to statement 144, wherein the old data comes from the use of a sliding window of the primary replica 2315.

설명 148. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고,Description 148. An embodiment of the present invention comprises an article according to statement 127,

I/O 요청(905)을 완료하기 위한 로컬 추정 소요 시간(3305)을 계산하는 단계(3920)는 예상 로컬 시간(3205)을 계산하는 단계(4020)를 더 포함하고; 및calculating ( 3920 ) an estimated local time taken to complete the I/O request ( 905 ) 3305 further includes calculating ( 4020 ) an estimated local time ( 3205 ); and

로컬 추정 소요 시간(3305)을 계산하는 단계(4030)는 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 예상 로컬 시간(3205), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 포함한다.Computing 4030 the local estimated time taken 3305 includes a local garbage collection time 2820, a local estimated garbage collection time 2905, an estimated local time 3205, a local garbage collection weight 2635, and an estimated garbage collection time. and calculating 4030 a local estimated time taken 3305 from the collection weights 2640 .

설명 149. 본 발명의 실시 예는 설명 124에 따른 물건을 포함하고, 요청된 데이터를 저장하는, 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(3940)는,Description 149. An embodiment of the invention comprises the object according to statement 124, comprising calculating at least one remote estimated time required 3710 for at least one secondary replica 2320, 2325 storing the requested data. Step 3940,

적어도 하나의 보조 복제본(2320, 2325)에 대한 통신 시간(3410)을 계산하는 단계(4505);calculating (4505) a communication time (3410) for the at least one secondary replica (2320, 2325);

적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서 시간(3515)을 계산하는 단계(4510);calculating (4510) remote processor time (3515) for at least one secondary replica (2320, 2325);

적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515); 및calculating (4515) a remote garbage collection time (3705) for the at least one secondary replica (2320, 2325); and

통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)으로부터 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4540)를 포함한다.at least one remote from communication time 3410 , remote processor time 3515 , remote garbage collection time 3705 , communication time weight 2735 , remote processor time weight 2740 , and remote garbage collection time weight 2745 . and calculating (4540) the estimated required time (3710).

설명 150. 본 발명의 실시 예는 설명 149에 따른 물건을 포함하고, 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)는, 통신 시간(3410)에 통신 시간 가중치(2735)를 곱한 값, 원격 프로세서 시간(3515)에 원격 프로세서 시간 가중치(2745)를 곱한 값, 및 원격 가비지 컬렉션 시간(3705)에 원격 가비지 컬렉션 시간 가중치(2745)를 곱한 값의 합으로서 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)을 포함한다.Description 150. An embodiment of the present invention includes the object according to statement 149, wherein the step 4530 of calculating at least one remote estimated required time 3710 comprises: a communication time weight 2735 equal to a communication time 3410 At least one remote estimate required as the sum of the product multiplied by the remote processor time 3515 times the remote processor time weights 2745 and the remote garbage collection time 3705 times the remote garbage collection time weights 2745 and calculating 4530 time 3710 .

설명 151. 본 발명의 실시 예는 설명 149에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 통신 시간(3410)을 계산하는 단계(4505)는, 보조 복제본(2320, 2325)을 포함하는 보조 분산 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하는 단계(4605), 적어도 하나의 보조 복제본(2320, 2325)의 통신 시간(3410)에 대한 이전 정보에 접근하는 단계(4615), 및 분산 저장 시스템 노드(125, 130, 135) 및 보조 분산 저장 시스템 노드(125, 130, 135)에 대한 저장 그래프 정보에 접근하는 단계(4620) 중 하나를 포함한다.Description 151. An embodiment of the present invention comprises an object according to statement 149, wherein calculating 4505 communication time 3410 for at least one secondary replica 2320, 2325 comprises: ) Checking the communication state of the secondary distributed storage system nodes (125, 130, 135) including the step 4605, at least one secondary replica (2320, 2325) of accessing previous information about the communication time 3410 step 4615, and one of accessing storage graph information for distributed storage system nodes 125, 130, 135 and secondary distributed storage system nodes 125, 130, 135, 4620.

설명 152. 본 발명의 실시 예는 설명 151에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는 통신 시간(3410)을 결정하기 위해, 보조 복제본(2320, 2325)을 포함하는 보조 분산 저장 시스템 노드(125, 130, 135)의 통신상태를 주기적으로 검사하는 단계(4605, 4610)를 야기하는 비 일시적인 명령들을 더 저장한다.Description 152. An embodiment of the present invention comprises an article according to statement 151, an embodiment of the present invention comprises an article, comprising a tangible storage medium, and when executed by a machine, the tangible storage medium comprises: A rain that causes a step 4605, 4610 of periodically checking the communication state of the secondary distributed storage system nodes 125, 130, 135, including the secondary replicas 2320, 2325, to determine the communication time 3410 Store more temporary commands.

설명 153. 본 발명의 실시 예는 설명 149에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서 시간(3515)을 계산하는 단계(4510)는,Description 153. An embodiment of the invention comprises the object according to statement 149, wherein calculating 4510 remote processor time 3515 for at least one secondary replica 2320, 2325 comprises:

적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 문의하는 단계(4705, 4720); 및querying (4705, 4720) the remote processor for the cost for the remote processor for the at least one secondary replica (2320, 2325); and

원격 프로세서 시간(3515)에 그 비용을 맵핑하는 단계(4735)를 포함한다.and mapping 4735 its cost to remote processor time 3515 .

설명 154. 본 발명의 실시 예는 설명 153에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 문의하는 단계(4705, 4720)는 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에 원격 프로세서 로드(3505)를 문의하는 단계(4705)를 포함한다.Description 154. An embodiment of the invention comprises the product according to statement 153, wherein the step of inquiring (4705, 4720) of the cost of the remote processor to the remote processor for at least one secondary replica (2320, 2325) comprises at least and querying (4705) the remote processor for a remote processor load (3505) for one secondary replica (2320, 2325).

설명 155. 본 발명의 실시 예는 설명 153에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 문의하는 단계(4705, 4720)는 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에 원격 소프트웨어 스택 로드(3510)을 문의하는 단계(4720)를 포함한다.Description 155. An embodiment of the present invention comprises an article according to statement 153, wherein the step of inquiring (4705, 4720) of the cost of the remote processor to the remote processor for at least one secondary replica (2320, 2325) comprises at least and querying (4720) the remote processor for a remote software stack load (3510) for one secondary replica (2320, 2325).

설명 156. 본 발명의 실시 예는 설명 153에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 주기적으로 문의하는 단계(4705, 4710, 4720, 4725)를 야기하는 비 일시적인 명령들을 더 저장한다.Description 156. An embodiment of the present invention includes an article according to statement 153, wherein an embodiment of the present invention includes an article, comprising a tangible storage medium, wherein when executed by a machine, the tangible storage medium comprises: It further stores non-transitory instructions that cause the remote processor for the at least one secondary replica 2320 , 2325 to periodically query the cost for the remote processor 4705 , 4710 , 4720 , 4725 .

설명 157. 본 발명의 실시 예는 설명 149에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515)는,Description 157. An embodiment of the present invention comprises the object according to statement 149, wherein calculating (4515) a remote garbage collection time (3705) for at least one secondary replica (2320, 2325) comprises:

실제 빈 페이지들의 수(2805)를 적어도 하나의 보조 복제본(2320, 2325)에 문의하는 단계(4120);querying (4120) the actual number of empty pages (2805) to the at least one secondary replica (2320, 2325);

적어도 하나의 보조 복제본(2320, 2325)에 대한 빈 페이지들 수 문턱 값(2810)으로부터 실제 빈 페이지들의 수(2305)를 뺀 차이 값을 계산하는 단계(4150);calculating ( 4150 ) a difference value by subtracting the actual number of empty pages ( 2305 ) from a blank page count threshold ( 2810 ) for the at least one secondary replica ( 2320 , 2325 );

원격 가비지 컬렉션 시간(3705)을 결정하기 위해, 그 차이 값을 원격 평균 가비지 컬렉션 시간에 곱하는 단계를 포함한다.and multiplying the difference value by the remote average garbage collection time to determine the remote garbage collection time 3705 .

설명 158. 본 발명의 실시 예는 설명 157에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515)는, 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 더하는 단계(4155)를 더 포함한다.Description 158. An embodiment of the present invention comprises the object according to statement 157, wherein calculating 4515 a remote garbage collection time 3705 for at least one secondary replica 2320, 2325 comprises: each erase block The method further includes adding (4155) a delay (2825) associated with programmable valid pages in .

설명 159. 본 발명의 실시 예는 설명 157에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는 적어도 하나의 보조 복제본(2320, 2325)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하는 단계(4120, 4125)를 야기하는 비 일시적인 명령들을 더 저장한다.Description 159. An embodiment of the present invention comprises an article according to statement 157, wherein an embodiment of the present invention comprises an article, comprising a tangible storage medium, wherein when executed by a machine, the tangible storage medium comprises: It further stores non-transitory instructions that cause a step 4120 , 4125 to periodically query the at least one secondary replica 2320 , 2325 for the actual number of empty pages 2805 .

설명 160. 본 발명의 실시 예는 설명 157에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515)는, 적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 원격 가비지 컬렉션 정보(3165), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션(317)에 대한 최악의 경우 추정(3170), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션에 대한 평균적인 경우 추정(3175) 중 적어도 하나를 사용하여, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4110, 4115)를 포함한다.Description 160. An embodiment of the present invention comprises the object according to statement 157, wherein calculating 4515 a remote garbage collection time 3705 for at least one auxiliary replica 2320, 2325 comprises: Previous remote garbage collection information 3165 for replicas 2320, 2325, worst case estimate 3170 for remote garbage collection 317 on at least one secondary replica 2320, 2325, at least one secondary replica calculating (4110) a remote garbage collection time (3705) for at least one secondary replica (2320, 2325) using at least one of an average case estimate (3175) for remote garbage collection on 2320, 2325; 4115).

설명 161. 본 발명의 실시 예는 설명 149에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하는 단계(4525)를 야기하는 비 일시적인 명령들을 더 저장한다.Description 161. An embodiment of the present invention includes an object according to statement 149, wherein an embodiment of the present invention includes an object, including a tangible storage medium, wherein when executed by a machine, the tangible storage medium comprises: It further stores non-transitory instructions that result in generating 4525 communication time weight 2735 , remote processor time weight 2740 , and remote garbage collection time weight 2745 .

설명 162. 본 발명의 실시 예는 설명 161에 따른 물건을 포함하고, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하는 단계(4525)는, 주 복제본(2315)의 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하는 단계(4410)를 포함한다.Description 162. An embodiment of the present invention comprises the object according to statement 161, wherein the step 4525 of generating a communication time weight 2735, a remote processor time weight 2740, and a remote garbage collection time weight 2745 comprises: , generating 4410 a communication time weight 2735, a remote processor time weight 2740, and a remote garbage collection time weight 2745 using a linear regression analysis based on previous data of the primary replica 2315. include

설명 163. 본 발명의 실시 예는 설명 162에 따른 물건을 포함하고, 이전 데이터는 주 복제본(2315)의 슬라이딩 윈도 사용으로부터 나온다.Description 163. An embodiment of the invention comprises an object according to statement 162, wherein the old data comes from the use of a sliding window of the primary replica 2315.

설명 164. 본 발명의 실시 예는 설명 149에 따른 물건을 포함하고,Description 164. An embodiment of the invention comprises an article according to statement 149,

요청된 데이터를 저장하는 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(3940)는 예상 원격 시간(3605)을 계산하는 단계(4520)를 더 포함하고;Computing ( 3940 ) at least one remote estimated time required for at least one secondary replica ( 2320 , 2325 ) storing the requested data comprises ( 3940 ) calculating ( 4520 ) an estimated remote time ( 3605 ). further comprising;

적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)는, 통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 예상 원격 시간(3605), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)로부터 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)를 포함한다.Computing 4530 at least one remote estimated time required 3710 includes a communication time 3410 , a remote processor time 3515 , a remote garbage collection time 3705 , an estimated remote time 3605 , and a communication time weight. calculating 4530 at least one remote estimated time required 3710 from 2735 , the remote processor time weight 2740 , and the remote garbage collection time weight 2745 .

결론적으로, 본 명세서에 설명된 실시 예들에 대한 다양한 변형들의 관점에서, 이 상세한 설명 및 첨부된 자료는 단지 예시를 보여주는 것으로만 의도되고, 본 발명의 권리범위를 제한하는 것으로 간주되어서는 안된다. 그러므로, 본 발명으로서 청구되는 것은 이하의 청구 범위들 및 그것들의 균등물들의 범위 및 사상 내에 있을 수 있는 모든 변형들이다.In conclusion, in view of various modifications to the embodiments described herein, this detailed description and accompanying material are intended to be illustrative only, and should not be construed as limiting the scope of the present invention. Therefore, what is claimed as the present invention are all modifications that may come within the scope and spirit of the following claims and their equivalents.

Claims (10)

데이터의 주 복제본을 포함하는 적어도 하나의 저장 장치;
상기 주 복제본을 이용하여 입력/출력(I/O) 요청을 완료하기 위한 로컬 추정 소요 시간 및 상기 데이터의 적어도 하나의 보조 복제본을 이용하여 상기 I/O 요청을 완료하기 위한 적어도 하나의 원격 추정 소요 시간을 계산하는 분석기; 및
상기 로컬 추정 소요 시간 및 상기 적어도 하나의 원격 추정 소요 시간에 기반하여 상기 주 복제본 및 상기 적어도 하나의 보조 복제본 중 하나로 상기 I/O 요청을 전달하는 재배치기를 포함하되,
상기 로컬 추정 소요 시간은 보류중인 I/O 요청을 처리하기 위한 추정 소요 시간을 포함하고,
상기 분석기는 상기 로컬 추정 소요 시간을 계산하는 로컬 시간 추정기를 포함하고,
상기 로컬 시간 추정기는:
로컬 가비지 컬렉션 시간을 계산하는 로컬 시간 계산기;
로컬 예상 가비지 컬렉션 시간을 계산하는 로컬 예상 시간 계산기;
로컬 가비지 컬렉션 가중치 및 예상 가비지 컬렉션 가중치를 저장하는 제 2 스토리지; 및
상기 로컬 가비지 컬렉션 시간, 상기 로컬 예상 가비지 컬렉션 시간, 상기 로컬 가비지 컬렉션 가중치, 또는 상기 예상 가비지 컬렉션 가중치 중 적어도 일부에 기반하여 상기 로컬 추정 소요 시간을 계산하는 로컬 추정 시간 계산기를 포함하는 분산 저장 시스템 노드.
at least one storage device containing a primary copy of data;
A local estimated time required to complete an input/output (I/O) request using the primary replica and at least one remote estimated time required to complete the I/O request using at least one secondary replica of the data. an analyzer that counts time; and
a relocator for forwarding the I/O request to one of the primary replica and the at least one secondary replica based on the local estimated duration and the at least one remote estimated duration;
The local estimated time required includes an estimated time required to process a pending I/O request,
the analyzer includes a local time estimator for calculating the local estimated required time;
The local time estimator is:
local time calculator to calculate local garbage collection time;
Local Estimated Time Calculator for calculating local Estimated Garbage Collection Time;
a second storage for storing local garbage collection weights and expected garbage collection weights; and
A distributed storage system node comprising: a local estimated time calculator for calculating the local estimated required time based on at least a part of the local garbage collection time, the local expected garbage collection time, the local garbage collection weight, or the expected garbage collection weight .
제 1 항에 있어서,
상기 재배치기는 가비지 컬렉션을 수행하는 상기 적어도 하나의 저장 장치의 적어도 일부에 기반하여 상기 I/O 요청을 전달하도록 동작하는 분산 저장 시스템 노드.
The method of claim 1,
and the relocator is operative to forward the I/O request based on at least a portion of the at least one storage device performing garbage collection.
제 2 항에 있어서,
상기 재배치기는:
임계 시간을 저장하는 제 1 스토리지; 및
상기 로컬 추정 소요 시간과 상기 임계 시간을 비교하는 비교기를 포함하는 분산 저장 시스템 노드.
3. The method of claim 2,
The relocation is:
a first storage for storing a threshold time; and
and a comparator for comparing the local estimated required time and the threshold time.
삭제delete 제 1 항에 있어서,
상기 분석기는:
사용 가능한 상태의 페이지들의 수에 대하여 상기 주 복제본에 문의(query)하는 문의 로직; 및
상기 주 복제본으로부터 상기 사용 가능한 상태의 페이지들의 수를 수신하는 수신 로직을 더 포함하고,
상기 로컬 시간 계산기는 상기 주 복제본의 사용 가능한 상태의 페이지들의 임계 값으로부터 상기 사용 가능한 상태의 페이지들의 수를 뺀 차이 값을 계산하고, 상기 차이 값에 로컬 평균 가비지 컬렉션 시간을 곱하여 상기 로컬 가비지 컬렉션 시간을 계산하는 분산 저장 시스템 노드.
The method of claim 1,
The analyzer is:
query logic to query the primary replica for the number of pages in an available state; and
receiving logic to receive the number of pages in the usable state from the primary replica;
The local time calculator calculates a difference value by subtracting the number of pages in the usable state from the threshold value of pages in the usable state of the primary replica, and multiplies the difference value by the local average garbage collection time to determine the local garbage collection time A distributed storage system node that computes
제 5 항에 있어서,
상기 로컬 시간 계산기는 소거 블록에서 유효한 페이지들을 프로그래밍하는 것과 관련된 지연을 상기 로컬 가비지 컬렉션 시간에 더하도록 동작하는 분산 저장 시스템 노드.
6. The method of claim 5,
and the local time calculator is operative to add a delay associated with programming valid pages in an erase block to the local garbage collection time.
제 1 항에 있어서,
상기 재배치기는 상기 로컬 추정 소요 시간을 초과하는 상기 적어도 하나의 원격 추정 소요 시간의 적어도 일부에 기반하여 상기 I/O 요청을 상기 주 복제본으로 전달하도록 동작하는 분산 저장 시스템 노드.
The method of claim 1,
and the relocator is operative to forward the I/O request to the primary replica based on at least a portion of the at least one remote estimated duration exceeding the local estimated duration.
제 1 항에 있어서,
상기 재배치기는 상기 적어도 하나의 원격 추정 소요 시간을 초과하는 상기 로컬 추정 소요 시간의 적어도 일부에 기반하여, 상기 I/O 요청을 적어도 하나의 보조 복제본으로 전달하도록 동작하는 분산 저장 시스템 노드.
The method of claim 1,
and the relocator is operative to forward the I/O request to the at least one secondary replica based on at least a portion of the local estimated duration exceeding the at least one remote estimated duration.
분산 저장 시스템 노드에서 저장 장치를 포함하는 주 복제본으로부터 데이터를 요청하는 입력/출력(I/O) 요청을 수신하는 단계;
상기 I/O 요청을 완료하기 위한 로컬 추정 소요 시간을 계산하는 단계;
상기 요청된 데이터를 저장하는 적어도 하나의 보조 복제본에 대한 적어도 하나의 원격 추정 소요 시간을 계산하는 단계;
상기 적어도 하나의 원격 추정 소요 시간과 상기 로컬 추정 소요 시간을 비교하는 단계;
상기 로컬 추정 소요 시간 및 상기 적어도 하나의 원격 추정 소요 시간 중 가장 짧은 시간에 기반하여, 상기 주 복제본 및 상기 적어도 하나의 보조 복제본 중 어느 하나를 선택하는 단계; 및
상기 주 복제본 및 상기 적어도 하나의 보조 복제본 중 선택된 상기 어느 하나에 상기 I/O 요청을 전달하는 단계를 포함하되,
상기 로컬 추정 소요 시간은 보류중인 I/O 요청을 처리하기 위한 추정 소요 시간을 포함하고,
상기 I/O 요청을 완료하기 위한 로컬 추정 소요 시간을 계산하는 단계는:
로컬 가비지 컬렉션 시간을 계산하는 단계;
로컬 예상 가비지 컬렉션 시간을 계산하는 단계;
상기 로컬 가비지 컬렉션 시간, 상기 로컬 예상 가비지 컬렉션 시간, 로컬 가비지 컬렉션 가중치, 또는 예상 가비지 컬렉션 가중치 중 적어도 일부에 기반하여 상기 로컬 추정 소요 시간을 계산하는 단계를 포함하는 방법.
receiving, at a distributed storage system node, an input/output (I/O) request requesting data from a primary replica comprising a storage device;
calculating a local estimated time required to complete the I/O request;
calculating at least one remote estimated time required for at least one secondary replica storing the requested data;
comparing the at least one remote estimated required time with the local estimated required time;
selecting one of the primary replica and the at least one secondary replica based on the shortest of the local estimated time required and the at least one remote estimated required time; and
forwarding the I/O request to the selected one of the primary replica and the at least one secondary replica;
The local estimated time required includes an estimated time required to process a pending I/O request,
Calculating the estimated local time required to complete the I/O request comprises:
calculating a local garbage collection time;
calculating a local estimated garbage collection time;
and calculating the local estimated required time based on at least a part of the local garbage collection time, the local expected garbage collection time, a local garbage collection weight, or an expected garbage collection weight.
삭제delete
KR1020170103708A 2016-09-14 2017-08-16 Io redirection methods with cost estimation KR102419165B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662394724P 2016-09-14 2016-09-14
US62/394,724 2016-09-14
US15/336,772 2016-10-27
US15/336,772 US20170123700A1 (en) 2015-11-03 2016-10-27 Io redirection methods with cost estimation

Publications (2)

Publication Number Publication Date
KR20180030382A KR20180030382A (en) 2018-03-22
KR102419165B1 true KR102419165B1 (en) 2022-07-08

Family

ID=61901068

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170103708A KR102419165B1 (en) 2016-09-14 2017-08-16 Io redirection methods with cost estimation

Country Status (1)

Country Link
KR (1) KR102419165B1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102175361B1 (en) * 2013-10-22 2020-11-06 엘지이노텍 주식회사 Touch window and display with the same
KR20160139820A (en) * 2015-05-28 2016-12-07 주식회사 신코 Optical Measuring Apparatus

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Junghee Lee et al.,(2013.02.28.) 1부.*
미국공개특허 제2015-0046668호(2015.02.12.) 1부.*
미국공개특허 제2016-0139820호(2016.05.19.) 1부.*

Also Published As

Publication number Publication date
KR20180030382A (en) 2018-03-22

Similar Documents

Publication Publication Date Title
US11544187B2 (en) IO redirection methods with cost estimation
US10254998B2 (en) Coordinated garbage collection of flash devices in a distributed storage system
US10846137B2 (en) Dynamic adjustment of application resources in a distributed computing system
US10831387B1 (en) Snapshot reservations in a distributed storage system
US7840720B2 (en) Using priority to determine whether to queue an input/output (I/O) request directed to storage
JP6447329B2 (en) Parallel computing controller, parallel computing system, and migration time estimation program
US9703504B2 (en) Storage system, recording medium storing data rebalancing program, and data rebalancing method
JP6186787B2 (en) Data transfer device, data transfer system, data transfer method and program
CN110383764B (en) System and method for processing events using historical data in a serverless system
EP3671462B1 (en) System and method for consumption based tagging of resources
US9699233B1 (en) Adaptive performance control of multi-stream data transfer from a source system to a target system
JP2004246852A (en) Method and apparatus for adjusting performance of logical volume copy destination
US10417213B1 (en) Metadata updating
JP2009238101A (en) Backup system, storage device, and data backup method
US8898312B2 (en) Element terminal and communication system
JP6160236B2 (en) Information processing apparatus, information processing system, information processing apparatus control method, and information processing apparatus control program
US10824425B2 (en) Selecting destination for processing management instructions based on the processor buffer size and uncompleted management instructions
KR20150001146A (en) Storage system and Operating method thereof
KR102419165B1 (en) Io redirection methods with cost estimation
JP6279816B2 (en) Storage monitoring system and monitoring method thereof
US11036439B2 (en) Automated management of bundled applications
US9933966B2 (en) Storage control device and computer system
JP5530878B2 (en) Data replication management method in distributed system
US10908848B2 (en) Automated management of bundled applications
US11941448B2 (en) Allocating computing resources to data transfer jobs based on a completed amount and an estimated priority of system failure

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant