KR20150083276A - 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템 - Google Patents

대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템 Download PDF

Info

Publication number
KR20150083276A
KR20150083276A KR1020140002836A KR20140002836A KR20150083276A KR 20150083276 A KR20150083276 A KR 20150083276A KR 1020140002836 A KR1020140002836 A KR 1020140002836A KR 20140002836 A KR20140002836 A KR 20140002836A KR 20150083276 A KR20150083276 A KR 20150083276A
Authority
KR
South Korea
Prior art keywords
memory
mem
data
server
remote
Prior art date
Application number
KR1020140002836A
Other languages
English (en)
Other versions
KR101793963B1 (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 한국전자통신연구원
Priority to KR1020140002836A priority Critical patent/KR101793963B1/ko
Publication of KR20150083276A publication Critical patent/KR20150083276A/ko
Application granted granted Critical
Publication of KR101793963B1 publication Critical patent/KR101793963B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템에 관한 것으로서, 본 발명에 따른 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법은 복수의 컴퓨팅 노드들에 장착된 메모리를 바탕으로 대용량 데이터 처리를 지원하는 원격 메모리 시스템에서 원격 메모리 데이터 손실에 따른 응용 프로그램의 중지를 방지하거나 실행 중지 횟수를 줄일 수 있는 대용량 메모리 기반 데이터 처리를 한다. 본 발명에 따르면, 원격 메모리에 데이터를 쓰고 읽는 경우에 원격 메모리를 제공하는 컴퓨팅 노드 및 원격 메모리 서버의 오류 발생 시에도 응용 프로그램이 중단되지 않고 지속 실행되도록 할 수 있고, 긴 실행 시간이나 대용량 메모리를 요구하는 응용 프로그램의 안정적인 실행을 지원하여, 원격 메모리 시스템의 활용을 증대시킬 수 있다.

Description

대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템{Remote Memory Data Management Method and System for Data Processing Based on Mass Memory}
본 발명은 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템에 관한 것으로서, 보다 구체적으로는 복수의 컴퓨터 시스템의 물리적 메모리를 바탕으로 대용량 데이터 처리시 시스템 오류에 따른 데이터 손실을 줄이기 위한 데이터 관리 방법 및 시스템에 관한 것이다.
최근 들어 InfiniBand1, Quadrics2와 같은 네트워크 기술의 발달로 컴퓨팅 노드 간의 통신 시간이 단축되면서, 클러스터를 구성하는 원격 컴퓨팅 노드의 메모리를 활용하여 데이터를 고속 처리하는 원격 메모리 시스템(Remote Memory System, RMS)에 대한 연구가 활발하게 진행되고 있다.
원격 메모리시스템은 컴퓨팅 노드에 장착된 물리 메모리 크기보다 더 큰 데이터 구조를 갖는 응용 프로그램을 실행시킬 수 있고, 성능 향상을 목적으로 대용량 데이터를 메모리 기반으로 처리한다.
이러한 원격 메모리 시스템은 보통 원격 메모리(Remote Memory)를 지역 메모리(Local Memory)로 확장하거나 스와핑 장치(Swapping Device)로 이용할 수 있도록 개발되었으며, 도 1에 도시된 바와 같이 원격 메모리를 요구하는 mem_client와, 물리 메모리의 일부를 mem-client에게 제공하는 mem_server로 구성된다.
mem_client는 대용량의 메모리를 필요로 하는 응용 프로그램이 실행 중인 컴퓨팅 노드(노드 0)에서 구동되며, mem_server는 물리 메모리를 제공하는 1개 이상의 컴퓨팅 노드(노드 1, 노드 2) 각각에서 구동된다.
mem_client는 지역 컴퓨팅 노드의 메모리 부족시 지역 메모리 내에 로드된 데이터를 원격 컴퓨팅 노드의 메모리에 전송하여 응용 프로그램이 사용할 메모리 공간을 생성한다.
한편, mem_client는 응용 프로그램이 지역 메모리에 없는 데이터 요청시, 원격 컴퓨팅 노드(노드 1 혹은 노드 2)의 메모리로부터 데이터를 지역 메모리로 가져와 응용 프로그램에 제공한다(A. Samih, R. Wang, C. Maciocco, T.-Y. C. Tai and Y. Solihn, “A Collaborative Memory System for High-Performance and Cost-Effective Clustered Architectures”, Workshop on Architecture and Systems for Big Data, 2011 참조.)
현재, 원격 메모리 시스템에 대한 연구는 클러스터를 구성하는 컴퓨팅 노드들의 원격 메모리를 발견(detecting)하고 이를 활용(utilizing)함으로써 데이터 처리 응용 프로그램의 성능을 향상시키는데 집중되어 왔기 때문에, 원격 메모리를 지원하는 컴퓨팅 노드들에 장애가 발생할 경우 데이터 손실로 응용 프로그램의 실행 중지가 불가피하다 라는 문제점이 있다.
따라서, 차세대 시퀀싱(Next Generation Sequencing) 서열 데이터 정렬을 위한 BFAST, BWA와 같이 많은 메모리와 장시간의 실행 시간을 요구하는 응용 프로그램을 원격 메모리 시스템에서 실행시키기 위해서는 시스템 및 컴퓨팅 노드의 오류에 따른 원격 메모리 데이터 손실을 줄일 수 있는 데이터 관리 방법이 필요하다.
본 발명은 상기와 같은 필요에 의해 창출된 것으로서, 복수의 컴퓨팅 노드들에 장착된 메모리를 바탕으로 대용량 데이터 처리를 지원하는 원격 메모리 시스템에서 원격 메모리 데이터 손실에 따른 응용 프로그램의 중지를 방지하거나 실행 중지 횟수를 줄일 수 있는 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템을 제공하는 데 그 목적이 있다.
전술한 목적을 달성하기 위하여, 본 발명의 일면에 따른 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법은 응용 프로그램의 요청에 따라 메모리 할당시 해당 컴퓨팅 노드의 메모리가 부족한 경우, 메모리 클라이언트가 지역 메모리에 상주해 있는 데이터 중 제거할 데이터(victim)를 선정하여 이를 원격 컴퓨팅 노드의 메모리 서버에 전송하는 단계; 제거할 데이터를 전송받은 원격 컴퓨팅 노드의 메모리 서버가 이를 메모리에 로드(저장)하고, 이에 대한 로그를 생성하여 다른 원격 컴퓨팅 노드의 메모리 서버에 전송하는 단계; 로그를 전송받은 상기 다른 원격 컴퓨팅 노드의 메모리 서버가 로그를 버퍼에 저장하는 단계; 및 상기 메모리 클라이언트가 상기 원격 컴퓨팅 노드의 메모리에 제거할 데이터를 이동시키고, 해당 메모리를 컴퓨팅 노드에 반환한 후 운영체제(커널)를 통해 새로운 메모리를 할당받아 상기 응용 프로그램에 반환하는 단계를 포함한다.
본 발명에 따르면, 원격 메모리에 데이터를 쓰고 읽는 경우에 원격 메모리를 제공하는 컴퓨팅 노드 및 원격 메모리 서버의 오류 발생 시에도 응용 프로그램이 중단되지 않고 지속 실행되도록 할 수 있다.
따라서, 긴 실행 시간이나 대용량 메모리를 요구하는 응용 프로그램의 안정적인 실행을 지원하여, 원격 메모리 시스템의 활용을 증대시킬 수 있다.
원격 메모리를 제공하는 서버에 대한 데이터 쓰기 읽기에 대한 로그를 다른 원격 컴퓨팅 노드의 메모리에 저장하고 비동기적으로 공용 파일 시스템에 저장함으로써, 로그 저장에 따른 추가 시간을 최소화하고 메모리 복사본을 유지하는 것보다 적은 메모리를 사용하면서 복구를 위한 데이터 이중화가 가능하다.
원격 메모리 제공 서버의 오류 발생 시, 이에 대한 로그가 공용 파일 시스템에 저장되어 있어 메모리 사용량이 적은 원격 메모리 서버를 선정하여 복구 및 서비스 재개가 가능하다.
특히 원격 메모리 서버 간의 메모리 서비스 부하 분산에 효과가 있다.
원격 메모리 서버의 로그는 다수의 다른 원격 메모리 서버들에게 분산 저장되며, 원격 메모리 서버의 오류 발생 시 로그 분석을 통한 메모리 데이터 복구 및 서비스를 다수의 원격 메모리 서버들이 병렬로 수행하여, 데이터 복구 시간이 짧다.
도 1은 종래의 원격 메모리 시스템의 구조를 설명하기 위한 도면.
도 2는 본 발명의 일 실시예에 따른 원격 메모리 시스템의 구조를 설명하기 위한 도면.
도 3은 지역 메모리 부족시 메모리 할당 흐름을 설명하기 위함 도면.
도 4는 원격 메모리 데이터 요청 흐름을 설명하기 위함 도면.
도 5는 로그 데이터 구조를 설명하기 위한 도면.
도 6은 원격 메모리 제공 서버의 오류시 데이터 요청 흐름을 설명하기 위한 도면.
도 7은 로그 서버의 오류 발생시 원격 메모리 시스템의 내부 동작 흐름을 설명하기 위한 도면.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 용이하게 이해할 수 있도록 제공되는 것이며, 본 발명은 청구항의 기재에 의해 정의된다. 한편, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자 이외의 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 발명은 복수의 컴퓨팅 노드들로 구성되는 원격 메모리 시스템에서 원격 메모리 데이터를 관리하는 방법에 관한 것으로서, 본 발명에 따른 원격 메모리 시스템은 응용 레벨과 커널 레벨(운영 체제 레벨)에서 구현 가능하며, 본 발명에 따른 원격 메모리 시스템의 구성을 설명하는 데 있어, 요지를 흐릴 수 있는 기존 원격 메모리 시스템의 구체적인 설명은 생략하도록 한다.
이하, 도 2 내지 도 7을 참조하여 본 발명의 일 실시예에 따른 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법을 설명한다. 도 2는 본 발명의 일 실시예에 따른 원격 메모리 시스템의 구조를 설명하기 위한 도면이고, 도 3은 지역 메모리 부족시 메모리 할당 흐름을 설명하기 위함 도면이며, 도 4는 원격 메모리 데이터 요청 흐름을 설명하기 위함 도면이고, 도 5는 로그 데이터 구조를 설명하기 위한 도면이며, 도 6은 원격 메모리 제공 서버의 오류시 데이터 요청 흐름을 설명하기 위한 도면이고, 도 7은 로그 서버의 오류 발생시 원격 메모리 시스템의 내부 동작 흐름을 설명하기 위한 도면이다.
도 2에 도시된 바와 같이, 본 발명의 원격 메모리 시스템은 노드 0(100), 노드 1(200), 노드 2(300) 및 노드 3(400)을 포함한다.
노드 0(100)은 메모리 클라이언트(mem_client, 110) 및 응용프로그램(application, 120)을 포함하고, 노드 1(200)은 메모리 서버 1(mem_server1, 210)을 포함하며, 노드 2(300)는 메모리 서버 2(mem_server2, 310)를 포함하고, 노드 3(400)은 메모리 코디네이터(mem_coord, 410)를 포함한다.
mem_client(110)는 원격 메모리를 사용한다.
mem_server 1(210) 및 mem_server 2(310)는 물리적인 메모리를 원격 메모리로 제공한다.
mem_coord(410)는 mem_client(110)와 연동 중인 메모리 서버 정보, 메모리 서버의 상태를 포함한 메타 정보, 로그 저장에 따른 메모리 서버 간의 관계 정보를 관리한다.
메모리 서버는 mem_client(110)가 전송하는 데이터를 지역 메모리에 로드하고, mem_client(110)의 요청에 따라 메모리에 로드된 데이터를 반환한다.
또한, 메모리 서버는 mem_client(110)의 데이터 전송 요청 처리시 로그를 생성하여 이를 다른 컴퓨팅 노드의 메모리 서버에 전송한다.
예컨대, mem_server 1(210)은 mem_client(110)의 데이터 전송 요청 처리시 로그를 생성하여 이를 다른 컴퓨팅 노드(300)의 mem_server 2(310)에 전송한다.
전송된 로그는 비동기적으로 공용 파일 시스템에 저장된다.
이때 하나의 메모리 서버의 로그는 연동되는 mem_client(110) 혹은 응용 프로그램(120)을 기준으로 분류되어 1개 이상의 다른 컴퓨팅 노드의 메모리 서버에 분산 저장될 수 있다.
도 3에 도시된 바와 같이, 본 발명의 메모리 할당 방법은 응용 프로그램(application, 120)이 malloc() 등의 호출을 통해 메모리 할당을 요청할 경우(S300), mem_client(110)는 메모리가 부족한지 여부를 판단한다.
여기서 메모리의 부족 여부의 판단은 메모리 데이터의 스와핑(swap-out)이 발생하거나 이미 제한된 크기만큼 메모리가 사용 중인 경우 등으로 판단할 수 있다.
판단 결과, 메모리가 부족하지 않은 경우, 해당 컴퓨팅 노드의 메모리를 할당하고, 메모리가 부족한 경우, mem_client(110)는 지역 메모리에 상주해 있는 데이터 중 제거할 데이터(victim)를 선정하며, 이를 원격 컴퓨팅 노드의 메모리 서버, 즉 mem_server1(210)에 전송한다(S301).
이때, victim 선정은 FIFO(First In First Out), LRU(Least Recently Used) 등의 다양한 알고리즘을 바탕으로 결정될 수 있고, Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버를 선정하는 방법 또한 다양하다.
예컨대, mem_client(110) 구동시 사용자가 설정한 메모리 서버를 Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버로 결정할 수 있고, mem_coord(410)에 Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버를 결정하도록 요청할 수 있으며, mem_client(110)가 mem_coord(410)로부터 메모리 서버들의 정보를 얻어와 이 정보를 토대로 Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버를 결정할 수도 있다.
여기서 Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버의 선정 기준은 mem_client(110)와의 짧은 데이터 전송 시간을 포함한다.
mem_client(110)로부터 victim 데이터를 전송받은 mem_server1(210)는 이를 메모리에 로드(저장)하고(S302), 이에 대한 로그를 생성하여 다른 원격 컴퓨팅 노드(300)의 mem_server2(S310)에 전송한다(S303).
로그를 전송받은 원격 컴퓨팅 노드(300)의 mem_server2(310)는 로그를 버퍼에 저장한다(S304).
원격 컴퓨팅 노드(200)의 메모리에 데이터를 이동시킨 mem_client(110)는 해당 메모리를 컴퓨팅 노드에 반환한 후, 운영체제(커널)를 통해 새로운 메모리를 할당받아 응용 프로그램(120)에게 그 메모리 주소를 반환한다(S305, S306).
한편, 원격 컴퓨팅 노드(300)의 mem_server2(310)는 비동기적으로 메모리 버퍼에 저장된 로그를 공용 파일 시스템에 저장하고 버퍼에서 제거한다.
이러한 로그 저장은 로그가 입력된 후 곧바로 수행되거나, 일정 시간 주기 혹은 버퍼가 특정 임계치만큼 차는 경우와 같이 조건에 맞춰 수행될 수 있다.
한편, 로그 파일은 일정 주기 혹은 로그 개수가 특정 임계치에 이르면 전체 로그 파일을 스캔하여 삭제된 데이터의 삭제를 통해 현재 메모리 상에 있는 데이터에 대한 이력만으로 압축될 수 있다.
이러한 압축을 통해 로그 파일이 커지는 것을 방지할 수 있다.
도 4에 도시된 바와 같이, 본 발명의 원격 메모리 데이터 요청 방법은 응용 프로그램(120)이 특정 주소의 메모리 상의 데이터를 요청한다(S400).
지역 메모리(local memory)에 해당 데이터가 있으면 반환되나, 존재하지 않는 경우 mem_client(110)가 해당 데이터를 갖는 원격 컴퓨팅 노드(200), 즉 mem_server1(210)에 데이터를 요청한다(S401).
데이터 반환을 요청받은 mem_server1(210)은 데이터 요청에 대한 로그를 생성한 후, 해당 로그를 원격 컴퓨팅 노드(300)의 mem_server2(310)에 전송한다(S402).
로그를 받은 mem_server2(310)는 로그를 메모리 버퍼에 저장한다(S403).
Mem_server1(210)은 로그 저장이 완료되면, 메모리 상의 데이터를 반환한다(S404).
mem_server1(210)로부터 데이터를 받은 mem_client(110)는 해당 데이터를 지역 메모리에 로드한다(S405).
마지막으로 응용 프로그램(120)에게 메모리에 로드된 데이터가 반환된다(S406).
도 5에 도시된 바와 같이, 메모리 서버의 로그 데이터는 년, 월, 일, 시, 분, 초를 포함한 시간 정보(TimeStamp), 그리고 각 메모리 서버(210, 310)를 구별할 수 있는 식별자(Mem_server ID), 그리고 각 메모리 서버(210, 310)가 제공하는 메모리의 위치 식별자(Page ID), 읽기/쓰기 정보(operation), 그리고 메모리에 로드된 데이터 정보를 포함한다.
메모리 서버가 로그 저장을 위해 다른 여러 메모리 서버와 연동되는 경우 추가 정보를 포함할 수 있다.
예컨대, 로그는 메모리 서버가 하나의 메모리 클라이언트만을 연동하는 경우 응용 프로그램 식별자(Process ID), 다른 여러 메모리 클라이언트와 연동하는 경우 메모리 클라이언트 식별자(Mem_client ID)를 포함할 수 있다.
본 발명에서 메모리 클라이언트로부터 전송되는 데이터의 크기는 보통 컴퓨팅 노드에서 사용되는 페이지 크기 4KByte 이상인 것으로 가정하며, 이는 페이지 부재(page fault)의 잦은 발생에 따른 데이터 전송의 오버헤드를 줄이기 위함이다.
도 6에 도시된 바와 같이, 본 발명의 원격 메모리를 제공하는 메모리 서버의 오류 발생 시, 메모리 상의 데이터 요청 방법은 응용 프로그램(120)이 원격 메모리 시스템의 특정 메모리 주소에 대한 데이터를 요청한다(S600).
지역 메모리에 데이터가 존재하지 않은 경우, mem_client(110)는 해당 데이터를 저장하고 있는 mem_server1(210)에 데이터를 요청한다(S601).
특정 시간 간격을 두고 특정 임계치의 수만큼 시도 후에도 Mem_server1(210)에 연결되지 않을 경우, mem_client(110)는 mem_coord(410)로부터 Mem_server1(210)에 관한 메타 정보를 검색한다(S602).
Mem_client(110)는 mem_coord(410)로부터 업데이트된(반환된) 메타 정보(S603)를 바탕으로 해당 데이터를 저장하고 있는 mem_server1(S210)에 연결을 시도하여 연결되지 않을 경우 mem_server1(210)를 오류라 판단하고, 이를 mem_coord에 보고한다(S604).
Mem_coord(S410)는 mem_server1(S210)의 로그를 바탕으로 데이터 복구를 위한 준비 절차를 수행한다(S605).
복구 준비 절차는 오류가 발생한 mem_server1(210)의 로그 저장을 담당하는 메모리 서버들에게 메모리 상의 모든 로그를 파일로 저장하도록 요청하고, 저장된 로그 파일을 바탕으로 메모리에 데이터를 복구할 메모리 서버를 선정하는 것을 포함한다.
로그 복구 서버는 기본적으로 mem_server1(210)의 로그를 저장하는 메모리 서버가 자신이 저장한 로그 데이터에 대한 복구를 담당하도록 한다.
그러나, mem_coord(410)는 메모리 서버의 원격 메모리 사용량을 바탕으로, 원격 메모리 사용량이 적은 메모리 서버를 복구 메모리 서버로 선정할 수 있다.
이때, 복구 메모리 서버는 1개 이상이 될 수 있으며, mem_coord(410)는 각 메모리 서버에 복구할 데이터를 지정할 수 있다.
Mem_coord(410)는 선정한 1개 이상의 메모리 서버들에게 로그의 위치와 복구 데이터를 지정하여 메모리에 데이터를 복구하여 로드할 것을 요청한다(S606).
Mem_coord(410)로부터 복구 요청을 받은 각 메모리 서버, 예컨대 mem_server2(310), mem_server3는 공용 파일 시스템에 접근하여 로그 파일을 바탕으로 mem_server1(210)의 지정된 데이터를 복구하여 메모리에 구축한다(S607).
이러한 mem_server2(310), mem_server3의 데이터 복구는 병렬로 수행된다.
모든 메모리 서버, 즉 mem_server2(310), mem_server3가 데이터 복구를 완료하면, mem_coord(410)는 mem_server1(210)의 원격 메모리 데이터를 복구한 메모리 서버들에 대한 정보를 mem_client(110)에 알린다(S308).
Mem_client(110)는 변경된 원격 데이터 서비스 정보를 바탕으로 해당 데이터를 갖는 메모리 서버에게 데이터를 요청한다(S609).
데이터를 복구하여 서비스하는 mem_server2(310)는 mem_client(110)에게 데이터를 반환한다(S610).
mem_server2(310)로부터 데이터를 받은 mem_client(110)는 해당 데이터를 지역 메모리에 로드한다(S611).
마지막으로 응용 프로그램(120)에게 메모리에 로드된 데이터가 반환된다(S612).
도 7에 도시된 바와 같이, 원격 메모리 시스템에서 로그 서버의 오류 발생 시의 내부 동작 방법은 Mem_server1(210)이 로그를 전송 실패에 따라 mem_server2(310)의 오류를 인지한다(S700).
여기서 mem_server2(310)의 오류 인지는 도 6에서의 오류 판단 절차를 포함한다.
Mem_server1(210)은 mem_server2(310)의 오류를 mem_coord(410)에 보고한다 (S701).
오류 보고를 받은 mem_coord(410)는 mem_server1(210)에게 로그를 전송할 새로운 로그 서버를 지정한다(S702).
Mem_server1(210)은 mem_coord(410)로부터 지정받은 새 로그 서버 mem_server3에 로그를 전송한다.
이때, mem_server1(210)은 mem_server2(310)에 로그를 전송했던 메모리 내의 데이터에 대한 모든 로그를 생성하여 mem_server3에 전송한다(S703).
한편, mem_coord(410)는 mem_sever2(310)에서 서비스했던 데이터 복구, 로그 저장 서비스 대체 작업을 수행한다(S704).
먼저, mem_server2(310)의 메모리 데이터를 복구하기 위하여, 도 6에서 설명한 절차를 수행한다.
그리고, mem_coord(410)는 mem_server2(310)에게 로그 저장을 요청하던 mem_server1(210)을 제외한 다른 메모리 서버들에게 새로운 로그 서버를 지정하여 서비스가 지속될 수 있도록 한다.
도 7에서는 각 메모리 서버의 로그 서버를 mem_coord(410)에서 지정하는 경우에 한하여 설명하였다. 로그 서버를 각 메모리 서버가 자율적으로 지정하는 경우 mem_coord(410)로부터 메모리 서버의 상태 정보를 얻어 결정하며, 이를 mem_coord(410)에게 알려 메타 정보를 수정토록 요청한다.
Mem_coord(410)는 오류가 발생한 로그 서버에서 서비스하던 원격 메모리 데이터 복구 절차(도 6의 단계(S605~S608))를 수행하여 응용 프로그램(120)의 실행이 중단되지 않도록 한다.
이상 바람직한 실시예와 첨부도면을 참조하여 본 발명의 구성에 관해 구체적으로 설명하였으나, 이는 예시에 불과한 것으로 본 발명의 기술적 사상을 벗어나지 않는 범주내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
110 : 메모리 클라이언트
120, 130 : 메모리 서버
140 : 메모리 코디네이터

Claims (1)

  1. 응용 프로그램의 요청에 따라 메모리 할당시 해당 컴퓨팅 노드의 메모리가 부족한 경우, 메모리 클아이언트가 지역 메모리에 상주해 있는 데이터 중 제거할 데이터(victim)를 선정하여 이를 원격 컴퓨팅 노드의 메모리 서버에 전송하는 단계;
    제거할 데이터를 전송받은 원격 컴퓨팅 노드의 메모리 서버가 이를 메모리에 로드(저장)하고, 이에 대한 로그를 생성하여 다른 원격 컴퓨팅 노드의 메모리 서버에 전송하는 단계;
    로그를 전송받은 상기 다른 원격 컴퓨팅 노드의 메모리 서버가 로그를 버퍼에 저장하는 단계; 및
    상기 메모리 클라이언트가 상기 원격 컴퓨팅 노드의 메모리에 제거할 데이터를 이동시키고, 해당 메모리를 컴퓨팅 노드에 반환한 후 운영체제(커널)를 통해 새로운 메모리를 할당받아 상기 응용 프로그램에 반환하는 단계
    를 포함하는 원격 메모리 데이터 관리 방법.

KR1020140002836A 2014-01-09 2014-01-09 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템 KR101793963B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140002836A KR101793963B1 (ko) 2014-01-09 2014-01-09 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140002836A KR101793963B1 (ko) 2014-01-09 2014-01-09 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20150083276A true KR20150083276A (ko) 2015-07-17
KR101793963B1 KR101793963B1 (ko) 2017-11-07

Family

ID=53873410

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140002836A KR101793963B1 (ko) 2014-01-09 2014-01-09 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101793963B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101945117B1 (ko) * 2017-08-14 2019-02-01 성균관대학교산학협력단 스마트 디바이스 및 그 메모리 관리 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210049602A (ko) 2019-10-25 2021-05-06 삼성전자주식회사 컴퓨팅 장치 및 그 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101945117B1 (ko) * 2017-08-14 2019-02-01 성균관대학교산학협력단 스마트 디바이스 및 그 메모리 관리 방법

Also Published As

Publication number Publication date
KR101793963B1 (ko) 2017-11-07

Similar Documents

Publication Publication Date Title
US10467136B2 (en) Adaptable data caching mechanism for in-memory cluster computing
JP6791834B2 (ja) 記憶システム及び制御ソフトウェア配置方法
US8639898B2 (en) Storage apparatus and data copy method
US9330108B2 (en) Multi-site heat map management
US20140181035A1 (en) Data management method and information processing apparatus
US20120303791A1 (en) Load balancing when replicating account data
US9201747B2 (en) Real time database system
CN104935654A (zh) 一种服务器集群系统中的缓存方法、写入点客户端和读客户端
CN109739435B (zh) 文件存储和更新方法及装置
US8161008B2 (en) Information processing apparatus and operation method thereof
CN106959820B (zh) 一种数据提取方法和系统
CN107329704B (zh) 一种缓存镜像方法及控制器
JP5422657B2 (ja) ストレージシステム及びストレージシステムの処理効率向上方法
US9298765B2 (en) Apparatus and method for handling partially inconsistent states among members of a cluster in an erratic storage network
CN107295030B (zh) 一种数据写入方法、装置、数据处理方法、装置及系统
CN111225003B (zh) 一种nfs节点配置方法和装置
KR101793963B1 (ko) 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템
CN114490540A (zh) 数据存储方法、介质、装置和计算设备
CN108023914B (zh) 一种内存数据共享系统、内存数据的写入以及读取方法
CN110098945B (zh) 应用于节点系统的数据处理方法及装置
CN110928495A (zh) 一种在多控存储系统上的数据处理方法及装置
US20130318040A1 (en) Data replication apparatus and method using hierarchical organization of data servers
JP7057408B2 (ja) 記憶システム及びその制御方法
CN104572754A (zh) 一种数据库系统、数据库系统访问方法及装置
CN114579514B (zh) 一种基于多计算节点的文件处理方法、装置及设备

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