KR101851948B1 - 데이터 페이지의 버퍼 풀 관리 방법 - Google Patents

데이터 페이지의 버퍼 풀 관리 방법 Download PDF

Info

Publication number
KR101851948B1
KR101851948B1 KR1020180010335A KR20180010335A KR101851948B1 KR 101851948 B1 KR101851948 B1 KR 101851948B1 KR 1020180010335 A KR1020180010335 A KR 1020180010335A KR 20180010335 A KR20180010335 A KR 20180010335A KR 101851948 B1 KR101851948 B1 KR 101851948B1
Authority
KR
South Korea
Prior art keywords
buffer
data
buffer pool
buffers
stored
Prior art date
Application number
KR1020180010335A
Other languages
English (en)
Inventor
김교은
Original Assignee
(주)베스트케이에스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)베스트케이에스 filed Critical (주)베스트케이에스
Priority to KR1020180010335A priority Critical patent/KR101851948B1/ko
Application granted granted Critical
Publication of KR101851948B1 publication Critical patent/KR101851948B1/ko

Links

Images

Classifications

    • 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/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

네트워크 장치를 통해 획득된 데이터의 효율적인 처리를 위한 데이터 페이지의 버퍼 풀 관리 방법이 개시된다. 본 데이터 페이지의 버퍼 풀 관리 방법은 버퍼 풀 관리부가 병렬로 구성되는 복수의 버퍼를 포함하는 버퍼 풀을 생성하는 단계; 메모리 인덱스 관리부가 병렬로 구성되는 복수의 버퍼에 대한 각각의 색인정보를 생성하여 메모리 인덱스에 저장하는 단계; 데이터 획득부를 통해, 특정 데이터가 획득되면, 상기 버퍼 풀 관리부에 의해, 상기 복수의 버퍼 중 하나 이상의 버퍼에 상기 특정 데이터가 저장되도록 하는 단계; 상기 메모리 인덱스 관리부가 상기 특정 데이터가 저장된 하나 이상의 버퍼에 대한 색인정보를 1차 갱신하는 단계; 상기 버퍼 풀 관리부에 의해, 이벤트가 발생된 것으로 판단되면, 상기 복수의 버퍼 중 기설정된 조건에 해당하는 버퍼에 저장된 데이터가 제거되도록 하는 단계; 상기 버퍼 풀 관리부에 의해, 상기 데이터가 제거된 버퍼가 상기 버퍼 풀로 반납되도록 하는 단계; 및 상기 메모리 인덱스 관리부가 상기 반납된 버퍼에 대한 색인정보를 2차 갱신하는 단계;를 포함한다. 이에 의해, 버퍼 풀을 미리 생성하여, 메모리 할당 과정을 생략하고, 생성된 버퍼 풀에 애플리케이션이 직접 접근할 수 있도록 하여, 데이터 패킷을 처리하기 위한 메모리 복사 과정이 한 번에 처리될 수 있도록 할 수 있어, 메모리 할당 과정에서 발생되는 과부하의 부담을 절감시킬 수 있다.

Description

