KR101793963B1 - Remote Memory Data Management Method and System for Data Processing Based on Mass Memory - Google Patents
Remote Memory Data Management Method and System for Data Processing Based on Mass Memory Download PDFInfo
- Publication number
- KR101793963B1 KR101793963B1 KR1020140002836A KR20140002836A KR101793963B1 KR 101793963 B1 KR101793963 B1 KR 101793963B1 KR 1020140002836 A KR1020140002836 A KR 1020140002836A KR 20140002836 A KR20140002836 A KR 20140002836A KR 101793963 B1 KR101793963 B1 KR 101793963B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- computing node
- data
- log
- remote
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/167—Interprocessor 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
본 발명은 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템에 관한 것으로서, 본 발명에 따른 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법은 복수의 컴퓨팅 노드들에 장착된 메모리를 바탕으로 대용량 데이터 처리를 지원하는 원격 메모리 시스템에서 원격 메모리 데이터 손실에 따른 응용 프로그램의 중지를 방지하거나 실행 중지 횟수를 줄일 수 있는 대용량 메모리 기반 데이터 처리를 한다. 본 발명에 따르면, 원격 메모리에 데이터를 쓰고 읽는 경우에 원격 메모리를 제공하는 컴퓨팅 노드 및 원격 메모리 서버의 오류 발생 시에도 응용 프로그램이 중단되지 않고 지속 실행되도록 할 수 있고, 긴 실행 시간이나 대용량 메모리를 요구하는 응용 프로그램의 안정적인 실행을 지원하여, 원격 메모리 시스템의 활용을 증대시킬 수 있다.The present invention relates to a remote memory data management method and system for mass memory based data processing, and a remote memory data management method for mass memory based data processing according to the present invention is based on a memory mounted on a plurality of computing nodes In a remote memory system that supports large data processing, large memory-based data processing is performed to prevent the application from being stopped due to remote memory data loss or to reduce the number of executions. According to the present invention, when data is written to and read from a remote memory, an application program can be continuously executed without an interruption even in the event of a failure of a computing node and a remote memory server providing a remote memory, and a long execution time or a large memory The stable execution of the required application programs can be supported, and the utilization of the remote memory system can be increased.
Description
본 발명은 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템에 관한 것으로서, 보다 구체적으로는 복수의 컴퓨터 시스템의 물리적 메모리를 바탕으로 대용량 데이터 처리시 시스템 오류에 따른 데이터 손실을 줄이기 위한 데이터 관리 방법 및 시스템에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method and system for remote memory data management for mass memory based data processing, ≪ / RTI >
최근 들어 InfiniBand1, Quadrics2와 같은 네트워크 기술의 발달로 컴퓨팅 노드 간의 통신 시간이 단축되면서, 클러스터를 구성하는 원격 컴퓨팅 노드의 메모리를 활용하여 데이터를 고속 처리하는 원격 메모리 시스템(Remote Memory System, RMS)에 대한 연구가 활발하게 진행되고 있다.In recent years, the development of network technologies such as InfiniBand 1 and Quadrics 2 have reduced the communication time between computing nodes. As a result, a remote memory system (RMS), which processes data at high speed using the memory of the remote computing nodes constituting the cluster, Is being actively studied.
원격 메모리시스템은 컴퓨팅 노드에 장착된 물리 메모리 크기보다 더 큰 데이터 구조를 갖는 응용 프로그램을 실행시킬 수 있고, 성능 향상을 목적으로 대용량 데이터를 메모리 기반으로 처리한다.The remote memory system can execute an application program having a data structure larger than the physical memory size mounted on the computing node, and processes large amounts of data on a memory basis for the purpose of improving performance.
이러한 원격 메모리 시스템은 보통 원격 메모리(Remote Memory)를 지역 메모리(Local Memory)로 확장하거나 스와핑 장치(Swapping Device)로 이용할 수 있도록 개발되었으며, 도 1에 도시된 바와 같이 원격 메모리를 요구하는 mem_client와, 물리 메모리의 일부를 mem-client에게 제공하는 mem_server로 구성된다. Such a remote memory system is usually developed to expand a remote memory to a local memory or use it as a swapping device. The remote memory system includes a mem_client requesting a remote memory, It consists of mem_server which provides a part of physical memory to mem-client.
mem_client는 대용량의 메모리를 필요로 하는 응용 프로그램이 실행 중인 컴퓨팅 노드(노드 0)에서 구동되며, mem_server는 물리 메모리를 제공하는 1개 이상의 컴퓨팅 노드(노드 1, 노드 2) 각각에서 구동된다.mem_client is run on a compute node (node 0) where an application requiring a large amount of memory is running, and mem_server is run on each of one or more compute nodes (node 1, node 2) that provide physical memory.
mem_client는 지역 컴퓨팅 노드의 메모리 부족시 지역 메모리 내에 로드된 데이터를 원격 컴퓨팅 노드의 메모리에 전송하여 응용 프로그램이 사용할 메모리 공간을 생성한다.mem_client creates memory space for application programs by sending data loaded in local memory to the remote computing node's memory when the local computing node runs out of memory.
한편, 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 참조.)Meanwhile, mem_client fetches data from the memory of the remote computing node (node 1 or node 2) to the local memory and provides it to the application when the application requests data that is not in local memory (A. Samih, R. Wang, Maciocco, T.-YC 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)함으로써 데이터 처리 응용 프로그램의 성능을 향상시키는데 집중되어 왔기 때문에, 원격 메모리를 지원하는 컴퓨팅 노드들에 장애가 발생할 경우 데이터 손실로 응용 프로그램의 실행 중지가 불가피하다 라는 문제점이 있다.Currently, research on remote memory systems has focused on improving the performance of data processing applications by detecting and utilizing the remote memory of the computing nodes that make up the cluster, There is a problem in that the execution of the application program is inevitable due to data loss when the nodes fail.
따라서, 차세대 시퀀싱(Next Generation Sequencing) 서열 데이터 정렬을 위한 BFAST, BWA와 같이 많은 메모리와 장시간의 실행 시간을 요구하는 응용 프로그램을 원격 메모리 시스템에서 실행시키기 위해서는 시스템 및 컴퓨팅 노드의 오류에 따른 원격 메모리 데이터 손실을 줄일 수 있는 데이터 관리 방법이 필요하다.Therefore, in order to execute an application program requiring a large amount of memory and a long execution time such as BFAST and BWA for sequencing of next generation sequencing data in a remote memory system, There is a need for a data management method that can reduce losses.
본 발명은 상기와 같은 필요에 의해 창출된 것으로서, 복수의 컴퓨팅 노드들에 장착된 메모리를 바탕으로 대용량 데이터 처리를 지원하는 원격 메모리 시스템에서 원격 메모리 데이터 손실에 따른 응용 프로그램의 중지를 방지하거나 실행 중지 횟수를 줄일 수 있는 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템을 제공하는 데 그 목적이 있다.It is an object of the present invention to provide a remote memory system that supports mass data processing based on a memory mounted on a plurality of computing nodes, And more particularly, to a method and system for remote memory data management for data processing based on a large-capacity memory capable of reducing the number of times.
전술한 목적을 달성하기 위하여, 본 발명의 일면에 따른 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법은 응용 프로그램의 요청에 따라 메모리 할당시 해당 컴퓨팅 노드의 메모리가 부족한 경우, 메모리 클라이언트가 지역 메모리에 상주해 있는 데이터 중 제거할 데이터(victim)를 선정하여 이를 원격 컴퓨팅 노드의 메모리 서버에 전송하는 단계; 제거할 데이터를 전송받은 원격 컴퓨팅 노드의 메모리 서버가 이를 메모리에 로드(저장)하고, 이에 대한 로그를 생성하여 다른 원격 컴퓨팅 노드의 메모리 서버에 전송하는 단계; 로그를 전송받은 상기 다른 원격 컴퓨팅 노드의 메모리 서버가 로그를 버퍼에 저장하는 단계; 및 상기 메모리 클라이언트가 상기 원격 컴퓨팅 노드의 메모리에 제거할 데이터를 이동시키고, 해당 메모리를 컴퓨팅 노드에 반환한 후 운영체제(커널)를 통해 새로운 메모리를 할당받아 상기 응용 프로그램에 반환하는 단계를 포함한다.According to an aspect of the present invention, there is provided a remote memory data management method for processing data based on a large memory according to an aspect of the present invention, Selecting victim to be removed from the data residing in the remote computing node and transmitting the victim to the memory server of the remote computing node; Loading (storing) the memory server of the remote computing node that receives the data to be removed into the memory, generating a log of the memory, and transmitting the log to the memory server of the remote computing node; Storing a log in a memory server of the other remote computing node having received the log; And transferring data to be removed to the memory of the remote computing node, returning the memory to the computing node, allocating a new memory through an operating system (kernel), and returning the allocated memory to the application program.
본 발명에 따르면, 원격 메모리에 데이터를 쓰고 읽는 경우에 원격 메모리를 제공하는 컴퓨팅 노드 및 원격 메모리 서버의 오류 발생 시에도 응용 프로그램이 중단되지 않고 지속 실행되도록 할 수 있다.According to the present invention, when data is written to and read from a remote memory, an application program can be continuously executed without interruption even when a fault occurs in a computing node and a remote memory server that provide a remote memory.
따라서, 긴 실행 시간이나 대용량 메모리를 요구하는 응용 프로그램의 안정적인 실행을 지원하여, 원격 메모리 시스템의 활용을 증대시킬 수 있다.Therefore, it is possible to increase the utilization of the remote memory system by supporting stable execution of application programs requiring long execution time or large memory.
원격 메모리를 제공하는 서버에 대한 데이터 쓰기 읽기에 대한 로그를 다른 원격 컴퓨팅 노드의 메모리에 저장하고 비동기적으로 공용 파일 시스템에 저장함으로써, 로그 저장에 따른 추가 시간을 최소화하고 메모리 복사본을 유지하는 것보다 적은 메모리를 사용하면서 복구를 위한 데이터 이중화가 가능하다.Writing data to the server providing remote memory As the logs for the reads are stored in the memory of the other remote computing nodes and asynchronously stored in the common file system, Data redundancy is possible for recovery while using less memory.
원격 메모리 제공 서버의 오류 발생 시, 이에 대한 로그가 공용 파일 시스템에 저장되어 있어 메모리 사용량이 적은 원격 메모리 서버를 선정하여 복구 및 서비스 재개가 가능하다.In case of a failure of the remote memory provisioning server, the log is stored in the common file system, so that the remote memory server having low memory consumption can be selected and the recovery and service can be resumed.
특히 원격 메모리 서버 간의 메모리 서비스 부하 분산에 효과가 있다.Especially, it is effective to distribute memory service load among remote memory servers.
원격 메모리 서버의 로그는 다수의 다른 원격 메모리 서버들에게 분산 저장되며, 원격 메모리 서버의 오류 발생 시 로그 분석을 통한 메모리 데이터 복구 및 서비스를 다수의 원격 메모리 서버들이 병렬로 수행하여, 데이터 복구 시간이 짧다.The remote memory server logs are distributed to a number of different remote memory servers. When a remote memory server fails, the memory data is recovered and analyzed through a log analysis. short.
도 1은 종래의 원격 메모리 시스템의 구조를 설명하기 위한 도면.
도 2는 본 발명의 일 실시예에 따른 원격 메모리 시스템의 구조를 설명하기 위한 도면.
도 3은 지역 메모리 부족시 메모리 할당 흐름을 설명하기 위함 도면.
도 4는 원격 메모리 데이터 요청 흐름을 설명하기 위함 도면.
도 5는 로그 데이터 구조를 설명하기 위한 도면.
도 6은 원격 메모리 제공 서버의 오류시 데이터 요청 흐름을 설명하기 위한 도면.
도 7은 로그 서버의 오류 발생시 원격 메모리 시스템의 내부 동작 흐름을 설명하기 위한 도면.Brief Description of the Drawings Fig. 1 is a diagram for explaining the structure of a conventional remote memory system. Fig.
2 is a diagram illustrating a structure of a remote memory system according to an embodiment of the present invention;
3 is a diagram for explaining a memory allocation flow when a local memory is short.
4 is a diagram for explaining a remote memory data request flow;
5 is a diagram for explaining a log data structure;
6 is a diagram for explaining a data request flow in case of an error of a remote memory providing server.
7 is a diagram for explaining an internal operation flow of a remote memory system when an error occurs in a log server.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 용이하게 이해할 수 있도록 제공되는 것이며, 본 발명은 청구항의 기재에 의해 정의된다. 한편, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자 이외의 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. And is intended to enable a person skilled in the art to readily understand the scope of the invention, and the invention is defined by the claims. It is to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. In the present specification, the singular form includes plural forms unless otherwise specified in the specification. It is noted that " comprises, " or "comprising," as used herein, means the presence or absence of one or more other components, steps, operations, and / Do not exclude the addition.
본 발명은 복수의 컴퓨팅 노드들로 구성되는 원격 메모리 시스템에서 원격 메모리 데이터를 관리하는 방법에 관한 것으로서, 본 발명에 따른 원격 메모리 시스템은 응용 레벨과 커널 레벨(운영 체제 레벨)에서 구현 가능하며, 본 발명에 따른 원격 메모리 시스템의 구성을 설명하는 데 있어, 요지를 흐릴 수 있는 기존 원격 메모리 시스템의 구체적인 설명은 생략하도록 한다. The present invention relates to a method for managing remote memory data in a remote memory system comprising a plurality of computing nodes, wherein the remote memory system according to the present invention can be implemented at application level and kernel level (operating system level) In describing the configuration of the remote memory system according to the present invention, a detailed description of a conventional remote memory system that may obscure the gist is omitted.
이하, 도 2 내지 도 7을 참조하여 본 발명의 일 실시예에 따른 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법을 설명한다. 도 2는 본 발명의 일 실시예에 따른 원격 메모리 시스템의 구조를 설명하기 위한 도면이고, 도 3은 지역 메모리 부족시 메모리 할당 흐름을 설명하기 위함 도면이며, 도 4는 원격 메모리 데이터 요청 흐름을 설명하기 위함 도면이고, 도 5는 로그 데이터 구조를 설명하기 위한 도면이며, 도 6은 원격 메모리 제공 서버의 오류시 데이터 요청 흐름을 설명하기 위한 도면이고, 도 7은 로그 서버의 오류 발생시 원격 메모리 시스템의 내부 동작 흐름을 설명하기 위한 도면이다.Hereinafter, a remote memory data management method for mass-memory-based data processing according to an embodiment of the present invention will be described with reference to FIG. 2 to FIG. FIG. 2 is a diagram for explaining a structure of a remote memory system according to an embodiment of the present invention. FIG. 3 is a view for explaining a memory allocation flow when a local memory is short, FIG. FIG. 5 is a view for explaining a log data structure, FIG. 6 is a view for explaining a data request flow of a remote memory providing server, and FIG. Fig. 5 is a diagram for explaining an internal operation flow. Fig.
도 2에 도시된 바와 같이, 본 발명의 원격 메모리 시스템은 노드 0(100), 노드 1(200), 노드 2(300) 및 노드 3(400)을 포함한다.As shown in FIG. 2, the remote memory system of the present invention includes node 0 100, node 1 200, node 2 300, and node 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)를 포함한다. Node 0 100 includes
mem_client(110)는 원격 메모리를 사용한다.mem_client (110) uses remote memory.
mem_server 1(210) 및 mem_server 2(310)는 물리적인 메모리를 원격 메모리로 제공한다.mem_server 1 210 and mem_server 2 310 provide physical memory to the remote memory.
mem_coord(410)는 mem_client(110)와 연동 중인 메모리 서버 정보, 메모리 서버의 상태를 포함한 메타 정보, 로그 저장에 따른 메모리 서버 간의 관계 정보를 관리한다.The
메모리 서버는 mem_client(110)가 전송하는 데이터를 지역 메모리에 로드하고, mem_client(110)의 요청에 따라 메모리에 로드된 데이터를 반환한다.The memory server loads the data transmitted by the
또한, 메모리 서버는 mem_client(110)의 데이터 전송 요청 처리시 로그를 생성하여 이를 다른 컴퓨팅 노드의 메모리 서버에 전송한다.Also, the memory server generates a log when processing the data transmission request of the
예컨대, mem_server 1(210)은 mem_client(110)의 데이터 전송 요청 처리시 로그를 생성하여 이를 다른 컴퓨팅 노드(300)의 mem_server 2(310)에 전송한다.For example, the mem_server 1 210 generates a log when processing the data transmission request of the
전송된 로그는 비동기적으로 공용 파일 시스템에 저장된다. The transmitted logs are stored asynchronously in the common file system.
이때 하나의 메모리 서버의 로그는 연동되는 mem_client(110) 혹은 응용 프로그램(120)을 기준으로 분류되어 1개 이상의 다른 컴퓨팅 노드의 메모리 서버에 분산 저장될 수 있다. At this time, the logs of one memory server may be classified and stored based on the
도 3에 도시된 바와 같이, 본 발명의 메모리 할당 방법은 응용 프로그램(application, 120)이 malloc() 등의 호출을 통해 메모리 할당을 요청할 경우(S300), mem_client(110)는 메모리가 부족한지 여부를 판단한다. As shown in FIG. 3, in the memory allocation method of the present invention, when an
여기서 메모리의 부족 여부의 판단은 메모리 데이터의 스와핑(swap-out)이 발생하거나 이미 제한된 크기만큼 메모리가 사용 중인 경우 등으로 판단할 수 있다.Here, the determination as to whether or not the memory is short-circuited can be determined as a swap-out of the memory data or a case where the memory is being used in a limited size.
판단 결과, 메모리가 부족하지 않은 경우, 해당 컴퓨팅 노드의 메모리를 할당하고, 메모리가 부족한 경우, mem_client(110)는 지역 메모리에 상주해 있는 데이터 중 제거할 데이터(victim)를 선정하며, 이를 원격 컴퓨팅 노드의 메모리 서버, 즉 mem_server1(210)에 전송한다(S301).As a result of the determination, if the memory is insufficient, the memory of the corresponding computing node is allocated. If the memory is insufficient, the
이때, victim 선정은 FIFO(First In First Out), LRU(Least Recently Used) 등의 다양한 알고리즘을 바탕으로 결정될 수 있고, Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버를 선정하는 방법 또한 다양하다. In this case, victim selection can be determined based on various algorithms such as FIFO (First In First Out) and LRU (Least Recently Used), and a method of selecting a memory server of a remote computing node to transmit victim is also various.
예컨대, mem_client(110) 구동시 사용자가 설정한 메모리 서버를 Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버로 결정할 수 있고, mem_coord(410)에 Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버를 결정하도록 요청할 수 있으며, mem_client(110)가 mem_coord(410)로부터 메모리 서버들의 정보를 얻어와 이 정보를 토대로 Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버를 결정할 수도 있다.For example, when the
여기서 Victim을 전송할 원격 컴퓨팅 노드의 메모리 서버의 선정 기준은 mem_client(110)와의 짧은 데이터 전송 시간을 포함한다.Here, the selection criterion of the memory server of the remote computing node to transmit the victim includes a short data transfer time with the mem_client (110).
mem_client(110)로부터 victim 데이터를 전송받은 mem_server1(210)는 이를 메모리에 로드(저장)하고(S302), 이에 대한 로그를 생성하여 다른 원격 컴퓨팅 노드(300)의 mem_server2(S310)에 전송한다(S303).The
로그를 전송받은 원격 컴퓨팅 노드(300)의 mem_server2(310)는 로그를 버퍼에 저장한다(S304).The
원격 컴퓨팅 노드(200)의 메모리에 데이터를 이동시킨 mem_client(110)는 해당 메모리를 컴퓨팅 노드에 반환한 후, 운영체제(커널)를 통해 새로운 메모리를 할당받아 응용 프로그램(120)에게 그 메모리 주소를 반환한다(S305, S306).The
한편, 원격 컴퓨팅 노드(300)의 mem_server2(310)는 비동기적으로 메모리 버퍼에 저장된 로그를 공용 파일 시스템에 저장하고 버퍼에서 제거한다.Meanwhile, the
이러한 로그 저장은 로그가 입력된 후 곧바로 수행되거나, 일정 시간 주기 혹은 버퍼가 특정 임계치만큼 차는 경우와 같이 조건에 맞춰 수행될 수 있다.Such log storage may be performed immediately after the log is input, or may be performed in accordance with conditions such as a certain time period or when the buffer is decreased by a certain threshold value.
한편, 로그 파일은 일정 주기 혹은 로그 개수가 특정 임계치에 이르면 전체 로그 파일을 스캔하여 삭제된 데이터의 삭제를 통해 현재 메모리 상에 있는 데이터에 대한 이력만으로 압축될 수 있다.On the other hand, the log file can be compressed only by the history of the data in the current memory by deleting the deleted data by scanning the entire log file when the predetermined period or the number of logs reaches a certain threshold value.
이러한 압축을 통해 로그 파일이 커지는 것을 방지할 수 있다.This compression can prevent the log file from becoming large.
도 4에 도시된 바와 같이, 본 발명의 원격 메모리 데이터 요청 방법은 응용 프로그램(120)이 특정 주소의 메모리 상의 데이터를 요청한다(S400).As shown in FIG. 4, in the remote memory data request method of the present invention, the
지역 메모리(local memory)에 해당 데이터가 있으면 반환되나, 존재하지 않는 경우 mem_client(110)가 해당 데이터를 갖는 원격 컴퓨팅 노드(200), 즉 mem_server1(210)에 데이터를 요청한다(S401).If there is no corresponding data in the local memory, the
데이터 반환을 요청받은 mem_server1(210)은 데이터 요청에 대한 로그를 생성한 후, 해당 로그를 원격 컴퓨팅 노드(300)의 mem_server2(310)에 전송한다(S402).The
로그를 받은 mem_server2(310)는 로그를 메모리 버퍼에 저장한다(S403).The
Mem_server1(210)은 로그 저장이 완료되면, 메모리 상의 데이터를 반환한다(S404).When the log storage is completed, the
mem_server1(210)로부터 데이터를 받은 mem_client(110)는 해당 데이터를 지역 메모리에 로드한다(S405).The
마지막으로 응용 프로그램(120)에게 메모리에 로드된 데이터가 반환된다(S406). Finally, the data loaded into the memory is returned to the application program 120 (S406).
도 5에 도시된 바와 같이, 메모리 서버의 로그 데이터는 년, 월, 일, 시, 분, 초를 포함한 시간 정보(TimeStamp), 그리고 각 메모리 서버(210, 310)를 구별할 수 있는 식별자(Mem_server ID), 그리고 각 메모리 서버(210, 310)가 제공하는 메모리의 위치 식별자(Page ID), 읽기/쓰기 정보(operation), 그리고 메모리에 로드된 데이터 정보를 포함한다.5, the log data of the memory server includes time information (TimeStamp) including year, month, day, hour, minute, and second, and an identifier (Mem_server ID), a location identifier (Page ID) of the memory provided by each of the
메모리 서버가 로그 저장을 위해 다른 여러 메모리 서버와 연동되는 경우 추가 정보를 포함할 수 있다.Additional information may be included if the memory server is interfaced with other memory servers for log storage.
예컨대, 로그는 메모리 서버가 하나의 메모리 클라이언트만을 연동하는 경우 응용 프로그램 식별자(Process ID), 다른 여러 메모리 클라이언트와 연동하는 경우 메모리 클라이언트 식별자(Mem_client ID)를 포함할 수 있다.For example, the log may include an application program identifier (Process ID) when the memory server is linked with only one memory client, and a memory client identifier (Mem_client ID) when the memory server is interworked with other memory clients.
본 발명에서 메모리 클라이언트로부터 전송되는 데이터의 크기는 보통 컴퓨팅 노드에서 사용되는 페이지 크기 4KByte 이상인 것으로 가정하며, 이는 페이지 부재(page fault)의 잦은 발생에 따른 데이터 전송의 오버헤드를 줄이기 위함이다.In the present invention, it is assumed that the size of data transmitted from a memory client is equal to or larger than a page size of 4 KByte used in a computing node. This is to reduce overhead of data transmission due to frequent occurrence of page faults.
도 6에 도시된 바와 같이, 본 발명의 원격 메모리를 제공하는 메모리 서버의 오류 발생 시, 메모리 상의 데이터 요청 방법은 응용 프로그램(120)이 원격 메모리 시스템의 특정 메모리 주소에 대한 데이터를 요청한다(S600).6, when an error occurs in a memory server providing a remote memory of the present invention, the
지역 메모리에 데이터가 존재하지 않은 경우, mem_client(110)는 해당 데이터를 저장하고 있는 mem_server1(210)에 데이터를 요청한다(S601).If there is no data in the local memory, the
특정 시간 간격을 두고 특정 임계치의 수만큼 시도 후에도 Mem_server1(210)에 연결되지 않을 경우, mem_client(110)는 mem_coord(410)로부터 Mem_server1(210)에 관한 메타 정보를 검색한다(S602).If the
Mem_client(110)는 mem_coord(410)로부터 업데이트된(반환된) 메타 정보(S603)를 바탕으로 해당 데이터를 저장하고 있는 mem_server1(S210)에 연결을 시도하여 연결되지 않을 경우 mem_server1(210)를 오류라 판단하고, 이를 mem_coord에 보고한다(S604).The
Mem_coord(S410)는 mem_server1(S210)의 로그를 바탕으로 데이터 복구를 위한 준비 절차를 수행한다(S605).Mem_coord (S410) performs preparation for data recovery based on the log of mem_server1 (S210) (S605).
복구 준비 절차는 오류가 발생한 mem_server1(210)의 로그 저장을 담당하는 메모리 서버들에게 메모리 상의 모든 로그를 파일로 저장하도록 요청하고, 저장된 로그 파일을 바탕으로 메모리에 데이터를 복구할 메모리 서버를 선정하는 것을 포함한다.In the recovery preparation procedure, the memory servers responsible for storing logs of the failed
로그 복구 서버는 기본적으로 mem_server1(210)의 로그를 저장하는 메모리 서버가 자신이 저장한 로그 데이터에 대한 복구를 담당하도록 한다.The log recovery server basically allows the memory server storing the log of the mem_server1 (210) to take charge of recovery of the log data stored therein.
그러나, mem_coord(410)는 메모리 서버의 원격 메모리 사용량을 바탕으로, 원격 메모리 사용량이 적은 메모리 서버를 복구 메모리 서버로 선정할 수 있다.However, mem_coord 410 may select a memory server with a low remote memory usage as a recovery memory server based on the remote memory usage of the memory server.
이때, 복구 메모리 서버는 1개 이상이 될 수 있으며, mem_coord(410)는 각 메모리 서버에 복구할 데이터를 지정할 수 있다.At this time, there may be one or more recovery memory servers, and
Mem_coord(410)는 선정한 1개 이상의 메모리 서버들에게 로그의 위치와 복구 데이터를 지정하여 메모리에 데이터를 복구하여 로드할 것을 요청한다(S606).The
Mem_coord(410)로부터 복구 요청을 받은 각 메모리 서버, 예컨대 mem_server2(310), mem_server3는 공용 파일 시스템에 접근하여 로그 파일을 바탕으로 mem_server1(210)의 지정된 데이터를 복구하여 메모리에 구축한다(S607).Each memory server, for example,
이러한 mem_server2(310), mem_server3의 데이터 복구는 병렬로 수행된다.Data recovery of such mem_server2 (310), mem_server3 is performed in parallel.
모든 메모리 서버, 즉 mem_server2(310), mem_server3가 데이터 복구를 완료하면, mem_coord(410)는 mem_server1(210)의 원격 메모리 데이터를 복구한 메모리 서버들에 대한 정보를 mem_client(110)에 알린다(S308).When all of the memory servers, that is,
Mem_client(110)는 변경된 원격 데이터 서비스 정보를 바탕으로 해당 데이터를 갖는 메모리 서버에게 데이터를 요청한다(S609).The
데이터를 복구하여 서비스하는 mem_server2(310)는 mem_client(110)에게 데이터를 반환한다(S610).The
mem_server2(310)로부터 데이터를 받은 mem_client(110)는 해당 데이터를 지역 메모리에 로드한다(S611).The
마지막으로 응용 프로그램(120)에게 메모리에 로드된 데이터가 반환된다(S612). Finally, the data loaded into the memory is returned to the application program 120 (S612).
도 7에 도시된 바와 같이, 원격 메모리 시스템에서 로그 서버의 오류 발생 시의 내부 동작 방법은 Mem_server1(210)이 로그를 전송 실패에 따라 mem_server2(310)의 오류를 인지한다(S700).As shown in FIG. 7, in the remote memory system, when the error occurs in the log server, the internal operation method of the
여기서 mem_server2(310)의 오류 인지는 도 6에서의 오류 판단 절차를 포함한다.Here, the error of the mem_server2 (310) includes the error determination procedure in FIG.
Mem_server1(210)은 mem_server2(310)의 오류를 mem_coord(410)에 보고한다 (S701).The
오류 보고를 받은 mem_coord(410)는 mem_server1(210)에게 로그를 전송할 새로운 로그 서버를 지정한다(S702).The
Mem_server1(210)은 mem_coord(410)로부터 지정받은 새 로그 서버 mem_server3에 로그를 전송한다.The
이때, mem_server1(210)은 mem_server2(310)에 로그를 전송했던 메모리 내의 데이터에 대한 모든 로그를 생성하여 mem_server3에 전송한다(S703).At this time, the
한편, mem_coord(410)는 mem_sever2(310)에서 서비스했던 데이터 복구, 로그 저장 서비스 대체 작업을 수행한다(S704).Meanwhile, the
먼저, mem_server2(310)의 메모리 데이터를 복구하기 위하여, 도 6에서 설명한 절차를 수행한다.First, in order to recover the memory data of the mem_server2 (310), the procedure described in FIG. 6 is performed.
그리고, mem_coord(410)는 mem_server2(310)에게 로그 저장을 요청하던 mem_server1(210)을 제외한 다른 메모리 서버들에게 새로운 로그 서버를 지정하여 서비스가 지속될 수 있도록 한다.The
도 7에서는 각 메모리 서버의 로그 서버를 mem_coord(410)에서 지정하는 경우에 한하여 설명하였다. 로그 서버를 각 메모리 서버가 자율적으로 지정하는 경우 mem_coord(410)로부터 메모리 서버의 상태 정보를 얻어 결정하며, 이를 mem_coord(410)에게 알려 메타 정보를 수정토록 요청한다.In FIG. 7, only the case where the log server of each memory server is designated by
Mem_coord(410)는 오류가 발생한 로그 서버에서 서비스하던 원격 메모리 데이터 복구 절차(도 6의 단계(S605~S608))를 수행하여 응용 프로그램(120)의 실행이 중단되지 않도록 한다. The
이상 바람직한 실시예와 첨부도면을 참조하여 본 발명의 구성에 관해 구체적으로 설명하였으나, 이는 예시에 불과한 것으로 본 발명의 기술적 사상을 벗어나지 않는 범주내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims. Therefore, the scope of the present invention should not be limited by the illustrated embodiments, but should be determined by the scope of the appended claims and equivalents thereof.
110 : 메모리 클라이언트
120, 130 : 메모리 서버
140 : 메모리 코디네이터110: Memory Client
120, 130: memory server
140: Memory Coordinator
Claims (8)
상기 제거할 데이터를 전송받은 제1 원격 컴퓨팅 노드가 이를 상기 제1 원격 컴퓨팅 노드의 메모리에 저장하고, 이에 대한 로그를 생성하여 제2 원격 컴퓨팅 노드에 전송하는 단계;
상기 로그를 전송받은 상기 제2 원격 컴퓨팅 노드가 상기 로그를 상기 제2 원격 컴퓨팅 노드의 버퍼에 저장하고, 상기 버퍼에 저장된 로그를 네트워크를 통해 공용 파일 시스템에 저장한 후 상기 버퍼에서 제거하는 단계; 및
상기 컴퓨팅 노드가 상기 제1 원격 컴퓨팅 노드의 메모리에 상기 제거할 데이터를 이동시키고, 데이터가 제거된 메모리를 상기 컴퓨팅 노드에 반환한 후 운영체제를 통해 새로운 메모리를 할당받아 상기 응용 프로그램에 반환하는 단계를 포함하고,
상기 제1 원격 컴퓨팅 노드의 오류 발생으로 인해 상기 컴퓨팅 노드가 상기 제1 원격 컴퓨팅 노드로부터 해당 데이터를 전송받지 못하는 경우, 상기 제2 원격 컴퓨팅 노드가 상기 공용 파일 시스템에 저장된 로그를 바탕으로 상기 해당 데이터를 복구하고, 복구한 상기 해당 데이터를 상기 컴퓨팅 노드에 반환하여, 상기 컴퓨팅 노드가 상기 제2 원격 컴퓨팅 노드로부터 반환된 상기 복구한 해당 데이터를 지역 메모리에 로드함을 특징으로 하는 원격 메모리 데이터 관리 방법.
Selecting data to be removed from data residing in the memory and transmitting the selected data to the first remote computing node when memory of the corresponding computing node is insufficient at the memory allocation according to the request of the application program;
The first remote computing node receiving the data to be removed stores it in the memory of the first remote computing node, and generates and transmits a log to the second remote computing node;
Storing the log in the buffer of the second remote computing node, storing the log in the buffer in the common file system via the network, and removing the log from the buffer; And
The computing node moves the data to be removed to the memory of the first remote computing node, returns the memory with the data removed to the computing node, allocates a new memory through the operating system, and returns the memory to the application program Including,
Wherein if the computing node fails to receive the corresponding data from the first remote computing node due to an error in the first remote computing node, the second remote computing node generates, based on the log stored in the common file system, And returning the recovered data to the computing node so that the computing node loads the recovered corresponding data returned from the second remote computing node into the local memory. .
상기 제거할 데이터를 선정하는 방법은 FIFO(First In First Out) 또는 LRU(Least Recently Used) 알고리즘을 사용하는 것
인 원격 메모리 데이터 관리 방법.
The method according to claim 1,
The method of selecting the data to be removed is to use a FIFO (First In First Out) or LRU (Least Recently Used) algorithm
In remote memory data management.
상기 버퍼에 저장하는 단계 이후에, 상기 제2 원격 컴퓨팅 노드는 상기 버퍼에 저장된 로그가 기설정된 임계치 이상의 용량에 이르는 경우 압축하여 공용파일 시스템에 저장하는 단계를 더 포함하는 것
인 원격 메모리 데이터 관리 방법.
The method according to claim 1,
The second remote computing node compresses the log if the log stored in the buffer reaches a predetermined threshold or more and stores the compressed log in the common file system after storing the buffer in the buffer
In remote memory data management.
상기 버퍼에 저장하는 단계 이후에, 상기 제2 원격 컴퓨팅 노드는 상기 버퍼에 저장된 로그가 현재 상기 컴퓨팅 노드, 제1 원격 컴퓨팅 노드 또는 제2 원격 컴퓨팅 노드의 메모리상에 있는 데이터에 대한 로그인지 판단하여 상기 메모리상에 있지 않은 데이터에 대한 로그는 상기 버퍼에서 삭제하는 단계를 더 포함하는 것
인 원격 메모리 데이터 관리 방법.
The method according to claim 1,
After storing in the buffer, the second remote computing node determines whether the log stored in the buffer is currently logged on to the data in the memory of the computing node, the first remote computing node, or the second remote computing node And deleting the log for data not on the memory from the buffer
In remote memory data management.
응용 프로그램의 요청에 따라 메모리 할당 시 메모리가 부족한 경우 상기 메모리에 존재하는 데이터 중 제거할 데이터를 선정하여 하기 제1 원격 컴퓨팅 노드로 전송하고, 상기 데이터가 제거되어 반환된 메모리를 운영체제를 통해 할당 받아 상기 응용 프로그램에 할당하는 컴퓨팅 노드; 및
상기 제거할 데이터를 전송받아 메모리에 저장하고 이에 대한 로그를 생성하여 제2 원격 컴퓨팅 노드로 전송하는 제1 원격 컴퓨팅 노드를 포함하고,
상기 로그를 전송받은 상기 제2 원격 컴퓨팅 노드가 상기 로그를 상기 제2 원격 컴퓨팅 노드의 버퍼에 저장하고, 상기 버퍼에 저장된 로그를 네트워크를 통해 공용 파일 시스템에 저장한 후 상기 버퍼에서 제거하고, 상기 제1 원격 컴퓨팅 노드의 오류 발생으로 인해 상기 컴퓨팅 노드가 상기 제1 원격 컴퓨팅 노드로부터 해당 데이터를 전송받지 못하는 경우, 상기 제2 원격 컴퓨팅 노드가 상기 공용 파일 시스템에 저장된 로그를 바탕으로 상기 해당 데이터를 복구하고, 복구한 상기 해당 데이터를 상기 컴퓨팅 노드에 반환하여, 상기 컴퓨팅 노드가 상기 제2 원격 컴퓨팅 노드로부터 반환된 상기 복구한 해당 데이터를 지역 메모리에 로드함을 특징으로 하는 원격 메모리 데이터 관리 시스템.
A remote memory data management system comprising a computing node and a plurality of remote computing nodes,
If the memory is insufficient in the memory allocation according to the request of the application program, data to be removed from the data existing in the memory is selected and transmitted to the first remote computing node, the memory is removed and the returned memory is allocated through the operating system A computing node to assign to the application program; And
And a first remote computing node for receiving the data to be removed and storing the data in a memory, generating a log of the log, and transmitting the log to the second remote computing node,
The second remote computing node having received the log stores the log in the buffer of the second remote computing node, stores the log in the buffer in the common file system via the network, removes the log from the buffer, When the computing node fails to receive the corresponding data from the first remote computing node due to an error of the first remote computing node, the second remote computing node transmits the corresponding data to the second remote computing node based on the log stored in the common file system And returns the restored and corresponding data to the computing node so that the computing node loads the recovered corresponding data returned from the second remote computing node into the local memory.
상기 제거할 데이터는 FIFO(First In First Out) 또는 LRU(Least Recently Used) 알고리즘을 사용하여 선정하는 것
인 원격 메모리 데이터 관리 시스템.
6. The method of claim 5, wherein the computing node
The data to be removed may be selected using FIFO (First In First Out) or LRU (Least Recently Used) algorithm
In remote memory data management system.
상기 버퍼에 저장된 로그가 기설정된 임계치 이상의 용량에 이르는 경우 압축하여 공용파일 시스템에 저장하는 것
인 원격 메모리 데이터 관리 시스템.
6. The method of claim 5, wherein the second remote computing node
If the log stored in the buffer reaches a capacity equal to or larger than a preset threshold value, the compressed file is stored in a common file system
In remote memory data management system.
상기 버퍼에 저장된 로그가 현재 시스템의 메모리상에 있는 데이터에 대한 로그인지 판단하여 상기 현재 시스템의 메모리상에 있지 않은 데이터에 대한 로그는 상기 버퍼에서 삭제하는 것
인 원격 메모리 데이터 관리 시스템.6. The method of claim 5, wherein the second remote computing node
Determining whether the log stored in the buffer is log-in to data currently in the memory of the system, and deleting the log of data not in the memory of the current system from the buffer
In remote memory data management system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140002836A KR101793963B1 (en) | 2014-01-09 | 2014-01-09 | Remote Memory Data Management Method and System for Data Processing Based on Mass Memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140002836A KR101793963B1 (en) | 2014-01-09 | 2014-01-09 | Remote Memory Data Management Method and System for Data Processing Based on Mass Memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150083276A KR20150083276A (en) | 2015-07-17 |
KR101793963B1 true KR101793963B1 (en) | 2017-11-07 |
Family
ID=53873410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140002836A KR101793963B1 (en) | 2014-01-09 | 2014-01-09 | Remote Memory Data Management Method and System for Data Processing Based on Mass Memory |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101793963B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11467734B2 (en) | 2019-10-25 | 2022-10-11 | Samsung Electronics Co., Ltd. | Managing swap area in memory using multiple compression algorithms |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101945117B1 (en) * | 2017-08-14 | 2019-02-01 | 성균관대학교산학협력단 | A smart device and method for managing memory thereof |
-
2014
- 2014-01-09 KR KR1020140002836A patent/KR101793963B1/en active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11467734B2 (en) | 2019-10-25 | 2022-10-11 | Samsung Electronics Co., Ltd. | Managing swap area in memory using multiple compression algorithms |
Also Published As
Publication number | Publication date |
---|---|
KR20150083276A (en) | 2015-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10467136B2 (en) | Adaptable data caching mechanism for in-memory cluster computing | |
JP6791834B2 (en) | Storage system and control software placement method | |
US8195777B2 (en) | System and method for adding a standby computer into clustered computer system | |
US9330108B2 (en) | Multi-site heat map management | |
CN106959820B (en) | Data extraction method and system | |
US10298715B2 (en) | Distributed processing system, task processing method, and storage medium | |
JP4920248B2 (en) | Server failure recovery method and database system | |
CN109739435B (en) | File storage and updating method and device | |
CN104935654A (en) | Caching method, write point client and read client in server cluster system | |
CN107329704B (en) | Cache mirroring method and controller | |
US20060026250A1 (en) | Communication system | |
CN102298547A (en) | Data backup method and device | |
US9298765B2 (en) | Apparatus and method for handling partially inconsistent states among members of a cluster in an erratic storage network | |
JP2012514777A (en) | Storage system and storage system processing efficiency improvement method | |
CN111225003B (en) | NFS node configuration method and device | |
KR101793963B1 (en) | Remote Memory Data Management Method and System for Data Processing Based on Mass Memory | |
CN105574008A (en) | Task scheduling method and equipment applied to distributed file system | |
CN117520278A (en) | Multi-client high-precision directory quota control method for distributed file system | |
JP2010044553A (en) | Data processing method, cluster system, and data processing program | |
CN115390754A (en) | Hard disk management method and device | |
CN106339279B (en) | Service recovery method and device | |
CN112083886B (en) | Storage management method, system and device of NAS (network attached storage) equipment | |
CN113518131B (en) | Fault-tolerant processing method, device and system for transmission data of network abnormality | |
CN110098945B (en) | Data processing method and device applied to node system | |
CN108023914B (en) | Memory data sharing system, and memory data writing and reading method |
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 |