KR20170127666A - System for providing remote memory and page fault handling method thereof - Google Patents

System for providing remote memory and page fault handling method thereof Download PDF

Info

Publication number
KR20170127666A
KR20170127666A KR1020160058013A KR20160058013A KR20170127666A KR 20170127666 A KR20170127666 A KR 20170127666A KR 1020160058013 A KR1020160058013 A KR 1020160058013A KR 20160058013 A KR20160058013 A KR 20160058013A KR 20170127666 A KR20170127666 A KR 20170127666A
Authority
KR
South Korea
Prior art keywords
remote memory
page
memory
temporary
remote
Prior art date
Application number
KR1020160058013A
Other languages
Korean (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 KR1020160058013A priority Critical patent/KR20170127666A/en
Publication of KR20170127666A publication Critical patent/KR20170127666A/en

Links

Images

Classifications

    • 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS

Abstract

The present invention relates to remote memory provision. A remote memory providing system according to an embodiment of the present invention comprises: a donor memory agent unit which is executed in a memory donor node and registers a donor memory; a remote memory integrated management unit which is executed in a management node, manages a pool for the donor memory registered by the donor memory agent unit, and allocates an appropriate unallocated memory block in the donor memory pool when there is a remote memory usage request; and a remote memory usage support unit which is executed in a memory user node and maps a remote memory page of the memory donor node allocated by the remote memory integrated management unit to a virtual address space of a remote memory user according to the remote memory usage request of the remote memory user to allow the remote memory user to use a remote memory. According to the present invention, applications can use a physical memory of a remote computing node as a local memory of a computing node on which the application is executed.

Description

원격 메모리 제공 시스템 및 이의 페이지 폴트 처리 방법{System for providing remote memory and page fault handling method thereof}[0001] The present invention relates to a remote memory providing system and a page fault handling method thereof,

본 발명은 원격 메모리 제공 시스템에 관한 것으로, 상세하게는 응용들이 원격 컴퓨팅 노드의 물리 메모리를 그 응용이 실행되는 컴퓨팅 노드의 로컬 메모리처럼 이용할 수 있도록 지원할 수 있도록 구현된 원격 메모리 제공 시스템 및 이의 페이지 폴트 처리 방법에 관한 것이다.
The present invention relates to a remote memory provisioning system, and more particularly, to a remote memory provisioning system and its page fault management system implemented so that applications can utilize the physical memory of a remote computing node as a local memory of a computing node on which the application is executed. And a method of processing the same.

대용량 메모리를 요구하는 응용을 운용하기 위해서 물리적으로 대용량 메모리를 가진 고성능 슈퍼 노드를 이용하는 방법은 매우 비용이 많이 들기 때문에, 그 대안으로 원격 메모리를 이용하여 대용량 메모리 응용의 레이턴시(latency) 및 성능을 개선하려는 노력들이 있었다.As a method of using a high performance super node with a large physical memory in order to operate an application requiring a large memory is very expensive, an alternative is to improve the latency and performance of the large memory application by using the remote memory There were efforts to

그 중에서 분산 메모리 객체 캐싱 시스템인 맴캐시드(memcached), 레디스(Redis) 등과 같이 응용 레벨에서 원격 메모리를 캐쉬로 이용하려는 노력들이 있었는가 하면, 램클라우드(Ramcloud)처럼 원격 메모리를 파일 시스템처럼 이용하려는 노력도 있었다. There have been efforts to use remote memory as a cache at application level, such as memcached and Redis, distributed memory object caching systems, and remote memory like a file system like Ramcloud. There was also an effort to use it.

또한, RNACache는 원격 메모리를 캐쉬 또는 파일시스템 두 가지 모두 모두로 이용 가능한 방법을 지원하며, 이 외에도 원격 메모리를 네트워크 블록 장치, 스왑 장치 등으로 사용하여 시스템 성능을 개선하려는 노력들도 있었다.In addition, RNACache supports the use of remote memory as both a cache or a file system, and there have also been efforts to improve system performance by using remote memory as a network block device, swap device, and so on.

또한, 메모리 시맨틱을 제공하는 형태로는 원격 메모리를 분산 공유 메모리 형태로 이용하려는 많은 노력들이 있어 왔다.There have also been many attempts to use remote memory as distributed shared memory in a form providing memory semantics.

대부분의 운영체제는 응용이 메모리를 할당받을 때에 즉시 물리 메모리가 할당되는 것이 아니라 해당 응용의 가상 주소 공간에 하나의 가상 메모리 영역을 할당받는다. 그 응용이 할당받은 가상 메모리 영역의 특정 주소에 접근(읽기 또는 쓰기)할 때 물리 메모리 페이지가 할당되고, 커널에 의해 페이지 테이블이 업데이트가 되어 응용이 접근 가능하게 된다.Most operating systems are not allocated physical memory immediately when an application is allocated memory, but a virtual memory area is allocated to the virtual address space of the application. When accessing (reading or writing) a specific address in the virtual memory area allocated by the application, the physical memory page is allocated, and the page table is updated by the kernel so that the application becomes accessible.

이와 같이 물리 메모리를 할당하고 페이지 테이블을 업데이트하는 과정을 페이지 폴트 처리(page fault handling)라고 한다. 마찬가지로 원격 메모리를 할당받는 것은 로컬 시스템의 가상주소 공간에 원격 메모리를 의미하는 영역을 할당받는 것을 의미한다.This process of allocating physical memory and updating the page table is called page fault handling. Likewise, allocating remote memory means allocating space for the remote memory to the virtual address space of the local system.

대용량 메모리를 요구하는 응용이 원격 메모리 영역의 특정 주소에 대한 읽기 또는 쓰기를 수행하는 시점에, 로컬 시스템의 물리 페이지를 할당하고, 접근하려는 원격 메모리 페이지의 내용을 복사해 와서 응용의 가상주소에 맵핑해주는 원격 메모리 페이지 폴트에 대한 처리를 제공해 주어야 한다.
When an application requesting a large memory area reads or writes a specific address in a remote memory area, it allocates a physical page of the local system, copies the contents of the remote memory page to be accessed, and maps the address to a virtual address of the application You should provide processing for a remote memory page fault.

본 발명은 상기와 같은 필요에 의해 창출된 것으로서, 응용들이 원격 컴퓨팅 노드의 물리 메모리를 그 응용이 실행되는 컴퓨팅 노드의 로컬 메모리처럼 이용할 수 있도록 지원할 수 있도록 구현된 원격 메모리 제공 시스템 및 이의 페이지 폴트 처리 방법을 제공하는데 그 목적이 있다.
The present invention provides a remote memory providing system and its page fault processing system implemented so that applications can utilize the physical memory of a remote computing node as a local memory of a computing node on which the application is executed, The purpose of the method is to provide.

전술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 원격 메모리 제공 시스템은, 메모리 공여 노드에서 실행되어 공여 메모리를 등록하는 공여 메모리 에이전트부; 관리 노드에서 실행되며, 상기 공여 메모리 에이전트부에 의해 등록된 공여 메모리에 대한 풀을 관리하여, 원격 메모리 사용 요청이 있는 경우, 공여 메모리 풀에서 적당한 미할당 메모리 블록을 찾아 할당해주는 원격 메모리 통합관리부; 및 메모리 사용자 노드에서 실행되며, 원격 메모리 사용자의 원격 메모리 사용 요청에 따라 상기 원격 메모리 통합관리부에 의해 할당되는 상기 메모리 공여 노드의 원격 메모리 페이지를 상기 원격 메모리 사용자의 가상주소공간에 맵핑시켜 상기 원격 메모리 사용자가 원격 메모리를 이용할 수 있도록 하는 원격 메모리 사용지원부를 포함한다.According to an aspect of the present invention, there is provided a remote memory providing system including: a donor memory agent unit executing a donor memory in a memory donor node; A remote memory integrated management unit that manages a pool for the donor memory registered by the donor memory agent unit and allocates and allocates an appropriate unallocated memory block in the donor memory pool when there is a remote memory use request; And mapping a remote memory page of the memory donor node allocated by the remote memory integration manager to a virtual address space of the remote memory user according to a remote memory usage request of the remote memory user, And a remote memory usage support unit that allows a user to use the remote memory.

상기 원격 메모리 사용지원부는, 원격 메모리 페이지 폴트가 발생하는 경우, 상기 메모리 공여 노드에서 운영되는 임시페이지 풀에서 임시 페이지를 할당하고, 할당된 임시 페이지에 원격 메모리 페이지의 내용을 복사하고, 원격 메모리 페이지의 내용이 복사된 임시 페이지를 상기 원격 메모리 사용자의 가상주소공간에 맵핑시킨다.The remote memory usage support unit allocates a temporary page in a temporary page pool operated on the memory donor node when the remote memory page fault occurs, copies the contents of the remote memory page to the allocated temporary page, To the virtual address space of the remote memory user.

상기 원격 메모리 사용지원부는, 사용자 레벨의 라이브러리로서, 상기 원격 메모리 사용자에게 원격 메모리를 할당하고 해제하는 응용 프로그램 인터페이스를 제공하는 원격 메모리 라이브러리; 및 임시페이지 풀을 초기화 및 운영하고, 커널에 자신을 등록하는 한편, 원격 메모리 페이지 폴트 처리를 수행하는 상기 원격 메모리 지원부를 포함한다.The remote memory usage support unit comprising: a remote memory library as a user level library, the remote memory usage library providing an application program interface for allocating and releasing remote memory to the remote memory user; And the remote memory support unit for initializing and operating a temporary page pool, registering itself in the kernel, and performing remote memory page fault processing.

상기 원격 메모리 지원부는, 상기 커널에 자신을 등록하는 경우, mmap 함수를 재정의하는 한편, 상기 커널에 의해 할당되는 가상 주소 메모리 영역(VMA: Virtual Memory Area)의 오퍼레이션 중에서 종료처리(close)와 폴트 처리(fault)를 수행하는 함수 포인터를 재지정한다.The remote memory support unit redefines the mmap function when registering itself in the kernel, and performs a termination process (close) and a fault process (VMA) in the virtual memory area (VMA) and redefines the function pointer that performs the fault.

상기 원격 메모리 지원부는 상기 mmap 함수를 호출하여 상기 원격 메모리의 할당에 대한 처리를 하고, 상기 종료처리 함수를 호출하여 상기 원격 메모리 해제에 대한 처리를 수행한다.The remote memory support unit calls the mmap function to process the allocation of the remote memory, and calls the termination processing function to perform the processing for the remote memory release.

상기 원격 메모리 지원부는 원격 메모리 페이지 폴트 처리기능을 담당하는 함수를 가상 주소 메모리 영역(VMA)의 폴트 처리 오퍼레이션 포인터로 재지정함으로써, 원격 메모리 페이지 폴트 발생 시 상기 원격 메모리 페이지 폴트 처리를 수행한다.The remote memory support unit performs the remote memory page fault processing when a remote memory page fault occurs by redirecting the function responsible for the remote memory page fault processing function to the fault processing operation pointer of the virtual address memory area (VMA).

상기 원격 메모리 지원부는 상기 원격 메모리에 대한 할당 정보를 메모리 객체로 관리한다.The remote memory support unit manages allocation information for the remote memory as a memory object.

상기 원격 메모리에 대한 할당 정보는 실제 원격 메모리가 할당된 공여 노드에 대한 정보, 공여된 원격 메모리의 시작주소 및 종료주소, 접근키, 네트워크 연결 정보, 원격 메모리 사용자의 원격 메모리 영역의 가상 주소 정보를 포함한다.The allocation information for the remote memory includes information on the donor node to which the actual remote memory is allocated, the start address and the end address of the granted remote memory, the access key, the network connection information, and the virtual address information of the remote memory area of the remote memory user .

상기 임시페이지 풀은, 원격 메모리 페이지 캐시로 사용될 미사용 임시 페이지들로 구성되는 미사용 페이지 리스트; 상기 원격 메모리 사용자가 원격 메모리에 접근하기 위해 임시로 사용중인 임시 페이지들로 구성되는 활성 페이지 리스트; 상기 원격 메모리 사용자가 일정 시간 사용하지 않아 비활성된 임시 페이지 중에서 상기 원격 메모리 사용자가 임시 페이지에 데이터 쓰기를 수행하였기 때문에 원격 메모리로 저장되어야 하는 페이지들로 구성되는 비활성 수정된 페이지 리스트; 및 상기 원격 메모리 사용자가 일정 시간 사용하지 않아 비활성된 임시 페이지 중에서 상기 원격 메모리 사용자가 쓰기를 수행하지 않아 상기 미사용 페이지 리스트로 반환할 수 있는 페이지들로 구성되는 비활성 페이지 리스트를 포함한다.
Wherein the temporary page pool includes an unused page list consisting of unused temporary pages to be used as a remote memory page cache; An active page list consisting of temporary pages being temporarily used by the remote memory user to access remote memory; An inactive modified page list consisting of pages to be stored in the remote memory because the remote memory user has written data to the temporary page among the inactive temporary pages that the remote memory user has not used for a certain time; And an inactive page list composed of pages in which the remote memory user does not perform writing and can return the unused page list to the unused page list among temporary pages disabled because the remote memory user does not use it for a predetermined time.

한편, 전술한 목적을 달성하기 위한 본 발명의 타 측면에 따른 원격 메모리 제공 시스템의 페이지 폴트 처리 방법은, 원격 메모리 페이지 폴트가 발생되면, 미리 읽기가 설정되어 있는지를 판단하는 단계; 상기 미리 읽기가 설정되어 있는지를 판단한 결과, 미리 읽기가 설정되어 있지 않으면, 기 할당된 임시 페이지가 존재하는지를 판단하는 단계; 상기 기 할당된 임시 페이지가 존재하는지를 판단한 결과, 기 할당된 임시 페이지가 존재하지 않으면, 임시 페이지를 할당하는 단계; 원격 메모리 페이지의 내용을 할당된 임시 페이지에 저장하는 단계; 및 원격 메모리 페이지의 내용이 저장된 임시 페이지를 페이지 폴트가 발생한 페이지에 맵핑시키는 단계를 포함한다.According to another aspect of the present invention, there is provided a method of processing a page fault in a remote memory providing system, the method comprising: determining whether read-ahead is set when a remote memory page fault occurs; Determining whether or not pre-reading is set, determining that pre-allocated temporary pages exist if read-ahead is not set; Assigning a temporary page if the pre-allocated temporary page does not exist as a result of determining that the pre-allocated temporary page exists; Storing the contents of the remote memory page in the allocated temporary page; And mapping the temporary page where the contents of the remote memory page are stored to the page where the page fault occurred.

상기 방법은, 상기 미리 읽기가 설정되어 있는지를 판단한 결과, 미리 읽기가 설정되어 있으면, 미리 읽기 처리 동작을 수행한 후, 기 할당된 임시 페이지가 존재하는지를 판단하는 단계를 더 포함한다.The method may further include determining whether the preliminary reading is set and, if preliminary reading is set, performing preliminary reading processing and then determining whether there is a preliminarily assigned temporary page.

상기 방법은, 상기 기 할당된 임시 페이지가 존재하는지를 판단한 결과, 기 할당된 임시 페이지가 존재하면, 기 할당된 임시 페이지를 재활성화시키는 단계를 더 포함한다. The method further includes re-activating the pre-allocated temporary page if the pre-allocated temporary page exists as a result of determining that the pre-allocated temporary page exists.

상기 방법은, 기 할당된 임시 페이지를 재활성화시킨 후, 재활성화된 임시 페이지를 페이지 폴트가 발생한 페이지에 맵핑시키는 단계를 더 포함한다.The method further comprises reactivating the preassigned temporary page and then mapping the reactivated temporary page to the page where the page fault occurred.

상기 기 할당된 임시 페이지를 재활성화시키는 단계는, 기 할당된 임시 페이지를 활성 페이지 리스트의 맨 끝으로 옮기는 것에 의해 이루어진다.Reactivating the preassigned temporary page is accomplished by moving the preassigned temporary page to the end of the active page list.

상기 임시 페이지를 할당하는 단계는, 임시페이지 풀의 미사용 페이지 리스트 내의 임시 페이지를 할당하고, 할당된 임시 페이지를 활성 페이지 리스트의 맨 끝으로 옮기는 것을 포함한다.The step of allocating the temporary page includes allocating a temporary page in the unused page list of the temporary page pool and moving the allocated temporary page to the end of the active page list.

상기 원격 메모리 페이지의 내용을 할당된 임시 페이지에 저장하는 단계는, 페이지 폴트가 발생한 주소에 해당하는 원격 메모리 페이지의 공여 노드에 대한 정보, 원격 메모리의 주소 및 접근키를 검색하고, 검색된 결과를 이용하여, 원격 메모리 페이지의 내용을 읽어와서, 할당된 임시 페이지에 저장하는 것을 포함한다.The step of storing the contents of the remote memory page in the allocated temporary page may include retrieving information on the donor node of the remote memory page corresponding to the address where the page fault occurred, the address of the remote memory and the access key, , And reading the contents of the remote memory page and storing it in the allocated temporary page.

상기 원격 메모리 페이지의 내용이 저장된 임시 페이지를 페이지 폴트가 발생한 페이지에 맵핑시키는 단계는, 원격 메모리 사용자의 페이지 테이블을 커널 레벨에서 수정하는 것에 의해 이루어진다.
Mapping the temporary page where the contents of the remote memory page is stored to the page where the page fault occurred is accomplished by modifying the remote memory user's page table at the kernel level.

본 발명에 따른 원격 메모리 제공 시스템 및 이의 페이지 폴트 처리 방법에 따르면, 고성능 컴퓨팅 시스템에서 응용들이 원격 컴퓨팅 노드의 물리 메모리를 그 응용이 실행되는 컴퓨팅 노드의 로컬 메모리처럼 이용할 수 있다.According to the remote memory providing system and the page fault processing method according to the present invention, in a high performance computing system, applications can use the physical memory of the remote computing node as the local memory of the computing node on which the application is executed.

또한, 본 발명에 있어서의 페이지 폴트 처리는 커널 레벨에서 이루어지기 때문에 페이지 폴트를 빠르게 처리할 수 있으며, 이에 따라, 원격 메모리에 대한 접근 지연(Latency)을 최소화하고, 전송 성능(대역폭)을 극대화할 수 있다.
In addition, since the page fault processing in the present invention is performed at the kernel level, page faults can be processed quickly, thereby minimizing the latency to the remote memory and maximizing the transmission performance (bandwidth) .

도 1은 본 발명의 실시 예에 따른 원격 메모리 제공 시스템이 구현되는 고성능 컴퓨팅 시스템의 구성도를 도시한 것이다.
도 2는 본 발명의 실시 예에 따른 원격 메모리 제공 시스템의 일례를 도시한 구성도를 도시한 것이다.
도 3은 본 발명의 실시 예에 따른 원격 메모리 제공 시스템에 있어서의 원격 메모리 사용지원부의 상세 구성을 도시한 것이다.
도 4는 본 발명의 실시 예에 따른 원격 메모리 제공 시스템에 있어서의 원격 메모리 할당 및 페이지 폴트 처리를 설명하기 위한 예시도이다.
도 5는 본 발명의 실시 예에 따른 원격 메모리 제공 시스템에서 원격 메모리 제공에 사용되는 임시페이지 풀의 일례의 구조를 도시한 도면이다.
도 6은 본 발명의 실시 예에 따른 원격 메모리 제공 시스템의 원격 메모리 페이지 폴트 처리 동작에 따른 순서를 도시한 순서도이다.
1 is a block diagram of a high performance computing system in which a remote memory providing system according to an embodiment of the present invention is implemented.
2 is a block diagram showing an example of a remote memory providing system according to an embodiment of the present invention.
3 shows a detailed configuration of a remote memory use support unit in a remote memory supply system according to an embodiment of the present invention.
4 is an exemplary diagram for explaining remote memory allocation and page fault processing in the remote memory providing system according to the embodiment of the present invention.
5 is a diagram illustrating an example structure of a temporary page pool used for providing remote memory in a remote memory providing system according to an embodiment of the present invention.
FIG. 6 is a flowchart showing a procedure according to a remote memory page fault processing operation of the remote memory providing system according to the embodiment of the present invention.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 도면부호는 동일 구성 요소를 지칭한다.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 concept of the invention to those skilled in the art. Is provided to fully convey the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims. Like numbers refer to like elements throughout.

본 발명의 실시 예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시 예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
In the following description of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. The following terms are defined in consideration of the functions in the embodiments of the present invention, which may vary depending on the intention of the user, the intention or the custom of the operator. Therefore, the definition should be based on the contents throughout this specification.

이하, 본 발명의 실시 예에 따른 원격 메모리 제공 시스템 및 이의 페이지 폴트 처리 방법에 대하여 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, a remote memory providing system and a page fault processing method according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 실시 예에 따른 원격 메모리 제공 시스템이 구현되는 고성능 컴퓨팅 시스템의 구성도를 도시한 것으로서, 원격 메모리 접근이 가능한 고성능 컴퓨팅 시스템의 일례를 도시하고 있다.FIG. 1 is a block diagram of a high performance computing system in which a remote memory providing system according to an embodiment of the present invention is implemented. FIG. 1 illustrates an example of a high performance computing system capable of remote memory access.

도 1을 참조하면, 고성능 컴퓨팅 시스템(100)은 메모리 사용자 노드(110), 메모리 공여 노드(120) 및 관리 노드(130)를 포함하고, 상기 메모리 사용자 노드(110) 및 메모리 공여 노드(120)는 고성능 컴퓨팅 시스템(100)에 다수 개 마련될 수 있다.1, a high performance computing system 100 includes a memory user node 110, a memory donor node 120, and a management node 130, and the memory user node 110 and memory donor node 120, A plurality of high-performance computing systems 100 may be provided.

한편, 상기 메모리 사용자 노드(110), 메모리 공여 노드(120) 및 관리 노드(130)는 고속 네트워크(140)를 통해 서로 연결되어 통신하도록 구현될 수 있으나, 통신을 위한 연결이 고속 네트워크에 의해서만 이루어지는 것은 아니다.Meanwhile, the memory user node 110, the memory donor node 120, and the management node 130 may be implemented to communicate with each other through the high-speed network 140. However, It is not.

또한, 상기 메모리 사용자 노드(110)에서는 원격 메모리를 사용하는 응용이 실행되고, 상기 메모리 공여 노드(120)는 자신의 메모리를 원격 메모리 사용자 응용에게 제공한다.Also, in the memory user node 110, an application using a remote memory is executed, and the memory donor node 120 provides its memory to a remote memory user application.

도 2는 본 발명의 실시 예에 따른 원격 메모리 제공 시스템의 일례를 도시한 구성도로서, 도 2를 참조하면, 원격 메모리 제공 시스템(200)은 공여 메모리 에이전트부(210), 원격 메모리 통합관리부(220), 원격 메모리 사용지원부(230)를 포함한다.Referring to FIG. 2, a remote memory providing system 200 includes a donor memory agent unit 210, a remote memory unified management unit (not shown) 220, and a remote memory use support unit 230.

상기 공여 메모리 에이전트부(210)는 도 1의 메모리 공여 노드(120)에서 실행되는 응용으로서, 원격 메모리 통합 관리부(220)에 공여 메모리를 등록한다.The donation memory agent unit 210 is an application executed in the memory donor node 120 of FIG. 1, and registers the grant memory in the remote memory integration management unit 220.

상기 원격 메모리 통합관리부(220)는 도 1의 관리 노드(130)에서 실행되는 응용으로서, 공여 메모리 에이전트부(210)에서 등록하는 공여 메모리에 대한 풀(Pool)을 관리하며, 원격 메모리 사용지원부(230)에서 원격 메모리 사용 요청이 있을 경우 공여 메모리 풀에서 적당한 미할당 메모리 블록을 찾아 원격 메모리 사용지원부(230)에 할당해준다.The remote memory integrated management unit 220 manages a pool for a donor memory registered in the donor memory agent unit 210 and executes a remote memory use support unit 230, a suitable unallocated memory block is found in the grant memory pool and allocated to the remote memory use support unit 230.

상기 원격 메모리 사용지원부(230)는 도 1의 메모리 사용자 노드(110)에서 실행되는 응용으로서, 원격 메모리를 실제로 사용하는 응용인 원격 메모리 사용자(300)의 요청에 따라 원격 메모리 통합관리부(220)로 원격 메모리의 할당을 요청하여, 원격 메모리 사용자(300)가 원격 메모리를 사용할 수 있도록 지원한다.The remote memory use support unit 230 is an application executed in the memory user node 110 of FIG. 1, and is used by the remote memory integration management unit 220 in response to a request from the remote memory user 300, which is an application that actually uses the remote memory. And requests allocation of the remote memory, so that the remote memory user 300 can use the remote memory.

이때, 상기 원격 메모리 사용자(300)는 도 1의 메모리 사용자 노드(110)에서 실행되며, 원격 메모리 사용지원부(230)의 구체적인 기능은 이하의 설명을 통해 이해할 수 있을 것이다.At this time, the remote memory user 300 is executed in the memory user node 110 of FIG. 1, and the specific functions of the remote memory use support unit 230 will be understood from the following description.

도 3은 본 발명의 실시 예에 따른 원격 메모리 제공 시스템에 있어서의 원격 메모리 사용지원부의 상세 구성을 도시한 것으로, 도 3에는 원격 메모리 사용자와의 관계도 함께 도시되어 있다.FIG. 3 shows a detailed configuration of a remote memory use support unit in a remote memory supply system according to an embodiment of the present invention. FIG. 3 also shows a relationship with a remote memory user.

도 3에 도시된 바와 같이, 원격 메모리 사용지원부(230)는 원격 메모리 라이브러리(231)와 원격 메모리 지원부(232)로 구성된다.As shown in FIG. 3, the remote memory use support unit 230 includes a remote memory library 231 and a remote memory support unit 232.

상기 원격 메모리 라이브러리(231)는 사용자 레벨의 라이브러리로서, 원격 메모리 사용자(300)에게 명시적으로 원격 메모리를 할당하고 해제하는 응용 프로그램 인터페이스를 제공한다.The remote memory library 231, as a user level library, provides an application program interface for explicitly allocating and releasing remote memory to the remote memory user 300.

상기 원격 메모리 지원부(232)는 커널에 구현될 수 있는 것으로서, 세부적으로 원격 메모리 페이지 폴트 처리기능, 원격 메모리 미리읽기 처리기능, 원격 메모리 할당 관리기능, 임시 페이지 관리기능, 메시지 처리기능 및 고속네트워크 통신 처리기능을 수행한다.The remote memory support unit 232 may be implemented in the kernel and may include a remote memory page fault processing function, a remote memory read processing function, a remote memory allocation management function, a temporary page management function, a message processing function, Processing function.

한편, 원격 메모리 사용자(300)가 원격 메모리의 접근(읽기, 쓰기, 복사 등)할 때에는 시스템에서 제공하는 표준 C 라이브러리(233)를 이용할 수 있다.Meanwhile, when the remote memory user 300 accesses (reads, writes, copies, etc.) the remote memory, the standard C library 233 provided by the system can be used.

상기 원격 메모리 지원부(232)에 대해서 좀 더 구체적으로 살펴보면, 상기 원격 메모리 지원부(232)는 초기화될 때, 도 2의 원격 메모리 통합 관리부(210)에 연결을 설정하고, 클라이언트로서 등록 절차를 진행한다.More specifically, when the remote memory support unit 232 is initialized, the remote memory support unit 232 establishes a connection to the remote memory integrated management unit 210 of FIG. 2 and proceeds with the registration process as a client .

그리고, 상기 원격 메모리 지원부(232)는 임시 페이지 풀(pool)을 초기화하고, 커널에 자신을 등록한다.Then, the remote memory support unit 232 initializes a temporary page pool and registers itself in the kernel.

한편, 상기 원격 메모리 지원부(232)는 커널에 자신을 등록할 때, 표준 오퍼레이션 중에서 mmap 함수를 재정의해 주는데, 이때 커널에 의해 할당되는 가상 주소 메모리 영역(VMA: Virtual Memory Area)의 오퍼레이션 중에서 종료처리(close)와 폴트 처리(fault)를 수행하는 함수 포인터를 재지정함으로써 커널의 표준 페이지 폴트 처리 메커니즘을 이용할 수 있게 된다.Meanwhile, when the remote memory support unit 232 registers itself in the kernel, the mmap function is redefined among the standard operations. At this time, among the operations of the virtual memory area (VMA) allocated by the kernel, the standard page fault handling mechanism of the kernel can be utilized by reallocating function pointers that perform close and fault operations.

이와 같이 원격 메모리 페이지 폴트 처리기능을 담당하는 함수가 VMA의 폴트 처리 오퍼레이션 포인터로 재지정됨으로써, 페이지 폴트 발생 시에 커널에 의해 호출되어 원격 메모리 페이지 폴트 처리를 수행한다.In this way, the function responsible for the remote memory page fault handling function is redirected to the fault handling operation pointer of the VMA, so that it is called by the kernel at the occurrence of the page fault to perform the remote memory page fault processing.

상기 원격 메모리 지원부(232)는 원격 메모리 페이지 폴트 처리 과정에서 원격 메모리 미리읽기 처리기능을 수행할 수 있으며, 예를 들어 출원번호 2014-0010732에서 제안된 바와 같은 원격 메모리 미리읽기 처리를 수행할 수 있다.The remote memory support unit 232 may perform a remote memory read-ahead processing function in the process of remote memory page fault processing and may perform remote memory read-ahead processing as proposed in, for example, application number 2014-0010732 .

상기 원격 메모리 지원부(232)는 mmap 함수를 호출하여 원격 메모리의 할당에 대한 처리를 수행하고, VMA 오퍼레이션 중에서 종료처리(close) 함수를 호출하여 원격 메모리 해제에 대한 처리를 수행한다.The remote memory support unit 232 calls the mmap function to perform a process for allocation of the remote memory, and the VMA operation calls a close function to perform a process for the remote memory release.

일례로, 상기 원격 메모리 지원부(232)는 출원번호 2014-0010732에서 제안된 원격 메모리 할당 절차를 통해 원격 메모리의 할당과 관련된 처리를 수행할 수 있다.For example, the remote memory support unit 232 may perform processing related to allocation of the remote memory through the remote memory allocation procedure proposed in Application No. 2014-0010732.

이때, 상기 원격 메모리 지원부(232)는 원격 메모리에 대한 할당 정보를 메모리 객체로 관리하며, 메모리 객체에는 실제 원격 메모리가 할당된 공여 노드에 대한 정보, 공여된 원격 메모리의 시작주소 및 종료주소, 접근키, 네트워크 연결 정보, 원격 메모리 사용자(300)의 원격 메모리 영역의 가상 주소 정보가 저장된다.At this time, the remote memory support unit 232 manages the allocation information for the remote memory as a memory object. The memory object stores information about the donor node to which the actual remote memory is allocated, the start address and end address of the granted remote memory, Key, network connection information, and virtual address information of the remote memory area of the remote memory user 300 are stored.

상기 원격 메모리 지원부(232)는 도 2에 도시된 원격 메모리 통합 관리부(220) 혹은 공역 메모리 에이전트부(210)와 주고받는 모든 메시지의 헤더 및 내용을 작성하고, 고속 네트워크를 통해 메시지에 대한 송수신을 처리한다.The remote memory support unit 232 creates the header and contents of all messages exchanged with the remote memory integrated management unit 220 or the public memory memory unit 210 shown in FIG. 2, and transmits and receives messages through the high- .

상기 원격 메모리 지원부(232)는 임시 페이지 풀을 운영하는데, 예를 들어 출원번호 2014-0124501에서 제안된 임시 페이지 풀 운영 방법에 따라 임시 페이지 풀을 운영할 수 있다.The remote memory support unit 232 operates a temporary page pool. For example, it can operate a temporary page pool according to the temporary page pool operation method proposed in Application No. 2014-0124501.

상기 원격 메모리 지원부(232)는 고속 네트워크 통신 처리기능을 수행하는데, 예를 들어 인피니밴드(Infiniband)와 같은 RDMA(Remote Direct Memory Access)지원 네트워크를 통한 연결 설정, 메시지 송신, RDMA 읽기/쓰기 동작을 수행한다.
The remote memory support unit 232 performs a high speed network communication processing function. For example, connection establishment, message transmission, and RDMA read / write operation through a network supporting RDMA (Remote Direct Memory Access) such as Infiniband .

도 4는 본 발명의 실시 예에 따른 원격 메모리 제공 시스템에 있어서의 원격 메모리 할당 및 페이지 폴트 처리를 설명하기 위한 예시도이다.4 is an exemplary diagram for explaining remote memory allocation and page fault processing in the remote memory providing system according to the embodiment of the present invention.

도 4를 참조하면 본 발명의 실시 예에 따른 원격 메모리 제공 시스템에서 원격 메모리를 제공하는 경우에 있어서의 원격 메모리, 임시 페이지 및 원격 메모리 영역의 관계에 대해서 알 수 있다.Referring to FIG. 4, the relationship between the remote memory, the temporary page, and the remote memory area in the case of providing the remote memory in the remote memory providing system according to the embodiment of the present invention can be known.

먼저, 메모리 사용자 노드(110)에서는 원격 메모리 사용 지원부(230) 및 원격 메모리 사용자(300)가 실행되고, 메모리 공여 노드(120)에서는 공여 메모리 에이전트부(210)가 실행된다.The remote memory use support unit 230 and the remote memory user 300 are executed in the memory user node 110 and the donation memory agent unit 210 is executed in the memory donor node 120. [

특히, 메모리 사용자 노드(110)의 커널 레벨(Kernel Layer)에서는 원격 메모리 사용 지원부(230)의 원격 메모리 지원부(232)가 실행되고, 메모리 사용자 노드(110)의 사용자 레벨(User Layer)에서는 원격 메모리 사용 지원부(230)의 원격 메모리 라이브러리(231)가 링크된 원격 메모리 사용자 (300)가 실행된다.Particularly, in the kernel level of the memory user node 110, the remote memory support unit 232 of the remote memory use support unit 230 is executed, and in the user level of the memory user node 110, The remote memory user 300 to which the remote memory library 231 of the use support unit 230 is linked is executed.

메모리 공여 노드(120)에서 실행되는 공여 메모리 에이전트부(210)가 원격 메모리를 제공하며, 원격 메모리는 모두 물리 페이지가 고정 할당된 상태로 제공된다.The donor memory agent unit 210, which is executed in the memory donor node 120, provides the remote memory, and all the remote memories are provided with the physical pages being fixedly allocated.

이때, 원격 메모리 사용자(300)는 원격 메모리 라이브러리(도 3의 231)를 통해 원격 메모리 지원부(232)로부터 원격 메모리를 할당받는다.At this time, the remote memory user 300 is allocated remote memory from the remote memory support unit 232 through the remote memory library (231 in FIG. 3).

또한, 원격 메모리는 로컬 메모리 할당과 유사하게 원격 메모리 사용자(300)의 가상주소공간의 일정 영역에 할당되며, 원격 메모리가 할당되는 가상주소공간의 일정 영역을 ‘원격 메모리 영역’(310)이라 한다.Also, the remote memory is allocated to a certain area of the virtual address space of the remote memory user 300, similar to the local memory allocation, and a certain area of the virtual address space to which the remote memory is allocated is referred to as a 'remote memory area' .

이때, 상기 원격 메모리 사용자(300)는 하나의 원격 메모리 공여 노드(120)의 메모리 블록을 할당받을 수 있으며, 다수의 원격 메모리 공여 노드(120)의 메모리 블록을 할당받을 수 있다.At this time, the remote memory user 300 can be allocated a memory block of one remote memory donor node 120 and can be allocated a memory block of a plurality of remote memory donor nodes 120. [

상기 원격 메모리 사용자(300)가 원격 메모리 영역에 접근하는 것은 로컬 메모리를 할당받은 메모리 영역과는 다른 페이지 폴트 핸들러(handler)의 호출에 의해 이루어질 수 있다.The remote memory user 300 may access the remote memory area by calling a page fault handler different from the memory area to which the local memory is allocated.

즉, 상기 원격 메모리 지원부(232)는 원격메모리 페이지 폴트 처리기능을 수행하는데, 이에 따라, 원격 메모리 지원부(232)의 임시페이지 풀(232-1)에서 임시적으로 물리 메모리 페이지(‘임시 페이지’라 함)를 할당하고, 할당된 임시 페이지(232-2)에 원격 메모리(211)의 페이지(212)의 내용을 할당된 임시 페이지(232-2)에 복사하고, 원격 메모리 페이지(212)의 내용이 복사된 임시 페이지(232-2)를 원격 메모리 사용자(300)의 가상주소공간에 맵핑한다.That is, the remote memory support unit 232 performs the remote memory page fault processing function, thereby temporarily storing the physical memory page ('temporary page') in the temporary page pool 232-1 of the remote memory support unit 232 Copies the contents of the page 212 of the remote memory 211 to the allocated temporary page 232-2 and copies the contents of the remote memory page 212 to the allocated temporary page 232-2, And maps the copied temporary page 232-2 to the virtual address space of the remote memory user 300. [

도 4를 참조하여 설명한 바와 같이, 원격 메모리를 사용하기 위해 임시페이지 풀에서 미사용중인 임시 페이지를 할당하고, 할당된 임시페이지를 원격 메모리 페이지 캐시로 운영하다가 반환한다.As described with reference to FIG. 4, an unused temporary page is allocated in the temporary page pool to use the remote memory, and the allocated temporary page is operated and returned to the remote memory page cache.

이때, 본 발명에 따르면, 임시 페이지를 원격 메모리 페이지 캐시로 사용하기 위해서 임시페이지 풀은 내부적으로 4개의 리스트로 구분되어 운영된다.According to the present invention, in order to use a temporary page as a remote memory page cache, the temporary page pool is internally divided into four lists and operated.

이하에서는 도 5를 참조하여, 임시페이지 풀의 구조에 대해서 설명하기로 한다.Hereinafter, the structure of the temporary page pool will be described with reference to FIG.

도 5는 본 발명의 실시 예에 따른 원격 메모리 제공 시스템에서 원격 메모리 제공에 사용되는 임시페이지 풀의 일례의 구조를 도시한 도면이다.5 is a diagram illustrating an example structure of a temporary page pool used for providing remote memory in a remote memory providing system according to an embodiment of the present invention.

도 5에 도시된 바와 같이, 본 발명의 실시 예에 따른 원격 메모리 제공 시스템에서 사용되는 임시페이지 풀(500)은 미사용 페이지 리스트(510), 활성 페이지 리스트(520), 비활성 수정된 페이지 리스트(530) 및 비활성 페이지 리스트(540)로 구분될 수 있다.5, the temporary page pool 500 used in the remote memory providing system according to the embodiment of the present invention includes an unused page list 510, an active page list 520, an inactive modified page list 530 And an inactive page list 540. [

상기 미사용 페이지 리스트(510)는 원격 메모리 페이지 캐시로 사용될 미사용 임시 페이지들로 구성된다. 즉, 미사용 임시 페이지들은 미사용 페이지 리스트(510) 내에서 관리된다.The unused page list 510 consists of unused temporary pages to be used as a remote memory page cache. That is, the unused temporary pages are managed in the unused page list 510.

상기 활성 페이지 리스트(520)는 원격 메모리 사용자(300)가 원격 메모리에 접근하기 위해 임시로 사용중인 임시 페이지들로 구성되며, 임시로 사용중인 임시 페이지들은 활성 페이지 리스트(520) 내에서 관리된다.The active page list 520 consists of temporary pages that the remote memory user 300 is temporarily using to access the remote memory, and temporarily used temporary pages are managed in the active page list 520.

상기 비활성 수정된 페이지 리스트(530)는 원격 메모리 사용자(300)가 일정 시간 사용하지 않아 비활성화된 임시 페이지 중에서 원격 메모리 사용자(300)가 임시 페이지에 데이터 쓰기를 수행했기 때문에 원격 메모리로 저장되어야 하는 페이지들로 구성되며, 원격 메모리로 저장되어야 하는 페이지들은 비활성 수정된 페이지 리스트(530) 내에서 관리된다.The inactive modified page list 530 is a list of the pages to be stored in the remote memory because the remote memory user 300 has written data to the temporary page among the temporary pages disabled by the remote memory user 300 for a certain period of time And the pages to be stored in the remote memory are managed in the inactive modified page list 530. [

상기 비활성 페이지 리스트(540)는 원격 메모리 사용자(300)가 일정 시간 사용하지 않아 비활성화된 임시 페이지 중에서 원격 메모리 사용자(300)가 쓰기를 수행하지 않아 미사용 페이지 리스트(510)로 바로 반환할 수 있는 페이지들로 구성되며, 미사용 페이지 리스트(510)로 바로 반환할 수 있는 페이지들은 비활성 페이지 리스트(540) 내에서 관리된다.The inactive page list 540 is a page that can be directly returned to the unused page list 510 because the remote memory user 300 does not perform writing among the temporary pages disabled by the remote memory user 300 for a certain period of time, And the pages that can be directly returned to the unused page list 510 are managed in the inactive page list 540.

이하, 본 발명의 실시 예에 따른 원격 메모리 제공 시스템의 원격 메모리 페이지 폴트 처리 방법에 대하여 첨부한 도면을 참조하여 구체적으로 살펴보기로 한다.Hereinafter, a remote memory page fault processing method in a remote memory providing system according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings.

도 6은 본 발명의 실시 예에 따른 원격 메모리 제공 시스템의 원격 메모리 페이지 폴트 처리 동작에 따른 순서를 도시한 순서도이다.FIG. 6 is a flowchart showing a procedure according to a remote memory page fault processing operation of the remote memory providing system according to the embodiment of the present invention.

원격 메모리 페이지 폴트는 원격 메모리 사용자(300)가 물리 페이지가 맵핑되지 않은 원격 메모리 영역의 주소에 접근하면 발생하는 것으로, 도 6에 도시된 과정은 원격 메모리 페이지 폴트를 인지한 커널이 원격 메모리 영역에 해당하는 정보를 가지고 있는 커널 객체인 VMA(Virtual Memory Area)라는 구조체의 함수 포인터로 저장되어 있는 원격 메모리 페이지 폴트 처리기능을 호출함으로써 이루어진다.The remote memory page fault occurs when the remote memory user 300 accesses the address of the remote memory area to which the physical page is not mapped. The process shown in FIG. 6 is executed when the kernel recognizes the remote memory page fault. By calling a remote memory page fault handling function stored in a function pointer of a structure called a VMA (Virtual Memory Area) which is a kernel object having corresponding information.

도 6을 참조하면, 원격 메모리 제공 시스템(200)은 먼저 미리 읽기가 설정되어 있는지를 판단한다(S600).Referring to FIG. 6, the remote memory providing system 200 first determines whether read-ahead is set (S600).

상기 단계 S600에서의 판단 결과, 미리 읽기가 설정되어 있지 않으면(S600-아니오), 원격 메모리 제공 시스템(200)은 기 할당된 임시 페이지가 존재하는지를 판단한다(S610).As a result of the determination in step S600, if the read-ahead is not set (S600-No), the remote memory providing system 200 determines whether there is a pre-allocated temporary page (S610).

반면, 상기 단계 S600에서의 판단 결과, 미리 읽기가 설정되어 있으면(S600-예), 원격 메모리 제공 시스템(200)은 미리 읽기 처리 동작을 수행한 후(S620), 폴트가 발생한 원격 메모리 페이지의 주소에 대응하여 기 할당된 임시 페이지가 존재하는지를 판단한다(S610).On the other hand, if it is determined in step S600 that the read is set (S600-YES), the remote memory providing system 200 performs a read-ahead operation (S620) It is determined whether there is a temporary page allocated in advance (S610).

한편, 상기 단계 S610에서의 판단 결과, 기 할당된 임시 페이지가 존재하지 않는 경우(S610-아니오), 원격 메모리 제공 시스템(200)은 임시 페이지를 할당한다(S630).On the other hand, if it is determined in step S610 that the pre-allocated temporary page does not exist (No in step S610), the remote memory providing system 200 allocates a temporary page in step S630.

이때, 원격 메모리 제공 시스템(200)은 임시페이지 풀의 미사용 페이지 리스트(510) 내의 임시 페이지를 할당하고, 할당된 임시 페이지를 활성 페이지 리스트(520)의 맨 끝으로 옮긴다.At this time, the remote memory providing system 200 allocates temporary pages in the unused page list 510 of the temporary page pool and moves the allocated temporary pages to the end of the active page list 520. [

상기 단계 S630 이후, 원격 메모리 제공 시스템(200)은 원격 메모리 페이지의 내용을 읽어와서, 할당된 임시 페이지에 저장한다(S640).After step S630, the remote memory providing system 200 reads the contents of the remote memory page and stores the read contents in the allocated temporary page (S640).

구체적으로, 상기 원격 메모리 제공 시스템(200)은 페이지 폴트가 발생한 주소에 해당하는 원격 메모리 페이지의 공여 노드에 대한 정보, 원격 메모리의 주소 및 접근키를 검색한다.Specifically, the remote memory providing system 200 searches information on the donor node of the remote memory page corresponding to the address where the page fault occurred, the address of the remote memory, and the access key.

도 3과 관련한 상세한 설명에서 살펴보았듯이, 원격 메모리에 대한 할당 정보는 메모리 객체로 관리하며, 메모리 객체에는 실제 원격 메모리가 할당된 공여 노드에 대한 정보, 공여된 원격 메모리의 시작주소 및 종료주소, 접근키, 네트워크 연결 정보, 원격 메모리 사용자(300)의 원격 메모리 영역의 가상 주소 정보가 저장된다.3, the allocation information for the remote memory is managed as a memory object. The memory object includes information about the donor node to which the actual remote memory is allocated, the start address and the end address of the granted remote memory, Access key, network connection information, and virtual address information of the remote memory area of the remote memory user 300 are stored.

따라서, 원격 메모리 제공 시스템(200)은 메모리 객체를 검색하여 페이지 폴트가 발생한 주소에 해당하는 원격 메모리 페이지의 공여 노드에 대한 정보, 원격 메모리의 주소 및 접근키를 획득하는 것이 가능하다.Thus, the remote memory provisioning system 200 can retrieve the memory object and obtain information about the donor node of the remote memory page, the address of the remote memory, and the access key corresponding to the address where the page fault occurred.

그리고, 원격 메모리 제공 시스템(200)은 검색된 원격 메모리 페이지의 공여 노드에 대한 정보, 원격 메모리의 주소 및 접근키를 이용하여, 원격 메모리 페이지의 내용을 읽어와서, 할당된 임시 페이지에 저장한다.Then, the remote memory providing system 200 reads the contents of the remote memory page, using the information about the donor node of the retrieved remote memory page, the address of the remote memory, and the access key, and stores the read contents in the allocated temporary page.

상기 단계 S640 이후, 원격 메모리 제공 시스템(200)은 임시 페이지를 원격 메모리 사용자(300)의 가상주소공간 상의 페이지 폴트가 발생한 페이지에 맵핑시킨다(S650).After step S640, the remote memory providing system 200 maps the temporary page to the page where the page fault occurred on the virtual address space of the remote memory user 300 (S650).

이때, 상기 단계 S650에 있어서의 맵핑은 원격 메모리 제공 시스템(200)이 원격 메모리 사용자(300)의 페이지 테이블을 커널 레벨에서 수정하는 것에 의해 이루어질 수 있다.At this time, the mapping in step S650 may be performed by the remote memory providing system 200 by modifying the page table of the remote memory user 300 at the kernel level.

한편, 상기 단계 S610에서의 판단 결과, 기 할당된 임시 페이지가 존재하는 경우(S610-예), 원격 메모리 제공 시스템(200)은 기 할당된 임시 페이지를 재활성화시키고(S660), 재활성화된 임시 페이지를 원격 메모리 사용자(300)의 가상주소공간 상의 페이지 폴트가 발생한 페이지에 맵핑시킨다(S650).If it is determined in step S610 that the pre-allocated temporary page exists (YES in step S610), the remote memory providing system 200 reactivates the pre-allocated temporary page in step S660, The page is mapped to the page where the page fault occurred on the virtual address space of the remote memory user 300 (S650).

이때, 상기 단계 S660에서의 기 할당된 임시 페이지의 재활성화는 기 할당된 임시 페이지를 도 5에 있어서의 활성 페이지 리스트(520)의 맨 끝으로 옮기는 것에 의해 이루어질 수 있다.At this time, the re-activation of the pre-allocated temporary page in step S660 may be performed by moving the pre-allocated temporary page to the end of the active page list 520 in FIG.

이상과 같은 단계 S600 내지 S660에 따라 본 발명에 따른 원격 메모리 제공 시스템의 원격 메모리 페이지 폴트 처리 동작이 종료되면, 원격 메모리 사용자 응용이 실행된다.
When the remote memory page fault processing operation of the remote memory providing system according to the present invention is completed in accordance with the above-described steps S600 to S660, the remote memory user application is executed.

이상 바람직한 실시 예와 첨부도면을 참조하여 본 발명의 구성에 관해 구체적으로 설명하였으나, 이는 예시에 불과한 것으로 본 발명의 기술적 사상을 벗어나지 않는 범주 내에서 여러 가지 변형 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
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.

100 : 고성능 컴퓨팅 시스템
110 : 메모리 사용자 노드
120 : 메모리 공여 노드
130 : 관리 노드
140 : 고속 네트워크
200 : 원격 메모리 제공 시스템
210 : 공여 메모리 에이전트부
220 : 원격 메모리 통합관리부
230 : 원격 메모리 사용지원부
300 : 원격 메모리 사용자
100: High Performance Computing System
110: memory user node
120: memory donor node
130: managed node
140: High Speed Network
200: remote memory providing system
210: Donation memory agent unit
220: Remote memory integrated management unit
230: Remote Memory Usage Support
300: Remote memory user

Claims (17)

메모리 공여 노드에서 실행되어 공여 메모리를 등록하는 공여 메모리 에이전트부;
관리 노드에서 실행되며, 상기 공여 메모리 에이전트부에 의해 등록된 공여 메모리에 대한 풀을 관리하여, 원격 메모리 사용 요청이 있는 경우, 공여 메모리 풀에서 적당한 미할당 메모리 블록을 찾아 할당해주는 원격 메모리 통합관리부; 및
메모리 사용자 노드에서 실행되며, 원격 메모리 사용자의 원격 메모리 사용 요청에 따라 상기 원격 메모리 통합관리부에 의해 할당되는 상기 메모리 공여 노드의 원격 메모리 페이지를 상기 원격 메모리 사용자의 가상주소공간에 맵핑시켜 상기 원격 메모리 사용자가 원격 메모리를 이용할 수 있도록 하는 원격 메모리 사용지원부;
를 포함하는 원격 메모리 제공 시스템.
A donor memory agent unit that is executed in the memory donor node and registers the donor memory;
A remote memory integrated management unit that manages a pool for the donor memory registered by the donor memory agent unit and allocates and allocates an appropriate unallocated memory block in the donor memory pool when there is a remote memory use request; And
Mapping a remote memory page of the memory donor node allocated by the remote memory integration manager to a virtual address space of the remote memory user in response to a remote memory usage request of a remote memory user, A remote memory usage support unit for enabling the remote memory to use the remote memory;
The remote memory providing system.
제 1 항에 있어서,
상기 원격 메모리 사용지원부는, 원격 메모리 페이지 폴트가 발생하는 경우, 상기 메모리 공여 노드에서 운영되는 임시페이지 풀에서 임시 페이지를 할당하고, 할당된 임시 페이지에 원격 메모리 페이지의 내용을 복사하고, 원격 메모리 페이지의 내용이 복사된 임시 페이지를 상기 원격 메모리 사용자의 가상주소공간에 맵핑시키는 것인 원격 메모리 제공 시스템.
The method according to claim 1,
The remote memory usage support unit allocates a temporary page in a temporary page pool operated on the memory donor node when the remote memory page fault occurs, copies the contents of the remote memory page to the allocated temporary page, To a virtual address space of the remote memory user. ≪ RTI ID = 0.0 > A < / RTI >
제 1 항에 있어서,
상기 원격 메모리 사용지원부는,
사용자 레벨의 라이브러리로서, 상기 원격 메모리 사용자에게 원격 메모리를 할당하고 해제하는 응용 프로그램 인터페이스를 제공하는 원격 메모리 라이브러리; 및
임시페이지 풀을 초기화 및 운영하고, 커널에 자신을 등록하는 한편, 원격 메모리 페이지 폴트 처리를 수행하는 상기 원격 메모리 지원부를 포함하는 것인 원격 메모리 제공 시스템.
The method according to claim 1,
The remote memory use support unit,
A library of user level, a remote memory library providing an application program interface for allocating and releasing remote memory to the remote memory user; And
Wherein the remote memory support includes initializing and operating a temporary page pool, registering itself with the kernel, and performing remote memory page fault processing.
제 3 항에 있어서,
상기 원격 메모리 지원부는, 상기 커널에 자신을 등록하는 경우, mmap 함수를 재정의하는 한편, 상기 커널에 의해 할당되는 가상 주소 메모리 영역(VMA: Virtual Memory Area)의 오퍼레이션 중에서 종료처리(close)와 폴트 처리(fault)를 수행하는 함수 포인터를 재지정하는 것인 원격 메모리 제공 시스템.
The method of claim 3,
The remote memory support unit redefines the mmap function when registering itself in the kernel, and performs a termination process (close) and a fault process (VMA) in the virtual memory area (VMA) and redefines a function pointer performing a fault.
제 4 항에 있어서,
상기 원격 메모리 지원부는 상기 mmap 함수를 호출하여 상기 원격 메모리의 할당에 대한 처리를 하고, 상기 종료처리 함수를 호출하여 상기 원격 메모리 해제에 대한 처리를 수행하는 것인 원격 메모리 제공 시스템.
5. The method of claim 4,
Wherein the remote memory support unit calls the mmap function to perform processing for allocation of the remote memory, and calls the termination processing function to perform processing for the remote memory release.
제 4 항에 있어서,
상기 원격 메모리 지원부는 원격 메모리 페이지 폴트 처리기능을 담당하는 함수를 가상 주소 메모리 영역(VMA)의 폴트 처리 오퍼레이션 포인터로 재지정함으로써, 원격 메모리 페이지 폴트 발생 시 상기 원격 메모리 페이지 폴트 처리를 수행하는 것인 원격 메모리 제공 시스템.
5. The method of claim 4,
Wherein the remote memory support unit performs the remote memory page fault processing when a remote memory page fault occurs by redirecting a function responsible for the remote memory page fault processing function to a fault processing operation pointer of the virtual address memory area (VMA) Remote memory provisioning system.
제 3 항에 있어서,
상기 원격 메모리 지원부는 상기 원격 메모리에 대한 할당 정보를 메모리 객체로 관리하는 것인 원격 메모리 제공 시스템.
The method of claim 3,
Wherein the remote memory support unit manages allocation information for the remote memory as a memory object.
제 7 항에 있어서,
상기 원격 메모리에 대한 할당 정보는, 실제 원격 메모리가 할당된 공여 노드에 대한 정보, 공여된 원격 메모리의 시작주소 및 종료주소, 접근키, 네트워크 연결 정보, 원격 메모리 사용자의 원격 메모리 영역의 가상 주소 정보를 포함하는 것인 원격 메모리 제공 시스템.
8. The method of claim 7,
The allocation information for the remote memory includes information about a donor node to which the actual remote memory is allocated, a start address and an end address of the donated remote memory, an access key, network connection information, a virtual address information of the remote memory area of the remote memory user The remote memory providing system.
제 2 항에 있어서,
상기 임시페이지 풀은,
원격 메모리 페이지 캐시로 사용될 미사용 임시 페이지들로 구성되는 미사용 페이지 리스트;
상기 원격 메모리 사용자가 원격 메모리에 접근하기 위해 임시로 사용중인 임시 페이지들로 구성되는 활성 페이지 리스트;
상기 원격 메모리 사용자가 일정 시간 사용하지 않아 비활성된 임시 페이지 중에서 상기 원격 메모리 사용자가 임시 페이지에 데이터 쓰기를 수행하였기 때문에 원격 메모리로 저장되어야 하는 페이지들로 구성되는 비활성 수정된 페이지 리스트; 및
상기 원격 메모리 사용자가 일정 시간 사용하지 않아 비활성된 임시 페이지 중에서 상기 원격 메모리 사용자가 쓰기를 수행하지 않아 상기 미사용 페이지 리스트로 반환할 수 있는 페이지들로 구성되는 비활성 페이지 리스트를 포함하는 것인 원격 메모리 제공 시스템.
3. The method of claim 2,
Wherein the temporary page pool comprises:
A list of unused pages consisting of unused temporary pages to be used as a remote memory page cache;
An active page list consisting of temporary pages being temporarily used by the remote memory user to access remote memory;
An inactive modified page list consisting of pages to be stored in the remote memory because the remote memory user has written data to the temporary page among the inactive temporary pages that the remote memory user has not used for a certain time; And
And an inactive page list including pages that can be returned to the unused page list because the remote memory user does not perform writing from the inactive temporary pages because the remote memory user does not use the device for a certain period of time system.
원격 메모리 페이지 폴트가 발생되면, 미리 읽기가 설정되어 있는지를 판단하는 단계;
상기 미리 읽기가 설정되어 있는지를 판단한 결과, 미리 읽기가 설정되어 있지 않으면, 기 할당된 임시 페이지가 존재하는지를 판단하는 단계;
상기 기 할당된 임시 페이지가 존재하는지를 판단한 결과, 기 할당된 임시 페이지가 존재하지 않으면, 임시 페이지를 할당하는 단계;
원격 메모리 페이지의 내용을 할당된 임시 페이지에 저장하는 단계; 및
원격 메모리 페이지의 내용이 저장된 임시 페이지를 페이지 폴트가 발생한 페이지에 맵핑시키는 단계를 포함하는 것인 원격 메모리 제공 시스템의 페이지 폴트 처리 방법.
If a remote memory page fault occurs, determining whether read-ahead is set;
Determining whether or not pre-reading is set, determining that pre-allocated temporary pages exist if read-ahead is not set;
Assigning a temporary page if the pre-allocated temporary page does not exist as a result of determining that the pre-allocated temporary page exists;
Storing the contents of the remote memory page in the allocated temporary page; And
Mapping a temporary page in which the contents of the remote memory page is stored to a page in which the page fault has occurred.
제 10 항에 있어서,
상기 미리 읽기가 설정되어 있는지를 판단한 결과, 미리 읽기가 설정되어 있으면, 미리 읽기 처리 동작을 수행한 후, 기 할당된 임시 페이지가 존재하는지를 판단하는 단계를 더 포함하는 원격 메모리 제공 시스템의 페이지 폴트 처리 방법.
11. The method of claim 10,
Further comprising the step of determining whether pre-reading is set, if it is determined that pre-reading has been set, determining whether a pre-allocated temporary page exists after performing a pre- Way.
제 10 항에 있어서,
상기 기 할당된 임시 페이지가 존재하는지를 판단한 결과, 기 할당된 임시 페이지가 존재하면, 기 할당된 임시 페이지를 재활성화시키는 단계를 더 포함하는 원격 메모리 제공 시스템의 페이지 폴트 처리 방법.
11. The method of claim 10,
Further comprising the step of re-activating the pre-allocated temporary page if the pre-allocated temporary page exists as a result of determining that the pre-allocated temporary page exists.
제 12 항에 있어서,
기 할당된 임시 페이지를 재활성화시킨 후, 재활성화된 임시 페이지를 페이지 폴트가 발생한 페이지에 맵핑시키는 단계를 더 포함하는 원격 메모리 제공 시스템의 페이지 폴트 처리 방법.
13. The method of claim 12,
And re-activating the pre-allocated temporary page, and mapping the reactivated temporary page to the page where the page fault occurred.
제 12 항에 있어서,
상기 기 할당된 임시 페이지를 재활성화시키는 단계는, 기 할당된 임시 페이지를 활성 페이지 리스트의 맨 끝으로 옮기는 것에 의해 이루어지는 것인 원격 메모리 제공 시스템의 페이지 폴트 처리 방법.
13. The method of claim 12,
Wherein reactivating the pre-allocated temporary page is accomplished by moving the pre-allocated temporary page to the end of the active page list.
제 10 항에 있어서,
상기 임시 페이지를 할당하는 단계는, 임시페이지 풀의 미사용 페이지 리스트 내의 임시 페이지를 할당하고, 할당된 임시 페이지를 활성 페이지 리스트의 맨 끝으로 옮기는 것인 원격 메모리 제공 시스템의 페이지 폴트 처리 방법.
11. The method of claim 10,
Wherein allocating the temporary page allocates a temporary page in the unused page list of the temporary page pool and moves the allocated temporary page to the end of the active page list.
제 10 항에 있어서,
상기 원격 메모리 페이지의 내용을 할당된 임시 페이지에 저장하는 단계는, 페이지 폴트가 발생한 주소에 해당하는 원격 메모리 페이지의 공여 노드에 대한 정보, 원격 메모리의 주소 및 접근키를 검색하고, 검색된 결과를 이용하여, 원격 메모리 페이지의 내용을 읽어와서, 할당된 임시 페이지에 저장하는 것인 원격 메모리 제공 시스템의 페이지 폴트 처리 방법.
11. The method of claim 10,
The step of storing the contents of the remote memory page in the allocated temporary page may include retrieving information on the donor node of the remote memory page corresponding to the address where the page fault occurred, the address of the remote memory and the access key, And the contents of the remote memory page are read and stored in the allocated temporary page.
제 10 항에 있어서,
상기 원격 메모리 페이지의 내용이 저장된 임시 페이지를 페이지 폴트가 발생한 페이지에 맵핑시키는 단계는, 원격 메모리 사용자의 페이지 테이블을 커널 레벨에서 수정하는 것에 의해 이루어지는 것인 원격 메모리 제공 시스템의 페이지 폴트 처리 방법.
11. The method of claim 10,
Wherein the step of mapping the temporary page storing the contents of the remote memory page to the page where the page fault occurred is performed by modifying the page table of the remote memory user at the kernel level.
KR1020160058013A 2016-05-12 2016-05-12 System for providing remote memory and page fault handling method thereof KR20170127666A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160058013A KR20170127666A (en) 2016-05-12 2016-05-12 System for providing remote memory and page fault handling method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160058013A KR20170127666A (en) 2016-05-12 2016-05-12 System for providing remote memory and page fault handling method thereof

Publications (1)

Publication Number Publication Date
KR20170127666A true KR20170127666A (en) 2017-11-22

Family

ID=60809728

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160058013A KR20170127666A (en) 2016-05-12 2016-05-12 System for providing remote memory and page fault handling method thereof

Country Status (1)

Country Link
KR (1) KR20170127666A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220064713A (en) * 2020-11-12 2022-05-19 한국전자통신연구원 Apparatus and Method for Managing Hybrid Memory in Inverse Virtualization Environment
EP3977255A4 (en) * 2019-05-28 2023-07-05 Micron Technology, Inc. Distributed computing based on memory as a service

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3977255A4 (en) * 2019-05-28 2023-07-05 Micron Technology, Inc. Distributed computing based on memory as a service
US11954042B2 (en) 2019-05-28 2024-04-09 Micron Technology, Inc. Distributed computing based on memory as a service
KR20220064713A (en) * 2020-11-12 2022-05-19 한국전자통신연구원 Apparatus and Method for Managing Hybrid Memory in Inverse Virtualization Environment

Similar Documents

Publication Publication Date Title
CN110377436B (en) Data storage access method, equipment and device of persistent memory
US10552337B2 (en) Memory management and device
KR101786871B1 (en) Apparatus for processing remote page fault and method thereof
JP3102495B2 (en) Virtual memory management method
US20050273570A1 (en) Virtual space manager for computer having a physical address extension feature
US6112281A (en) I/O forwarding in a cache coherent shared disk computer system
JP2006252554A (en) Method and system for guest physical address virtualization in virtual machine environment
US10860524B2 (en) Extended fast memory access in a multiprocessor computer system
US10802972B2 (en) Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics
US11677633B2 (en) Methods and systems for distributing topology information to client nodes
US11836087B2 (en) Per-process re-configurable caches
US20160085450A1 (en) System for providing remote memory and temporary page pool operating method for providing remote memory
US6457107B1 (en) Method and apparatus for reducing false sharing in a distributed computing environment
US9223799B1 (en) Lightweight metadata sharing protocol for location transparent file access
KR20170127666A (en) System for providing remote memory and page fault handling method thereof
US20200241943A1 (en) Message passing in a data processing system
CN116680233A (en) File access method, system, electronic equipment and machine-readable storage medium
CN116302491A (en) Memory management method, device, computer equipment and storage medium
US20230127387A1 (en) Methods and systems for seamlessly provisioning client application nodes in a distributed system
US11409696B2 (en) Methods and systems for utilizing a unified namespace
CN117435343A (en) Memory management method and device
CN113742253A (en) Storage medium management method, device, equipment and computer readable storage medium
US20230126511A1 (en) Methods and systems for storing data in a distributed system using gpus
US11294725B2 (en) Method and system for identifying a preferred thread pool associated with a file system
US11928336B2 (en) Systems and methods for heterogeneous storage systems