데이터 페이지의 버퍼 풀 관리 방법{Method for buffer pool management of data pages}
본 발명은 데이터 페이지의 버퍼 풀 관리 방법에 관한 것으로, 더욱 상세하게는 네트워크 장치를 통해 획득된 데이터의 효율적인 처리를 위한 데이터 페이지의 버퍼 풀 관리 방법에 관한 것이다.
종래의 네트워크 장치를 통해 획득된 패킷 데이터를 처리하는 방법은 네트워크 장치를 통해 획득된 패킷 데이터를 중앙 처리 장치(CPU)에 전달하거나 아니면, 중앙 처리 장치(CPU)의 요청에 의해, 메모리에 바로 씀으로써 중앙 처리 장치가 패킷 데이터를 처리할 수 있도록 해준다.
도 1에 도시된 바와 같이 네트워크 장치에서 수신된 패킷 데이터가 소켓을 통해 애플리케이션까지 도달하기 위해서는 커널(kernel)이 메모리(소켓 버퍼)를 할당하고, 할당된 메모리를 초기화하여, 초기화된 메모리에 패킷 데이터가 복사되도록 하여, 애플리케이션이 패킷 데이터를 복사하기 위한 준비 과정을 수행할 수 있다. 이후, 애플리케이션이 패킷 데이터를 복사함으로써, 패킷 데이터를 처리할 수 있다.
이때, 커널(kernel)은 할당된 메모리 영역에 각각 다른 크기의 버퍼를 사용하거나 반납하게 되기 때문에, 버퍼의 조각이 발생 되거나, 패킷 데이터의 처리 때마다 CPU 자원을 소진시키는 단점이 존재하며, 물리적으로 큰 크기의 메모리 공간이 연속적으로 할당될 수 있어, 이에 대한 과부하의 부담 역시 존재한다.
따라서, 네트워크 장치를 통해 획득된 패킷 데이터를 처리하는 과정을 간소화하여, 메모리 할당 과정에서 발생되는 과부하의 부담을 절감시키고, 버퍼의 조각이 발생되는 것을 방지할 수 있는 방안의 모색이 요구된다.
한국공개특허 제10-2015-0053702호(발명의 명칭: 하이브리드 버퍼 풀) 한국등록특허 제10-1481633호(발명의 명칭: 플래시 메모리 기반 세 가지 상태를 가지는 버퍼 관리 장치 및 방법)
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로 본 발명의 목적은 버퍼 풀을 미리 생성함으로써, 실행시간에 실시간 메모리 할당 과정을 생략하고, 생성된 버퍼 풀에 애플리케이션이 직접 접근 가능하도록 하여, 데이터 패킷을 처리하기 위한 메모리 복사 과정이 한 번에 처리될 수 있도록 하는 데이터 페이지의 버퍼 풀 관리 방법을 제공함에 있다.
상기와 같은 문제를 해결하기 위한 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법은 버퍼 풀 관리부가 병렬로 구성되는 복수의 버퍼를 포함하는 버퍼 풀을 생성하는 단계; 메모리 인덱스 관리부가 병렬로 구성되는 복수의 버퍼에 대한 각각의 색인정보를 생성하여 메모리 인덱스에 저장하는 단계; 데이터 획득부를 통해, 특정 데이터가 획득되면, 상기 버퍼 풀 관리부에 의해, 상기 복수의 버퍼 중 하나 이상의 버퍼에 상기 특정 데이터가 저장되도록 하는 단계; 상기 메모리 인덱스 관리부가 상기 특정 데이터가 저장된 하나 이상의 버퍼에 대한 색인정보를 1차 갱신하는 단계; 상기 버퍼 풀 관리부에 의해, 이벤트가 발생된 것으로 판단되면, 상기 복수의 버퍼 중 기설정된 조건에 해당하는 버퍼에 저장된 데이터가 제거되도록 하는 단계; 상기 버퍼 풀 관리부에 의해, 상기 데이터가 제거된 버퍼가 상기 버퍼 풀로 반납되도록 하는 단계; 및 상기 메모리 인덱스 관리부가 상기 반납된 버퍼에 대한 색인정보를 2차 갱신하는 단계;를 포함한다.
또한, 상기 버퍼 풀 관리부는, 버퍼 풀 관리 모듈과 링크 관리 모듈을 포함하고, 상기 생성 단계는, 상기 버퍼 풀 관리 모듈에 의해, 상기 버퍼 풀이 생성되면, 상기 생성된 버퍼 풀에 포함된 복수의 버퍼가 상호 간에 연결 상태를 유지하도록 할 수 있다.
그리고 상기 데이터의 저장 단계는, 상기 버퍼 풀 관리 모듈에 의해, 상기 복수의 버퍼 중 하나 이상의 버퍼에 상기 특정 데이터가 저장되도록 하되, 상기 링크 관리 모듈에 의해, 상기 특정 데이터가 저장된 버퍼가 상기 특정 데이터를 저장하기 위해 함께 사용되는 버퍼와의 연결 생태만 유지하도록 하고, 상기 함께 사용되는 버퍼를 제외한 다른 버퍼와의 연결 상태를 해제하도록 할 수 있다.
또한, 상기 제거 단계는, 상기 버퍼 풀 관리 모듈에 의해, 기설정된 기간이 도래하거나 또는 상기 버퍼 풀이 임계치에 도달한 것으로 판단되는 경우, 상기 이벤트가 발생된 것으로 판단될 수 있다.
그리고 상기 제거 단계는, 상기 버퍼 풀 관리 모듈에 의해, 상기 버퍼 풀이 임계치에 도달한 것으로 판단되는 경우, 상기 복수의 버퍼에 저장된 데이터 중 가장 오래된 데이터가 상기 저장부에 전달되고, 상기 전달된 데이터가 상기 버퍼에서 제거되도록 할 수 있다.
또한, 상기 제거 단계는, 상기 버퍼 풀 관리 모듈에 의해, 상기 기설정된 기간이 도래한 것으로 판단되면, 상기 버퍼 풀에 존재하는 전체 버퍼 중 데이터를 저장하지 않은 버퍼가 기설정된 비율이상 존재하도록, 상기 복수의 버퍼에 저장된 데이터 중 가장 오래된 데이터가 상기 저장부에 전달되고, 상기 전달된 데이터가 상기 버퍼에서 제거되도록 하는 과정이 상기 전체 버퍼 중 상기 데이터를 저장하지 않은 버퍼가 기설정된 비율만큼 존재한다고 판단될 때까지 반복되어 수행되도록 할 수 있다.
그리고 본 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법은 상기 버퍼에 대한 색인정보가 1차 갱신된 이후, 상기 버퍼 풀이 임계치에 도달한 것으로 판단되는 상태에서, 애플리케이션을 통해, 상기 버퍼 풀 관리부에 상기 저장부에 저장된 제1 데이터와 버퍼에 저장된 데이터 간의 스와핑 명령이 요청되면, 상기 버퍼 풀 관리부가 상기 버퍼에 저장된 데이터 중 가장 오래된 제2 데이터가 상기 저장부에 전달되고, 상기 제2 데이터가 상기 버퍼에서는 제거되도록 하여, 상기 제1 데이터가 상기 제2 데이터가 제거된 버퍼에 저장되도록 함으로써, 상기 제1 데이터와 상기 제2 데이터가 상호 간에 스와핑 되도록 하는 단계;를 더 포함할 수 있다.
또한, 상기 반납 단계는, 상기 버퍼 풀 관리 모듈에 의해, 상기 데이터가 제거된 버퍼가 상기 버퍼 풀로 반납되도록 하되, 상기 버퍼 풀 관리 모듈이 상기 복수의 버퍼를 선입선출 방식으로 상기 데이터를 저장하는데 이용하기 위해, 상기 반납되는 버퍼가 상기 버퍼 풀에 저장된 복수의 버퍼 중 가장 뒷순위로 이용되는 상기 버퍼 풀의 가장 끝단에 위치하도록 하고, 상기 링크 관리 모듈에 의해, 상기 반납되어 가장 끝단에 위치하는 버퍼가 상기 버퍼 풀에 저장된 복수의 버퍼와 연결 상태를 복구하도록 할 수 있다.
이에 의해, 버퍼 풀을 미리 생성하여, 메모리 할당 과정을 생략하고, 생성된 버퍼 풀에 애플리케이션이 직접 접근할 수 있도록 하여, 데이터 패킷을 처리하기 위한 메모리 복사 과정이 한 번에 처리될 수 있도록 할 수 있어, 메모리 할당 과정에서 발생되는 과부하의 부담을 절감시킬 수 있다.
더불어, 병렬로 구성되는 복수의 버퍼, 상호 간에 연결 상태를 데이터 패킷의 저장 여부에 따라 개별적으로 관리하여, 버퍼의 조각이 발생되는 것을 방지할 수 있다.
도 1은 기존의 네트워크 장치를 통해 획득된 패킷 데이터를 처리하는 방법을 설명하기 위해 도시된 도면이다.
도 2는 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법을 수행하기 위한 시스템이 개략적으로 도시된 도면이다.
도 3은 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법을 이용하여 네트워크 장치를 통해 획득된 패킷 데이터를 처리하는 과정을 설명하기 위해 도시된 도면이다.
도 4는 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 및 색인정보의 생성 과정을 설명하기 위해 도시된 도면이다.
도 5는 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀에 포함된 복수의 버퍼의 사용 및 반납 과정을 설명하기 위해 도시된 도면이다.
도 6은 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀에 포함된 복수의 버퍼의 사용 및 반납 과정을 더욱 상세히 설명하기 위해 도시된 도면이다.
도 7은 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법을 설명하기 위해 도시된 도면이다.
이하에서는 본 발명의 실시예들을 첨부 도면을 참조하여 상세히 설명한다. 이하에 소개되는 실시예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위한 예로서 제공되는 것이다. 본 발명은 이하 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법을 수행하기 위한 시스템이 개략적으로 도시된 도면이고, 도 3은 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법을 이용하여 네트워크 장치를 통해 획득된 패킷 데이터를 처리하는 과정을 설명하기 위해 도시된 도면이며, 도 4는 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 및 색인정보의 생성 과정을 설명하기 위해 도시된 도면이다.
이하에서는 도 2 내지 도 4를 참조하여 본 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법을 설명하기로 한다.
본 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법은, 버퍼 풀을 미리 생성하여, 메모리 할당 과정을 생략하고, 애플리케이션에서 생성된 버퍼 풀에 직접 접근이 가능하도록 하여, 데이터 패킷을 처리하기 위한 메모리 복사 과정이 한 번에 처리될 수 있도록 하는 것이다.
이를 위하여, 데이터 페이지의 버퍼 풀 관리 방법을 수행하는 시스템은, 데이터 획득부(100), 버퍼 풀 관리부(200), 메모리 인덱스 관리부(300) 및 저장부(400)로 구성될 수 있다.
데이터 획득부(100)는, 네트워크 장치로부터 데이터를 획득하기 위해 마련된다.
버퍼 풀 관리부(200)는, 병렬로 구성되는 복수의 버퍼를 포함하는 버퍼 풀을 생성하고, 데이터 획득부(100)를 통해 특정 데이터가 획득되면, 복수의 버퍼 중 하나 이상의 버퍼에 획득된 특정 데이터가 저장되도록 할 수 있으며, 이를 위해, 버퍼 풀 관리 모듈(210) 및 링크 관리 모듈(220)로 구성될 수 있다.
여기서, 생성된 버퍼 풀은, 도 3에 도시된 바와 같이 운영체제의 커널 영역과 사용자 영역에서 모두 직접 접근 가능한 구조로 생성되어, 메모리 할당 과정 없이, 한 번의 메모리 복사 과정만으로 애플리케이션에서 버퍼 풀에 포함된 버퍼에 접근할 수 있다.
구체적으로, 버퍼 풀 관리 모듈(210)은, 도 4에 도시된 바와 같이 병렬로 구성되는 복수의 버퍼를 포함하는 버퍼 풀을 생성할 수 있으며, 데이터 획득부(100)를 통해 특정 데이터가 획득되면, 복수의 버퍼 중 하나 이상의 버퍼에 획득된 특정 데이터가 저장되도록 할 수 있다.
또한, 버퍼 풀 관리 모듈(210)은, 특정 이벤트의 발생 여부를 판단하여, 특정 이벤트가 발생된 것으로 판단되면, 데이터가 저장된 복수의 버퍼 중 기설정된 조건에 해당하는 버퍼에 저장된 데이터가 제거되도록 할 수 있으며, 데이터가 제거된 버퍼가 버퍼 풀로 반납되도록 할 수 있다. 이와 관련된 상세한 설명은 도 5 내지 도 6을 참조하여 후술하기로 한다.
한편, 링크 관리 모듈(220)은 버퍼 풀 관리 모듈(210)에 의해, 버퍼 풀이 생성되면, 생성된 버퍼 풀에 포함된 복수의 버퍼가 상호 간에 연결 상태를 유지하도록 하고, 버퍼 풀 관리 모듈(210)에 의해, 복수의 버퍼 중 하나 이상의 버퍼에 특정 데이터가 저장되면, 링크 관리 모듈(220)은,
버퍼 풀에 포함된 복수의 버퍼 중에 데이터를 저장하지 않은 버퍼끼리만 상호 간에 연결 상태를 유지하도록 하고, 데이터를 저장한 버퍼의 연결 상태를 해제하여, 다른 버퍼들과의 연결에서 분리해 낼 수 있다.
즉, 링크 관리 모듈(220)은, 특정 데이터가 저장된 하나 이상의 버퍼들끼리만 연결 상태를 유지하도록 하고, 특정 데이터를 저장하지 않은 다른 버퍼들과의 연결 상태를 해제하도록 할 수 있다.
여기서, 버퍼 풀 관리 모듈(210)은, 동일한 크기의 버퍼를 복수로 생성하고, 특정 데이터의 용량에 따라 특정 데이터를 저장하기 위한 버퍼의 사용 개수를 결정할 수 있다.
예를 들면, 버퍼 풀 관리 모듈(210)은, 2MB 용량의 버퍼가 복수로 구성된 버퍼 풀을 생성하고, 3.5MB 용량의 데이터를 저장하는 경우, 2MB 용량의 버퍼 두 개를 사용하여 3.5MB 용량의 데이터를 저장할 수 있으며, 이때, 링크 관리 모듈(220)은, 2MB 용량의 버퍼 두 개가 서로 연결 상태를 유지하도록 하되, 다른 2MB 용량의 버퍼들과의 연결 상태는 해제되도록 함으로써, 2MB 용량의 버퍼 두 개가 3.5MB 용량의 데이터를 저장가능한 4MB 용량의 버퍼 역할을 수행할 수 있도록 한다.
메모리 인덱스 관리부(300)는, 병렬로 구성되는 복수의 버퍼에 대한 각각의 색인정보를 생성하여, 메모리 인덱스에 저장할 수 있다.
또한, 메모리 인덱스 관리부(300)는, 복수의 버퍼 중 특정 버퍼가 사용되거나 반납되는 경우, 사용되거나 반납되는 버퍼에 대한 색인정보를 갱신하여, 병렬로 구성된 복수의 버퍼가 효율적으로 사용되도록 할 수 있다.
구체적으로, 메모리 인덱스 관리부(300)는, 버퍼 풀이 생성되어, 생성된 버퍼 풀에 포함되는 복수의 버퍼에 대한 각각의 색인정보를 생성하여, 메모리 인덱스에 저장하고, 복수의 버퍼 중 하나 이상의 버퍼에 특정 데이터가 저장되면, 특정 데이터가 저장된 하나 이상의 버퍼에 대한 색인정보를 1차 갱신할 수 있으며, 이후에 버퍼 풀 관리부(200)에 의해, 색인정보가 1차 갱신된 하나 이상의 버퍼에 저장된 데이터가 제거되면, 데이터가 제거된 하나 이상의 버퍼에 대한 색인정보를 2차 갱신할 수 있다.
저장부(400)는, 데이터를 저장하기 위해 마련된다. 구체적으로 저장부(400)는, 자기 테이프, 플로피 디스크, 광디스크, 하드 디스크 드라이브, 플래시 메모리, 솔리드 스테이트 디스크(SSD)와 같이 데이터를 저장할 수 있는 저장 수단으로 구현될 수 있다.
도 5a 내지 도 5b는 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀에 포함된 복수의 버퍼의 사용 및 반납 과정을 설명하기 위해 도시된 도면이며, 도 6a 내지 도 6c는 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀에 포함된 복수의 버퍼의 사용 및 반납 과정을 더욱 상세히 설명하기 위해 도시된 도면이다.
이하에서는 도 5a 내지 도 6c를 참조하여, 본 실시예에 따른 데이터 페이지의 버퍼 풀에 포함된 버퍼의 사용 및 반납 과정을 더욱 상세히 설명하기로 한다.
전술한 바와 같이 버퍼 풀 관리 모듈(210)은, 데이터 획득부(100)를 통해 특정 데이터가 획득되면, 도 5a에 도시된 바와 같이 복수의 버퍼 중 하나 이상의 버퍼에 획득된 특정 데이터가 저장되도록 할 수 있으며, 특정 이벤트의 발생 여부를 판단하여, 특정 이벤트가 발생된 것으로 판단되면, 도 5b에 도시된 바와 같이 데이터가 저장된 복수의 버퍼 중 기설정된 조건에 해당하는 버퍼에 저장된 데이터가 제거되도록 할 수 있으며, 데이터가 제거된 버퍼가 버퍼 풀로 반납되도록 할 수 있다.
이때, 버퍼 풀 관리 모듈(210)은, 데이터가 제거된 버퍼가 상기 버퍼 풀로 반납되도록 하되, 복수의 버퍼를 선입선출 방식으로 데이터를 저장하는데 이용하기 위해, 반납되는 버퍼가 버퍼 풀에 저장된 복수의 버퍼 중 가장 뒷순위로 이용되는 버퍼 풀의 가장 끝단에 위치하도록 할 수 있다.
한편, 링크 관리 모듈(220)은 버퍼 풀이 생성되면, 생성된 버퍼 풀에 포함된 복수의 버퍼가 상호 간에 연결 상태를 유지하도록 하고, 복수의 버퍼 중 하나 이상의 버퍼에 특정 데이터가 저장되면, 특정 데이터가 저장된 하나 이상의 버퍼가 함께 특정 데이터를 저장하는 버퍼와의 연결 상태만 유지하도록 하고, 함께 특정 데이터를 저장하는 버퍼를 제외한 다른 버퍼와의 연결 상태가 해제되도록 하고, 버퍼가 반납되는 경우, 반납되어 가장 끝단에 위치하는 버퍼가 버퍼 풀에 저장된 복수의 버퍼와 연결 상태를 복구하도록 할 수 있어, 병렬로 구성되는 복수의 버퍼 상호 간에 연결 상태를 데이터 패킷의 저장 여부에 따라 개별적으로 관리하여, 버퍼의 조각이 발생되는 것을 방지할 수 있다.
그리고 버퍼 풀 관리 모듈(210)은, 애플리케이션으로부터 특정 데이터가 제거되도록 하는 명령이 수신되는 경우, 제1 이벤트가 발생된 것으로 판단하여, 복수의 버퍼에 저장된 데이터 중 애플리케이션이 지정한 특정 데이터가 삭제되거나 저장부(400)에 전달되어 이동되고, 애플리케이션이 지정한 특정 데이터가 버퍼에서는 제거되도록 할 수 있다.
또한, 버퍼 풀 관리 모듈(210)은 도 6a에 도시된 바와 같이 각각의 데이터가 저장된 버퍼를 데이터의 저장 순서에 따라 배열하여, 버퍼 풀이 임계치에 도달하는 경우, 저장된 기간이 가장 오래된 데이터부터 제거하여 버퍼 풀의 저장 용량을 확보할 수 있다.
구체적으로 예를 들면, 버퍼 풀 관리 모듈(210)은, 도 6b에 도시된 바와 같이 버퍼 풀이 임계치에 도달한 것으로 판단되는 경우, 제2 이벤트가 발생된 것으로 판단하여, 복수의 버퍼에 저장된 데이터 중 저장된 기간이 가장 오래된 데이터가 저장부(400)에 전달되어 이동되고, 전달되어 이동된 데이터가 버퍼에서는 제거되도록 할 수 있다.
또 다른 예를 들면, 버퍼 풀 관리 모듈(210)은, 도 6c에 도시된 바와 같이 버퍼 풀이 임계치에 도달한 상태에서, 애플리케이션을 통해, 저장부(400)에 저장된 제1 데이터와 버퍼에 저장된 데이터 간의 스와핑(swapping)이 요청되면, 버퍼에 저장된 데이터 중 저장된 기간이 가장 오래된 제2 데이터를 선별하여, 선별된 제2 데이터가 저장부(400)에 전달되고, 제2 데이터가 저장된 버퍼에서는 제2 데이터가 제거되도록 하여, 저장부(400)에 저장된 제1 데이터가 제2 데이터가 제거된 버퍼에 저장되도록 할 수 있다. 이를 통해, 제1 데이터와 제2 데이터가 서로 저장된 메모리가 스와핑 되도록 하여, 제1 데이테에 대한 처리가 가능하도록 할 수 있다.
또 다른 예를 들면, 버퍼 풀 관리 모듈(210)은, 기설정된 기간이 도래하면, 별도의 명령이 수신되지 않는 경우에도, 제3 이벤트가 발생된 것으로 판단하여, 복수의 버퍼에 저장된 데이터 중 저장된 기간이 가장 오래된 데이터가 저장부(400)에 전달되어 이동되고, 전달되어 이동된 데이터가 버퍼에서는 제거되도록 하는 과정이 버퍼 풀에 존재하는 전체 버퍼 중 데이터를 저장하지 않은 버퍼가 기설정된 비율만큼 존재한다고 판단될 때까지 반복되어 수행됨으로써, 버퍼 풀에 존재하는 전체 버퍼 중 데이터를 저장하지 않은 버퍼가 기설정된 비율이상 존재하도록 할 수 있다.
도 7은 본 발명의 일 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법을 설명하기 위해 도시된 도면이다.
본 실시예에 따른 데이터 페이지의 버퍼 풀 관리 방법은, 버퍼 풀 관리부(200)에 의해, 복수의 버퍼가 포함된 버퍼 풀 생성이 생성되면(S710), 복수의 버퍼에 대한 정보가 메모리 인덱스 관리부(300)로 전달되어(S715), 메모리 인덱스 관리부(300)가 복수의 버퍼에 대한 각각의 색인정보를 생성하여(S720), 메모리 인덱스에 저장할 수 있다(S725).
그리고 버퍼 풀 관리부(200)는, 특정 데이터가 획득되면(S730-Yes), 복수의 버퍼 중 하나 이상의 버퍼에 획득된 특정 데이터가 저장되도록 할 수 있으며(S735), 특정 데이터가 하나 이상의 버퍼에 저장되면, 특정 데이터가 저장된 버퍼에 대한 정보를 메모리 인덱스 관리부(300)에 전달하게 되며(S740), 메모리 인덱스 관리부(300)는, 데이터가 저장된 버퍼에 대한 정보를 수신하여, 특정 데이터가 저장된 하나 이상의 버퍼에 대한 색인정보를 1차 갱신할 수 있다(S745).
또한, 버퍼 풀 관리 모듈(210)은, 특정 이벤트의 발생 여부를 판단하여, 특정 이벤트가 발생된 것으로 판단되면(S750-Yes), 데이터가 저장된 복수의 버퍼 중 기설정된 조건에 해당하는 버퍼에 저장된 데이터가 제거되도록 할 수 있으며(S755), 데이터가 제거된 버퍼가 버퍼 풀로 반납되도록 할 수 있으며(S760), 데이터가 제거된 버퍼가 버퍼 풀에 반납되면, 데이터가 제거된 버퍼에 대한 정보를 메모리 인덱스 관리부(300)에 전달하게 되며(S765), 메모리 인덱스 관리부(300)는, 데이터가 제거된 버퍼에 대한 정보를 수신하여, 데이터가 제거된 하나 이상의 버퍼에 대한 색인정보를 2차 갱신할 수 있다(S770).
이에 의해, 버퍼 풀을 미리 생성하여, 메모리 할당 과정을 생략하고, 애플리케이션에서 생성된 버퍼 풀에 직접 접근이 가능하도록 하여, 메모리 복사 과정이 한 번에 처리될 수 있도록 할 수 있어, 메모리 할당 과정에서 발생되는 과부하의 부담을 절감시킬 수 있다. 더불어, 병렬로 구성되는 복수의 버퍼, 상호 간에 연결 상태를 데이터 패킷의 저장 여부에 따라 개별적으로 관리하여, 버퍼의 조각이 발생되는 것을 방지할 수 있다.
한편, 본 실시예에 따른 장치의 기능 및 방법을 수행하게 하는 컴퓨터 프로그램을 수록한 컴퓨터로 읽을 수 있는 기록매체에도 본 발명의 기술적 사상이 적용될 수 있음은 물론이다. 또한, 본 발명의 다양한 실시예에 따른 기술적 사상은 컴퓨터로 읽을 수 있는 기록매체에 기록된 컴퓨터로 읽을 수 있는 프로그래밍 언어 코드 형태로 구현될 수도 있다. 컴퓨터로 읽을 수 있는 기록매체는 컴퓨터에 의해 읽을 수 있고 데이터를 저장할 수 있는 어떤 데이터 저장 장치이더라도 가능하다.
예를 들어, 컴퓨터로 읽을 수 있는 기록매체는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광디스크, 하드 디스크 드라이브, 플래시 메모리, 솔리드 스테이트 디스크(SSD) 등이 될 수 있음은 물론이다.
또한, 컴퓨터로 읽을 수 있는 기록매체에 저장된 컴퓨터로 읽을 수 있는 코드 또는 프로그램은 컴퓨터 간에 연결된 네트워크를 통해 전송될 수도 있다.
이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 데이터 획득부
200 : 버퍼 풀 관리부
210 : 버퍼 풀 관리 모듈
220 : 링크 관리 모듈
300 : 메모리 인덱스 관리부
400 : 저장부

