KR20170114991A - 비휘발성 메모리를 이용한 로깅 방법 - Google Patents

비휘발성 메모리를 이용한 로깅 방법 Download PDF

Info

Publication number
KR20170114991A
KR20170114991A KR1020170044417A KR20170044417A KR20170114991A KR 20170114991 A KR20170114991 A KR 20170114991A KR 1020170044417 A KR1020170044417 A KR 1020170044417A KR 20170044417 A KR20170044417 A KR 20170044417A KR 20170114991 A KR20170114991 A KR 20170114991A
Authority
KR
South Korea
Prior art keywords
logging
information
page
memory
volatile memory
Prior art date
Application number
KR1020170044417A
Other languages
English (en)
Other versions
KR101939361B1 (ko
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 KR20170114991A publication Critical patent/KR20170114991A/ko
Application granted granted Critical
Publication of KR101939361B1 publication Critical patent/KR101939361B1/ko

Links

Images

Classifications

    • G06F17/30368
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • G06F17/30144
    • G06F17/30218
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 일 실시예에 따른 비휘발성 메모리를 이용한 로깅 방법은 데이터베이스에 저장된 페이지를 휘발성 메모리로 불러오는 단계, 휘발성 메모리로 불러온 페이지의 일부 데이터가 변경된 더티 페이지(dirty page)의 발생 여부를 체크하는 단계, 더티 페이지의 변경된 부분에 대한 정보를 비휘발성 메모리에 로깅(logging)하는 단계 및 비휘발성 메모리에 로깅된 정보에 기초하여 데이터베이스에 저장된 페이지를 수정하는 단계를 포함한다.

Description

비휘발성 메모리를 이용한 로깅 방법{METHOD FOR LOGGING USING NON-VOLATILE MEMORY}
본 발명은 비휘발성 메모리를 이용한 로깅 방법에 관한 것으로서, 보다 자세하게는 더티 페이지(dirty page)의 변경된 부분에 대한 정보를 비휘발성 메모리에 로깅(logging)하여 데이터베이스를 관리하는 비휘발성 메모리를 이용한 로깅 방법에 관한 것이다.
기존에는 데이터베이스에 저장된 페이지에 대하여 읽기 및 쓰기 작업을 하는 경우 데이터베이스에 저장된 페이지를 휘발성 메모리에 저장하고 변경된 데이터를 휘발성 메모리에 저장된 페이지에 반영한 후 사용자의 쿼리가 끝나면 휘발성 메모리에 저장된 페이지를 데이터베이스에 보내는 방식으로 페이지의 읽기 및 쓰기 작업을 수행하였다.
그러나 휘발성 메모리와 데이터베이스 간의 데이터는 4Kbytes 단위로 데이터를 주고 받기 때문에 페이지의 변경 부분에 대한 정보만을 주고 받는 것이 아니라 페이지 전체의 데이터를 주고 받으므로 비효율적이다.
한편 비휘발성 메모리는 빠른 성능과 byte 단위로 데이터베이스와 데이터를 주고 받는다는 특징이 있어, 이러한 특징을 이용하여 기존의 비효율성을 해결하고자 한다.
본 발명의 실시예에서 해결하고자 하는 과제는 휘발성 메모리와 데이터베이스 간 특정 크기로 데이터를 주고 받기 때문에 발생하는 비효율성을 해결하는 것이다.
다만, 본 발명의 실시예가 이루고자 하는 기술적 과제는 이상에서 언급한 과제로 제한되지 않으며, 이하에서 설명할 내용으로부터 통상의 기술자에게 자명한 범위 내에서 다양한 기술적 과제가 도출될 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메모리를 이용한 로깅 방법은 하나 이상의 프로세서에 의하여 수행되며, 데이터베이스에 저장된 페이지를 휘발성 메모리로 불러오는 단계, 상기 휘발성 메모리로 불러온 상기 페이지의 일부 데이터가 변경된 더티 페이지(dirty page)의 발생 여부를 체크하는 단계, 상기 더티 페이지의 변경된 부분에 대한 정보를 비휘발성 메모리에 로깅(logging)하는 단계 및 상기 비휘발성 메모리에 상기 로깅된 정보에 기초하여 상기 데이터베이스에 저장된 페이지를 수정하는 단계를 포함한다.
이때 상기 더티 페이지의 발생 여부를 체크하는 단계는 상기 페이지의 자유 공간(free space)을 기준으로 상기 페이지를 윗부분과 아랫부분으로 나누어 상기 윗부분과 상기 아랫부분에 대하여 변경된 데이터를 체크하는 단계를 포함할 수 있고, 상기 윗부분은 셀 포인터(cell pointer)에 대한 정보를 포함하고, 상기 아랫부분은 셀 컨텐츠(cell content)에 대한 정보를 포함할 수 있다.
또한 상기 더티 페이지의 변경된 부분에 대한 정보를 비휘발성 메모리에 로깅하는 단계는 상기 더티 페이지에서 상기 변경된 데이터의 위치를 로깅하는 단계 및 상기 변경된 데이터를 로깅하는 단계를 포함할 수 있다.
이때 상기 더티 페이지에서 상기 변경된 데이터의 위치를 로깅하는 단계는 상기 페이지의 윗부분에서 변경된 데이터의 시작 위치와 상기 시작 위치로부터 변경된 부분의 제1 크기 및 상기 아랫부분에서 변경된 데이터의 시작 위치와 상기 시작 위치로부터 변경된 부분의 제2 크기를 로깅하는 단계를 포함할 수 있다.
더불어 상기 변경된 데이터를 로깅하는 단계는 상기 제1 크기 및 상기 제2 크기를 합하여 상기 변경된 데이터를 로깅할 영역을 할당하는 단계를 포함할 수 있다.
또한 상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는 상기 더티 페이지에 대한 정보를 바이트 단위로 로깅할 수 있다.
한편 상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는 커널 공간으로부터 상기 비휘발성 메모리로 8KBytes 이상의 동적 메모리 블럭을 할당하는 단계 및 상기 동적 메모리 블럭에 상기 더티 페이지에 대한 정보를 로깅하는 단계를 포함할 수 있다.
아울러 상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는 커널 공간으로부터 상기 비휘발성 메모리로 동적 메모리 블럭을 할당하는 단계, 상기 동적 메모리 블럭에 대하여 상기 동적 메모리 블럭의 주소가 저장되지 않은 상태임을 나타내는 플래그를 인덱싱하는 단계 및 상기 동적 메모리 블럭에 상기 더티 페이지에 대한 정보를 로깅하는 경우 상기 동적 메모리 블럭의 주소를 상기 비휘발성 메모리에 저장하고, 상기 동적 메모리 블럭에 대하여 상기 동적 메모리 블럭의 주소가 저장된 상태임을 나타내는 플래그를 인덱싱하는 단계를 포함할 수 있다.
또한 상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는 메모리 쓰기 연산을 연속 수행하여 상기 더티 페이지에 대한 정보를 캐시에 불러오는 단계, 메모리 베리어 연산(memory barrier instruction)을 수행하는 단계 및 캐시 라인 플러시(cache line flush) 연산을 연속 수행하여 상기 더티 페이지에 대한 정보를 상기 비휘발성 메모리에 로깅하는 단계를 포함할 수 있다. ,
더불어 상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는 메모리 쓰기 연산을 연속 수행하여 상기 더티 페이지에 대한 정보를 캐시에 불러오는 단계, 메모리 베리어 연산(memory barrier instruction)을 수행하는 단계 및 상기 캐시에 불러온 상기 더티 페이지에 대한 정보에 대해 체크섬 바이트(checksum byte) 연산을 수행하여 구해진 상기 더티 페이지에 대한 정보의 크기를 상기 비휘발상 메모리에 로깅하는 단계를 포함하고, 상기 데이터베이스에 저장된 페이지를 수정하는 단계는 상기 비휘발성 메모리에 저장된 상기 더티 페이지에 대한 정보의 크기와 상기 체크섬 바이트 연산에 의해 구해진 상기 더티 페이지에 대한 정보의 데이터 크기가 같은 경우 상기 로깅된 정보에 기초하여 상기 데이터베이스에 저장된 페이지를 수정하는 단계를 포함할 수 있다.
본 발명의 실시예에 따르면, 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하여 더티 페이지의 변경된 부분에 대한 정보만을 데이터베이스에 반영하여 데이터의 읽기 및 쓰기 작업을 보다 빠르게 수행할 수 있다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리를 이용한 로깅 방법을 수행하기 위한 시스템의 아키텍쳐를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 메모리를 이용한 로깅 방법의 프로세스를 도시하는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 페이지의 형식을 나타낸 예시도이다.
도 4는 본 발명의 일 실시예에 따라 더티 페이지를 비휘발성 메모리에 로깅하는 것을 설명하기 위한 예시도이다.
도 5는 도 4의 일 실시예 및 기존 방법에 따라 시스템에 발생하는 I/O의 비율을 나타낸 그래프이다.
도 6은 본 발명의 일 실시예에 따라 비휘발성 메모리에 동적 메모리 블럭을 할당하는 것을 설명하기 위한 예시도이다.
도 7은 기존의 방법으로 프로세서가 캐시를 이용하여 메모리에 정보를 쓰는 동작을 설명하기 위한 예시도이다.
도 8은 본 발명의 일 실시예에 따라 프로세서가 캐시를 이용하여 로깅하는 동작을 설명하기 위한 예시도이다.
도 9는 도 7의 기존 방법 및 도 8의 실시예에 따른 연산 속도를 비교한 그래프이다.
도 10은 본 발명의 다른 실시예에 따라 프로세서가 캐시를 이용하여 로깅하는 동작을 설명하기 위한 예시도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다.  그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 범주는 청구항에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명은 본 발명의 실시예들을 설명함에 있어 실제로 필요한 경우 외에는 생략될 것이다.  그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다.  그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도면에 표시되고 아래에 설명되는 기능 블록들은 가능한 구현의 예들일 뿐이다. 다른 구현들에서는 상세한 설명의 사상 및 범위를 벗어나지 않는 범위에서 다른 기능 블록들이 사용될 수 있다. 또한 본 발명의 하나 이상의 기능 블록이 개별 블록들로 표시되지만, 본 발명의 기능 블록들 중 하나 이상은 동일 기능을 실행하는 다양한 하드웨어 및 소프트웨어 구성들의 조합일 수 있다.
또한 어떤 구성 요소들을 포함한다는 표현은 개방형의 표현으로서 해당 구성 요소들이 존재하는 것을 단순히 지칭할 뿐이며, 추가적인 구성 요소들을 배제하는 것으로 이해되어서는 안 된다.
나아가 어떤 구성 요소가 다른 구성 요소에 연결되어 있다거나 접속되어 있다고 언급될 때에는, 그 다른 구성 요소에 직접적으로 연결 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 한다.
또한 '제1, 제2' 등과 같은 표현은 복수의 구성들을 구분하기 위한 용도로만 사용된 표현으로써, 구성들 사이의 순서나 기타 특징들을 한정하지 않는다.
이하에서는 도면들을 참조하여 본 발명의 실시예들에 대해 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리(140)를 이용한 로깅 방법을 수행하기 위한 시스템의 아키텍쳐를 나타낸 도면이다. 도 1에 도시된 바와 같이, 비휘발성 메모리(140)를 이용한 로깅 방법을 수행하기 위한 시스템 프로세서(110), 캐시(120), 휘발성 메모리(130), 비휘발성 메모리(140) 및 데이터베이스(150)를 포함한다.
프로세서(110)는 비휘발성 메모리(140)를 이용한 로깅 방법을 수행하기 위한 시스템의 전반적인 제어를 수행한다. 예를 들어 프로세서(110)는 데이터 읽기 쓰기, 트랜잭션 읽기 쓰기, 캐시 읽기 쓰기, 캐시 라인 플러시 등을 수행할 수 있다.
캐시(120)는 프로세서(110)가 메인 메모리를 엑세스하는 속도보다 더 빨리 엑세스할 수 있는 메모리를 의미한다. 시간적, 공간적으로 접근 확률이 높은 데이터를 미리 캐시(120)에 저장할 경우 프로세서(110)는 캐시(120)에 먼저 엑세스함으로써 더 높은 속도로 연산을 처리할 수 있다.
휘발성 메모리(130)는 지속적인 전력 공급을 요구하지 않는 비휘발성 메모리(140)와는 달리 저장된 정보를 유지하기 위해 전기를 요구하는 컴퓨터 메모리를 가리킨다. 휘발성 메모리(130)는 예를 들어, DRAM (dynamic random access memory)일 수 있으며, 데이터베이스(150)의 페이지에 대하여 신속하게 읽기 및 쓰기 작업을 수행하기 위해 페이지를 임시 저장할 수 있다. 이때 페이지는 데이터베이스(150)에 저장되는 데이터의 단위로서 도 3과 함께 후술한다.
비휘발성 메모리(140)(non-volatile memory)는 데이터 저장 공간과 데이터 로그를 위한 저장 공간 및 트랜잭션 로그를 위한 저장 공간을 포함할 수 있다. 비휘발성 메모리(140)는 예를 들어, STT-MRAM (Spin Torque Transfer Magnetoresistive RAM), FRAM (Ferroelectric RAM), PRAM (Phase-change RAM), RRAM (Resistive RAM), NRAM (Nano RAM) 등일 수 있다.
로깅(logging)은 광의의 의미로는 시스템의 작동 상태의 기록과 보존, 이용자의 습성 조사 및 시스템 동작의 분석 등을 하기 위해 작동 중의 정보를 기록하는 행위를 말하며, 본 발명에서는 특히 데이터베이스(150)에 저장된 페이지에 대한 변경 내용을 기록하는 행위를 의미한다. 이때 기록되는 로그는 트랜잭션 로그 또는 데이터베이스 로그로도 불린다.
본 발명의 일 실시예에 따르면 로깅을 통해 비휘발성 메모리(140)에서 시스템 충돌이나 하드웨어 문제가 발생한 경우 ACID 성질을 보장할 수 있다. ACID란 원자성 (Atomicity), 일관성 (Consistency), 독립성 (Isolation), 지속성 (Durability)의 약자다. 일관성이란 트랜잭션이 성공했다면 그 자료구조(또는 데이터 베이스)가 일관성을 유지하는 것을 말한다.
데이터베이스(150)는 컴퓨터 또는 스마트폰의 저장장치를 포함한다. 대부분의 안드로이드 어플리케이션은 작은 크기의 데이터를 저장할 때 SQLite라는 임베디드 데이터베이스 시스템을 사용한다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 메모리(140)를 이용한 로깅 방법의 프로세스를 도시하는 흐름도이다. 도 2에 따른 비휘발성 메모리(140)를 이용한 로깅 방법의 각 단계는 프로세서(110)에 의해 도 1을 통해 설명된 시스템의 구성에서 수행될 수 있으며, 각 단계를 설명하면 다음과 같다.
우선, 프로세서(110)는 데이터베이스(150)에 저장된 페이지를 사용하기 위해 읽기 및 쓰기가 용이하도록 휘발성 메모리(130)로 불러와 임시 저장한다(S210).
이후, 프로세서(110)는 페이지에 변경이 발생된 더티 페이지(dirty page)가 발생하는지 여부를 체크한다(S220). 도 3은 본 발명의 일 실시예에 따른 페이지의 형식을 나타낸 예시도이다. 도 3을 참조하면, 페이지는 페이지 헤더(page header), 셀 포인터 어레이(cell pointer array), 자유 공간(free space) 및 셀 컨텐츠 영역(cell content area)로 구성된다. 페이지 헤더는 페이지의 식별 정보를 저장하고, 셀 포인터 어레이는 오프셋에 대한 정보를 저장하며, 셀 컨텐츠 영역은 데이터 및 데이터 키에 대한 정보를 저장한다. 한편, 페이지는 자유 공간을 기준으로 셀 포인터에 대한 정보가 윗부분에 저장되고 셀 컨텐츠에 대한 정보가 아랫부분에 저장되며, 페이지의 데이터가 추가 또는 변경될 경우 셀 포인터 어레이 및 셀 컨텐츠 영역은 자유 공간 방향을 향하여 데이터의 크기가 증가한다.
다음으로, 프로세서(110)는 더티 페이지에 대한 정보를 비휘발성 메모리(140)에 로깅하고(S230), 데이터베이스(150)에 저장된 페이지를 수정한다(S240). 예를 들어, 프로세서(110)는 사용자의 쿼리가 발생할 때마다 로깅을 수행할 수 있다. 도 4는 본 발명의 일 실시예에 따라 더티 페이지를 비휘발성 메모리(140)에 로깅하는 것을 설명하기 위한 예시도이다.
비휘발성 메모리(140)는 바이트(byte) 단위로 데이터베이스(150)와 정보를 주고 받을 수 있다. 따라서 도 4를 참조하면, 비휘발성 메모리(140)에 로깅하는 경우, 더티 페이지가 발생한 페이지 자체를 로깅하는 것이 아니라, 더티 페이지의 변경된 부분에 대한 정보만을 비휘발성 메모리(140)에 저장할 수 있다.
예를 들어, 더티 페이지의 변경된 부분에 대한 정보는 페이지에서 변경된 데이터의 위치 및 변경된 데이터를 포함할 수 있다. 보다 구체적으로, 도 4와 같이 휘발성 메모리(130)가 8개의 페이지를 임시 저장하고 있고 이때 4개의 페이지에 대하여 더티 페이지가 발생한 경우, 비휘발성 메모리(140)는 Wal(write-ahead-logging) frame header에 더티 페이지가 발생한 페이지의 식별 정보 및 해당 페이지에서 변경된 데이터의 위치를 저장할 수 있고, Wal frame에는 및 변경된 데이터를 로깅할 수 있다.
이때 따라서 프로세서(110)는 더티 페이지 발생을 체크하기 위해, 페이지의 자유 공간을 기준으로 윗부분과 아랫부분에 대하여 변경된 데이터를 체크할 수 있다. 보다 구체적으로, 프로세서(110)는 변경된 데이터의 위치를 로깅하기 위해, 페이지의 윗부분에서 변경된 데이터의 시작 위치와 시작 위치로부터 변경된 부분의 제1 크기 및 아랫부분에서 변경된 데이터의 시작 위치와 시작 위치로부터 변경된 부분의 제2 크기를 로깅할 수 있고, 더하여 제1 크기 및 제2 크기를 합하여 변경된 데이터를 로깅할 영역(Wal frame)을 할당할 수 있다.
도 5는 도 4의 일 실시예 및 기존 방법에 따라 시스템에 발생하는 I/O의 비율을 나타낸 그래프이다. 도 5를 참조하면, 페이지 자체를 로깅하는 기존 방법에 비해 본 발명의 일 실시예에 따라 변경이 발생한 더티 페이지에 대한 정보만을 로깅하는 경우, 발생하는 I/O의 비율이 약 84% 감소함을 확인할 수 있다.
다만, 도 4에 따른 실시예는 하나의 예시일 뿐, 더티 페이지에 대한 정보가 저장되는 위치는 한정되지 않으며, 페이지 자체를 저장하는 것이 아니라 더티 페이지에 대한 정보만을 저장하는 다양한 방법을 활용할 수 있다.
한편, 비휘발성 메모리(140) 공간을 사용하기 위해서는 동적 메모리를 할당하기 위해 시스템 콜을 통해 커널 함수를 실행해야 한다. 기존에는 더티 페이지 자체를 로깅하여 4 Kbytes 단위로 커널 스페이스에 동적 메모리의 할당을 요청하기 때문에 시스템 콜을 지속적으로 사용하게 되므로 커널함수의 오버헤드가 상당하다는 문제점이 있다. 이에 비해, 본 발명의 실시예에 따르면 더티 페이지에서 변경된 데이터만을 로깅하게 되므로 그보다 작은 동적 메모리 공간을 사용하면서, 복수의 더티 페이지에 대한 변경 정보를 저장하기 위하여 한 번에 큰 동적 메모리 공간의 할당을 요청할 수 있다. 즉, 본 발명의 일 실시예는 사용자 레벨 힙 관리자(user level heap management)를 사용하여 한 번에 큰 용량의 동적 메모리 블럭을 요청할 수 있다. 도 6은 본 발명의 일 실시예에 따라 비휘발성 메모리(140)에 동적 메모리 블럭을 할당하는 것을 설명하기 위한 예시도이다.
도 6을 참조하면, 본 발명의 일 실시예는 변경된 더티 페이지에 대한 정보만을 로깅하므로 한 메모리 블럭에 여러 페이지에 대한 정보를 한 번에 로깅할 수 있다. 따라서 시스템 콜을 줄이기 위해, 커널 공간으로부터 비휘발성 메모리(140)로 WAL Frame 크기 보다 큰 8 KBytes 이상의 동적 메모리 블럭을 할당(도 6에서는 1Mbytes 할당)하고, 할당된 동적 메모리 블럭에 복수의 더티 페이지에 대한 정보를 로깅할 수 있다.
한편, 비휘발성 메모리(140)에서 동적 메모리 블럭을 할당 받았으나 사용 대기 중인 상태에서는 비휘발성 메모리(140)가 동적 메모리 블럭의 주소를 저장하지 않는다. 이때 커널 공간은 동적 메모리를 할당하는 경우, 비휘발성 메모리(140)에 동적 메모리 블럭이 할당 되었는지와 동적 메모리가 할당되어 있지 않는지 만을 체크하기 때문에, 시스템에 오류가 발생하면 커널 공간은 해당 동적 메모리 블럭이 여전히 비휘발성 메모리(140)에 할당된 것으로 인식하지만, 비휘발성 메모리(140)는 해당 동적 메모리의 주소를 저장하지 않기 때문에 해당 동적 메모리 블럭을 영원히 사용할 수 없는 문제가 발생할 수 있다.
이러한 문제를 해결하기 위해, 본 발명의 일 실시예에 따르면 비휘발성 메모리(140)의 공간에 대해 동적 메모리 블럭이 할당되어 사용중인 상태임을 나타내는 플래그(도 6의 u, in-use), 동적 메모리 블럭이 할당되었으나 아직 사용 대기중인 상태임을 나타내는 플래그(도 6의 p, pending), 동적 메모리 블럭이 할당되지 않은 상태 임을 나타내는 플래그(도 6의 f, free)를 인덱싱하여, 비휘발성 메모리(140)의 공간 중 일부(도 6의 Meta data block) 또는 다른 저장장치에 인덱싱한 정보를 저장할 수 있다.
따라서 비휘발성 메모리(140)의 일부 공간이 동적 메모리 블럭을 할당 받게 되면 해당 블록의 상태는 free에서 pending으로 바뀌고, 이때 pending 블록의 주소값이 비휘발성 메모리(140)나 다른 저장장치에 저장되지 않았는데 시스템 오류가 발생할 경우, pending의 인덱싱 정보를 포함하는 동적 메모리 블럭을 삭제하기 때문에 쉽게 복구가 가능하다.
이후 동적 메모리 블럭의 주소값이 비휘발성 메모리(140)나 다른 저장장치에 저장되면 블록의 상태는 in-use로 바뀌게 되고, 이때 시스템 오류가 발생하면 기존의 복구 기법으로 복구할 수 있다.
도 7은 기존의 방법으로 프로세서(110)가 캐시(120)를 이용하여 메모리에 정보를 쓰는 동작을 설명하기 위한 예시도이다. 이때 도 7, 도 8, 도 10에 도시된 m은 메모리 쓰기 연산(memcpy instruction)으로서 프로세서(110)가 캐쉬에 정보를 쓰게 하고, mb는 메모리 배리어 연산(memory barrier instruction)으로서 프로세서(110)가 명령의 순서를 자동적으로 재배정하지 않도록 명령간의 순서를 강제하며, clflush는 캐시 라인 플러시 연산(cache line flush instruction)으로서 캐시(120)와 다른 메모리의 저장 내용을 일치시키며, c는 커밋 연산(commit instruction)으로서 사용자의 쿼리가 발생하였음을 알려준다.
이때 메모리 배리어 연산과 캐시 라인 플러시 연산은 기존의 프로세서와 메모리의 최적화 연산을 방해하게 된다. 한편, 데이터베이스(150)의 로깅 연산에서는 커밋 연산 이전에 쓰이는 로그의 순서가 어떠한 순서로 쓰이더라도 정확도에 상관이 없다는 특징이 존재한다. 이에, 도 8에 따르면, 본 발명의 일 실시예는 복수의 메모리 쓰기 연산을 메모리 배리어 연산 없이 연속으로 수행하고, 캐시 라인 플러시 연산을 메모리 배리어 연산 없이 연속으로 수행할 수 있다.
즉, 본 발명의 일 실시예에 따르면 더티 페이지에 대한 정보를 비휘발성 메모리(140)에 로깅하는 단계(S230)는 메모리 쓰기 연산을 연속 수행하여 더티 페이지에 대한 정보를 캐시(120)에 불러오는 단계, 메모리 베리어 연산을 수행하는 단계 및 캐시 라인 플러시 연산을 연속 수행하여 더티 페이지에 대한 정보를 비휘발성 메모리(140)에 로깅하는 단계를 포함할 수 있다.
도 9는 기존의 방법과 도 7의 기존 방법 및 도 8의 실시예에 따른 연산 속도를 비교한 그래프이다. 도 9의 그래프에서 L은 lazy synchronization의 약자로 도 8에 따른 본 발명의 일 실시예의 연산 속도를 나타내며, E는 eager synchronization의 약자로 기존 방법의 연산 속도를 나타낸다. 도 9의 그래프를 통해 도 8에 따른 실시예가 기존 방법에 비해 빠른 연산 속도를 구현할 수 있음을 확인할 수 있다.
도 10은 본 발명의 다른 실시예에 따라 프로세서(110)가 캐시(120)를 이용하여 로깅하는 동작을 설명하기 위한 예시도이다.
도 10에 따른 본 발명의 실시예는 캐시 라인 플러시의 명령이 없어도 캐시(120)에 저장된 정보를 일정 시간이 지나면 자동으로 메모리에 캐시(120)에 저장된 정보를 쓴다는 프로세서(110)의 특징에 기반하여, 메모리 쓰기 연산 이후 캐시 라인 플러시 연산을 사용하지 않고 대신 메모리 쓰기 연산된 데이터에 대하여 체크섬 바이트(checksum byte) 연산을 수행하여 구해진 정보의 크기를 비휘발상 메모리에 로깅하며, 로깅된 정보에 기초하여 데이터베이스(150)에 저장된 페이지를 수정하는 경우, 비휘발성 메모리(140)에 저장된 더티 페이지에 대한 정보의 크기와 체크섬 바이트 연산에 의해 구해진 더티 페이지에 대한 정보의 데이터 크기가 같은 경우에만 데이터베이스(150)에 저장된 페이지를 수정할 수 있다.
이를 위해, 더티 페이지에 대한 정보를 비휘발성 메모리(140)에 로깅하는 단계(S230)는 메모리 쓰기 연산을 연속 수행하여 더티 페이지에 대한 정보를 캐시(120)에 불러오는 단계, 메모리 베리어 연산을 수행하는 단계 및 캐시(120)에 불러온 더티 페이지에 대한 정보에 대해 체크섬 바이트 연산을 수행하여 구해진 더티 페이지에 대한 정보의 크기를 비휘발상 메모리에 로깅하는 단계를 포함하고, 데이터베이스(150)에 저장된 페이지를 수정하는 단계(S240)는 비휘발성 메모리(140)에 저장된 더티 페이지에 대한 정보의 크기와 체크섬 바이트 연산에 의해 구해진 더티 페이지에 대한 정보의 데이터 크기가 같은 경우 로깅된 정보에 기초하여 데이터베이스(150)에 저장된 페이지를 수정하는 단계를 포함할 수 있다.
따라서 상술한 실시예에 따르면, 더티 페이지에 대한 정보를 비휘발성 메모리(140)에 로깅하여 페이지의 변경 부분에 대한 정보만을 데이터베이스(150)에 반영하여 데이터의 읽기 및 쓰기 작업을 보다 빠르게 수행할 수 있다.
상술한 본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 메모리 유닛은 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 프로세서와 데이터를 주고 받을 수 있다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
110: 프로세서
120: 캐시
130: 휘발성 메모리
140: 비휘발성 메모리
150: 데이터베이스

Claims (14)

  1. 하나 이상의 프로세서에 의하여 수행되는 비휘발성 메모리를 이용한 로깅 방법에 있어서,
    데이터베이스에 저장된 페이지를 휘발성 메모리로 불러오는 단계;
    상기 휘발성 메모리로 불러온 상기 페이지의 일부 데이터가 변경된 더티 페이지(dirty page)의 발생 여부를 체크하는 단계;
    상기 더티 페이지의 변경된 부분에 대한 정보를 비휘발성 메모리에 로깅(logging)하는 단계; 및
    상기 비휘발성 메모리에 상기 로깅된 정보에 기초하여 상기 데이터베이스에 저장된 페이지를 수정하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  2. 제1항에 있어서,
    상기 더티 페이지의 발생 여부를 체크하는 단계는,
    상기 페이지의 자유 공간(free space)을 기준으로 상기 페이지를 윗부분과 아랫부분으로 나누어 상기 윗부분과 상기 아랫부분에 대하여 변경된 데이터를 체크하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  3. 제2항에 있어서,
    상기 윗부분은 셀 포인터(cell pointer)에 대한 정보를 포함하고,
    상기 아랫부분은 셀 컨텐츠(cell content)에 대한 정보를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  4. 제2항에 있어서,
    상기 더티 페이지의 변경된 부분에 대한 정보를 비휘발성 메모리에 로깅하는 단계는,
    상기 더티 페이지에서 상기 변경된 데이터의 위치를 로깅하는 단계; 및
    상기 변경된 데이터를 로깅하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  5. 제4항에 있어서,
    상기 더티 페이지에서 상기 변경된 데이터의 위치를 로깅하는 단계는,
    상기 더티 페이지의 윗부분에서 변경된 데이터의 시작 위치와 상기 시작 위치로부터 변경된 부분의 제1 크기 및 상기 아랫부분에서 변경된 데이터의 시작 위치와 상기 시작 위치로부터 변경된 부분의 제2 크기를 로깅하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  6. 제5항에 있어서,
    상기 변경된 데이터를 로깅하는 단계는,
    상기 제1 크기 및 상기 제2 크기를 합하여 상기 변경된 데이터를 로깅할 영역을 할당하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  7. 제1항에 있어서,
    상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는,
    상기 더티 페이지에 대한 정보를 바이트 단위로 로깅하는
    비휘발성 메모리를 이용한 로깅 방법.
  8. 제1항에 있어서,
    상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는,
    커널 공간으로부터 상기 비휘발성 메모리로 8KBytes 이상의 동적 메모리 블럭을 할당하는 단계; 및
    상기 동적 메모리 블럭에 상기 더티 페이지에 대한 정보를 로깅하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  9. 제1항에 있어서,
    상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는,
    커널 공간으로부터 상기 비휘발성 메모리로 동적 메모리 블럭을 할당하는 단계;
    상기 동적 메모리 블럭에 대하여 상기 동적 메모리 블럭의 주소가 저장되지 않은 상태임을 나타내는 플래그를 인덱싱하는 단계; 및
    상기 동적 메모리 블럭에 상기 더티 페이지에 대한 정보를 로깅하는 경우 상기 동적 메모리 블럭의 주소를 상기 비휘발성 메모리에 저장하고, 상기 동적 메모리 블럭에 대하여 상기 동적 메모리 블럭의 주소가 저장된 상태임을 나타내는 플래그를 인덱싱하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  10. 제1항에 있어서,
    상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는,
    메모리 쓰기 연산을 연속 수행하여 상기 더티 페이지에 대한 정보를 캐시에 불러오는 단계;
    메모리 베리어 연산(memory barrier instruction)을 수행하는 단계; 및
    캐시 라인 플러시(cache line flush) 연산을 연속 수행하여 상기 더티 페이지에 대한 정보를 상기 비휘발성 메모리에 로깅하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  11. 제1항에 있어서,
    상기 더티 페이지에 대한 정보를 비휘발성 메모리에 로깅하는 단계는,
    메모리 쓰기 연산을 연속 수행하여 상기 더티 페이지에 대한 정보를 캐시에 불러오는 단계;
    메모리 베리어 연산(memory barrier instruction)을 수행하는 단계; 및
    상기 캐시에 불러온 상기 더티 페이지에 대한 정보에 대해 체크섬 바이트(checksum byte) 연산을 수행하여 구해진 상기 더티 페이지에 대한 정보의 크기를 상기 비휘발상 메모리에 로깅하는 단계를 포함하고,
    상기 데이터베이스에 저장된 페이지를 수정하는 단계는,
    상기 비휘발성 메모리에 저장된 상기 더티 페이지에 대한 정보의 크기와 상기 체크섬 바이트 연산에 의해 구해진 상기 더티 페이지에 대한 정보의 데이터 크기가 같은 경우 상기 로깅된 정보에 기초하여 상기 데이터베이스에 저장된 페이지를 수정하는 단계를 포함하는
    비휘발성 메모리를 이용한 로깅 방법.
  12. 제1항 내지 제11항의 방법을 수행하는 장치.
  13. 제1항 내지 제11항의 방법을 프로세서가 수행하도록 하는 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램.
  14. 제1항 내지 제11항의 방법을 프로세서가 수행하게 하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독 가능 기록매체.
KR1020170044417A 2016-04-05 2017-04-05 비휘발성 메모리를 이용한 로깅 방법 KR101939361B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160041612 2016-04-05
KR20160041612 2016-04-05

Publications (2)

Publication Number Publication Date
KR20170114991A true KR20170114991A (ko) 2017-10-16
KR101939361B1 KR101939361B1 (ko) 2019-01-16

Family

ID=60295873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170044417A KR101939361B1 (ko) 2016-04-05 2017-04-05 비휘발성 메모리를 이용한 로깅 방법

Country Status (1)

Country Link
KR (1) KR101939361B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835528A (zh) * 2021-02-22 2021-05-25 北京金山云网络技术有限公司 脏页刷新方法和装置、电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000074019A (ko) * 1999-05-17 2000-12-05 김영환 이동 통신 가입자의 데이터 베이스 백업 방법
JP2008108026A (ja) * 2006-10-25 2008-05-08 Hitachi Ltd 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
KR20130024212A (ko) * 2011-08-31 2013-03-08 세종대학교산학협력단 메모리 시스템 및 그 관리 방법
KR101475931B1 (ko) 2013-05-24 2014-12-23 고려대학교 산학협력단 캐시 및 그 운영 방법
KR101502998B1 (ko) * 2014-01-06 2015-03-18 세종대학교산학협력단 메모리 시스템 및 그 관리 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000074019A (ko) * 1999-05-17 2000-12-05 김영환 이동 통신 가입자의 데이터 베이스 백업 방법
JP2008108026A (ja) * 2006-10-25 2008-05-08 Hitachi Ltd 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
KR20130024212A (ko) * 2011-08-31 2013-03-08 세종대학교산학협력단 메모리 시스템 및 그 관리 방법
KR101475931B1 (ko) 2013-05-24 2014-12-23 고려대학교 산학협력단 캐시 및 그 운영 방법
KR101502998B1 (ko) * 2014-01-06 2015-03-18 세종대학교산학협력단 메모리 시스템 및 그 관리 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835528A (zh) * 2021-02-22 2021-05-25 北京金山云网络技术有限公司 脏页刷新方法和装置、电子设备和存储介质

Also Published As

Publication number Publication date
KR101939361B1 (ko) 2019-01-16

Similar Documents

Publication Publication Date Title
CN108733510B (zh) 数据储存装置及映射表重建方法
CN108804023B (zh) 数据存储装置及其操作方法
CN109416666B (zh) 用于存储和读取多个缓存行的装置和方法
US7193923B2 (en) Semiconductor memory device and access method and memory control system for same
US9563551B2 (en) Data storage device and data fetching method for flash memory
US9448946B2 (en) Data storage system with stale data mechanism and method of operation thereof
US10468077B2 (en) Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage
US20050193164A1 (en) Interface for a block addressable mass storage system
CN109952565B (zh) 内存访问技术
US11556466B2 (en) Logical-to-physical data structures
US9268681B2 (en) Heterogeneous data paths for systems having tiered memories
US20230342055A1 (en) Control method of flash memory controller and associated flash memory controller and storage device
US20220138096A1 (en) Memory system
CN104205229A (zh) 功率损耗恢复中的固态驱动器管理
KR101939361B1 (ko) 비휘발성 메모리를 이용한 로깅 방법
CN111625477B (zh) 访问擦除块的读请求的处理方法与装置
US10474582B2 (en) NAND flash storage device and methods using non-NAND storage cache
CN107562654B (zh) Io命令处理方法与装置
US20210406193A1 (en) Operation-Deterministic Write Operations For Data Recovery And Integrity Checks
KR20220119348A (ko) 분할된 저장장치에서의 스냅샷 관리
KR20230037255A (ko) 이벤트 로그 관리 방법, 컨트롤러 및 저장 장치
US10236066B2 (en) Method of managing semiconductor memories, corresponding interface, memory and device
US10719461B2 (en) Solid state device with distributed bit buckets
CN109213424B (zh) 并发io命令的无锁处理方法
US11995344B2 (en) Memory with efficient storage of event log data

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