KR102419165B1 - Io redirection methods with cost estimation - Google Patents
Io redirection methods with cost estimation Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details relating to dynamic memory management
- G06F2212/702—Conservative 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
본 발명의 사상들은 저장 장치에 관한 것으로, 좀 더 상세하게는 주저장장치가 지연될 수 있는 입력/출력(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 ,
네트워크(120)는 근거리 통신망(Local Area Network; LAN), 광역망(Wide Area Network; WAN), 인터넷과 같은 글로벌 네트워크를 포함하는 임의의 다양한 네트워크 일 수 있다. 네트워크(120)는 여러 다양한 네트워크들의 조합도 포함할 수 있다. 예를 들어, 네트워크(120)는 통신을 보안하기 위해 가상사설망(Virtual Private Network; VPN)을 사용하는 글로벌 네트워크를 통해, 서로 통신할 수 있는 다수의 근거리 통신망들을 포함할 수 있다.The
저장 노드들(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를 참조하여 더 설명된다.
모니터들(모니터 노드들이라고도 지칭됨)(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
이하 나머지의 설명은 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
도 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
도 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
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
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
도 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
장치 가비지 컬렉션 모니터(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
본 발명의 몇몇 실시 예들에서, 플래시 드라이브들(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,
플래시 드라이브들(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
도 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
도 6은 단일의 프리 삭제 블록 문턱 값(610)을 보여주지만, 본 발명의 실시 예들은 다수의 프리 삭제 블록 문턱 값(610)들을 지원할 수 있다. 즉, 문제의 플래시 드라이브에 따라, 비교기(605)는 프리 삭제 블록 카운트들(505, 510, 505, 및 520)을 상이한 프리 삭제 블록 문턱 값(610)들과 비교할 수 있다. 이러한 방식으로, 본 발명의 실시 예들은 상이한 블록 크기들 및 카운트들을 가질 수 있는 SSD들을 인식할 수 있고, 그러므로 플래시 드라이브가 얼마나 차있는지를 나타내는 상이한 문턱 값들을 가질 수 있다.6 shows a single
본 발명의 몇몇 실시 예들에서, 프리 삭제 블록 문턱 값(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
본 발명의 다른 실시 예들에서, 프리 삭제 블록 문턱 값(610)은 20%와 같은 백분율일 수 있다. 즉, SSD가 총 블록 개수들의 20% 이하인 프리 삭제 블록 카운트를 가질 때, 그 SSD는 가비지 컬렉션을 수행할 필요가 있다. 프리 삭제 블록 문턱 값(610)을 20%(고정된 값이 아님)로 설정하는 것은, 고정된 개수의 블록들을 사용할 때 상이한 프리 삭제 블록 문턱 값들을 필요로 하는, 위에서 설명된 두 개의 예시적인 SSD들을 모두 포함할 수 있다는 것을 주의하라.In other embodiments of the present invention, the
도 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
시간 추정기(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
도 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
모니터(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
응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 가비지 컬렉션 조정기(210)에 의해 선택된 스케줄된 시작 시간(810), 및 추정 시간(725)은 바인딩(구속) 되지 않는다. 모니터(170)에 의해 지정된 스케줄된 시작 시간(810) 및 지속 시간(820)만이 사용 된다. 가비지 컬렉션 조정기(210)에 의해 전송된 정보는 단지 모니터(170)에 대한 제안일 뿐이다.In embodiments of the present invention using responsive garbage collection, the scheduled
응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 모니터(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
본 발명의 다른 실시 예들에서, 모니터(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
각각의 단위 데이터의 복사본들의 개수 및 임의의 시간에 사용 가능한 복사본들이 없을 가능성 사이에는 수학적 관계가 있다(예를 들어 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
본 발명의 실시 예들은 도 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
도 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
도 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/
도 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
도 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/
데이터 쓰기들과 관련하여 플래시 드라이브(140)가 현재 진행 중임을 보장하기 위해 로깅 장치(1015)가 간단한 방법을 제공하지만, 로깅 장치(1015)는 플래시 드라이브(140)를 재동기화 시키기 위한 유일한 수단이 아니다. 다른 가능성은, 플래시 드라이브(140)의 어떠한 페이지들, 블록들, 또는 슈퍼 블록들이, 플래시 드라이브(140)가 가비지 컬렉션을 수행했을 동안 도착했던 쓰기 요청들에 의해, 바뀔 예정이었는지에 관한 정보를 저장하는 것일 수 있다. 그 뒤, I/O 재동기화기(220)는, 다른 SSD들 또는 다른 저장 장치들 상의 이러한 페이지들/블록들/슈퍼블록들의 복제된 복사본들로부터의 업데이트된 데이터에 접근하고, 업데이트 된 데이터를 플래시 드라이브(140)에 쓸 수 있다. 도 12는 재동기화의 이러한 형태를 보여준다.Although
도 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/
도 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
도 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
맵(1310)은 다양한 단위 데이터들을 찾을 수 있는 위치도 포함할 수 있다. 이것들은 위치들(1427, 1430, 1433, 1436, 1439, 1442, 1445, 1448, 1451, 1454, 및 1457)로 표시 된다. 위치(1460)는 단위 데이터(1412)가 결국 3번째 복사본을 갖는 경우에 이용 가능하지만, 분산 저장 시스템에 단위 데이터(1412)의 복사본이 단지 2 개만 있기 때문에, 위치(1460)는 현재 비어있다.The
도 14는 네 개의 단위 데이터들 및 각각의 단위 데이터를 위한 최대 세 개의 복사본들을 포함하는 맵(1310)을 보여주지만, 본 발명의 실시 예들은 임의의 수의 단위 데이터들, 및 각각의 단위 데이터를 위한 임의의 수의 복사본들을 지원할 수 있다. 그러므로, 맵(1310)은 이론적으로 수백만(또는 그 이상)의 단위 데이터들을 포함할 수 있고, 분산 저장 시스템 전반에 각각의 단위 데이터의 여섯 개의 사본들을 가질 수 있다.Although FIG. 14 shows a
도 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
블록(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
블록 (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/
도 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
블록(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
블록(1615)에서, 처리할 남은 프리 삭제 블록 카운트들이 없는 경우, 그 뒤 블록(1635)에서 도 2의 장치 가비지 컬렉션 모니터(205)는 가비지 컬렉션에 적격인 SSD들 중 하나를 선택할 수 있다. 가비지 컬렉션에 적격인 SSD가 하나만 있는 경우, 그 뒤 그 SSD는 선택될 수 있다. 적격인 SSD가 하나 이상 있는 경우, 그 뒤 도 2의 장치 가비지 컬렉션 모니터(205)는 임의의 바람직한 알고리즘을 사용하여 적격인 SSD들 중 하나를 선택할 수 있다. 사용될 수 있는 가능한 알고리즘들은, 가장 적은 프리 삭제 블록 카운트 또는 가장 적은 백분율의 프리 삭제 블록들을 갖는 적격인 SSD를 선택하거나, 또는 적격인 SSD를 임의로 선택하는 것을 포함한다. 도 2의 장치 가비지 컬렉션 모니터(205)는 또한 가비지 컬렉션에 적격인 하나 이상의 SSD를 선택할 수도 있다. 도 1의 모니터(170)는 동시에 다수의 SSD들이 가비지 컬렉션을 수행하는 것을 피하는 방식으로 가비지 컬렉션에 적격인 모든 SSD들을 스케줄할 수 있기 때문에, 가비지 컬렉션에 적격인 SSD를 하나 이상 고르는 것은 도 1의 모니터(170)가 응답 있는 가비지 컬렉션을 사용하는 곳에서 특히 유용하다.At
도 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
여기에서, 본 발명의 실시 예들이 응답 있는 가비지 컬렉션을 사용하는지 또는 응답 없는 가비지 컬렉션을 사용하는지 여부에 따라, 순서도는 나누어질 수 있다. 응답 없는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 블록(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
응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 블록(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
도 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/
일단 도 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
도 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/
하지만 도 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
일단 도 2의 I/O 재동기화기(220)가, 플래시 드라이브(145)가 업데이트된 데이터의 복제된 복사본을 저장하는지를 식별하면, 블록(1915)에서 도 2의 I/O 재동기화기(220)는 도 1의 플래시 드라이브(145)로부터 업데이트된 데이터에 접근할 수 있다. 그 뒤, 블록(1920)에서 도 2의 I/O 재동기화기(220)는 도 6의 선택된 SSD(615)에게 업데이트된 데이터를 쓰라고 지시할 수 있다.Once the I/
도 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
블록(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
도 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
도 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
도 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
여기에서, 본 발명의 실시 예들이 응답 있는 가비지 컬렉션을 사용하는지 또는 응답 없는 가비지 컬렉션을 사용하는지 여부에 따라, 흐름도는 나누어질 수 있다. 응답 없는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 블록(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
응답 있는 가비지 컬렉션을 사용하는 본 발명의 실시 예들에서, 블록(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
블록들(2230 및 2235)의 두 개의 검사들은 상이하다는 것을 주의하라. 예를 들어, 블록(2230)이 선택된 SSD(615) 상의 데이터의 복제된 복사본들이 다른 저장 장치들에서 사용 가능하다고 지시하는 것이 발생할 수 있지만, 너무 많은 수의 다른 SSD들이 동시에 가비지 컬렉션을 수행 중이기 때문에, 블록(2235)는 실패할 것이다. 반면, 하나의 다른 SSD만이 동시에 가비지 컬렉션을 수행 중인 경우, 블록(2235)은 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행할 수 있다고 지시할 수 있다. 하지만 가비지 컬렉션을 수행하는 다른 SSD가 도 6의 선택된 SSD(615) 상의 몇몇 데이터의 다른 복사본만을 가지고 있었다면, 블록(2230)은 실패할 것이다.Note that the two checks of
또한, 블록(2230)으로부터 블록(2235)으로 향하는 화살표는 “예/아니오”라고 표시되어 있음을 주의하라. 선택된 SSD(615)가 가비지 컬렉션을 수행함에도 불구하고 블록(2230)이 데이터가 사용가능 할 것이라고 지시한다면, 그 뒤 제어는 블록(2235)으로 진행할 것이다. 하지만, 선택된 SSD(615)가 분산 시스템 상의 몇몇의 데이터의 유일한 복사본을 가지는 경우가 발생할 수 있다. 이것이 발생할 경우, 그 뒤 도 6의 선택된 SSD(615)는 사용 불가능하게 된 몇몇의 데이터 없이 언제라도 가비지 컬렉션을 위해 스케줄될 수 없다(적어도, 그 데이터가 복제되기 전까지). 이 상황에서, 도 6의 선택된 SSD(615)는, 몇몇의 데이터가 사용 불가능하게 될 것이라는 사실에도 불구하고, 가비지 컬렉션을 수행하는 것이 허용되도록 해야할 수 있다.Also note that the arrow from
몇몇의 데이터가 사용 불가능해짐에도 불구하고 왜 도 6의 선택된 SSD(615)가 가비지 컬렉션을 위해 스케줄될 수 있는가의 또 다른 이유는 도 6의 선택된 SSD(615)가 가비지 컬렉션을 수행하기 위해 충분한 양의 시간을 대기한 경우일 수 있다. 즉, 도 6의 선택된 SSD(615)가 몇몇의 문턱 시간 값을 초과하여 가비지 컬렉션을 수행하기 위해 대기중인 경우, 그 사실이 분산 저장 시스템의 몇몇의 데이터가 사용 불가능할 것이라는 것을 의미하더라도, 도 6의 선택된 SSD(615)는 가비지 컬렉션을 수행하도록 허용될 수 있다.Another reason why the selected
도 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
너무 많은 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
도 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
위 설명은, 어떻게 저장 장치가 가비지 컬렉션을 수행할 때 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
저장 노드(125)(그리고 저장 노드들(130 및 135) 또한)는 저장 장치(들)뿐만 아니라 비용 분석기(2310) 및 I/O 재배치기(215)를 포함할 수 있다. 도 23에서, 저장 노드(125)는 문제가 되는 데이터의 주 복사본을 저장할 수 있으므로, 저장 노드(125)의 저장 장치는 주 복제본(2315)으로 식별 된다. 반면, 저장 노드들(130 및 135)은 문제가 되는 데이터의 백업 복사본들을 저장하기 때문에, 저장 노드들(130 및 135)의 저장 장치들은 보조 복제본들(2320 및 2325)로 식별 된다.Storage node 125 (and also
아래에서 도 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
도 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
문의 로직(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초 마다, 몇 초마다, 매초마다, 또는 모든 초의 부분마다 같은 어떤 일정한 간격으로) 요청할 수 있다.
데이터베이스(2425)는 로컬 시간 추정기(2405), 원격 시간 추정기(2410), 로컬 예상 분석기(2430), 및 원격 예상 분석기(2435)와 같은, 다양한 비용 분석기(2310)의 모듈들에 의해 사용되는 정보를 저장할 수 있다. 데이터베이스(2425)는 이하 도 31을 참조하여 더 설명된다. 마지막으로, 로컬 예상 분석기(2430) 및 원격 예상 분석기(2435)는, 예전 데이터에 기초하여 국부적으로 또는 원격으로 도 23의 I/O 요청(905)을 처리하기 위해 필요한 시간에 관하여 예측을 할 수 있다. 로컬 예상 분석기(2430) 및 원격 예상 분석기(2435)는 이하 도 32 내지 36을 참조하여 각각 더 설명된다.
도 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/
제 1 비교기(2510)는 도 2의 주 복제본(2315)에서 도 23의 I/O 요청(905)을 처리하는데 필요한 추정 시간을 도 23의 보조 복제본들(2320 및 2325)에서 도 23의 I/O 요청(905)을 처리하는데 필요한 추정 시간과 비교할 수 있다. 그 뒤 선택기(2520)는 제 2 비교기(2515)의 결과들에 기초하여, 도 23의 주 복제본(2315) 및 도 23의 보조 복제본들(2320 및 2325) 중 하나를 선택할 수 있다.The
도 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
도 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
도 28 및 도 29는 로컬 가비지 컬렉션 시간 및 로컬 예상 가비지 컬렉션 시간을 계산하는, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 계산기(2610)를 보여주는 블록도 이다. 이 두 계산기들의 동작들은 서로 유사하기 때문에, 함께 설명될 것이다. 두 계산기들의 동작들의 유일한 차이점은, 로컬 가비지 컬렉션 시간 계산기(2605)가 도 23의 주 복제본(2315)에서 이미 진행중인 가비지 컬렉션 동작을 완료하기 위해 필요한 시간을 결정한다는 것이며, 반면 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 시작할 예정인(하지만 아직 실제로 시작되지 않은) 가비지 컬렉션 동작을 수행하는데 필요한 시간을 결정한다.28 and 29 are block diagrams illustrating the local garbage
각각의 경우에서, 도 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
일단 도 24의 수신 로직(2420)이 빈 페이지들의 수(2805) 및 빈 페이지 문턱 값(2810)을 수신하면, 로컬 가지비 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)은 로컬 평균 가비지 컬렉션 시간(2815)을 결정할 수 있다. 로컬 평균 가비지 컬력션 시간(2815)은 도 23의 주 복제본(2315)에서 하나의 페이지를 비우는데 평균적으로 필요한 시간의 양을 나타낼 수 있다. 로컬 평균 가비지 컬렉션 시간(2815)은, 도 26의 스토리지(2620) 또는 도 24의 데이터베이스(2425)에 저장될 수 있는 고정 값에 접근 함으로써 결정될 수 있고, 또한 도 23의 주 복제본(2315)에서의 가비지 컬렉션 동작들에 관한 이전 정보로부터 계산될 수 있다. 이전 정보는 도 24의 데이터베이스(2425)에 저장될 수 있다.Once the receiving
로컬 평균 가비지 컬렉션 시간(2815)은 이름에 “평균”이라는 용어를 포함하지만, 로컬 평균 가비지 컬렉션 시간(2815)은 어떠한 바람직한 방식으로 계산될 수 있다. 예를 들어, 로컬 평균 가비지 컬렉션 시간(2815)은, 도 23의 주 복제본(2315)에서 수행되는 모든 가비지 컬렉션 동작들에 대해 하나의 페이지를 복구하는데 걸리는 시간의 평균값, 중간값, 또는 최빈값(mode)으로서 계산될 수 있다. 또는, 로컬 평균 가비지 컬렉션 시간(2815)은, 도 23의 주 복제본(2315)의 이전 로컬 가비지 컬렉션 정보에 대해 선형 회귀 분석을 사용하여 계산될 수 있다. 또는, 로컬 평균 가비지 컬렉션 시간(2815)은 가장 최근의 가비지 컬렉션 동작들(예로서, 가장 최근의 10(또는 다른 임의의 바람직한 숫자)번의 가비지 컬렉션 동작들)의 슬라이딩 윈도(sliding window)에 기초하여 계산될 수 있다. 로컬 평균 가비지 컬렉션 시간(2815)을 계산하기 위한 다른 기술들도 여전히 사용될 수 있다.Although the local average
로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는, 로컬 평균 가비지 컬렉션 시간(2815)과 곱해진, 도 23의 주 복제본(2315)상의 실제 빈 페이지들의 수(2805) 및 빈 페이지 문턱 값(2810) 사이의 차이로서 로컬 가비지 컬렉션 시간(2820) 및 로컬 예상 가비지 컬렉션 시간(2905)을 계산할 수 있다.The local garbage
선택적으로, 로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는, 삭제 블록들이 삭제 되기 전에 다른 페이지들로 삭제 블록들의 유효한 페이지들을 프로그램 하는데 필요한 시간을 설명할 수 있는, 프로그래밍 지연(2825)을 포함시킬 수도 있다. 로컬 평균 가비지 컬렉션 시간(2815)와 같이 프로그래밍 지연(2825)은, 미리 결정된 고정 값이거나 로컬 평균 가비지 컬렉션 시간(2815)과 거의 같은 방식으로 이전 정보로부터 계산될 수 있다. 프로그래밍 지연(2825)은 로컬 가비지 컬렉션 시간(2820) 및 로컬 예상 가비지 컬렉션 시간(2905)에 일정한 값으로서 포함될 수 있거나, 실제 빈 페이지들의 수(2805) 및 빈 페이지 문턱 값(2810) 사이의 차이와 곱해질 수 있다(프로그래밍을 요구하는 페이지들의 수가 가변적일 수 있다는 사실을 고려하기 위해). Optionally, local garbage
로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는, 두 변형들을 모두 포함하는 하나의 로직을 사용하여 구현될 수 있는 본 발명의 실시 예들에서, 아주 유사하게 동작한다. 로컬 가비지 컬렉션 시간 계산기(2605) 및 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 논리 회로들 또는 프로세서(예로서, SSD상의 저장 장치 내부 프로세서(In-Storage Processor))에서 실행되는 소프트웨어를 사용하여 각각 구현될 수 있다. 또한, 도 27의 원격 가비지 컬렉션 시간 계산기(2715)는, 문의들이 도 23의 보조 복제본들(2320 및 2325)의 가비지 컬렉션 상태에 관련된다는 것을 제외하고, 로컬 가비지 컬렉션 시간 계산기(2805)와 유사하게 동작한다. 그러므로, 도 27의 원격 가비지 컬렉션 시간 계산기(2715)는 로컬 가비지 컬렉션 시간 계산기(2605)의 설명에 기초하여 이해될 수 있으며, 추가적인 상세한 설명은 생략된다.Local garbage
도 30은 큐(queue) 처리 시간을 계산하는 도 26의 큐 처리시간 계산기(2615)를 보여주는 블록도 이다. 큐 처리 시간 계산기(2615)는 큐 처리 시간(3015)을 결정하기 위해 계류중인 I/O 요청들의 수(3005) 및 하나의 I/O 요청을 처리하기 위한 소요 시간(3010)을 획득하고, 두 개의 값들을 곱할 수 있다.30 is a block diagram illustrating the queue
도 24의 문의 로직(2415)은 도 24의 수신 로직(2420)이 수신할 수 있는, 계류중인 요청들의 수를 위해 도 23의 주 복제본(2315)에 문의할 수 있다. 소요 시간(3010)은 일반적으로 고정 값이고 도 24의 데이터베이스(2425) 또는 도 26의 스토리지(2620)에 저장될 수 있으나, 소요 시간(3010)은 도 24의 데이터베이스(2425)에 저장된 이전 정보로부터 계산될 수도 있다. 도 28의 로컬 평균 가비지 컬렉션 시간(2815)과 아주 유사하게, 소요 시간(3010)은, 도 23의 주 복제본(2315)에서 I/O 명령을 이전에 수행하는데 필요한 시간들의 평균 값, 중간 값, 또는 최빈값으로서 계산될 수 있거나, 이러한 이전 정보로부터 선형 회귀 분석을 사용하여 계산될 수 있다. 또한, 사용된 이전 정보는 모든 이전 데이터 또는 단지 이전 정보의 슬라이딩 윈도를 포함할 수 있다.
도 31은 도 24의 데이터베이스(2425)를 구체적으로 보여주는 블록도 이다. 도 31에서, 데이터베이스(2425)는 다양한 정보를 저장하는 것으로 나타내어져 있다. 이 정보는 아래와 같은 정보를 포함할 수 있다.FIG. 31 is a block diagram specifically illustrating the
이전(Historical) 로컬 가비지 컬렉션 정보(3105): 도 23의 주 복제본(2315)에서 가비지 컬렉션이 수행될 때, 가비지 컬렉션이 얼마나 오래 걸렸는지에 관한 이전 정보.Historical Local Garbage Collection Information 3105: When garbage collection is performed on the
최악의 경우 로컬 가비지 컬렉션 정보(3110): 조 23의 주 복제본(2315)에서 가비지 컬렉션이 수행될 때, 최악의 경우에 가비지 컬렉션이 걸린 시간.Worst case local garbage collection information 3110: When garbage collection is performed on the
평균적인 경우 로컬 가비지 컬렉션 정보(3115): 도 23의 주 복제본(2315)에서 가비지 컬렉션이 수행될 때, 가비지 컬렉션이 평균적으로 걸린 시간.Average case local garbage collection information 3115: When garbage collection is performed on the
이전 처리 시간 정보(3120): 도 23의 주 복제본(2315)이 하나의 I/O 요청(905)을 처리하는데 필요했던 시간에 관한 이전 정보Previous Processing Time Information 3120: Previous information regarding the time required for the
최악의 경우 처리 시간 정보(3125): 최악의 경우에, 도 23의 주 복제본(2315)이 하나의 I/O 요청(905)을 처리하는데 필요했던 시간Worst case processing time information 3125: In the worst case, the time required for the
평균적인 경우 처리 시간 정보(3130): 평균적으로 도 23의 주 복제본(2315)이 하나의 I/O 요청(905)을 처리하는데 필요했던 시간Average case processing time information 3130: on average, the time required for the
이전 통신 시간 정보(3135): 도 23의 보조 복제본들(2320 및 2325)과 통신을 하는데 걸린 시간에 관한 이전 정보.Previous Communication Time Information 3135: Previous information regarding the time taken to communicate with the
최악의 경우 통신 시간 정보(3140): 최악의 경우에 도 23의 보조 복제본들(2320 및 2325)과 통신하는데 걸린 시간.Worst case communication time information 3140: The time taken to communicate with the
평균적인 경우 통신 시간 정보(3145): 평균적으로 도 23의 보조 복제본들(2320 및 2325)과 통신하는데 걸린 시간.Average Case Communication Time Information 3145: The average time taken to communicate with the
이전 원격 프로세서 시간 정보(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
최악의 경우 원격 프로세서 시간 정보(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
평균적인 경우 원격 프로세서 시간 정보(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
이전 원격 가비지 컬렉션 정보(3165): 도 23의 보조 복제본들(2320 및 2325)에서 가비지 컬렉션이 수행될 때, 가비지 컬렉션이 걸린 시간에 관한 이전 정보.Previous remote garbage collection information 3165: When garbage collection is performed on the
최악의 경우 원격 가비지 컬렉션 정보(3170): 도 23의 보조 복제본들(2320 및 2325)에서 가비지 컬렉션이 수행될 때, 최악의 경우에 가지비 컬렉션이 걸린 시간.Worst case remote garbage collection information 3170: When garbage collection is performed on
평균적인 경우 원격 가비지 컬렉션 정보(3175): 도 23의 보조 복제본들(2320 및 2325)에서 가비지 컬렉션이 수행될 때, 평균적으로 가비지 컬렉션이 걸린 시간.Average case remote garbage collection information 3175: When garbage collection is performed on the
데이터베이스(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
도 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
또한, 로컬 예상 분석기(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
로컬 예상 분석기(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
로컬 예상 분석기(2430)는 임의의 바람직한 방식으로 데이터 베이스(2425)의 정보로부터 예상 로컬 시간(3205)을 계산할 수 있다. 예를 들어, 로컬 예상 분석기(2430)는 도 31의 이전 로컬 가비지 컬렉션 정보(3105)의 평균 값, 중간 값 또는 최빈값을 계산할 수 있고, 그리고 도 31의 이전 처리 시간 정보(3120)의 평균 값, 중간 값 또는 최빈값을 계산할 수 있고, 이후 가중치 합산을 이용하여 두 개의 통계 계산들을 결합할 수 있다. 또는, 로컬 예상 분석기(2430)는 도 31의 이전 로컬 가비지 컬렉션 정보(3105)만을 고려하고, 임의의 처리 시간 정보는 무시할 수 있다. 또는 로컬 예상 분석기(2430)는 데이터 베이스(2425)내의 정보의 슬라이딩 윈도만을 고려할 수 있다. 본 발명의 실시 예들은 로컬 예상 분석기(2430)가 어떻게 예상 로컬 시간 (3205)을 계산하는지에 대한 모든 변형들을 포함하도록 의도된다.The
도 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
로컬 가비지 컬렉션 가중치(2635), 로컬 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)는 임의의 바람직한 수단들에 의해 계산될 수 있다. 예를 들어, 도 26의 가중치 생성기(2630) 가중치들을 계산하기 위해 도 24의 데이터 베이스(2425)상의 정보에 대해 선형 회귀 분석을 수행할 수 있다. 이 선형 회귀 분석은 도 24의 데이터 베이스(2425)의 모든 정보에 대해 수행될 수 있고, 또는 데이터 베이스(2425) 정보의 슬라이딩 윈도에 대해 수행될 수 있다. The local
로컬 추정 소요 시간 계산기(2625)는, 로컬 예상 가중치(3310)에 의해 또한 선택적으로 가중될 수도 있는(도 26의 가중치 생성기(2630)에 의해 또한 생성될 수도 있는), 예상 로컬 시간(3205)을 또한 고려할 수 있다. 예상 로컬 시간(3205)을 고려함으로써, 로컬 추정 소요 시간 계산기(2625)는 비정상적으로 낮거나 높은 추정 소요 시간들로 이어질 수 있는 도 23의 주 복제본(2315)으로부터 오는 비정상 정보를 상쇄시킬 수 있다. The local estimated time spent
위의 설명이 가중치들(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
도 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
도 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
도 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
또한, 원격 예상 분석기(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
원격 예상 분석기(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
원격 예상 분석기(2435)는 임의의 바람직한 방식으로 데이터 베이스(2425)내이 정보로부터 예상 원격 시간(3605)을 계산할 수 있다. 예를 들어, 원격 예상 분석기(2435)는 도 31의 이전 원격 가비지 컬렉션 정보(3165)의 평균 값, 중간 값, 또는 최빈값을 계산할 수 있고, 도 31의 이전 통신 시간 정보(3135)의 평균 값, 중간 값, 또는 최빈값을 계산할 수 있고, 그리고 가중치 합산을 이용하여 두 개의 통계 계산들을 결합할 수 있다. 또는, 원격 예상 분석기(2435)는 도 31의 이전 원격 가비지 컬렉션 정보(3165)만을 고려하고, 통신 시간 및 원격 프로세서 시간 정보는 무시할 수 있다. 또는, 원격 예상 분석기(2435)는 데이터 베이스(2425)내의 정보의 슬라이딩 윈도만을 고려할 수 있다. 본 발명의 실시 예들은 원격 예상 분석기(2435)가 예상 원격 시간(3605)을 계산하는 방법의 모든 변형들을 포함하도록 의도될 수 있다.The
도 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
통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)는 임의의 바람직한 수단들에 의해 계산될 수 있다. 예를 들어, 도 27의 가중치 생성기(2730)는 가중치들을 계산하기 위해 도 24의 데이터 베이스(2425)상의 정보들에 대해 선형 회귀 분석을 수행할 수 있다. 이 선형 회귀 분석은 도 24의 데이터 베이스(2425)내의 모든 정보에 대해 수행될 수 있고, 또는 데이터 베이스(2425)내의 정보의 슬라이딩 윈도에 대해 수행될 수 있다.
원격 추정 소요 시간 계산기(2725)는 원격 예상 가중치(3715)에 의해 선택적으로 가중될 수 있는(도 27의 가중치 생성기(2730)에 의해 생성될 수도 있는), 예상 원격 시간(3605)을 고려할 수 있다. 예상 원격 시간(3605)을 고려함으로써, 원격 추정 소요 시간(2725)은, 비정상적으로 낮거나 높게 추정되는 소요 시간들로 이어질 수 있는 도 23의 보조 복제본들(2320 및 2325)로부터 나오는 비정상 정보를 상쇄 시킬 수 있다.The remote estimated time required
위의 설명은 가중치들(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
도 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/
도 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
도 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
반면, 도 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
도 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/
도 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
도 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
도 41a의 블록(4105)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605)는, 도 23의 주 복제본(2315)이 가비지 컬렉션을 수행하는 중 이거나 곧 수행할 것인지를 검사할 수 있다. 이 검사는 도 28의 빈 페이지들의 수(2805)를 도 28의 빈 페이지 문턱 값(2810)과 비교함으로써 완료될 수 있다. 도 28의 빈 페이지들의 수(2805)가 도 28의 빈 페이지 문턱 값(2810) 보다 작은 경우, 도 23의 주 복제본(2315)은 가비지 컬렉션을 수행 중이거나 곧 시작한다. At
도 23의 주 복제본(2315)이 가비지 컬렉션을 수행중이 아니거나 곧 시작하는 것이 아닌 경우, 도 26의 로컬 가비지 컬렉션 시간 계산기(2605)는 도 28의 로컬 가비지 컬렉션 시간(2820)을 0으로서 반환할 수 있다. 그렇지 않다면, 도 23의 주 복제본(2315)은 가비지 컬렉션을 수행 중 이거나 곧 시작한다.If the
이 시점에서, 취할 수 있는 두 가지 가능한 접근법들이 있다. 하나의 접근법은, 도 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
다른 접근법은 도 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
블록(4150)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2625)는 도 28의 빈 페이지들의 수(2805) 및 도 28의 빈 페이지 문턱 값(2810) 사이의 차이 값을 계산할 수 있다. 이 차이 값은, 도 23의 주 복제본(2315)을 가비지 컬렉션 상태에서 벗어나게 하기 위해 비워져야 하는 페이지들의 수를 나타낼 수 있다. 블록(4155)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2625)는 삭제되는 중인 블록들의 프로그래밍 유효 페이지들과 관련된 지연을 추가할 수 있다. 블록(4160)에서, 도 26의 로컬 가비지 컬렉션 시간 계산기(2625)는 위 결과를 도 28의 로컬 평균 가비지 컬렉션 시간(2815)에 곱함으로서 도 28의 로컬 가비지 컬렉션 시간(2820)을 계산할 수 있다.At
도 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
도 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/
블록(4305)에서, 도 24의 로컬 예상 분석기(2430)은 도 24의 데이터베이스(2425)로부터의 이전 정보에 접근할 수 있다. 블록(4310)에서, 도 24의 로컬 예상 분석기(2430)는 도 24의 데이터베이스(2425)내의 이전 정보에 기초하여 소요 시간을 예상할 수 있다. 도 24의 로컬 예상 분석기(2430)는 소요 시간을 예상하기 위해 임의의 바람직한 접근법을 사용할 수 있다. 예시적인 접근법들은 이전 정보의 평균 값, 중간 값, 및 최빈값을 계산하는 것, 가중된 함수들을 이전 정보에 적용하는 것, 및 선형 회귀 분석을 수행하는 것을 포함한다. 본 발명의 실시 예들은 다른 접근법들을 소요 시간을 예상하는 데에도 적용할 수 있다.At
도 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
도 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
도 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
도 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
블록(4720)에서, 도 24의 문의 로직(2415)은 도 23의 보조 복제본들(2320 및 2325)에게 도 35의 소프트웨어 스택 로드들(3510)을 문의 할 수 있다. 하나 이상의 보조 복제본들이 있을 수 있기 때문에, 점선 화살표(4725)는, 블록(4720)이 모든 보조 복제본들에게 문의 하는데 필요한 만큼 반복될 수 있다는 것을 보여준다. 블록(4730)에서, 도 24의 수신 로직(2420)은 보조 복제본들로부터 원격 소프트웨어 스택 로드(들)을 수신할 수 있다.At
최종적으로, 블록(4735)에서, 도 27의 원격 프로세서 시간 계산기(2710)는 도 35의 원격 프로세서 로드(들)(3505) 및 원격 소프트웨어 스택 로드(들)(3510)을 도 35의 원격 프로세서 시간(3515)에 맵핑 할 수 있다.Finally, at
도 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. 본 발명의 일 실시 예는,
데이터의 주 복제본(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)
로컬 추정 소요 시간(3305) 및 적어도 하나의 원격 추정 소요 시간(3710)에 응답하여 주 복제본(2315) 및 적어도 하나의 보조 복제본(2320, 2325) 중 하나로 I/O 요청(905)을 보내기 위한 I/O 재배치기(215)를 포함하는 분산 저장 시스템 노드(124, 130, 135)를 포함한다. I for sending an I/
설명 2. 본 발명의 실시 예는 설명 1에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 적어도 하나의 저장 장치(140, 145, 150, 155, 160, 165, 225, 230)는 솔리드 스테이트 드라이브(SSD)(140, 145, 150, 155, 160, 165, 225, 230)를 포함한다.
설명 3. 본 발명의 실시 예는 설명 1에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 분산 저장 시스템 노드(125, 130, 135)는 네트워크 결합 솔리드 스테이트 드라이브(Network Attached SSD) 및 이더넷 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
설명 5. 본 발명의 실시 예는 설명 4에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 5. An embodiment of the present invention includes the distributed
비용 분석기(2310)는, 주 복제본(2315)에서 I/O 요청(905)을 처리하기 위한 로컬 추정 소요 시간(3305)을 계산하기 위한 로컬 시간 추정기(2405)를 포함하고;The
I/O 재배치기(215)는I/
문턱 시간(2525)을 위한 스토리지(2505); 및
로컬 추정 소요 시간(3305)을 문턱 시간과 비교하기 위한 제 1 비교기를 포함한다.and a first comparator for comparing the local estimated required
설명 6. 본 발명의 실시 예는 설명 5에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 6. An embodiment of the present invention includes the distributed
로컬 추정 소요 시간(3305)이 문턱 시간 보다 짧은 경우, I/O 재배치기(215)는 I/O 요청(905)을 주 복제본(2315)으로 보내기 위해 동작한다.If the local estimated
설명 7. 본 발명의 실시 예는 설명 5에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 시간 추정기(2405)는Description 7. An embodiment of the present invention includes the distributed
로컬 가비지 컬렉션 시간(2820)을 계산하기 위한 로컬 가비지 컬렉션 시간 계산기(2605);a local garbage
로컬 예상 가비지 컬렉션 시간(2905)을 계산하기 위한 로컬 예상 가비지 컬렉션 시간 계산기(2610);a local estimated garbage
로컬 가비지 컬렉션 가중치(2636) 및 예상 가비지 컬렉션 가중치(2640)를 위한 스토리지(2620); 및 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)로부터 로컬 추정 소요 시간(3305)을 계산하기 위한 로컬 추정 소요 시간 계산기(2625)를 포함한다.
설명 8. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값 및 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)를 곱한 값의 합으로서 로컬 추정 소요 시간(3305)를 계산하도록 동작할 수 있다.Description 8. An embodiment of the present invention includes the distributed
설명 9. 본 발명의 실시 예는 설명 8에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값, 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)을 곱한 값, 및 큐 처리 시간(3015)에 큐 처리 가중치(2645)를 곱한 값의 합으로서 로컬 추정 소요 시간(3305)를 계산하도록 동작할 수 있다. Description 9. An embodiment of the present invention includes the distributed
설명 10. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 10. An embodiment of the present invention includes the distributed
비용 분석기(2310)는,The
주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하기 위한 문의 로직; 및query logic to query the
주 복제본(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
설명 11. 본 발명의 실시 예는 설명 10에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 가비지 컬렉션 시간 계산기(2605)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 로컬 가비지 컬렉션 시간(2820)에 더하는 동작을 더 한다.Description 11. An embodiment of the present invention includes a distributed
설명 12. 본 발명의 실시 예는 설명 10에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 주기적으로 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하기 위해 동작한다.Description 12. An embodiment of the present invention includes the distributed
설명 13. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 13. An embodiment of the present invention includes the distributed
비용 분석기(2310)는,The
주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의 하기 위한 문의 로직; 및query logic to query the
주 복제본(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
설명 14. 본 발명의 실시 예는 설명 13에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 로컬 가비지 컬렉션 시간(2820)에 더하는 동작을 더 한다.Description 14. An embodiment of the present invention includes a distributed
설명 15. 본 발명의 실시 예는 설명 13에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 주기적으로 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하기 위해 동작한다.Description 15. An embodiment of the present invention includes the distributed
설명 16. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 16. An embodiment of the present invention includes the distributed
로컬 시간 추정기(2405)는 큐 처리 시간(3015)을 계산하기 위한 큐 처리 시간 계산기(2615)를 포함하고;
스토리지(2620)는 큐 처리 가중치(2645)를 위한 스토리지를 포함하고;
로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 큐 처리 시간(3015), 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640) 및 큐 처리 가중치(2645)로부터 로컬 추정 소요 시간을 계산하도록 동작할 수 있다.The local estimated time spent
설명 17. 본 발명의 실시 예는 설명 16에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 17. An embodiment of the present invention comprises the distributed
비용 분석기(2310)는,The
주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 주 복제본(2315)에 문의 하기 위한 문의 로직; 및query logic for querying the
주 복제본(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
설명 18. 본 발명의 실시 예는 설명 17에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 주기적으로 주 복제본(2315)에 주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 문의 하도록 동작한다.Description 18. An embodiment of the present invention includes the distributed
설명 19. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 비용 분석기(2310)는,Description 19. An embodiment of the present invention includes the distributed
주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315) 상의 최악의 경우 추정 로컬 가비지 컬렉션(3110), 주 복제본(2315) 상의 평균적인 경우 추정 로컬 가비지 컬렉션(3115), 주 복제본(2315)에 대한 이전 처리 시간 정보(3120), 및 주 복제본(2315) 상의 평균적인 경우 추정 처리 시간(3130) 중 적어도 하나를 포함하는 정보를 저장하는 데이터베이스(2425); 및Previous local
데이터베이스(2425)에 저장된 정보로부터 주 복제본(2315)에 대한 예상 로컬 시간을 계산하기 위한 로컬 예상 분석기(2430)를 더 포함한다. It further includes a
설명 20. 본 발명의 실시 예는 설명 19에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 예상 로컬 시간(3205), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하도록 동작한다. Description 20. An embodiment of the present invention includes the distributed
설명 21. 본 발명의 실시 예는 설명 7에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 로컬 시간 추정기(2405)는 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하기 위한 가중치 생성기(2630)를 더 포함한다. Description 21. An embodiment of the present invention includes the distributed
설명 22. 본 발명의 실시 예는 설명 21에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 가중치 생성기(2630)는, 주 복제본(2315)에 대한 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)을 생성하도록 동작한다.Description 22. An embodiment of the present invention comprises distributed
설명 23. 본 발명의 실시 예는 설명 22에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 이전 데이터는 주 복제본(2315)의 슬라이딩 윈도 사용으로부터 나온다.Description 23. An embodiment of the present invention comprises a distributed
설명 24. 본 발명의 실시 예는 설명 5에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 24. An embodiment of the present invention comprises the distributed
비용 분석기(2310)는, 적어도 하나의 보조 복제본들(2320, 2325)에서의 I/O 요청(905)을 처리하기 위한, 적어도 하나의 원격 추정 소요 시간(3710)을 계산하기 위한 원격 시간 추정기(2410)을 더 포함하고,The
I/O 재배치기(215)는,I/
로컬 추정 소요 시간(3305)를 적어도 하나의 원격 추정 소요 시간(3710)과 비교하기 위한 제 2 비교기(2515); 및a
주 복제본(2315), 및 로컬 추정 소요 시간(3305) 및 적어도 하나의 원격 추정 소요 시간(3710)으로부터의 최소 시간으로 I/O 요청(905)을 처리하기 위한 적어도 하나의 보조 복제본(2320, 2325) 중 하나를 선택하기 위한 선택기(2520)를 더 포함한다. A
설명 25. 본 발명의 실시 예는 설명 24에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 25. An embodiment of the present invention comprises the distributed
원격 시간 추정기(2410)는,The
분산 저장 시스템 노드(125, 130, 135) 및 적어도 하나의 보조 복제본(2320, 2325)을 포함하는 적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 사이의 통신 시간(3410)을 계산하기 위한 통신 시간 계산기(2705);for calculating a
적어도 하나의 보조 저장 시스템 노드(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); 및
통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)으로부터 원격 추정 소요 시간(3710)을 계산하기 위한 원격 추정 소요 시간 계산기(2725)를 포함한다.Remote estimated time taken from
설명 26. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 원격 추정 소요 시간 계산기(2725)는 통신 시간(3410)에 통신 시간 가중치(2735)을 곱한 값, 원격 프로세서 시간(3515)에 원격 프로세서 시간 가중치(2740)을 곱한 값, 및 원격 가비지 컬렉션 시간(3705)에 원격 가비지 컬렉션 시간 가중치(2745)를 곱한 값의 합으로서 원격 추정 소요 시간(3710)을 계산하도록 동작할 수 있다.Description 26. An embodiment of the present invention includes the distributed
설명 27. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 통신 시간 계산기(2705)는 통신 시간(3410)을 측정하기 위한 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하기 위한 핑 로직(3405)을 포함한다. Description 27. An embodiment of the present invention includes the distributed
설명 28. 본 발명의 실시 예는 설명 27에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 핑 로직(3405)은 주기적으로 통신 시간(3410)을 측정하기 위한 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하도록 동작한다. Description 28. An embodiment of the present invention includes the distributed
설명 29. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 29. An embodiment of the present invention comprises the distributed
비용 분석기(2310)는,The
적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 상의 원격 프로세서 로드(3505)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 문의하기 위한 문의 로직(2415); 및
원격 프로세서 로드(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
설명 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
설명 31. 본 발명의 실시 예는 설명 29에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 31. An embodiment of the present invention comprises the distributed
문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 상의 원격 소프트웨어 스택 로드(3515)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 문의하도록 동작하고;
수신 로직(2420)은 원격 소프트웨어 스택 로드(3510)을 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)로부터 수신하도록 동작하고,receive
원격 프로세서 시간 계산기(2710)는 원격 프로세서 로드(3505) 및 원격 소프트웨어 스택 로드(3510)에 응답하여 원격 프로세서 시간(3515)를 계산하도록 동작한다.The remote
설명 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
설명 33. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고,Description 33. An embodiment of the present invention comprises the distributed
비용 분석기(2310)는,The
실제 빈 페이지들의 수(2805)를 적어도 하나의 보조 복제본(2320, 2325)에 문의하기 위한 문의 로직(2415); 및
적어도 하나의 보조 복제본(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
설명 34. 본 발명의 실시 예는 설명 33에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 원격 가비지 컬렉션 시간 계산기(2715)는 각각의 삭제 블록의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 원격 가비지 컬렉션 시간(3705)에 더하는 동작을 더 한다. Statement 34. An embodiment of the present invention includes a distributed
설명 35. 본 발명의 실시 예는 설명 33에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 복제본(2320, 2325)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하도록 동작한다.Description 35. An embodiment of the present invention includes the distributed
설명 36. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 비용 분석기(2310)는,Description 36. An embodiment of the present invention comprises the distributed
적어도 하나의 보조 복제본(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
데이터베이스(2425)에 저장된 정보(3135, 3140, 3145, 3150, 3155, 3160, 3165, 3170, 3175)로부터, 적어도 하나의 보조 복제본(2320, 2325)에 대한 예상 원격 시간(3605)을 계산하기 위한 원격 예상 분석기(2435)를 더 포함할 수 있다.from
설명 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
설명 38. 본 발명의 실시 예는 설명 25에 따른 분산 저장 시스템 노드(125, 130, 135)를 포함하고, 원격 시간 추정기(2410)는, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하기 위한 가중치 생성기(2730)를 더 포함할 수 있다.Description 38. An embodiment of the present invention includes the distributed
설명 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
설명 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)
데이터의 적어도 하나의 보조 복제본(2320, 2325)에서 I/O 요청(905)을 처리하기 위한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하기 위한 원격 시간 추정기(2410)를 포함하는 비용 분석기를 포함하고, A cost analyzer comprising a
비용 분석기(2310)는, I/O 재배치기(215)가, 로컬 추정 소요 시간(3305) 및 적어도 하나의 원격 추정 소요 시간(3710)에 응답하여, I/O 요청(905)을 주 복제본(2315) 및 적어도 하나의 보조 복제본(2320, 2325) 중 하나에 전송할 수 있게 한다. The
설명 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
설명 43. 본 발명의 실시 예는 설명 41에 따른 비용 분석기(2310)를 포함하고, 비용 분석기(2310)는, 주 복제본(2315)이 가비지 컬렉션을 수행하는 중에만 활성화 된다. Description 43. An embodiment of the present invention includes a
설명 44. 본 발명의 실시 예는 설명 43에 따른 비용 분석기(2310)를 포함하고, 로컬 시간 추정기(2405)는,Description 44. An embodiment of the present invention comprises the
로컬 가비지 컬렉션 시간(2820)을 계산하기 위한 로컬 가비지 컬렉션 시간 계산기(2605);a local garbage
로컬 예상 가비지 컬렉션 시간(2905)을 계산하기 위한 로컬 예상 가비지 컬렉션 시간 계산기(2610);a local estimated garbage
로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 위한 스토리지(2620); 및
로컬 가비지 컬렉션 시간(2820), 로컬 예상 가지비 컬렉션 시간(2905), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)를 계산하기 위한 로컬 추정 소요 시간 계산기(2625)를 포함한다.Local estimated time taken to compute a local estimated time taken 3305 from the local
설명 45. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치(2635)를 곱한 값 및 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가지지 컬렉션 가중치(2640)을 곱한 값의 합으로서 로컬 추정 소요 시간(3305)을 계산하도록 동작한다. Description 45. An embodiment of the present invention includes the
설명 46. 본 발명의 실시 예는 설명 45에 따른 비용 분석기(2310)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는 로컬 가비지 컬렉션 시간(2820)에 로컬 가비지 컬렉션 가중치를 곱한 값, 로컬 예상 가비지 컬렉션 시간(2905)에 예상 가비지 컬렉션 가중치(2640)을 곱한 값, 및 큐 처리 시간(3015)에 큐 처리 가중치(2645)를 곱한 값의 합으로서 로컬 추정 소요 시간(3305)을 계산하도록 동작한다.Description 46. An embodiment of the present invention includes the
설명 47. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고,Description 47. An embodiment of the present invention comprises a
비용 분석기(2310)는 실제 빈 페이지들의 수(2805)를 주 복제본(2315)에 문의하기 위한 문의 로직(2415); 및The
실제 빈 페이지들의 수(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
설명 48. 본 발명의 실시 예는 설명 47에 따른 비용 분석기(2310)를 포함하고, 로컬 가비지 컬렉션 시간 계산기(2605)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 로컬 가비지 컬렉션 시간(2820)에 더하는 동작을 더 한다.Statement 48. An embodiment of the present invention includes a
설명 49. 본 발명의 실시 예는 설명 47에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하도록 동작한다.Statement 49. An embodiment of the present invention includes a
설명 50. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고,Statement 50. An embodiment of the present invention comprises a
비용 분석기(2310)는,The
실제 빈 페이지들의 수(2805)를 주 복제본(2315)에 문의하기 위한 문의 로직(2415); 및
실제 빈 페이지들의 수(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
설명 51. 본 발명의 실시 예는 설명 50에 따른 비용 분석기(2310)를 포함하고, 로컬 예상 가비지 컬렉션 시간 계산기(2610)는 각각의 삭제 블록 내의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 로컬 예상 가비지 컬렉션 시간(2905)에 더하는 동작을 더 한다.Description 51. An embodiment of the present invention includes a
설명 52. 본 발명의 실시 예는 설명 50에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하도록 동작한다.Statement 52. An embodiment of the present invention includes a
설명 53. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고,Description 53. An embodiment of the present invention comprises a
로컬 시간 추정기(2405)는 큐 처리 시간(3015)을 계산하기 위한 큐 처리 시간 계산기(2615)를 포함하고,
스토리지(2630)는 큐 처리 가중치(2645)를 위한 스토리지를 포함하고,
로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 큐 처리 시간(3015), 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)로부터 로컬 추정 소요 시간(3305)을 계산하도록 동작한다. The local estimated time taken
설명 54. 본 발명의 실시 예는 설명 53에 따른 비용 분석기(2310)를 포함하고, Description 54. An embodiment of the present invention comprises a
비용 분석기(2310)는,The
주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 주 복제본(2315)에 문의 하기 위한 문의 로직; 및query logic for querying the
주 복제본(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
설명 55. 본 발명의 실시 예는 설명 54에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 주 복제본(2315)에 계류중인 I/O 요청(905)들의 수(3005)를 주 복제본(2315)에 주기적으로 문의 하도록 동작한다.Description 55. An embodiment of the present invention includes a
설명 56. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고,Statement 56. An embodiment of the present invention comprises a
주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315) 상의 최악의 경우 추정 로컬 가비지 컬렉션(3110), 주 복제본(2315) 상의 평균적인 경우 추정 로컬 가비지 컬렉션(3115), 주 복제본(2315)에 대한 이전 처리 시간 정보(3120), 및 주 복제본(2315) 상의 평균적인 경우 추정 처리 시간(3130) 중 적어도 하나를 포함하는 정보를 저장하는 데이터베이스(2425); 및Previous local
데이터베이스(2425)에 저장된 정보로부터 주 복제본(2315)에 대한 예상 로컬 시간을 계산하기 위한 로컬 예상 분석기(2430)를 더 포함한다.It further includes a
설명 57. 본 발명의 실시 예는 설명 56에 따른 비용 분석기(2310)를 포함하고, 로컬 추정 소요 시간 계산기(2625)는, 로컬 가비지 컬렉션 시간(2820), 로컬 예상 가비지 컬렉션 시간(2905), 예상 로컬 시간(3205), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하도록 동작한다.Description 57. An embodiment of the present invention includes the
설명 58. 본 발명의 실시 예는 설명 44에 따른 비용 분석기(2310)를 포함하고, 로컬 시간 추정기(2405)는 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하기 위한 가중치 생성기(2630)를 더 포함한다.Description 58. An embodiment of the present invention includes a
설명 59. 본 발명의 실시 예는 설명 58에 따른 비용 분석기(2310)를 포함하고, 가중치 생성기(2630)는, 주 복제본(2315)에 대한 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)을 생성하도록 동작한다.Statement 59. An embodiment of the present invention includes a
설명 60. 본 발명의 실시 예는 설명 59에 따른 비용 분석기(2310)를 포함하고, 이전 데이터는 주 복제본(2315) 사용의 슬라이딩 윈도로부터 나온다.Description 60. An embodiment of the present invention comprises a
설명 61. 본 발명의 실시 예는 설명 43에 따른 비용 분석기(2310)를 포함하고, 원격 시간 추정기(2410)는,Description 61. An embodiment of the present invention comprises a
분산 저장 시스템 노드(125, 130, 135) 및 적어도 하나의 보조 복제본(2320, 2325)를 포함하는 적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 사이의 통신 시간(3410)을 계산하기 위한 통신 시간 계산기(2705);for calculating a
적어도 하나의 보조 저장 시스템 노드(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); 및
통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)으로부터 원격 추정 소요 시간(3710)을 계산하기 위한 원격 추정 소요 시간 계산기(2725)를 포함한다.Remote estimated time taken from
설명 62. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고, 원격 추정 소요 시간 계산기(2725)는 통신 시간(3410)에 통신 시간 가중치(2735)을 곱한 값, 원격 프로세서 시간(3515)에 원격 프로세서 시간 가중치(2740)을 곱한 값, 및 원격 가비지 컬렉션 시간(3705)에 원격 가비지 컬렉션 시간 가중치(2745)를 곱한 값의 합으로서 원격 추정 소요 시간(3710)을 계산하도록 동작할 수 있다.Description 62. An embodiment of the present invention includes the
설명 63. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고, 통신 시간 계산기(2705)는 통신 시간(3410)을 측정하기 위한 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하기 위한 핑 로직(3405)을 포함한다. Description 63. An embodiment of the present invention comprises a
설명 64. 본 발명의 실시 예는 설명 63에 따른 비용 분석기(2310)를 포함하고, 핑 로직(3405)은 주기적으로 통신 시간(3410)을 측정하기 위한 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)의 통신상태를 검사하도록 동작한다.Description 64. An embodiment of the present invention includes a
설명 65. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고,Description 65. An embodiment of the present invention comprises a
비용 분석기(2310)는,The
적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 상의 원격 프로세서 로드(3505)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 문의하기 위한 문의 로직(2415); 및
원격 프로세서 로드(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
설명 66. 본 발명의 실시 예는 설명 65에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 원격 프로세서 로드(3505)를 주기적으로 문의하도록 동작한다Statement 66. An embodiment of the present invention includes a
설명 67. 본 발명의 실시 예는 설명 65에 따른 비용 분석기(2310)를 포함하고,Description 67. An embodiment of the present invention comprises a
문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135) 상의 원격 소프트웨어 스택 로드(3515)를 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 문의하도록 동작하고;
수신 로직(2420)은 원격 소프트웨어 스택 로드(3510)을 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)로부터 수신하도록 동작하고,receive
원격 프로세서 시간 계산기(2710)는 원격 프로세서 로드(3505) 및 원격 소프트웨어 스택 로드(3510)에 응답하여 원격 프로세서 시간(3515)를 계산하도록 동작한다.The remote
설명 68. 본 발명의 실시 예는 설명 67에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 저장 시스템 노드(125, 130, 135)에 원격 소프트웨어 스택 로드(3510)을 주기적으로 문의하도록 동작한다.Description 68. An embodiment of the present invention includes a
설명 69. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고,Description 69. An embodiment of the present invention comprises a
비용 분석기(2310)는,The
실제 빈 페이지들의 수(2805)를 적어도 하나의 보조 복제본(2320, 2325)에 문의하기 위한 문의 로직(2415); 및
적어도 하나의 보조 복제본(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
설명 70. 본 발명의 실시 예는 설명 69에 따른 비용 분석기(2310)를 포함하고, 원격 가비지 컬렉션 시간 계산기(2715)는 각각의 삭제 블록의 프로그래밍 유효 페이지들과 관련된 지연(2825)을 원격 가비지 컬렉션 시간(3705)에 더하는 동작을 더 한다.Statement 70. An embodiment of the present invention includes a
설명 71. 본 발명의 실시 예는 설명 69에 따른 비용 분석기(2310)를 포함하고, 문의 로직(2415)은 적어도 하나의 보조 복제본(2320, 2325)에 실제 빈 페이지들의 수(2805)를 주기적으로 문의하도록 동작한다.Description 71. An embodiment of the present invention includes a
설명 72. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고, Description 72. An embodiment of the present invention comprises a
적어도 하나의 보조 복제본(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
데이터베이스(2425)에 저장된 정보(3135, 3140, 3145, 3150, 3155, 3160, 3165, 3170, 3175)로부터, 적어도 하나의 보조 복제본(2320, 2325)에 대한 예상 원격 시간(3605)을 계산하기 위한 원격 예상 분석기(2435)를 더 포함할 수 있다.from
설명 73. 본 발명의 실시 예는 설명 72에 따른 비용 분석기(2310)를 포함하고, 원격 추정 소요 시간 계산기(2725)는 통신 시간(3410), 원격 프로세서 시간(3515), 원격 가비지 컬렉션 시간(3705), 예상 원격 시간(3605), 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)로부터, 원격 추정 소요 시간(3710)을 계산하도록 동작한다.Statement 73. An embodiment of the present invention includes a
설명 74. 본 발명의 실시 예는 설명 61에 따른 비용 분석기(2310)를 포함하고, 원격 시간 추정기(2410)는, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하기 위한 가중치 생성기(2730)를 더 포함할 수 있다.Statement 74. An embodiment of the present invention includes a
설명 75. 본 발명의 실시 예는 설명 74에 따른 비용 분석기(2310)를 포함하고, 가중치 생성기(2730)는 적어도 하나의 보조 복제본(2320, 2325)의 이전 데이터에 기초한 선형 회귀 분석을 사용하여, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하도록 동작한다.Statement 75. An embodiment of the present invention comprises a
설명 76. 본 발명의 실시 예는 설명 75에 따른 비용 분석기(2310)를 포함하고, 이전 데이터는 적어도 하나의 보조 복제본(2320, 2325)의 슬라이딩 윈도 사용으로부터 나온다.Statement 76. An embodiment of the present invention comprises a
설명 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
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/
설명 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
설명 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
설명 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
로컬 추정 소요 시간(3305)이 문턱 시간(2525)보다 짧은 경우, 주 복제본에서의(2315) I/O 요청(905)을 처리하는 단계(3915)를 더 포함한다. processing 3915 the I/
설명 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/
설명 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
로컬 가비지 컬렉션 시간(2820), 로컬 예산 가비지 컬렉션 시간(2905), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 포함한다. calculating 4030 a local estimated time taken 3305 from a local
설명 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
설명 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
설명 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
주 복제본(2315)이 현재 가비지 컬렉션을 수행하는 중인 경우, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)를 포함한다.and calculating 4005 a local
설명 87. 본 발명의 실시 예는 설명 86에 따른 방법을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계는,Statement 87. An embodiment of the invention comprises the method according to statement 86, wherein calculating a local
주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하는 단계;querying the
주 복제본(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
설명 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
설명 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
설명 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
설명 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
주 복제본(2315)이 곧 가비지 컬렉션을 시작할 것으로 예상되는지 결정하는 단계; 및determining whether the
주 복제본이 곧 가비지 컬렉션을 수행하려는 경우에만 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)를 포함한다.and calculating 4010 an expected
설명 92. 본 발명의 실시 예는 설명 91에 따른 방법을 포함하고, 로컬 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)는,Description 92. An embodiment of the invention comprises the method according to statement 91, wherein calculating 4010 a local expected
주 복제본(2315)에 실제 빈 페이지들의 수(2820)를 문의하는 단계(4120);querying 4120 the number of actual
주 복제본(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
설명 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
주 복제본(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
설명 98. 본 발명의 실시 예는 설명 97에 따른 방법을 포함하고, 큐 깊이를 처리하는데 필요한 큐 처리 시간(3015)을 추정하는 단계(4210, 4215)는,Description 98. An embodiment of the present invention comprises the method according to statement 97, wherein estimating a
하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 결정하는 단계(4210); 및determining 4210 a time required to process one I/
하나의 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
설명 100. 본 발명의 실시 예는 설명 83에 따른 방법을 포함하고, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하는 단계(4025)를 더 포함한다.
설명 101. 본 발명의 실시 예는 설명 100에 따른 방법을 포함하고, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하는 단계(4025)는 큐 처리 가중치(2645)를 생성하는 단계(4025)를 포함한다.Description 101. An embodiment of the present invention comprises a method according to
설명 102. 본 발명의 실시 예는 설명 100에 따른 방법을 포함하고, 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)를 생성하는 단계(4025)는, 주 복제본(2315)에 대한 이전 데이터에 기초한 선형 회귀 분석을 사용하여 로컬 가비지 컬렉션 가중치(2635), 예상 가비지 컬렉션 가중치(2640), 및 큐 처리 가중치(2645)를 생성하는 단계(4410)를 포함한다. Description 102. An embodiment of the present invention comprises the method according to
설명 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
설명 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)를 포함한다.
설명 105. 본 발명의 실시 예는 설명 80에 따른 방법을 포함하고, 요청된 데이터를 저장하는, 적어도 하나의 보조 복제본(2320, 2325)에 대한 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(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
설명 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
설명 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
설명 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
적어도 하나의 보조 복제본(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
설명 110. 본 발명의 실시 예는 설명 109에 따른 방법을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에, 원격 프로세서에 대한 비용을 문의하는 단계(4705, 4720)는 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서에 원격 프로세서 로드(3505)를 문의하는 단계(4705)를 포함한다.
설명 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
실제 빈 페이지들의 수(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
설명 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)를 더 포함한다.
설명 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
설명 117. 본 발명의 실시 예는 설명 105에 따른 방법을 포함하고, 통신 시간 가중치(2735), 원격 프로세서 시간 가중치(2740), 및 원격 가비지 컬렉션 시간 가중치(2745)를 생성하는 단계(4525)를 더 포함한다.Description 117. An embodiment of the present invention comprises a method according to
설명 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
설명 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
설명 120. 본 발명의 실시 예는 설명 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)를 포함한다.
설명 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
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/
설명 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
설명 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
설명 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
설명 125. 본 발명의 실시 예는 설명 124에 따른 물건을 포함하고, 본 발명의 실시 예는, 유형의 저장 매체를 포함하는, 물건을 포함하고, 기계에 의해 실행될 때, 그 유형의 저장 매체는
로컬 추정 소요 시간(3305)을 문턱 시간(2525)와 비교하는 단계(3925); 및comparing 3925 the local estimated time taken 3305 to a
로컬 추정 소요 시간(3305)이 문턱 시간(2525)보다 짧은 경우, 주 복제본에서의(2315) I/O 요청(905)을 처리하는 단계(3915)를 야기하는 비 일시적인 명령들을 더 저장한다.If the local estimated
설명 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
설명 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/
로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005);calculating (4005) a local garbage collection time (2820);
로컬 예상 가비지 컬렉션 시간(2905)을 계산하는 단계(4010);calculating 4010 a local expected
로컬 가비지 컬렉션 시간(2820), 로컬 예산 가비지 컬렉션 시간(2905), 로컬 가비지 컬렉션 가중치(2635), 및 예상 가비지 컬렉션 가중치(2640)으로부터 로컬 추정 소요 시간(3305)을 계산하는 단계(4030)를 포함한다.calculating 4030 a local estimated time taken 3305 from a local
설명 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
설명 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
설명 130. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)는,
주 복제본(2315)이 가비지 컬렉션을 수행하는 중인지 여부를 결정하는 단계(4105); 및determining (4105) whether the
주 복제본(2315)이 현재 가비지 컬렉션을 수행하는 중인 경우, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4005)를 포함한다.and calculating 4005 a local
설명 131. 본 발명의 실시 예는 설명 130에 따른 물건을 포함하고, 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계는,Description 131. An embodiment of the present invention includes the object according to
주 복제본(2315)에 실제 빈 페이지들의 수(2805)를 문의하는 단계;querying the
주 복제본(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
설명 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
설명 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
설명 134. 본 발명의 실시 예는 설명 130에 따른 물건을 포함하고, 주 복제본(2315)에 대한 이전 로컬 가비지 컬렉션 정보(3105), 주 복제본(2315)상의 로컬 가비지 컬렉션(3110)에 대한 최악의 경우 추정, 주 복제본(2315)상의 로컬 가비지 컬렉션(3115)에 대한 평균적인 경우 추정 중 적어도 하나를 이용하여 로컬 가비지 컬렉션 시간(2820)을 계산하는 단계(4110, 4115)를 더 포함한다.Description 134. An embodiment of the present invention comprises the object according to
설명 135. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고, 로컬 예상 가비지 컬렉션 시간(2905)을 계산하는 단계(4010)는,
주 복제본(2315)이 곧 가비지 컬렉션을 시작할 것으로 예상되는지 결정하는 단계; 및determining whether the
주 복제본이 곧 가비지 컬렉션을 수행하려는 경우에만 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)를 포함한다.and calculating 4010 an expected
설명 136. 본 발명의 실시 예는 설명 135에 따른 물건을 포함하고, 로컬 예상 가비지 컬렉션 시간(2820)을 계산하는 단계(4010)는,Description 136. An embodiment of the present invention comprises the object according to
주 복제본(2315)에 실제 빈 페이지들의 수(2820)를 문의하는 단계(4120);querying 4120 the number of actual
주 복제본(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
설명 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
설명 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
설명 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
설명 140. 본 발명의 실시 예는 설명 127에 따른 물건을 포함하고, I/O 요청(905)을 완료하기 위해 로컬 추정 소요 시간(3305)을 계산하는 단계(3920)는 큐 처리 시간(3015)을 계산하는 단계(4015)를 더 포함한다.
설명 141. 본 발명의 실시 예는 설명 140에 따른 물건을 포함하고, 큐 처리 시간(3015)을 계산하는 단계(4015)는,Description 141. An embodiment of the present invention includes the object according to
주 복제본(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
설명 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
하나의 I/O 요청(905)을 처리하기 위한 소요 시간(3010)을 결정하는 단계(4210);determining 4210 a time required to process one I/
큐 처리 시간(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
설명 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
설명 145. 본 발명의 실시 예는 설명 144에 따른 물건을 포함하고, 로컬 가비지 컬렉션 가중치(2635) 및 예상 가비지 컬렉션 가중치(2640)를 생성하는 단계(4025)는 큐 처리 가중치(2645)를 생성하는 단계(4025)를 포함한다.
설명 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
설명 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
설명 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)를 포함한다.
설명 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
적어도 하나의 보조 복제본(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
설명 150. 본 발명의 실시 예는 설명 149에 따른 물건을 포함하고, 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)는, 통신 시간(3410)에 통신 시간 가중치(2735)를 곱한 값, 원격 프로세서 시간(3515)에 원격 프로세서 시간 가중치(2745)를 곱한 값, 및 원격 가비지 컬렉션 시간(3705)에 원격 가비지 컬렉션 시간 가중치(2745)를 곱한 값의 합으로서 적어도 하나의 원격 추정 소요 시간(3710)을 계산하는 단계(4530)을 포함한다.
설명 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
설명 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
설명 153. 본 발명의 실시 예는 설명 149에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 프로세서 시간(3515)을 계산하는 단계(4510)는,Description 153. An embodiment of the invention comprises the object according to statement 149, wherein calculating 4510
적어도 하나의 보조 복제본(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
설명 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)를 포함한다.
설명 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
설명 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
설명 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
설명 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
설명 160. 본 발명의 실시 예는 설명 157에 따른 물건을 포함하고, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4515)는, 적어도 하나의 보조 복제본(2320, 2325)에 대한 이전 원격 가비지 컬렉션 정보(3165), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션(317)에 대한 최악의 경우 추정(3170), 적어도 하나의 보조 복제본(2320, 2325) 상의 원격 가비지 컬렉션에 대한 평균적인 경우 추정(3175) 중 적어도 하나를 사용하여, 적어도 하나의 보조 복제본(2320, 2325)에 대한 원격 가비지 컬렉션 시간(3705)을 계산하는 단계(4110, 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
설명 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
설명 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
설명 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)를 포함한다.
결론적으로, 본 명세서에 설명된 실시 예들에 대한 다양한 변형들의 관점에서, 이 상세한 설명 및 첨부된 자료는 단지 예시를 보여주는 것으로만 의도되고, 본 발명의 권리범위를 제한하는 것으로 간주되어서는 안된다. 그러므로, 본 발명으로서 청구되는 것은 이하의 청구 범위들 및 그것들의 균등물들의 범위 및 사상 내에 있을 수 있는 모든 변형들이다.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 .
상기 재배치기는 가비지 컬렉션을 수행하는 상기 적어도 하나의 저장 장치의 적어도 일부에 기반하여 상기 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.
상기 재배치기는:
임계 시간을 저장하는 제 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.
상기 분석기는:
사용 가능한 상태의 페이지들의 수에 대하여 상기 주 복제본에 문의(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
상기 로컬 시간 계산기는 소거 블록에서 유효한 페이지들을 프로그래밍하는 것과 관련된 지연을 상기 로컬 가비지 컬렉션 시간에 더하도록 동작하는 분산 저장 시스템 노드.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.
상기 재배치기는 상기 로컬 추정 소요 시간을 초과하는 상기 적어도 하나의 원격 추정 소요 시간의 적어도 일부에 기반하여 상기 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.
상기 재배치기는 상기 적어도 하나의 원격 추정 소요 시간을 초과하는 상기 로컬 추정 소요 시간의 적어도 일부에 기반하여, 상기 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 요청을 완료하기 위한 로컬 추정 소요 시간을 계산하는 단계는:
로컬 가비지 컬렉션 시간을 계산하는 단계;
로컬 예상 가비지 컬렉션 시간을 계산하는 단계;
상기 로컬 가비지 컬렉션 시간, 상기 로컬 예상 가비지 컬렉션 시간, 로컬 가비지 컬렉션 가중치, 또는 예상 가비지 컬렉션 가중치 중 적어도 일부에 기반하여 상기 로컬 추정 소요 시간을 계산하는 단계를 포함하는 방법.
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.
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)
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 |
-
2017
- 2017-08-16 KR KR1020170103708A patent/KR102419165B1/en active IP Right Grant
Non-Patent Citations (3)
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 |