Claims (8)

  1. 버퍼 풀 관리부가 병렬로 구성되는 복수의 버퍼를 포함하는 버퍼 풀을 생성하는 단계;
    메모리 인덱스 관리부가 상기 병렬로 구성되는 복수의 버퍼에 대한 각각의 색인정보를 생성하여 메모리 인덱스에 저장하는 단계;
    데이터 획득부를 통해, 특정 데이터가 획득되면, 상기 버퍼 풀 관리부에 의해, 상기 복수의 버퍼 중 하나 이상의 버퍼에 상기 특정 데이터가 저장되도록 하는 단계;
    상기 메모리 인덱스 관리부가 상기 특정 데이터가 저장된 하나 이상의 버퍼에 대한 색인정보를 1차 갱신하는 단계;
    상기 버퍼 풀 관리부에 의해, 이벤트가 발생된 것으로 판단되면, 상기 복수의 버퍼 중 기설정된 조건에 해당하는 버퍼에 저장된 데이터가 제거되도록 하는 단계;
    상기 버퍼 풀 관리부에 의해, 상기 데이터가 제거된 버퍼가 상기 버퍼 풀로 반납되도록 하는 단계; 및
    상기 메모리 인덱스 관리부가 상기 반납된 버퍼에 대한 색인정보를 2차 갱신하는 단계;를 포함하며,
    상기 버퍼 풀 관리부는,
    버퍼 풀 관리 모듈과 링크 관리 모듈을 포함하고,
    상기 생성 단계는,
    상기 버퍼 풀 관리 모듈에 의해, 상기 버퍼 풀이 생성되면, 상기 생성된 버퍼 풀에 포함된 복수의 버퍼가 상호 간에 연결 상태를 유지하도록 하고,
    상기 데이터의 저장 단계는,
    상기 버퍼 풀 관리 모듈에 의해, 상기 복수의 버퍼 중 하나 이상의 버퍼에 상기 특정 데이터가 저장되도록 하되, 상기 링크 관리 모듈에 의해, 상기 특정 데이터가 저장된 버퍼가 상기 특정 데이터를 저장하기 위해 함께 사용되는 버퍼와의 연결 생태만 유지하도록 하고, 상기 함께 사용되는 버퍼를 제외한 다른 버퍼와의 연결 상태를 해제하도록 하는 것을 특징으로 하는 데이터 페이지의 버퍼 풀 관리 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 제거 단계는,
    상기 버퍼 풀 관리 모듈에 의해, 기설정된 기간이 도래하거나 또는 상기 버퍼 풀이 임계치에 도달한 것으로 판단되는 경우, 상기 이벤트가 발생된 것으로 판단되는 것을 특징으로 하는 데이터 페이지의 버퍼 풀 관리 방법.
  5. 제4항에 있어서,
    상기 제거 단계는,
    상기 버퍼 풀 관리 모듈에 의해, 상기 버퍼 풀이 임계치에 도달한 것으로 판단되는 경우, 상기 복수의 버퍼에 저장된 데이터 중 가장 오래된 데이터가 저장부에 전달되고, 상기 전달된 데이터가 상기 버퍼에서 제거되도록 하는 것을 특징으로 하는 데이터 페이지의 버퍼 풀 관리 방법.
  6. 제4항에 있어서,
    상기 제거 단계는,
    상기 버퍼 풀 관리 모듈에 의해, 상기 기설정된 기간이 도래한 것으로 판단되면, 상기 버퍼 풀에 존재하는 전체 버퍼 중 데이터를 저장하지 않은 버퍼가 기설정된 비율이상 존재하도록, 상기 복수의 버퍼에 저장된 데이터 중 가장 오래된 데이터가 저장부에 전달되고, 상기 전달된 데이터가 상기 버퍼에서 제거되도록 하는 과정이 상기 전체 버퍼 중 상기 데이터를 저장하지 않은 버퍼가 기설정된 비율만큼 존재한다고 판단될 때까지 반복되어 수행되도록 하는 것을 특징으로 하는 데이터 페이지의 버퍼 풀 관리 방법.
  7. 제4항에 있어서,
    상기 버퍼에 대한 색인정보가 1차 갱신된 이후, 상기 버퍼 풀이 임계치에 도달한 것으로 판단되는 상태에서, 애플리케이션을 통해, 저장부에 저장된 제1 데이터와 버퍼에 저장된 데이터 간의 스와핑 명령이 상기 버퍼 풀 관리부에 요청되면, 상기 버퍼 풀 관리부에 의해, 상기 버퍼에 저장된 데이터 중 가장 오래된 제2 데이터가 상기 저장부에 전달되고, 상기 제2 데이터가 상기 버퍼에서는 제거되도록 하여, 상기 제1 데이터가 상기 제2 데이터가 제거된 버퍼에 저장되도록 함으로써, 상기 제1 데이터와 상기 제2 데이터가 상호 간에 스와핑 되도록 하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 페이지의 버퍼 풀 관리 방법.
  8. 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 반납 단계는,
    상기 버퍼 풀 관리 모듈에 의해, 상기 데이터가 제거된 버퍼가 상기 버퍼 풀로 반납되도록 하되, 상기 버퍼 풀 관리 모듈이 상기 복수의 버퍼를 선입선출 방식으로 상기 데이터를 저장하는데 이용하기 위해, 상기 반납되는 버퍼가 상기 버퍼 풀에 저장된 복수의 버퍼 중 가장 뒷순위로 이용되는 상기 버퍼 풀의 가장 끝단에 위치하도록 하고,
    상기 링크 관리 모듈에 의해, 상기 반납되어 가장 끝단에 위치하는 버퍼가 상기 버퍼 풀에 저장된 복수의 버퍼와 연결 상태를 복구하도록 하는 것을 특징으로 하는 데이터 페이지의 버퍼 풀 관리 방법.
