KR101936503B1 - Data storing method - Google Patents

Data storing method Download PDF

Info

Publication number
KR101936503B1
KR101936503B1 KR1020170061822A KR20170061822A KR101936503B1 KR 101936503 B1 KR101936503 B1 KR 101936503B1 KR 1020170061822 A KR1020170061822 A KR 1020170061822A KR 20170061822 A KR20170061822 A KR 20170061822A KR 101936503 B1 KR101936503 B1 KR 101936503B1
Authority
KR
South Korea
Prior art keywords
data
queue
providing
metadata
dirty
Prior art date
Application number
KR1020170061822A
Other languages
Korean (ko)
Other versions
KR20180088244A (en
Inventor
정형수
이상엽
장형원
김종빈
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Publication of KR20180088244A publication Critical patent/KR20180088244A/en
Application granted granted Critical
Publication of KR101936503B1 publication Critical patent/KR101936503B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead

Abstract

본 실시예에 의한 데이터 저장 방법은 (a) 응용(application)으로부터 쓰기 요청된 데이터를 고속 버퍼에 저장하고 데이터에 대한 메타데이터를 더티 큐(dirty queue)에 제공하는 라이트 단계과, (b) 더티 큐로부터 메타데이터를 입수하여 데이터를 데이터 저장자(data storing member)에 제공하고, 데이터에 대한 메타데이터를 클린 큐(clean queue)에 제공하는 플러시(flush) 단계과, (c) 클린 큐로부터 메타데이터를 제공받아 프리 큐(free queue)에 제공하는 리클레임(reclaim) 단계를 포함한다.The data storing method according to the present embodiment includes (a) a write step of storing data requested to be written from an application in a high-speed buffer and providing metadata about the data to a dirty queue, (b) A flush step of obtaining metadata from a clean queue, providing data to a data storing member, and providing metadata about the data to a clean queue, and (c) And provides a free queue with a reclaim step.

Description

데이터 저장 방법{DATA STORING METHOD}{DATA STORING METHOD}

본 기술은 데이터 저장 방법에 관한 것이다. The present technique relates to a data storage method.

SSD(Solid-State Drive)와 같은 최신 저장 장치가 I/O 대기 시간을 최소화하기 위해 노력하고 있으나, 메모리와 저장 장치 사이의 대기 시간 차이는 극복 할 수 없는 장벽으로 남아 있으며, 이에 의한 컴퓨터 시스템의 성능 제한의 주요 원인으로 기능한다. Modern storage devices such as solid-state drives (SSDs) are trying to minimize I / O latency, but the latency difference between memory and storage remains an inevitable barrier, It serves as a major cause of performance limitations.

현재의 고성능 시스템은 전례 없는 수의 I/O를 동시에 실행할 수 있는 수십 또는 수백 개의 코어(core)를 가지고 있으며, 저장 장치는 매초마다 최대 기가 바이트 단위의 데이터 입출력(I/O)을 수행 한다. Today's high-performance systems have tens or hundreds of cores that can run an unprecedented number of I / Os simultaneously, and storage devices perform up to gigabytes of data input / output (I / O) every second.

한국 공개특허 10-2015-0010574Korean Patent Publication No. 10-2015-0010574 한국 공개 특허 10-2014-0063279Korean Patent Publication No. 10-2014-0063279 미국 공개 특허 2011-0078214US Published Patent 2011-0078214

현재 개발된 비휘발성 메모리 기반 스토리지 시스템은 동시에 여러 파일에 대한 쓰기 작업을 진행할 때, 비휘발성 메모리 자원 접근을 관리하는 시스템의 비효율로 인해 응용들의 파일 쓰기 성능이 더욱 저하된다. 일 예로, 전역 잠금(global locking)을 사용하는 것과 같은 간단한 거친(coarse) 동기화 방식은 다수의 고성능 저장 장치(예컨대, NVMe SSD)를 갖춘 멀티 코어 시스템에서 새로운 성능 병목 현상의 원인이 된다. 이러한 성능 저하는 다중 CPU와 다중 저장장치를 탑재한 서버 시스템에서 더욱 심각하게 발생한다. Currently developed nonvolatile memory based storage systems have a lower file writing performance of applications due to the inefficiency of the system managing nonvolatile memory resource access when writing data to several files at the same time. As an example, a simple coarse synchronization scheme, such as using global locking, causes a new performance bottleneck in multicore systems with multiple high performance storage devices (e.g., NVMe SSDs). This degradation occurs more severely in server systems with multiple CPUs and multiple storage devices.

이러한 종래 기술의 문제를 해소하는 것이 본 실시예의 주된 목적 중 하나이다.It is one of the main objects of the present embodiment to solve the problems of the prior art.

본 실시예에 의한 데이터 저장 방법은 (a) 응용(application)으로부터 쓰기 요청된 데이터를 고속 버퍼에 저장하고 데이터에 대한 메타데이터를 더티 큐(dirty queue)에 제공하는 라이트 단계과, (b) 더티 큐로부터 메타데이터를 입수하여 데이터를 데이터 저장자(data storing member)에 제공하고, 데이터에 대한 메타데이터를 클린 큐(clean queue)에 제공하는 플러시(flush) 단계과, (c) 클린 큐로부터 메타데이터를 제공받아 프리 큐(free queue)에 제공하는 리클레임(reclaim) 단계를 포함한다.The data storing method according to the present embodiment includes (a) a write step of storing data requested to be written from an application in a high-speed buffer and providing metadata about the data to a dirty queue, (b) A flush step of obtaining metadata from a clean queue, providing data to a data storing member, and providing metadata about the data to a clean queue, and (c) And provides a free queue with a reclaim step.

본 실싱예에 의하면 응용으로부터 제공된 데이터를 의사 병렬 프로세스로 큐에 제공하여 저장하므로 종래 기술과 같이 데이터 저장 과정에서 발생하는 병목 현상이 발생하지 않는다는 장점이 제공된다.According to the present invention, since the data provided from the application is provided to the queue by the pseudo parallel process and stored, the bottleneck phenomenon occurring in the data storage process does not occur as in the prior art.

도 1은 본 실시예에 의한 데이터 저장 방법을 개요적으로 설명하는 순서도이다.
도 2는 본 실시예에 데이터 저장 방법을 수행하는 데이터 기록 모듈 및 그 주변의 개요를 블록으로 도시한 블록도이다.
도 3은 본 실시예에 의한 데이터 저장 방법 중 라이트 단계를 설명하기 위한 개요도이다.
도 4는 본 실시예에 의한 데이터 저장 방법 중 플러시 단계를 설명하기 위한 개요도이다.
도 5는 본 실시예에 의한 데이터 저장 방법 중 리클레임 단계를 설명하기 위한 개요도이다.
도 6은 본 실시에에 의한 데이터 저장 방법이 파이프라인(pipeline) 형식으로 구동되는 것을 개요적으로 도시하는 도면이다.
도 7은 본 실시예에 의한 데이터 저장 방법과 종래 기술과의 YCSB 벤치 마크결과를 비교 도시한 도면이다.
도 8은 본 실시예에 의한 데이터 저장 방법과 종래 기술과의 마이크로벤치마크 결과를 비교 도시한 도면이다.
FIG. 1 is a flowchart for explaining an overview of a data storing method according to the present embodiment.
FIG. 2 is a block diagram showing an outline of a data recording module and a periphery thereof for performing a data storing method in this embodiment.
3 is a schematic diagram for explaining a write step of the data storing method according to the present embodiment.
4 is a schematic diagram for explaining the flushing step of the data storing method according to the present embodiment.
5 is a schematic diagram for explaining a reclaiming step of the data storing method according to the present embodiment.
6 is a view schematically showing that the data storing method according to the present embodiment is driven in a pipeline format.
7 is a diagram showing a comparison between the data storage method according to the present embodiment and the YCSB benchmark results of the related art.
FIG. 8 is a diagram showing a comparison between the microbench mark results of the data storing method and the conventional technique according to the present embodiment.

이하에서는 첨부된 도면들을 참조하여 본 실시예에 의한 데이터 저장 방법을 설명한다. 도 1은 본 실시예에 의한 데이터 저장 방법을 개요적으로 설명하는 순서도이다. 도 1을 참조하면, 본 실시예에 의한 데이터 저장 방법은 (a) 응용(application)으로부터 쓰기 요청된 데이터를 고속 버퍼에 저장하고 데이터에 대한 메타데이터를 더티 큐(dirty queue)에 제공하는 라이트(write) 단계(S100)와, (b) 더티 큐로부터 메타데이터를 입수하여 데이터를 데이터 저장자(data storing member)에 제공하고, 데이터에 대한 메타데이터를 클린 큐(clean queue)에 제공하는 플러시(flush) 단계(S200)와, (c) 클린 큐로부터 메타데이터를 제공받아 프리 큐(free queue)에 제공하는 리클레임(reclaim) 단계(S300)를 포함한다.Hereinafter, a data storage method according to the present embodiment will be described with reference to the accompanying drawings. FIG. 1 is a flowchart for explaining an overview of a data storing method according to the present embodiment. Referring to FIG. 1, a data storage method according to an embodiment of the present invention includes: (a) a write operation for storing data requested to be written from an application in a high-speed buffer and providing metadata for data to a dirty queue (b) providing a data store member with metadata from the dirty queue and providing metadata for the data to a clean queue; (c) providing a meta data from the clean queue and providing the meta data to a free queue (step S300).

도 2는 본 실시예에 의한 데이터 저장 방법을 수행하는 데이터 기록 모듈(10) 및 그 주변의 개요를 블록으로 도시한 블록도이다. 도 2에서 예시 및 설명을 위하여 라이터(writer, 100), 플러셔(flusher, 200), 리클레이머(reclaimer, 300) 및 더티 큐(dirty queue, 150), 클린 큐(clean queue, 250) 및 프리 큐(free queue, 350) 등의 요소를 물리적 구성처럼 도시되었으나, 라이터(writer, 100), 플러셔(flusher, 200) 및 리클레이머(freeer, 300)는 운영 체제 커널(K) 레벨에서 동작하는 스레드(thread)일 수 있으며, 더티 큐(150), 클린 큐(250) 및 프리 큐(350)는 운영 체제 커널(K) 레벨에서 동작하는 자료 구조일 수 있다. 또한, 파일 시스템(FS), 디바이스 드라이버(DD)등은 운영 체제 커널(K) 레벨에서 동작하는 스레드일 수 있다. FIG. 2 is a block diagram showing an outline of a data recording module 10 for performing a data storing method according to the present embodiment and a periphery thereof. A writer 100, a flusher 200, a reclaimer 300, and a dirty queue 150, a clean queue 250, and a dummy queue 150 for illustrative and illustrative purposes in FIG. A writer 100, a flusher 200 and a freezer 300 are shown at the operating system kernel (K) level, although the elements such as a free queue 350 are shown as physical configurations. And the dirty queue 150, the clean queue 250 and the free queue 350 may be data structures operating at the operating system kernel (K) level. Also, the file system (FS), the device driver (DD), etc. may be threads operating at the operating system kernel (K) level.

도 2를 참조하면, 본 실시예에 의한 데이터 저장은 라이트 단계(S100), 플러시 단계(S200) 및 리클레임 단계(S300)의 세 단계를 거친다. 라이트 단계(S100)에서, 응용들(app1, app2, ..., app4)은 시스템 호출로 트리거 된 라이터(100)를 호출하고, 사용자 데이터를 제공한다. 라이터(100)는 제공된 사용자 데이터들을 고속 버퍼(400)에 기록한다. Referring to FIG. 2, the data storage according to the present embodiment includes three steps: a write step S100, a flushing step S200, and a reclaiming step S300. In the write step SlOO, the applications app1, app2, ..., app4 call the writer 100 triggered by the system call and provide user data. Writer 100 writes the provided user data to the high-speed buffer 400. [

플러시 단계(S200)에서 플러셔(200)는 고속 버퍼(400)의 데이터를 데이터 저장자(data storing member)로 플러시한다. 리클레이머(300)는 리클레임 단계(S300)에서, 블록을 쓰기 요청에 대해 사용 가능하도록 플러시된 데이터 블록을 회수한다. 본 실시예에서, 데이터 블록의 상태를 구별하기 위해 더티(dirty), 프리(free) 및 클린(clean)의 세 가지 상태를 사용하며 이들 각각은 비고정 큐(latch free queue)인 더티 큐(150), 클린 큐(150) 및 프리 큐(350)에 의하여 관리된다.In the flushing step (S200), the flusher (200) flushes the data of the high-speed buffer (400) to a data storing member. The reclaimer 300 reclaims a block of data flushed to be usable for a write request, in a reclaim step S300. In this embodiment, three states of dirty, free and clean are used to distinguish the states of the data blocks, each of which is a latch free queue, a dirty queue 150 ), A clean queue 150, and a free queue 350, as shown in FIG.

이하에서는 도 3 내지 도 5를 참조하여 본 실시예에 의한 데이터 저장 방법의 각 단계를 설명한다. 도 3은 본 실시예에 의한 데이터 저장 방법 중 라이트 단계(S100)를 설명하기 위한 개요도이다. 도 3을 참조하면, 라이터(100)는 응용들(app1, app2)이 제공한 데이터(D1, D2)를 고속 버퍼(400)에 저장하고, 데이터(D1, D2)에 대한 메타데이터(M1, M2)를 더티 큐(150)에 제공한다. Hereinafter, each step of the data storing method according to the present embodiment will be described with reference to FIGS. 3 to 5. FIG. FIG. 3 is a schematic diagram for explaining a write step (S100) in the data storing method according to the present embodiment. 3, the writer 100 stores the data D1 and D2 provided by the applications app1 and app2 in the high-speed buffer 400 and the metadata M1 and D2 for the data D1 and D2, M2 to the dirty queue 150.

일 실시예에서, 라이터(100)가 메타데이터(M1, M2)를 더티 큐(150)에 제공하는 과정은 의사 병렬 프로세스로(pseudo parallel process) 수행될 수 있다. 일 실시예로, 의사 병렬 프로세스는 원자성 연산(atomic operation)에 의하여 수행된다. In one embodiment, the process by which the writer 100 provides the metadata M1, M2 to the dirty queue 150 may be performed in a pseudo parallel process. In one embodiment, the pseudo-parallel process is performed by an atomic operation.

일 예로, 운영 체제 레벨에서 수행되는 연산들이 수행되어 완료까지는 수백 내지 수천의 CPU 클록 단위(clock unit)가 필요하다. 이에 반하여 원자성 연산은 그 수행의 시작에서 완료까지 수 내지 수십 CPU 클록 단위를 필요로 하는 점을 고려하면, 원자성 연산으로 수행되는 연산은 비록 실제로는 시간의 차이가 있으나 운영 체제 레벨에서는 동시간에 병렬로 수행되는 것으로 보인다.As an example, operations performed at the operating system level are performed and require hundreds to thousands of CPU clock units to complete. On the other hand, considering that the atomic operation requires several to several tens of CPU clock units from the start to the completion of the operation, the operation performed by the atomic operation is the same at the operating system level As shown in Fig.

본 실시예에서, 어느 하나의 응용(app 1)이 저장을 요청한 데이터의 메타데이터(M1)와 다른 하나의 응용(app 2)이 저장을 요청한 데이터의 메타데이터(M2)에 대하여 의사 병렬적으로 더티 큐(150)에 제공된다. 메타데이터들(M1, M2)을 더티 큐(150)에 제공하는 라이트 단계(S100)는 원자성 연산에 의하여 과정의 선후가 판별되고, 원자성 연산에 의하여 큐에 제공되므로 운영 체제 레벨에서는 병렬적으로 동시에 수행되는 것과 같이 파악된다. 따라서, 본 실시예에 의한 더티 큐(150)는 큐를 고정(lock)할 필요가 없어 큐를 고정하지 않는 비차단 큐(latch free queue)로 구현할 수 있다. In this embodiment, the metadata M1 of the data requested by one application app 1 and the metadata M2 of another application app 2 requested to be stored are pseudo-parallel Dirty queue 150 as shown in FIG. In the write step S100 of providing the meta data M1 and M2 to the dirty queue 150, the sequence of the process is determined by the atomic operation and is provided to the queue by the atomic operation, As shown in FIG. Therefore, the dirty queue 150 according to the present embodiment can be implemented as a latch free queue that does not need to lock the queue and does not fix the queue.

종래 기술에는 응용이 제공한 데이터가 저장 장치에 저장될 때까지 큐를 고정하는 래치 큐(latch queue)를 사용하였다. 즉, 응용이 제공한 데이터가 저장 장치에 저장 완료된 후 비로소 큐가 비고정되어 데이터를 제공받았다. 따라서 데이터 저장이 순차적으로 이루어졌으며, 저장 과정에서 장시간이 소모되어 데이터 저장에 병목 현상이 발생하였다. In the prior art, a latch queue is used to hold the queue until the data provided by the application is stored in the storage device. That is, after the data provided by the application is stored in the storage device, the queue is unfixed and the data is received. Therefore, data storage was performed sequentially, and a long time was consumed in the storage process, resulting in a bottleneck in data storage.

그러나, 본 실시예에 의하면 큐를 고정하지 않고, 원자성 연산을 이용한 의사 병렬 과정을 통하여 데이터를 큐에 제공하므로, 종래 기술에 의한 데이터 저장과정에서 발생하는 병목 현상을 감소시킬 수 있다. However, according to the present embodiment, since the queue is not fixed and the data is provided to the queue through the pseudo parallel process using the atomic operation, the bottleneck occurring in the data storage process according to the prior art can be reduced.

도 3으로 예시된 것과 같이 라이터(100)는 복수개가 동작할 수 있다. 단일한 라이터(100)로 복수의 응용(application)들이 복수의 데이터 들에 대하여 저장 요청을 제공하면, 데이터 라이트 단계에서 병목 현상이 발생할 수 있다. 따라서, 복수의 라이터(100)들을 실행하여 라이트 단계(S100)에서의 속도를 높일 수 있다. A plurality of lighters 100 may be operated as illustrated in FIG. If a plurality of applications provide a storage request for a plurality of data with a single writer 100, a bottleneck may occur in a data write step. Therefore, the plurality of writers 100 can be executed to increase the speed in the write step S100.

도 4는 본 실시예에 의한 데이터 저장 방법 중 플러시 단계(S200)를 설명하기 위한 개요도이다. 도 4를 참조하면, 플러셔(flusher, 200)는 더티 큐(150)로부터 메타데이터(M1, M2)를 제공받고 메타데이터에 상응하는 데이터(D1, D2)를 데이터 저장자(data storing member)에 제공하여 플러시 단계(S200)를 수행한다. 또한, 플러시 단계(200)에서, 플러셔(200)는 플러시된 데이터 D1, D2에 상응하는 메타데이터(M1, M2)를 클린 큐(250)에 제공한다. FIG. 4 is a schematic diagram for explaining the flushing step (S200) of the data storing method according to the present embodiment. 4, a flusher 200 receives metadata M1 and M2 from a dirty queue 150 and stores data D1 and D2 corresponding to the metadata in a data storing member. And performs the flushing step S200. Also, in the flushing step 200, the flusher 200 provides the clean queue 250 with metadata (M1, M2) corresponding to the flushed data D1, D2.

일 실시예에서, 플러셔(200)는 더티 큐(150)으로부터 제공된 메타데이터 수가 일정한 임계값에 도달할 때까지 대기할 수 있으며, 임계값에 도달하면 일괄적으로 데이터를 데이터 저장자(data storing member)에 플러시할 수 있다. 상기한 일괄적 플러시를 수행하여 플러셔(S200)의 오버헤드(overhead)를 감소시킬 수 있다. In one embodiment, the flusher 200 may wait until the number of meta-data provided from the dirty queue 150 reaches a certain threshold, and when the threshold is reached, collectively storing the data in a data store member. The overhead of the flusher (S200) can be reduced by performing the batch flush described above.

일 실시예에서, 플러셔의 오버헤드(overhead)를 감소시키기 위하여 연속적 쓰기의 경우에, 라이터(100)는 순차적 데이터들에 대한 메타데이터들을 순차적으로 더티 큐(150)에 제공하며, 플러셔는 더티 큐(150)로부터 제공된 메타데이터들에 대한 순차 데이터들을 일괄적으로 데이터 저장자(data storing member)에 제공하여 플러시할 수 있다.In one embodiment, in the case of a continuous write to reduce the overhead of the flusher, the writer 100 sequentially provides the metadata for the sequential data to the dirty queue 150, The sequential data on the metadata provided from the dirty queue 150 may be collectively provided to a data storage member and flushed.

일 실시예로, 데이터 저장자(data storing member)는 운영 체제에서 데이터 입출력을 담당하는 파일 시스템(File System, FS)과, 하드 디스크 드라이브(HDD, Hard Disk Drive) 또는 반도체 드라이브(SSD, Solid State Drive)등의 대규모 저장 장치 등의 주 저장 장치 및 물리적 저장 장치인 저장 장치(Storage Device)와 운영 체제와 연동하는 장치 드라이버(DD)를 포함할 수 있다. In one embodiment, a data storage member includes a file system (FS) for inputting and outputting data in an operating system, a hard disk drive (HDD) or a solid state drive (SSD) A storage device such as a mass storage device such as a hard disk drive and a storage device such as a physical storage device and a device driver DD associated with an operating system.

플러셔(200)는 라이터(100) 및 후술할 리클레이머(300)에 비하여 오버헤드(overhead)가 클 수 있으며, 그에 의하여 플러시 과정(S200)에서 병목현상이 발생할 수 있다. 플러셔(200)의 오버헤드를 감소시키고, 플러시 과정(S200)에서 발생할 수 있는 병목현상을 감소시키기 위하여 도 4에 도시된 바와 같이 복수의 플러셔(200)를 둘 수 있다. The flusher 200 may have an overhead larger than the lighter 100 and the reclaimer 300 to be described later so that a bottleneck may occur in the flushing process S200. A plurality of flushers 200 may be placed as shown in FIG. 4 to reduce the overhead of the flusher 200 and to reduce the bottleneck that may occur in the flushing process S200.

도 5는 본 실시예에 의한 데이터 저장 방법 중 리클레임 단계(S300)를 설명하기 위한 개요도이다. 도 5를 참조하면, 리클레이머(300)는 클린 큐(250)로부터 저장 장치(storage device)에 쓰기 완료된 데이터 블록에 대한 메타데이터(M1, M2)를 제공받고 프리 큐(350)에 제공한다. 메타데이터 M1, M2는 리클레이머(300)에 의하여 회수되어 프리 큐(350)에 제공된다. 프리 큐(350)에 제공된 메타데이터(M1, M2)는 라이터(100)로 제공된다.FIG. 5 is a schematic diagram for explaining a reclaiming step (S300) in the data storing method according to the present embodiment. Referring to FIG. 5, the reclaimer 300 receives metadata M1 and M2 for a data block written to the storage device from the clean queue 250 and provides the meta data M1 and M2 to the free queue 350 . The meta data M1 and M2 are retrieved by the reclaimer 300 and provided to the free queue 350. [ The metadata M1 and M2 provided to the free queue 350 are provided to the writer 100. [

도 6은 본 실시에에 의한 데이터 저장 방법이 파이프라인(pipeline) 형식으로 구동되는 것을 개요적으로 도시하는 도면이다. 도 6에서 횡축은 동시에 수행되는 단계를 도시하고, 종축은 시간의 흐름을 나타낸다. 도 6에서 도시된 바와 같이, 어느 하나의 단계가 수행되는 동안 다른 두 단계들이 구동되어 파이프라인 형식으로 구동될 수 있다. 일 예로, 라이터(100)에 의하여 라이트 단계(S100)가 수행되는 동안 플러셔(200)에 의하여 플러시 단계(S200)이 수행되고, 리클레이머(S300)에 의하여 리클레임 단계(S300)가 수행될 수 있다. 도 6으로 도시된 바와 같이 데이터 저장 방법이 파이프라인 형식으로 수행되어 데이터 병목 현상을 최소화할 수 있다. 6 is a view schematically showing that the data storing method according to the present embodiment is driven in a pipeline format. In Fig. 6, the abscissa indicates the step performed simultaneously, and the ordinate indicates the flow of time. As shown in FIG. 6, while one of the two steps is being performed, the other two steps may be driven and driven in a pipeline manner. For example, the flushing step S200 is performed by the flusher 200 while the write step S100 is performed by the writer 100, and the reclaiming step S300 is performed by the reclaimer S300 . As shown in FIG. 6, the data storage method may be performed in a pipelined manner to minimize data bottlenecks.

실험 결과Experiment result

본 실시예에 의한 데이터 기록 모듈(10)을 리눅스(Linux) 커널 4.8.7에서 구현하였다. 고속 버퍼(400)를 NVDRAM으로 구현하였으며, 그 저장 용량을 16KB 블록 단위의 4 GB로 구성하였다. 고속 버퍼인 NVDRAM은 DRAM의 연속적인 물리적 메모리 공간으로 에뮬레이션된다. 18 코어 Intel Xeon E5-2699 v3, 488GiB DRAM 용량의 2 소켓과 최대 I/O 속도가 각각 3.5GB/s 인 2 개의 Samsung NVMe SSD 장치로 실험을 진행하였다.The data recording module 10 according to the present embodiment has been implemented in the Linux kernel 4.8.7. The high-speed buffer 400 is implemented as NVDRAM, and its storage capacity is constituted by 4 GB of 16 KB blocks. The high-speed buffer, NVDRAM, is emulated as the continuous physical memory space of the DRAM. We tested two Samsung NVMe SSD devices with two sockets of 18-core Intel Xeon E5-2699 v3 and 488GiB DRAMs and 3.5GB / s of maximum I / O speeds.

데이터베이스 샤딩(database sharding)이라는 여러 데이터베이스 서버 인스턴스에 대해 로드 밸런싱, 스케일러빌리티, 고성능 및 고가용성을 이유로 분할된 데이터를 배포하는 구성이 널리 사용된다. 본 실험에서 키-값 작업 부하 평가에서 다수의 프로세스들이 자신의 데이터베이스 인스턴스를 개별적으로 실행하도록 하여 데이터베이스 샤딩을 모방하였다. A widely deployed configuration for multiple database server instances, called database sharding, distributes partitioned data for reasons of load balancing, scalability, high performance, and high availability. In this experiment, in a key-value workload evaluation, a number of processes imitated database sharding by having their database instances run separately.

YCSB 벤치 마크는 각각 50 %의 put/set 쿼리를 포함한 트랜잭션을 사용하여 실행되었다. 워크로드는 WiredTiger, RocksDB 및 Redis의 세 가지 키-값 DBMS 엔진에 배치되었다. 본 실험에서는 기존의 EXT-4 기반한 NVMe SSD으로의 로깅(logging)과 본 실시예에 기반한 로깅을 비교하였으며, 비교 결과는 도 7과 같다. 도 7은 각 DBMS 엔진의 초당 트랜잭션의 수를 도시한다. 도 7에서, AutoBahn으로 도시된 본 실시예에 의한 로깅은 순수하게 메모리에 기록하는 것과 유사한 tmpfs 결과와 근접한 결과를 도시하며, 종래의 로깅 특성(백색)에 비하여 우수한 처리량(throughput) 특성을 보여주는 것을 확인할 수 있다.The YCSB benchmark was run using transactions each containing 50% put / set queries. Workloads were deployed in three key-value DBMS engines: WiredTiger, RocksDB, and Redis. In this experiment, the logging to the NVMe SSD based on the existing EXT-4 is compared with the logging based on this embodiment, and the comparison result is as shown in FIG. Figure 7 shows the number of transactions per second for each DBMS engine. In FIG. 7, the logging according to this embodiment, shown as AutoBahn, shows a result similar to the tmpfs result similar to purely writing to memory, showing good throughput characteristics over the conventional logging characteristics (white) Can be confirmed.

마이크로벤치마크(microbenchmark)에서는 16KB 블록을 자체 파일에 반복적으로 쓰는 다중 스레드를 실행하였다. 본 실시예 기반 시스템과 종래의 바닐라 커널 기반 I/O 작업에 대하여 추가(append), 무작위(random) 및 비뚤어짐(skewed)의 서로 다른 세 가지 쓰기 작업을 별도로 실행하여 비교하였다. 버퍼 캐시가 커질수록 버퍼된 비동기식 파일 I/O에 유리하므로 16GB 용량의 DRAM에서 바닐라를 구동하여 비내구성 테스트을 수행하였다. In the microbenchmark, I have run multiple threads that repeatedly write 16KB blocks to their own files. Three different writing tasks, append, random, and skewed, were performed separately for the I / O operations based on the present embodiment and the conventional vanilla kernel. As the buffer cache grows, buffered asynchronous file I / O is favored, so non-durability tests are performed by driving vanilla in a 16GB DRAM.

실험 환경에서 집계된 최대 I/O 대역폭은 대략 7GB/s이며 본 실시예의 추가(append) 작업 부하는 2 개의 스레드에서 시작하여 대역폭 내에서 제한된 것을 보여준다. 더 많은 쓰레드가 각 파일에 씀에 따라 평균 I/O 처리량도 증가하나, 대부분의 경우 본 실시예 더 우월한 성능을 발휘하는 것을 도 8에서 확인할 수 있다. The maximum I / O bandwidth aggregated in the experimental environment is approximately 7 GB / s and the appended workload of this embodiment is limited within the bandwidth starting from two threads. The average I / O throughput increases as more threads are written to each file, but in most cases it is seen in FIG. 8 that the performance of this embodiment is superior.

상기한 실험들을 통하여 본 실시예에 의한 데이터 저장 방법이 동기식 쓰기 I/O 성능을 제공하며 고성능 저장 매체의 최대 대역폭을 활용할 수 있다는 장점을 제공하는 것을 확인할 수 있다.Through the experiments described above, it can be seen that the data storage method according to the present embodiment provides the synchronous write I / O performance and can utilize the maximum bandwidth of the high performance storage medium.

본 발명에 대한 이해를 돕기 위하여 도면에 도시된 실시 예를 참고로 설명되었으나, 이는 실시를 위한 실시예로, 예시적인 것에 불과하며, 당해 분야에서 통상적 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위에 의해 정해져야 할 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is clearly understood that the same is by way of illustration and example only and is not to be taken by way of illustration, It will be appreciated that other embodiments are possible. Accordingly, the true scope of the present invention should be determined by the appended claims.

10: 데이터 기록 모듈 100: 라이터
150: 더티 큐 200: 플러셔
250: 클린 큐 300: 리클레이머
350: 프리 큐 FS: 파일 시스템
DD: 장치 드라이버 K: 운영 체제 커널
data storing member:데이터 기록자
10: data recording module 100: writer
150: Dirty queue 200: Flusher
250: clean queue 300: reclaimer
350: Free queue FS: File system
DD: device driver K: operating system kernel
data storing member

Claims (11)

(a) 응용(application)으로부터 쓰기 요청된 데이터를 버퍼에 저장하고 상기 데이터에 대한 메타데이터를 더티 큐(dirty queue)에 제공하는 라이트(write) 단계와,
(b) 상기 더티 큐로부터 상기 메타데이터를 입수하여 상기 데이터를 데이터 저장자(data storing member)에 제공하고, 상기 데이터에 대한 메타데이터를 클린 큐(clean queue)에 제공하는 플러시(flush) 단계와,
(c) 상기 클린 큐로부터 상기 메타데이터를 제공받아 프리 큐(free queue)에 제공하는 리클레임(reclaim) 단계를 포함하는 데이터 저장 방법.
(a) a write step of storing data requested to be written from an application in a buffer and providing metadata about the data to a dirty queue;
(b) a flush step of obtaining the metadata from the dirty queue, providing the data to a data storing member, and providing metadata about the data to a clean queue; ,
(c) receiving the metadata from the clean queue and providing the meta data to a free queue.
제1항에 있어서,
상기 라이트 단계에서,
상기 응용으로부터 쓰기 요청된 데이터는 의사 병렬 프로세스(pseudo parallel process)로 상기 더티 큐에 제공되는 데이터 저장 방법.
The method according to claim 1,
In the writing step,
Wherein data requested to be written from the application is provided to the dirty queue in a pseudo parallel process.
제2항에 있어서,
상기 의사 병렬 프로세스는
원자성 연산(atomic operation)으로 상기 응용이 제공한 데이터의 선후 관계를 판별하여 상기 더티 큐에 제공하는 데이터 저장 방법.
3. The method of claim 2,
The pseudo-parallel process
A method for storing data in a dirty queue, the method comprising the steps of: determining, in an atomic operation, a relationship between data provided by the application and providing the data to the dirty queue.
제1항에 있어서,
상기 더티 큐는 비차단 큐(lock free queue)인 데이터 저장 방법.
The method according to claim 1,
Wherein the dirty queue is a lock free queue.
제1항에 있어서,
상기 플러시 단계에서, 상기 더티 큐에서 제공된 메타데이터의 개수가 임계값에 도달한 후 데이터 저장자(data storing member)에 제공하여 상기 플러시 단계를 수행하는 데이터 저장 방법.
The method according to claim 1,
Wherein in the flushing step, the number of metadata provided in the dirty queue reaches a threshold value and is provided to a data storing member to perform the flushing step.
제1항에 있어서,
상기 데이터 저장자는 파일 시스템(file system), 장치 드라이버(device driver) 및 주 저장 장치(main storage)를 포함하되,
상기 플러시 단계는,
(b1) 상기 버퍼에 저장된 상기 데이터를 상기 파일 시스템에 제공하는 단계와,
(b2), 상기 파일 시스템은 상기 데이터를 상기 장치 드라이버에 제공하는 단계 및
(b3) 상기 장치 드라이버는 상기 데이터를 상기 주 저장 장치에 저장하는 단계를 포함하는 데이터 저장 방법.
The method according to claim 1,
The data store includes a file system, a device driver, and a main storage,
Wherein the flushing comprises:
(b1) providing the file system with the data stored in the buffer;
(b2), the file system providing the data to the device driver, and
(b3) the device driver storing the data in the main storage device.
제1항에 있어서,
상기 데이터 저장 방법은 운영 체제(OS, Operating System)에 의하여 수행되는 데이터 저장 방법.
The method according to claim 1,
Wherein the data storage method is performed by an operating system (OS).
제1항에 있어서,
상기 라이트 단계와, 상기 플러시 단계 및 상기 리클레임 단계는 각각 백그라운드 스레드(back ground thread)에 의하여 수행되는 데이터 저장 방법.
The method according to claim 1,
Wherein the writing step, the flushing step and the reclaiming step are each performed by a back ground thread.
제1항에 있어서,
상기 데이터 저장방법은 상기 라이트 단계와, 상기 플러시 단계 및 상기 리클레임 단계가 파이프라인(pipeline)으로 처리되는 데이터 저장 방법.
The method according to claim 1,
Wherein the data storing method is performed in a pipeline in which the writing step, the flushing step and the reclaiming step are performed in a pipeline.
제1항에 있어서,
상기 버퍼는 비휘발성메모리인 데이터 저장 방법.
The method according to claim 1,
Wherein the buffer is a non-volatile memory.
제10항에 있어서,
상기 비휘발성 메모리는 NVDRAM(Non-Volatile Dynamic RAM)인 데이터 저장 방법.
11. The method of claim 10,
Wherein the non-volatile memory is non-volatile dynamic random access memory (NVDRAM).
KR1020170061822A 2017-01-26 2017-05-18 Data storing method KR101936503B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20170012725 2017-01-26
KR1020170012725 2017-01-26

Publications (2)

Publication Number Publication Date
KR20180088244A KR20180088244A (en) 2018-08-03
KR101936503B1 true KR101936503B1 (en) 2019-01-08

Family

ID=63250170

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170061822A KR101936503B1 (en) 2017-01-26 2017-05-18 Data storing method

Country Status (1)

Country Link
KR (1) KR101936503B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220153959A (en) * 2021-05-12 2022-11-21 삼성전자주식회사 Electronic device and method for managing file thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110131231A1 (en) 2009-11-30 2011-06-02 International Business Machines Corporation Method to efficiently locate meta-data structures on a flash-based storage device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110131231A1 (en) 2009-11-30 2011-06-02 International Business Machines Corporation Method to efficiently locate meta-data structures on a flash-based storage device

Also Published As

Publication number Publication date
KR20180088244A (en) 2018-08-03

Similar Documents

Publication Publication Date Title
Andrei et al. SAP HANA adoption of non-volatile memory
US10860496B2 (en) Method, apparatus and computer readable medium for building multi-tier flash cache by using spare flash drives and clean user data is flushed from main flash cache to one of the spare flash drives that only stores the clean user data, wherein the main flash cache is configured as one or more pairs of flash drives and the one of the spare flash drives is allocated as single drive to secondary flash cache
US20200249849A1 (en) Method and apparatus for managing storage system
US9449005B2 (en) Metadata storage system and management method for cluster file system
Fang et al. High performance database logging using storage class memory
Dong et al. Data elevator: Low-contention data movement in hierarchical storage system
US20180107601A1 (en) Cache architecture and algorithms for hybrid object storage devices
US20180300083A1 (en) Write-ahead logging through a plurality of logging buffers using nvm
US10740246B2 (en) Storage of an inverted index in non-volatile memory
US11204912B2 (en) Commit coalescing for micro-journal based transaction logging
US11449430B2 (en) Key-value store architecture for key-value devices
US10621202B2 (en) Method, apparatus and data structure for copying values of a table of a database
WO2016122710A1 (en) Byte addressable non-volatile random access memory for storing log record
CN114281762B (en) Log storage acceleration method, device, equipment and medium
Song et al. First responder: Persistent memory simultaneously as high performance buffer cache and storage
US10528436B2 (en) Micro-journal based transaction logging
KR101936503B1 (en) Data storing method
An et al. Avoiding read stalls on flash storage
US11442663B2 (en) Managing configuration data
US11055184B2 (en) In-place garbage collection of a sharded, replicated distributed state machine based on supersedable operations
Wei et al. Extending SSD lifetime with persistent in-memory metadata management
Chen et al. CloudJump: optimizing cloud databases for cloud storages
KR101341615B1 (en) Storage system and method using double writing based on flash memory
Iwata et al. ‘Improving performance in LSM-tree based key-value stores using NVMe
Huang et al. Indexing on Non-Volatile Memory: Techniques, Lessons Learned and Outlook

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