KR20120068454A - 원격 페이지 폴트 처리 장치 및 그 방법 - Google Patents

원격 페이지 폴트 처리 장치 및 그 방법 Download PDF

Info

Publication number
KR20120068454A
KR20120068454A KR1020100130086A KR20100130086A KR20120068454A KR 20120068454 A KR20120068454 A KR 20120068454A KR 1020100130086 A KR1020100130086 A KR 1020100130086A KR 20100130086 A KR20100130086 A KR 20100130086A KR 20120068454 A KR20120068454 A KR 20120068454A
Authority
KR
South Korea
Prior art keywords
memory
page
cvm
node
remote
Prior art date
Application number
KR1020100130086A
Other languages
English (en)
Other versions
KR101786871B1 (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 KR1020100130086A priority Critical patent/KR101786871B1/ko
Priority to US13/327,635 priority patent/US8850158B2/en
Publication of KR20120068454A publication Critical patent/KR20120068454A/ko
Application granted granted Critical
Publication of KR101786871B1 publication Critical patent/KR101786871B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명에 따른 복수의 노드의 개별 메모리를 통합하여 대용량 통합 메모리(CVM)를 형성하는 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 페이지 폴트를 처리하는 장치는, CVM-맵, 노드 메모리 정보 테이블, 가상 메모리 영역 및, CVM 페이지 테이블을 포함하는 메모리와, 사용자 프로세스가 메모리 할당을 요청할 때, 상기 대용량 통합 메모리를 프로세스의 주소 공간에 사상하는 메인 제어부를 포함한다.

Description

원격 페이지 폴트 처리 장치 및 그 방법{Apparatus for processing remote page fault and method thereof}
본 발명은 복수의 노드가 고성능 네트워크로 연결된 클러스터 시스템(cluster system)에서 각 노드의 물리 메모리를 통합한 대용량 통합 메모리를 지원하는 환경에서, 운영 체제(Operating System : OS)에서 대용량 통합 메모리(또는, 원격 메모리)를 접근할 때 발생하는 페이지 폴트를 처리하는 원격 페이지 폴트 처리 장치 및 그 방법에 관한 것이다.
클러스터 시스템은 복수의 노드가 네트워크로 상호 연결된 시스템이다.
상기와 같은 클러스터 시스템에서 메모리 사용자가 원격 메모리에 접근하기 위해서는, 컴퓨터 운영 체제의 스와퍼(swapper)를 수정해서 원격 메모리에 접근할 수 있다.
또한, 상기와 같은 원격 메모리 접근 방법은, 원격 메모리를 메모리의 관점에서 이용하는 것이 아니라, 디스크 장치처럼 이용하는 것으로, 원격 메모리를 프로세스의 사용자 주소 공간에 사상(매핑 : mapping)하지 않으며, 원격 메모리를 기존의 메모리처럼 할당, 해제 및, 복사하는 인터페이스를 통해서 이용할 수 없다.
본 발명에서는 이러한 문제점을 해결하기 위해서 클러스터 시스템에 포함된 각각의 노드의 메모리를 통합해서 대규모의 가상 통합 메모리를 형성하고, 상기 형성된 가상 통합 메모리를 모든 노드가 이용 가능하게 하는 원격 페이지 폴트 처리 장치 및 그 방법을 제공하는데 그 목적이 있다.
또한, 본 발명에서는 이러한 문제점을 해결하기 위해서 클러스터 시스템에 포함된 각각의 노드의 메모리를 통합해서 대규모의 가상 통합 메모리를 형성하고, 상기 형성된 가상 통합 메모리를 기존의 메인 메모리처럼 프로세스의 사용자 주소 공간에 사상하고, 할당, 해제 및, 복사 등의 인터페이스를 통해서 이용 가능하게 하는 원격 페이지 폴트 처리 장치 및 그 방법을 제공하는데 그 목적이 있다.
또한, 본 발명에서는 이러한 문제점을 해결하기 위해서 클러스터 시스템에 포함된 각각의 노드의 메모리를 통합해서 대규모의 가상 통합 메모리를 형성하고, 운영 체제에서 원격 메모리에 대한 페이지 폴트가 발생했을 때, 페이지 폴트를 처리하는 원격 페이지 폴트 처리 장치 및 그 방법을 제공하는데 그 목적이 있다.
상기의 기술적 과제를 해결하기 위한 본 발명의 일 양태로서, 복수의 노드의 개별 메모리를 통합하여 대용량 통합 메모리(CVM)를 형성하는 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 페이지 폴트 처리 장치에 있어서, CVM-맵, 노드 메모리 정보 테이블, 가상 메모리 영역 및, CVM 페이지 테이블을 포함하는 메모리와, 사용자 프로세스가 메모리 할당을 요청할 때, 상기 대용량 통합 메모리에 요청한 크기의 메모리를 할당하고 상기 할당한 메모리를 프로세스의 주소 공간에 사상하는 메인 제어부를 포함할 수 있다.
상기 CVM-맵은, 상기 대용량 통합 메모리에 포함된 페이지들의 사용 여부를 나타낼 수 있다.
상기 노드 메모리 정보 테이블은, 상기 대용량 통합 메모리를 구성하기 위해 상기 복수의 노드별로 제공하는 메모리 정보를 나타내는 테이블일 수 있다.
상기 노드 메모리 정보 테이블은, 노드 번호, 노드에서 제공하는 물리 메모리의 시작 페이지 번호, 노드에서 제공하는 물리 메모리의 마지막 페이지 번호, 상기 대용량 통합 메모리 내에서의 시작 페이지 번호 및, 상기 대용량 통합 메모리 내에서의 마지막 페이지 번호를 포함할 수 있다.
상기 가상 메모리 영역은, 상기 프로세스의 주소 공간의 독립적이고 연속적인 영역일 수 있다.
상기 가상 메모리 영역은, 시작 가상 주소, 마지막 가상 주소, CVM 폴트 처리기 포인터를 포함할 수 있다.
상기 CVM 페이지 테이블은, 상기 프로세스의 주소 공간에 사상된 원격 페이지의 위치 정보와 가상 주소의 매핑 정보를 포함하는 테이블일 수 있다.
상기 CVM 페이지 테이블은, 가상 주소, 노드 번호 및, 원격 페이지 번호를 포함할 수 있다.
상기 메인 제어부는, 상기 사용자 프로세스가 메모리 할당을 요청하면, 가상 메모리 영역을 생성하고, 상기 프로세스의 주소 공간에서 이용 가능한 영역을 찾아 상기 생성된 가상 메모리 영역에 기록할 수 있다.
상기 메인 제어부는, CVM 폴트 처리기의 포인터를 상기 가상 메모리 영역에 기록하고, 상기 CVM-맵 중에서 소정 크기만큼 하나 이상의 빈 페이지를 검색할 수 있다.
상기 메인 제어부는, 상기 노드 메모리 정보 테이블 중에서 상기 검색된 하나 이상의 페이지에 대응하는 원격 노드와 물리 메모리 정보를 확인하고, 상기 확인된 페이지에 대응하는 원격 노드와 물리 메모리 정보 및 가상 주소를 상기 CVM 페이지 테이블에 기록할 수 있다.
상기 메인 제어부는, 상기 할당한 페이지에 대한 비트를 상기 CVM-맵에 설정할 수 있다.
상기 메인 제어부는, 상기 할당한 페이지에 대한 정보를 상기 클러스터 시스템에 포함된 하나 이상의 노드에 전송할 수 있다.
본 발명의 다른 양태로서, 복수의 노드의 개별 메모리를 통합하여 대용량 통합 메모리(CVM)를 형성하는 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 페이지 폴트 처리 방법에 있어서, 사용자 프로세스가 메모리 할당을 요청할 때, 상기 대용량 통합 메모리를 할당하고, 상기 할당된 메모리를 프로세스의 주소 공간에 사상하는 단계를 포함할 수 있다.
상기 대용량 통합 메모리를 할당하고, 상기 할당된 메모리를 프로세스의 주소 공간에 사상하는 단계는, 상기 사용자 프로세스가 메모리 할당을 요청하면, 가상 메모리 영역을 생성하는 단계; 상기 프로세스의 주소 공간에서 이용 가능한 영역을 찾아 상기 이용 가능한 영역의 시작 주소와 끝 주소를 상기 생성된 가상 메모리 영역에 기록하는 단계; CVM 폴트 처리기의 포인터를 상기 가상 메모리 영역에 기록하는 단계; CVM-맵 중에서 소정 크기만큼의 하나 이상의 빈 페이지를 검색하는 단계; 노드 메모리 정보 테이블 중에서 상기 검색된 하나 이상의 페이지에 대응하는 원격 노드와 물리 메모리 정보를 확인하는 단계; 상기 확인된 하나 이상의 페이지에 대응하는 원격 노드와 물리 메모리 정보 및 가상 주소를 CVM 페이지 테이블에 기록하는 단계; 상기 할당한 하나 이상의 페이지에 대한 비트를 CVM-맵에 설정하는 단계; 및 상기 할당한 하나 이상의 페이지에 대한 정보를 상기 클러스터 시스템에 포함된 하나 이상의 노드에 전송하는 단계를 포함할 수 있다.
본 발명의 다른 양태로서, 복수의 노드별 개별 메모리가 통합되어 대용량 통합 메모리(CVM)를 형성한 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 폴트 처리 장치에 있어서, 페이지와, 상기 할당한 페이지에 대한 최초 접근이 발생할 때, 페이지 폴트를 처리하는 CVM 폴트 처리기를 포함할 수 있다.
상기 CVM 폴트 처리기는, 상기 할당한 페이지에 대한 최초 접근이 발생하면, CVM 페이지 테이블에서 페이지 폴트가 발생한 가상 주소에 매핑된 원격 노드 번호와 원격 페이지 번호를 검색할 수 있다.
상기 CVM 폴트 처리기는, 상기 검색된 원격 노드 번호와 원격 페이지 번호를 근거로 해당하는 페이지의 전송을 해당 원격 노드에 요청하고, 상기 요청에 응답하여 수신한 페이지를 상기 CVM 폴트 처리기가 구비된 지역 노드 상의 물리 메모리에 적재하고, 상기 수신한 페이지가 적재된 메모리의 물리 주소와 상기 페이지 폴트가 발생한 가상 주소의 매핑 정보를 프로세스의 페이지 테이블에 기록할 수 있다.
본 발명의 다른 양태로서, 복수의 노드별 개별 메모리가 통합되어 대용량 통합 메모리(CVM)를 형성한 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 폴트 처리 방법에 있어서, 할당한 페이지에 대한 최초 접근이 발생할 때, CVM 페이지 테이블에서 페이지 폴트가 발생한 가상 주소에 매핑된 원격 노드 번호와 원격 페이지 번호를 검색하는 단계와, 상기 검색된 원격 노드 번호와 원격 페이지 번호를 근거로 해당하는 페이지의 전송을 해당 원격 노드에 요청하는 단계와, 상기 요청에 응답하여 수신한 페이지를 지역 노드 상의 물리 메모리에 적재하는 단계와, 상기 수신한 페이지가 적재된 메모리의 물리 주소와 상기 페이지 폴트가 발생한 가상 주소의 매핑 정보를 프로세스의 페이지 테이블에 기록하는 단계를 포함할 수 있다.
상기 프로세스의 페이지 테이블에 기록된 상기 수신한 페이지와 동일한 페이지에 대한 접근이 발생하면, 상기 프로세스의 페이지 테이블에 기록된 메모리 주소 매핑 정보를 근거로 메모리에 대한 접근을 수행하는 단계를 더 포함할 수 있다.
본 발명은 다음과 같은 효과가 있다.
첫째, 클러스터 시스템에 포함된 각각의 노드의 메모리를 통합해서 대규모의 가상 통합 메모리를 형성하여, 상기 클러스터 시스템에 포함된 각각의 노드는 지역적으로 설치된 메모리의 한계를 넘어서 원격 노드의 메모리를 통합한 대용량의 메모리 자원을 활용할 수 있다.
둘째, 클러스터 시스템에 포함된 각각의 노드의 메모리를 통합해서 대규모의 가상 통합 메모리를 형성하여, 대용량 메모리 데이터를 처리하기 위해서 디스크보다 빠른 속도의 상기 통합된 가상 통합 메모리를 이용하여 효율적으로 폭증 스트림 데이터를 처리할 수 있다.
셋째, 클러스터 시스템에 포함된 각각의 노드의 메모리를 통합해서 형성하는 대규모의 가상 통합 메모리를 각각의 노드에 포함된 임의의 프로세스의 주소 공간에 사상하여, 특정 노드에서 해당 메모리를 이용할 때 기존의 메인 메모리와 같은 방식으로 이용가능하여 프로그램 개발자가 기존의 프로그램 방식을 그대로 이용해서 대용량 통합 메모리를 이용하는 응용 프로그램을 개발할 수 있다.
넷째, 기존 운영 체제를 수정하지 않고 하나의 적재 가능한 모듈로 구현할 수 있다.
도 1은 본 발명의 실시예에 따른 클러스터 시스템의 개념도이다.
도 2는 본 발명의 실시예에 따른 원격 페이지 폴트 처리 장치가 적용된 CVM을 지원하는 시스템의 소프트웨어 계층의 구조를 나타낸 도이다.
도 3은 CVM-맵(CVM 메모리 맵)을 나타낸 도이다.
도 4는 노드 메모리 정보 테이블을 나타낸 도이다.
도 5는 가상 메모리 영역(가상 메모리 데이터)의 구조를 나타낸 도이다.
도 6은 CVM 페이지 테이블을 나타낸 도이다.
도 7은 본 발명의 일 실시예에 따라 원격 페이지 폴트 처리 장치를 이용한 CVM 메모리 할당을 설명하는 플로우 차트를 도시한 도면이다.
도 8은 본 발명의 일 실시예에 따라 원격 페이지 폴트 처리 방법을 설명하는 플로우 차트를 도시한 도면이다.
이하의 실시예들은 본 발명의 구성 요소들과 특징들을 소정 형태로 결합한 것들이다. 각 구성 요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려될 수 있다. 각 구성 요소 또는 특징은 다른 구성 요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성 요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성할 수도 있다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다.
본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리 유닛은 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결" 되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성 요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있다는 것을 의미한다.
또한, 본 명세서에서 기재한 모듈(module)이란 용어는 특정한 기능이나 동작을 처리하는 하나의 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현할 수 있다.
이하의 설명에서 사용되는 특정(特定) 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.
본 발명은 클러스터 시스템에 포함된 각각의 노드의 메모리를 통합해서 대규모의 가상 통합 메모리를 형성하고, 상기 형성된 가상 통합 메모리를 모든 노드가 이용 가능하게 하는 원격 페이지 폴트 처리 장치 및 그 방법에 관한 것이다. 본 발명에서는 클러스터 시스템에 포함된 각각의 노드의 메모리를 통합해서 대규모의 가상 통합 메모리를 형성하고, 상기 형성된 가상 통합 메모리를 기존의 메인 메모리처럼 프로세스의 사용자 주소 공간에 사상하고, 할당, 해제 및, 복사 등의 인터페이스를 통해서 이용 가능하게 하고, 운영 체제에서 원격 메모리에 대한 페이지 폴트가 발생했을 때, 페이지 폴트를 처리한다.
이하, 첨부된 도면들을 참조하여, 본 발명에 따른 실시예들에 대하여 상세하게 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 클러스터 시스템(또는, 대용량 통합 메모리 시스템)(10)의 개념도이다.
본 발명의 일 실시예에 따른 클러스터 시스템(10)은 복수의 노드(21, 22, ... , 2n)를 포함한다.
그리고 클러스터 시스템(10)은 각 노드의 물리 메모리(또는, 메모리)를 통합하여, 대규모 통합 메모리(또는, 대용량 통합 메모리)(이하, 'CVM'이라 함)를 제공한다. 여기서, CVM은 각 노드에 구비된 메인 메모리처럼, 프로세스의 주소 공간에 사상되고, 할당, 해제 및, 복사 등의 인터페이스를 통해서 접근할 수 있다.
본 발명의 실시예에 따른 복수의 노드(21, 22, ... , 2n)는 개별적으로 하나 이상의 중앙 연산 처리 장치(Central Processing Unit : CPU), 메모리, 그리고 네트워크 인터페이스 카드(Network Interface Card : NIC)를 포함한다. 또한, 복수의 노드(21, 22, ... , 2n)는 CVM을 이용해서 폭증하는 대용량 메모리 데이터를 효율적으로 처리한다. 또한, 각각의 노드는, 아래 기술되는 원격 페이지 폴트 처리 장치(100)를 각각 구비한다.
그리고 복수의 노드(21, 22, ... , 2n)는 고성능 네트워크(30)를 통해 연결된다.
도 2는 본 발명의 실시예에 따른 원격 페이지 폴트 처리 장치(100)가 적용된 CVM을 지원하는 시스템(또는, 클러스터 시스템)의 소프트웨어 계층의 구조를 나타낸 도이다.
본 발명의 일 실시예에 따른 원격 페이지 폴트 처리 장치(100)가 적용된 CVM을 지원하는 시스템의 소프트웨어 계층의 구조(50)는 사용자측 입장에서 응용 프로그램(210), C 라이브러리(220), 그리고 CVM 사용자 라이브러리(230), 그리고 커널(kernel)측 입장에서 원격 페이지 폴트 처리 장치(100)와, 메모리 관리부(300)를 포함한다.
본 발명의 실시예에 따른 응용 프로그램(또는, 사용자 프로세스)(210)은 CVM 사용자 라이브러리(230)에서 제공하는 인터페이스를 통해서 CVM에 메모리를 할당한다. 또한, 응용 프로그램(210)은 C 라이브러리(220) 또는 커널 수준의 메모리 관리부(300)를 통해서, 상기 할당된 메모리에 대한 복사, 이동 등의 접근 기능을 수행한다.
본 발명의 실시예에 따른 원격 페이지 폴트 처리 장치(100)는 응용 프로그램(210)에 의해 발생한 CVM 메모리 할당 요청을 수신하면, CVM의 영역을 응용 프로그램이 요청한 크기만큼 할당하고, 상기 할당한 영역을 프로세스 주소 공간으로 사상하는 과정을 수행한다.
그리고 원격 페이지 폴트 처리 장치(100)는 할당된 페이지에 대한 최초 접근이 시도되어 페이지 폴트가 발생하는 경우, 클러스터 시스템(10)에 포함된 복수의 노드 중 페이지 폴트가 발생한 페이지가 실제로 존재하는 해당 노드에 페이지를 요청하고, 해당 노드에서 상기 요청에 응답하여 전송한 페이지를 물리 메모리(또는, 메모리)에 적재하고, 물리 메모리의 주소와 가상 주소의 매핑 정보를 프로세스의 페이지 테이블에 기록하여, 이후 동일한 페이지에 대한 페이지 폴트를 방지한다.
그리고 원격 페이지 폴트 처리 장치(100)는 메모리(110), 메인 제어부(120), 그리고 CVM 폴트 처리기(130)를 포함한다.
본 발명의 실시예에 따른 메모리(110)는 CVM-맵(CVM_map)(111), 노드 메모리 정보 테이블(node_mem)(112), 가상 메모리 영역(Virtual Memory Area : VMA)(113), 그리고 CVM 페이지 테이블(CVM_page_table)(114)을 포함한다.
본 발명의 실시예에 따른 CVM은 각 노드의 메모리를 통합해서 하나의 연속된 메모리 공간으로 표시된다. 또한, CVM은 페이지 단위로 사용되고 관리된다.
본 발명의 실시예에 따른 CVM-맵(111)은 도 3에 도시된 바와 같이, CVM에 포함된 페이지들의 사용 여부를 나타내는 비트맵이다. 여기서, 할당된 페이지는 '1'로 표시되고, 할당되지 않은 페이지는 '0'으로 표시된다.
본 발명의 실시예에 따른 노드 메모리 정보 테이블(112)은 도 4에 도시된 바와 같이, 각 노드별로 CVM의 구성을 위해 제공하는 메모리의 정보를 나타내는 테이블이다. 또한, 임의의 노드가 CVM의 구성을 위해 제공하는 메모리는 CVM에서 연속된 공간을 차지한다.
그리고 노드 메모리 정보 테이블(112)은 노드 번호(Node ID), 노드에서 제공하는 물리 메모리의 시작 페이지 번호(Start page number), 노드에서 제공하는 물리 메모리의 마지막 페이지 번호(End page number), CVM 내에서의 시작 페이지 번호(Start CVM page number), 그리고 CVM 내에서의 마지막 페이지 번호(End CVM page number)를 포함한다.
본 발명의 실시예에 따른 가상 메모리 영역(VMA)(또는, 가상 메모리 테이블)(113)은 도 5에 도시된 바와 같이, 프로세스 주소 공간의 독립적인 연속 메모리 영역을 관리하는 테이블(영역)이다. 또한, 가상 메모리 영역(113)은 시작 가상 주소, 끝 가상 주소, 그리고 CVM 메모리를 위한 CVM 폴트 처리기(130)의 포인터(fault handler pointer)를 포함한다.
본 발명의 실시예에 따른 CVM 페이지 테이블(CVM_page_table)(114)은 프로세스의 주소 공간에 사상된 원격 페이지의 위치 정보와 가상 주소의 매핑 정보를 포함하는 테이블이다. 또한, CVM 페이지 테이블(114)은 도 6에 도시된 바와 같이, 가상 주소(virtual address), 노드 번호(Node ID), 그리고 원격 페이지 번호(Remote page number)를 포함한다.
본 발명의 실시예에 따른 메인 제어부(120)는 응용 프로그램(또는, 사용자 프로세스)(210)으로부터 CVM 메모리 할당에 대한 요청을 수신하면, 가상 메모리 영역(113)을 생성하고, 프로세스의 가상 주소 공간(또는, 프로세스의 주소 공간)에서 이용 가능한 영역을 찾아서 시작 주소와 끝 주소를 가상 메모리 영역(113)에 기록한다. 또한, 메인 제어부(120)는 CVM 폴트 처리기(130)의 포인터를 가상 메모리 영역(113)에 등록한다. 또한, 메인 제어부(120)는 CVM-맵(111) 중에서 임의의 할당할 공간의 크기만큼 비어 있는 페이지를 검색하고, 노드 메모리 정보 테이블(112) 중에서 상기 검색된 페이지에 대응하는 원격 노드와 물리 메모리 정보를 확인한다. 또한, 메인 제어부(120)는 상기 확인된 페이지의 위치 정보(상기 검색된 페이지에 대응하는 원격 노드와 물리 메모리 정보 포함)와 가상 주소를 CVM 페이지 테이블(114)에 기록한다. 또한, 메인 제어부(120)는 할당한 페이지에 대한 비트를 CVM-맵(111)에 설정(세팅)한다. 또한, 메인 제어부(120)는 클러스터 시스템에 속한 다른 노드에 할당된 페이지 정보를 전송하여 다른 노드에 존재하는 각각의 CVM-맵을 수정할 수 있도록 한다.
본 발명의 실시예에 따른 CVM 폴트 처리기(130)는 페이지 폴트가 발생하면, 페이지 폴트를 처리한다. 즉, 할당한 페이지에 대한 최초 접근에 의해 페이지 폴트가 발생하면, 기존 운영 체제의 페이지 폴트 핸들러가 실행되고, 가상 메모리 영역(113)의 폴트 처리기 포인터에 연결된 CVM 폴트 처리기(130)가 실행된다. 그리고 CVM 폴트 처리기(130)는 CVM 페이지 테이블(114)에서 페이지 폴트가 발생한 가상 주소에 매핑된 원격 노드 번호와 원격 페이지 번호를 검색하고, 상기 검색된 원격 노드 번호와 원격 페이지 번호를 근거로 해당 원격 노드(또는, 상기 검색된 원격 노드 번호에 대응하는 원격 노드)에 해당하는 페이지의 전송을 요청한다. 또한, CVM 폴트 처리기(130)는 상기 요청에 응답하여 해당 원격 노드로부터 전송되는 페이지를 수신하고, 상기 수신된 페이지를 CVM 폴트 처리기(130)가 구비된 지역 노드의 물리 메모리에 적재하고, 물리 메모리의 주소와 가상 주소 간의 매핑 정보를 프로세스의 페이지 테이블에 기록한다. 이후, 동일한 페이지에 대한 접근이 발생하는 경우, 메모리 관리부(300)의 제어에 의해 프로세스의 페이지 테이블에 이미 기록된 주소 매핑 정보를 이용하여 메모리 접근을 수행한다.
본 발명의 실시예에 따른 메모리 관리부(300)는 할당된 메모리에 대한 복사, 이동 등의 접근 기능을 수행한다.
도 7은 본 발명의 일 실시예에 따라 원격 페이지 폴트 처리 장치를 이용한 CVM 메모리 할당을 설명하는 플로우 차트를 도시한 도면이다.
이하에서는 도 1 내지 도 7을 이용하여 본 도면을 설명하도록 한다.
먼저, 원격 페이지 폴트 처리 장치(100)가 개별적으로 구비된 복수의 노드를 포함하는 클러스터 시스템 내의 임의의 지역 노드에서, 사용자 프로세스가 메모리 할당을 요청하면, 메인 제어부(120)는 가상 메모리 영역(Virtual Memory Area : VMA)(113)을 생성한다. 여기서, 가상 메모리 영역(113)은 프로세스 주소 공간의 독립적인 영역을 관리하는 테이블로, 연속적인 메모리 영역의 시작 가상 주소, 끝 가상 주소, 그리고 CVM 메모리를 위한 CVM 폴트 처리기(120)의 포인터를 포함한다(S110).
그리고 메인 제어부(120)는 프로세스의 가상 주소 공간에서 이용 가능한 영역을 찾고, 상기 찾은 이용 가능한 영역의 시작 주소와 끝 주소를 상기 생성된 가상 메모리 영역(113)에 기록한다(S120).
그리고 메인 제어부(120)는 CVM 폴트 처리기(130)의 포인터를 가상 메모리 영역(113) 내의 CVM 폴트 처리기의 포인터에 기록한다(S130).
그리고 메인 제어부(120)는 CVM-맵(111) 중에서 소정 크기의 빈 페이지를 검색한다. 여기서, CVM-맵(111)은 CVM에 포함된 페이지들의 사용 여부를 나타내는 비트맵이다.
즉, 메인 제어부(120)는 CVM-맵(111) 중에서 임의의 할당할 공간의 크기만큼 비어 있는 페이지를 검색한다(S140).
그리고 메인 제어부(120)는 노드 메모리 정보 테이블(112) 중에서 상기 검색된 페이지에 대응하는 원격 노드와 물리 메모리 정보를 확인한다. 여기서, 노드 메모리 정보 테이블(112)은 각 노드별로 CVM의 구성을 위해 제공하는 메모리의 정보를 포함하는 테이블이다(S150).
그리고 메인 제어부(120)는 상기 확인된 페이지의 위치 정보와 가상 주소를 CVM 페이지 테이블(114)에 기록한다. 여기서, CVM 페이지 테이블(114)은 가상 주소, 노드 번호, 그리고 원격 페이지 번호를 포함하며, 프로세스 주소 공간에 사상된 원격 페이지의 위치 정보와 가상 주소의 매핑 정보를 포함하는 테이블이다.
즉, 메인 제어부(120)는 상기 가상 주소 및, 상기 확인된 페이지에 대응하는 원격 노드와 물리 메모리 정보를 CVM 페이지 테이블(114)에 기록한다(S160).
그리고 메인 제어부(120)는 상기 할당한 페이지에 대한 비트(bit)를 CVM-맵(111)에 설정한다(S170).
그리고 메인 제어부(120)는 상기 할당된 페이지 정보를 클러스터 시스템(10)에 속한 하나 이상의 노드에 전송한다.
이때, 메인 제어부(120)로부터 전송된 할당된 페이지 정보를 수신하는 하나 이상의 노드는, 수신한 할당된 페이지 정보를 근거로 각 노드에 존재하는 CVM-맵을 수정(또는, 업데이트)한다(S180).
도 8은 본 발명의 일 실시예에 따라 원격 페이지 폴트 처리 방법을 설명하는 플로우 차트를 도시한 도면이다.
이하에서는 도 1 내지 도 8을 이용하여 본 도면을 설명하도록 한다.
먼저, 복수의 노드의 개별 물리 메모리가 통합되어 CVM을 형성한 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 폴트 처리 장치에서, 할당한 페이지에 대한 최초 접근이 발생하면, CVM 폴트 처리기(130)는 CVM 페이지 테이블(114)에서 페이지 폴트가 발생한 가상 주소에 매핑된 원격 노드 번호와 원격 페이지 번호를 검색한다(S210).
그리고 CVM 폴트 처리기(130)는 검색된 원격 노드 번호와 원격 페이지 번호를 근거로 해당하는 페이지의 전송을 해당 원격 노드(또는, 상기 검색된 원격 노드 번호에 대응하는 원격 노드)에 요청한다(S220).
그리고 CVM 폴트 처리기(130)는 상기 페이지 전송 요청에 응답하여 해당 원격 노드로부터 전송되는 페이지를 수신하고, 상기 수신된 페이지를 물리 메모리에 적재한다(S230).
그리고 CVM 폴트 처리기(130)는 수신된 페이지가 적재된 물리 메모리의 주소와 이에 대응하는 가상 주소 간의 매핑 정보를 프로세스의 페이지 테이블에 기록한다(S240).
그리고 메모리 관리부(300)는 이후 동일한 페이지에 대한 접근이 발생하는 경우, 프로세스의 페이지 테이블에 이미 기록된 주소 매핑 정보를 이용하여 메모리에 대한 접근을 수행한다(S250).
본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다. 또한, 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있다.
본 발명에 따른 원격 페이지 폴트 처리 장치 및 그 방법은, 예를 들어, 대용량 통합 메모리가 이용되어 페이지 폴트가 발생하는 분야에는 어디든 적용가능하다.
10 : 클러스터 시스템 21, ... , 2n : 복수의 노드
30 : 고성능 네트워크 50 : 소프트웨어 계층의 구조
100 : 원격 페이지 폴트 처리 장치
110 : 메모리 120 : 메인 제어부
130 : CVM 폴트 처리기 111 : CVM-맵(CVM_map)
112 : 노드 메모리 정보 테이블(node_mem) 113 : 가상 메모리 영역(VMA)
114 : CVM 페이지 테이블(CVM_page_table)
210 : 응용 프로그램 220 : C 라이브러리
230 : CVM 사용자 라이브러리 300 : 메모리 관리부

Claims (20)

  1. 복수의 노드의 개별 메모리를 통합하여 대용량 통합 메모리(CVM)를 형성하는 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 페이지 폴트 처리 장치에 있어서,
    CVM-맵, 노드 메모리 정보 테이블, 가상 메모리 영역 및, CVM 페이지 테이블을 포함하는 메모리; 및
    사용자 프로세스가 메모리 할당을 요청할 때, 상기 대용량 통합 메모리를 프로세스의 주소 공간에 사상하는 메인 제어부;를 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  2. 제1항에 있어서,
    상기 CVM-맵은,
    상기 대용량 통합 메모리에 포함된 페이지들의 사용 여부를 나타내는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  3. 제1항에 있어서,
    상기 노드 메모리 정보 테이블은,
    상기 대용량 통합 메모리를 구성하기 위해 상기 복수의 노드별로 제공하는 메모리 정보를 나타내는 테이블인 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  4. 제3항에 있어서,
    상기 노드 메모리 정보 테이블은,
    노드 번호, 노드에서 제공하는 물리 메모리의 시작 페이지 번호, 노드에서 제공하는 물리 메모리의 마지막 페이지 번호, 상기 대용량 통합 메모리 내에서의 시작 페이지 번호 및, 상기 대용량 통합 메모리 내에서의 마지막 페이지 번호를 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  5. 제1항에 있어서,
    상기 가상 메모리 영역은,
    상기 프로세스의 주소 공간의 독립적이고 연속적인 영역인 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  6. 제5항에 있어서,
    상기 가상 메모리 영역은,
    시작 가상 주소, 마지막 가상 주소 및, CVM 폴트 처리기 포인터를 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  7. 제1항에 있어서,
    상기 CVM 페이지 테이블은,
    상기 프로세스의 주소 공간에 사상된 원격 페이지의 위치 정보와 가상 주소의 매핑 정보를 포함하는 테이블인 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  8. 제7항에 있어서,
    상기 CVM 페이지 테이블은,
    가상 주소, 노드 번호 및, 원격 페이지 번호를 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  9. 제1항에 있어서,
    상기 메인 제어부는,
    상기 사용자 프로세스가 메모리 할당을 요청하면, 가상 메모리 영역을 생성하고, 상기 프로세스의 주소 공간에서 이용 가능한 영역을 찾아 상기 생성된 가상 메모리 영역에 기록하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  10. 제9항에 있어서,
    상기 메인 제어부는,
    CVM 폴트 처리기의 포인터를 상기 가상 메모리 영역에 기록하고, 상기 CVM-맵 중에서 소정 크기의 빈 페이지를 검색하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  11. 제10항에 있어서,
    상기 메인 제어부는,
    상기 노드 메모리 정보 테이블 중에서 상기 검색된 페이지에 대응하는 원격 노드와 물리 메모리 정보를 확인하고, 상기 확인된 페이지에 대응하는 원격 노드와 물리 메모리 정보 및 가상 주소를 상기 CVM 페이지 테이블에 기록하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  12. 제11항에 있어서,
    상기 메인 제어부는,
    상기 할당한 페이지에 대한 비트를 상기 CVM-맵에 설정하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  13. 제11항에 있어서,
    상기 메인 제어부는,
    상기 할당한 페이지에 대한 정보를 상기 클러스터 시스템에 포함된 하나 이상의 노드에 전송하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  14. 복수의 노드의 개별 메모리를 통합하여 대용량 통합 메모리(CVM)를 형성하는 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 페이지 폴트 처리 방법에 있어서,
    사용자 프로세스가 메모리 할당을 요청할 때, 상기 대용량 통합 메모리에서 요청된 크기만큼 메모리를 할당하고, 상기 할당된 메모리를 프로세스의 주소 공간에 사상하는 단계;를 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 방법.
  15. 제14항에 있어서,
    상기 대용량 통합 메모리를 할당하고, 상기 할당된 메모리를 프로세스의 주소 공간에 사상하는 단계는,
    상기 사용자 프로세스가 메모리 할당을 요청하면, 가상 메모리 영역을 생성하는 단계;
    상기 프로세스의 주소 공간에서 이용 가능한 영역을 찾아 상기 이용 가능한 영역의 시작 주소와 끝 주소를 상기 생성된 가상 메모리 영역에 기록하는 단계;
    CVM 폴트 처리기의 포인터를 상기 가상 메모리 영역에 기록하는 단계;
    CVM-맵 중에서 소정 크기만큼의 하나 이상의 빈 페이지를 검색하는 단계;
    노드 메모리 정보 테이블 중에서 상기 검색된 하나 이상의 페이지에 대응하는 원격 노드와 물리 메모리 정보를 확인하는 단계;
    상기 확인된 하나 이상의 페이지에 대응하는 원격 노드와 물리 메모리 정보 및 가상 주소를 CVM 페이지 테이블에 기록하는 단계;
    상기 할당한 하나 이상의 페이지에 대한 비트를 CVM-맵에 설정하는 단계; 및
    상기 할당한 하나 이상의 페이지에 대한 정보를 상기 클러스터 시스템에 포함된 하나 이상의 노드에 전송하는 단계;를 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 방법.
  16. 복수의 노드별 개별 메모리가 통합되어 대용량 통합 메모리(CVM)를 형성한 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 폴트 처리 장치에 있어서,
    페이지; 및
    상기 할당한 페이지에 대한 최초 접근이 발생할 때, 페이지 폴트를 처리하는 CVM 폴트 처리기;를 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  17. 제16항에 있어서,
    상기 CVM 폴트 처리기는,
    상기 할당한 페이지에 대한 최초 접근이 발생하면, CVM 페이지 테이블에서 페이지 폴트가 발생한 가상 주소에 매핑된 원격 노드 번호와 원격 페이지 번호를 검색하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  18. 제17항에 있어서,
    상기 CVM 폴트 처리기는,
    상기 검색된 원격 노드 번호와 원격 페이지 번호를 근거로 해당하는 페이지의 전송을 해당 원격 노드에 요청하고, 상기 요청에 응답하여 수신한 페이지를 상기 CVM 폴트 처리기가 구비된 지역 노드의 물리 메모리에 적재하고, 상기 수신한 페이지가 적재된 메모리의 물리 주소와 상기 페이지 폴트가 발생한 가상 주소의 매핑 정보를 프로세스의 페이지 테이블에 기록하는 것을 특징으로 하는 원격 페이지 폴트 처리 장치.
  19. 복수의 노드별 개별 메모리가 통합되어 대용량 통합 메모리(CVM)를 형성한 클러스터 시스템 내의 임의의 지역 노드에 포함된 원격 폴트 처리 방법에 있어서,
    할당한 페이지에 대한 최초 접근이 발생할 때, CVM 페이지 테이블에서 페이지 폴트가 발생한 가상 주소에 매핑된 원격 노드 번호와 원격 페이지 번호를 검색하는 단계;
    상기 검색된 원격 노드 번호와 원격 페이지 번호를 근거로 해당하는 페이지의 전송을 해당 원격 노드에 요청하는 단계;
    상기 요청에 응답하여 수신한 페이지를 상기 지역 노드의 물리 메모리에 적재하는 단계; 및
    상기 수신한 페이지가 적재된 메모리의 물리 주소와 상기 페이지 폴트가 발생한 가상 주소의 매핑 정보를 프로세스의 페이지 테이블에 기록하는 단계;를 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 방법.
  20. 제19항에 있어서,
    상기 프로세스의 페이지 테이블에 기록된 상기 수신한 페이지와 동일한 페이지에 대한 접근이 발생하면, 상기 프로세스의 페이지 테이블에 기록된 메모리 주소 매핑 정보를 근거로 메모리에 대한 접근을 수행하는 단계;를 더 포함하는 것을 특징으로 하는 원격 페이지 폴트 처리 방법.

KR1020100130086A 2010-12-17 2010-12-17 원격 페이지 폴트 처리 장치 및 그 방법 KR101786871B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100130086A KR101786871B1 (ko) 2010-12-17 2010-12-17 원격 페이지 폴트 처리 장치 및 그 방법
US13/327,635 US8850158B2 (en) 2010-12-17 2011-12-15 Apparatus for processing remote page fault and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100130086A KR101786871B1 (ko) 2010-12-17 2010-12-17 원격 페이지 폴트 처리 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20120068454A true KR20120068454A (ko) 2012-06-27
KR101786871B1 KR101786871B1 (ko) 2017-11-15

Family

ID=46235992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100130086A KR101786871B1 (ko) 2010-12-17 2010-12-17 원격 페이지 폴트 처리 장치 및 그 방법

Country Status (2)

Country Link
US (1) US8850158B2 (ko)
KR (1) KR101786871B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200108796A (ko) * 2019-03-11 2020-09-21 서울대학교산학협력단 이종클러스터 시스템에서 실행되는 프로그램을 실행시키는 방법 및 컴퓨터 프로그램

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
WO2005089241A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for providing object triggers
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US8631130B2 (en) 2005-03-16 2014-01-14 Adaptive Computing Enterprises, Inc. Reserving resources in an on-demand compute environment from a local compute environment
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9015324B2 (en) 2005-03-16 2015-04-21 Adaptive Computing Enterprises, Inc. System and method of brokering cloud computing resources
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US8782120B2 (en) 2005-04-07 2014-07-15 Adaptive Computing Enterprises, Inc. Elastic management of compute resources between a web server and an on-demand compute environment
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9384153B2 (en) * 2012-08-31 2016-07-05 Freescale Semiconductor, Inc. Virtualized local storage
US9003223B2 (en) 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
BR112015023836A2 (pt) * 2013-03-16 2017-07-18 Prc Desoto Int Inc composição para aplicação a um substrato metálico, artigo revestido e método para manufaturar um artigo revestido
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
CN105765528B (zh) 2013-11-13 2019-09-24 微软技术许可有限责任公司 具有可配置原点定义的应用执行路径跟踪的方法、系统和介质
JP6998419B2 (ja) * 2020-04-16 2022-01-18 株式会社三菱Ufj銀行 制御プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100635376B1 (ko) 2004-06-10 2006-10-17 세메스 주식회사 메모리 공유 네트워크를 포함한 설비 내 피씨간 테이터통신 시스템
US7756943B1 (en) * 2006-01-26 2010-07-13 Symantec Operating Corporation Efficient data transfer between computers in a virtual NUMA system using RDMA
US20090150511A1 (en) 2007-11-08 2009-06-11 Rna Networks, Inc. Network with distributed shared memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200108796A (ko) * 2019-03-11 2020-09-21 서울대학교산학협력단 이종클러스터 시스템에서 실행되는 프로그램을 실행시키는 방법 및 컴퓨터 프로그램

Also Published As

Publication number Publication date
US8850158B2 (en) 2014-09-30
KR101786871B1 (ko) 2017-11-15
US20120159116A1 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
KR101786871B1 (ko) 원격 페이지 폴트 처리 장치 및 그 방법
JP6832187B2 (ja) データストレージサブシステムにおけるキャッシングのための方法およびシステム
US9928000B2 (en) Memory mapping for object-based storage devices
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
US10776378B2 (en) System and method for use of immutable accessors with dynamic byte arrays
CN109977037B (zh) 一种dma数据传输方法及系统
US10802972B2 (en) Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
US11836087B2 (en) Per-process re-configurable caches
CN104321750B (zh) 在共享存储器编程中保持释放一致性的方法和系统
US10552374B2 (en) Minimizing file creation and access times using skip optimization
US8612691B2 (en) Assigning memory to on-chip coherence domains
JP6974510B2 (ja) データを処理するための方法、装置、デバイス及び媒体
CN116680233A (zh) 一种文件访问方法、系统、电子设备及机器可读存储介质
WO2016131175A1 (zh) 多核系统中数据访问者目录的访问方法及设备
CN115729438A (zh) 数据访问方法、装置及存储介质
EP4239462A1 (en) Systems and methods for heterogeneous storage systems
CN112115521B (zh) 数据访问方法及装置
US11960723B2 (en) Method and system for managing memory associated with a peripheral component interconnect express (PCIE) solid-state drive (SSD)
WO2015161804A1 (zh) 一种Cache分区的方法及装置
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스
WO2020024588A1 (en) A distributed memory object architecture
CN113742253A (zh) 存储介质管理方法、装置、设备以及计算机可读存储介质
US12008261B2 (en) Method and device for accessing memory
US10037279B1 (en) Host device caching of a business process data

Legal Events

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