KR1020180010335A 2018-01-29 2018-01-29 데이터 페이지의 버퍼 풀 관리 방법 KR101851948B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180010335A KR101851948B1 (ko) 2018-01-29 2018-01-29 데이터 페이지의 버퍼 풀 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180010335A KR101851948B1 (ko) 2018-01-29 2018-01-29 데이터 페이지의 버퍼 풀 관리 방법

Publications (1)

Publication Number Publication Date
KR101851948B1 true KR101851948B1 (ko) 2018-04-25

Family

ID=62088729

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180010335A KR101851948B1 (ko) 2018-01-29 2018-01-29 데이터 페이지의 버퍼 풀 관리 방법

Country Status (1)

Country Link
KR (1) KR101851948B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139284A1 (en) * 2003-01-09 2004-07-15 Clayton Shawn Adam Memory management
US8176233B1 (en) 2008-07-17 2012-05-08 Virident Systems Inc. Using non-volatile memory resources to enable a virtual buffer pool for a database application
KR101481633B1 (ko) 2013-07-03 2015-01-15 아주대학교산학협력단 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139284A1 (en) * 2003-01-09 2004-07-15 Clayton Shawn Adam Memory management
US8176233B1 (en) 2008-07-17 2012-05-08 Virident Systems Inc. Using non-volatile memory resources to enable a virtual buffer pool for a database application
KR101481633B1 (ko) 2013-07-03 2015-01-15 아주대학교산학협력단 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법

Similar Documents

Publication Publication Date Title
US8775755B2 (en) Peer-to-peer transcendent memory
JP5999645B2 (ja) ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
KR102093523B1 (ko) 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법
US9665493B2 (en) Increased cache performance with multi-level queues of complete tracks
US10073649B2 (en) Storing metadata
US11194710B2 (en) Garbage collection—automatic data placement
JP6192660B2 (ja) ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置
US9983826B2 (en) Data storage device deferred secure delete
US20160011788A1 (en) Storage control apparatus and storage control method
KR20170084675A (ko) 메모리 내의 데이터를 액세스하는 방법과 이를 이용하는 메모리 장치
CN105574008B (zh) 应用于分布式文件系统的任务调度方法和设备
KR101851948B1 (ko) 데이터 페이지의 버퍼 풀 관리 방법
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
US9858204B2 (en) Cache device, cache system, and cache method
JP4997858B2 (ja) データ記録装置およびデータ記録プログラム
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
US11003578B2 (en) Method and system for parallel mark processing
US11461225B2 (en) Storage device, control method of storage device, and storage medium
US11288238B2 (en) Methods and systems for logging data transactions and managing hash tables
US20150254187A1 (en) Storage device, information processing apparatus, and cache control program
US20210191851A1 (en) System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive
JP2011039790A (ja) 仮想マシンイメージ転送装置及び方法及びプログラム
JP6640940B2 (ja) メモリシステムの制御方法
KR101663425B1 (ko) 저장장치의 성능 및 내구성 향상을 위해 다중 오픈 블록을 관리하는 메모리 저장 장치 및 방법
KR101691286B1 (ko) 입출력 정보 공유 방법, 상기 방법을 수행하는 저장 장치 및 호스트 장치

Legal Events

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