KR101694977B1 - 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법 - Google Patents

통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법 Download PDF

Info

Publication number
KR101694977B1
KR101694977B1 KR1020100130098A KR20100130098A KR101694977B1 KR 101694977 B1 KR101694977 B1 KR 101694977B1 KR 1020100130098 A KR1020100130098 A KR 1020100130098A KR 20100130098 A KR20100130098 A KR 20100130098A KR 101694977 B1 KR101694977 B1 KR 101694977B1
Authority
KR
South Korea
Prior art keywords
memory
integrated memory
service
node
integrated
Prior art date
Application number
KR1020100130098A
Other languages
English (en)
Other versions
KR20120068464A (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 KR1020100130098A priority Critical patent/KR101694977B1/ko
Priority to US13/314,443 priority patent/US8943294B2/en
Publication of KR20120068464A publication Critical patent/KR20120068464A/ko
Application granted granted Critical
Publication of KR101694977B1 publication Critical patent/KR101694977B1/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment

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)
  • Computer Hardware Design (AREA)

Abstract

본 발명은 원격 메모리 직접 접근 기법과 소프트웨어 가상화 기법을 이용하여 다중 노드 시스템에서의 대용량 통합 메모리 계층을 지원하는 소프트웨어 구조 및 그 구조를 이용하여 컴퓨팅 처리를 수행하는 컴퓨팅 시스템을 제안한다. 특히, 본 발명은 노드의 특정 메모리 영역을 통합 관리하는 메모리 영역 관리 모듈, 사용자 프로세스 내 가상 주소 공간에 대용량 통합 메모리 서비스를 제공하는 메모리 서비스 제공 모듈, 및 다중 노드 시스템 차원의 대용량 통합 메모리 공유를 지원하는 메모리 공유 지원 모듈을 포함하는 소프트웨어 구조를 제안한다. 본 발명에 따르면, 데이터 집중형 고성능 컴퓨팅 환경에서 증가하는 대용량 메모리에 대한 사용자 요구를 수용할 수 있으며, 저지연 초고속 내부 통신망으로 연결된 다중 노드 시스템 상에서 오프칩 메모리 계층의 경우보다 접근 시간을 더욱 연장시킬 수 있다.

Description

통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법 {Software architecture for service of collective volume memory, and method for providing service of collective volume memory using the said software architecture}
본 발명은 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법에 관한 것이다. 보다 상세하게는, 대용량 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 대용량 통합 메모리 서비스 제공 방법에 관한 것이다.
일반적으로 대용량 통합 메모리 서비스를 제공하는 소프트웨어 기술은 실시간/준실시간 데이터 집중형 처리를 필요로 하는 고성능 컴퓨팅 환경에서 소요되는 메모리 양이 폭발적으로 증가하는 경우 시스템 내 입출력 처리 시간을 줄임으로써 전체 데이터 처리의 효율성을 높일 목적으로 사용된다.
대용량 통합 메모리 서비스를 제공하는 소프트웨어 기술은 시스템 메모리 계층 구조 상에서 기술적으로 제공되는 메모리의 특성에 따라 세가지 접근 방법으로 분류할 수 있다.
첫번째 방법은 소규모 오프칩 메모리(예컨대, DRAM) 자체의 대형화를 달성하는 것이다. 이 방법은 기존의 시스템 메모리 자체의 성능을 유지하면서 규모의 문제를 해결한 접근법으로 신규 하드웨어에 의존하는 특성을 갖는다. 또한, 다중 노드 시스템(예컨대, 클러스터 시스템, 클라우드 시스템)의 경우에 대용량 통합 메모리 서비스가 시스템 전체의 메모리 계층으로 확대되지 못하고 노드 영역으로만 한정되는 한계를 갖는다.
두번째 방법은 하드웨어 특성에 따른 오프칩 메모리 계층과 스토리지 저장 장치 계층의 접근 시간 간격을 줄일 수 있는 새로운 대용량 통합 메모리 계층을 추가하는 방법이다. 일반적으로 기존에 사용된 방법은 시스템 내 스왑 메커니즘과 연동 가능한 새로운 대용량 스왑 메모리 계층을 제공하는 것(예컨대, TeraMem)으로 다중 노드 시스템에도 적용 가능한 기술이다. 그러나, 이 메모리 계층은 해당 대용량 통합 메모리 서비스를 이용하는 단일 노드의 프로세서에게 스왑에 따른 문맥 교환의 부하를 유발할 뿐만 아니라, 노드별로 관리되는 프로세스가 다중 노드 시스템 차원에서 메모리를 공유하고자 하는 경우엔 이 메모리 계층과는 별도로 공유 메커니즘 계층을 유지해야 하는 번거로움이 있다. 이와 유사한 기술로, 다중 노드 시스템의 각 노드를 통합해 단일 추상 하드웨어로 가상화하고 이 가상 시스템 위에 단일 시스템 이미지를 구동하는 방법(예컨데, ScaleMP의 vSMP Foundation)이 있다. 이 방법은 다중 노드의 메모리 자원을 통합 가상화해 기존 시스템과 동일하게 단일한 메모리 관점을 제공한다는 장점은 있으나 가상화에 따른 부하가 커 시스템 확장성에 제한을 받는다.
세번째 방법은 스토리지 저장 장치의 접근 시간 자체를 개선하는 방법으로 다중 노드 시스템 차원의 디스크 캐쉬 기술(예컨대, RNA networks의 MVP)이 여기에 해당된다. 이 방법은 일반적으로 시스템의 일부 메모리를 통합해 다중 노드 시스템 차원의 전역 디스크 캐쉬를 구성하는 방법으로 기존의 저장 장치 기반의 데이터 집중형 서비스에는 적합하나 폭주형 대용량 스트림 데이터 처리에서는 저장 장치를 통한 추가적인 입출력 부하를 유발한다는 문제점을 갖는다.
본 발명은 상기 문제점을 해결하기 위해 안출된 것으로서, 다중 노드 시스템 상에서 원격 메모리 직접 접근과 소프트웨어 가상화 기법을 활용하여 기존 시스템 메모리 계층 구조 상에 다중 노드 시스템 차원의 대용량 통합 메모리 계층을 제공하는 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법을 제공함을 목적으로 한다.
본 발명은 상기한 목적을 달성하기 위해 안출된 것으로서, 저지연 초고속 내부 통신망으로 연결된 다중 노드에서 원격 메모리 직접 접근과 가상화 기법을 활용해 기존 메모리 계층 구조상에 새로운 대용량 통합 메모리 계층을 생성하는 소프트웨어 구조를 제안한다.
바람직하게는, 본 발명의 일면에 따른 새로운 메모리 계층을 생성하는 소프트웨어 구조는 노드의 특정 메모리 영역을 공헌 메모리로 등록하고 대용량 통합 메모리를 초기화하는 단계; 시스템 차원에서 각 노드의 공헌 메모리를 통합 관리하는 단계; 대용량 통합 메모리의 형상을 관리하는 단계; 대용량 통합 메모리의 사용자 인터페이스를 처리하는 단계; 사용자 프로세스 내 가상 주소 공간에 대용량 통합 메모리를 사상하는 단계; 사상된 대용량 통합 메모리의 폴트를 처리하는 단계; 대용량 통합 메모리의 블록킹을 방지하기 위한 원격 메모리 데이터의 선반입 단계; 다중 노드 시스템 차원의 대용량 통합 메모리 공유 지원 단계; 대용량 통합 메모리 처리 프로토콜 지원 단계; 대용량 통합 메모리의 상태를 모니터링하는 단계; 및 대용량 통합 메모리 서비스를 사용자에게 제공하기 위한 인터페이스 라이브러리와 대용량 통합 메모리 계층을 관리하기 위한 명령어를 포함한다.
또한, 본 발명은 상기 소프트웨어 구조를 사용하여 고성능 컴퓨팅 처리를 수행하는 컴퓨팅 장치를 제안한다.
바람직하게는, 본 발명의 다른 면에 따른, 소프트웨어 구조를 사용하여 고성능 컴퓨팅 처리를 수행하는 컴퓨팅 장치는 각 노드의 커널에서 동작하는 다수의 모듈; 및 사용자 영역에서 응용 프로그램에게 대용량 통합 메모리 서비스를 제공하는 인터페이스 라이브러리와 관리 명령어를 포함한다.
본 발명에 따르면 다음과 같은 효과를 얻을 수 있다. 첫째, 다중 노드 시스템 상에서 원격 메모리 직접 접근과 소프트웨어 가상화 기법을 활용하여 기존 시스템 메모리 계층 구조 상에 다중 노드 시스템 차원의 대용량 통합 메모리 계층을 제공함으로써, 소프트웨어 기술로써 데이터 집중형 고성능 컴퓨팅 환경에서 증가하는 대용량 메모리에 대한 사용자 요구를 수용할 수 있으며, 저지연 초고속 내부 통신망으로 연결된 다중 노드 시스템 상에서 오프칩 메모리 계층의 경우보다 접근 시간을 더욱 단축시킬 수 있다. 또한, 이러한 소프트웨어 구조를 이용하여 고성능 컴퓨팅 처리를 수행하는 컴퓨팅 장치를 지원할 수 있다. 둘째, 원격 노드에 존재하는 대용량 통합 메모리 영역에 접근시 발생할 수 있는 입출력 지연을 방지하기 위해 선반입 메커니즘 모듈을 사용함으로써, 해당 메모리를 사용하는 프로세스에 발생할 수 있는 문맥 교환의 부하를 효과적으로 감소시킬 수 있다. 세째, 다중 노드 시스템의 하드웨어 가상화를 필요로 하지 않으므로 기존 다중 노드 시스템 환경에 적용하기 용이하고, 하드웨어 가상화에 따른 부하가 없어 대규모 노드를 갖는 시스템의 구축이 수월하다. 네째, 기존의 디스크 캐쉬와는 달리, 스토리지 저장 장치에 대한 입출력 부하가 없어 실시간성을 갖는 폭주형 대용량 스트림 처리에 적합하다.
도 1은 본 발명의 바람직한 실시예에 따른 통합 메모리 서비스를 위한 소프트웨어 구조를 도시한 블록도이다.
도 2는 통합 메모리 서비스를 위한 소프트웨어 구조의 내부 구성을 세부적으로 도시한 블록도이다.
도 3은 대용량 통합 메모리 계층을 지원하는 소프트웨어 구조를 다중 노드 시스템을 중심으로 개략적으로 도식화한 구성도이다.
도 4는 대용량 통합 메모리 계층을 제공하는 소프트웨어 구조에서 핵심이 되는 CVM core 모듈의 주요 요소를 도식화한 구성도이다.
도 5는 대용량 통합 메모리 계층을 제공하는 소프트웨어 구조에서 사용자 인터페이스를 제공하는 인터페이스 라이브러리를 도식화한 구성도이다.
도 6은 본 발명의 바람직한 실시예에 따른 통합 메모리 서비스 제공 방법을 도시한 순서도이다.
도 7은 대용량 통합 메모리 계층을 제공하는 소프트웨어 구조가 운영되는 기본 동작을 도식적으로 표현한 운용도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 소프트웨어 구조는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
한편, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자 이외의 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자가 존재 또는 추가를 배제하지 않는다.
도 1은 본 발명의 바람직한 실시예에 따른 통합 메모리 서비스를 위한 소프트웨어 구조를 개략적으로 도시한 블록도이다. 도 2는 통합 메모리 서비스를 위한 소프트웨어 구조의 내부 구성을 세부적으로 도시한 블록도이다. 이하 설명은 도 1과 도 2를 참조한다.
도 1에 따르면, 통합 메모리 서비스를 위한 소프트웨어 구조(100)는 통합 메모리 관리 모듈(110) 및 통합 메모리 서비스 제공 모듈(120)을 포함한다. 본 실시예에서 소프트웨어 구조는 노드들 간 연동을 통해 형상화된 가상 엔진에 의해 구현된다. 또한, 소프트웨어 구조는 클라우드 컴퓨팅을 구성하는 컴퓨팅 장치의 커널(kernel)에서 구현된다.
통합 메모리 관리 모듈(110)은 각 노드로부터 기부된 메모리들을 가상화하여 통합 메모리로 관리하는 것이다. 통합 메모리 관리 모듈(110)은 예컨대 Engine formalizer 유닛(301)으로 구현될 수 있다. 통합 메모리 관리 모듈(110)은 도 2의 (a)에 도시된 바와 같이 공헌 메모리 처리 모듈(111), 통합 메모리 생성 모듈(112) 및 가상 엔진 구동 모듈(113)을 포함할 수 있다. 공헌 메모리 처리 모듈(111)은 미리 정해진 프로토콜을 통해 각 노드로부터 기부된 메모리들을 공헌 메모리로 등록시키는 것이다. 통합 메모리 생성 모듈(112)은 등록된 공헌 메모리를 가상화하여 통합 메모리로 생성하는 것이다. 가상 엔진 구동 모듈(113)은 가상 엔진을 초기화시키며, 생성된 통합 메모리를 초기화된 가상 엔진으로 관리하는 것이다.
통합 메모리 관리 모듈(110)은 서비스 이용 상황 추적 모듈(114), 제1 메모리 페이지 교환 모듈(115) 및 제2 메모리 페이지 교환 모듈(116)을 더욱 포함할 수 있다. 서비스 이용 상황 추적 모듈(114)은 통합 메모리의 서비스 이용 상황을 추적하는 것이다. 서비스 이용 상황 추적 모듈(114)은 예컨대 CVM managing(301b)으로 구현될 수 있다. 추적 결과 통합 메모리가 로컬 노드 상에 위치하면, 제1 메모리 페이지 교환 모듈(115)은 통합 메모리 서비스를 제공할 때에 트랜잭션 프로토콜 계층(transaction protocol layer)을 이용하여 메모리 페이지를 교환한다. 반면, 추적 결과 통합 메모리가 원격 노드 상에 위치하면, 제2 메모리 페이지 교환 모듈(116)은 통합 메모리 서비스를 제공할 때에 HCA를 이용하여 메모리 페이지를 교환한다. 제1 메모리 페이지 교환 모듈(115)은 예컨대 local CM managing(301d)으로 구현될 수 있으며, 제2 메모리 페이지 교환 모듈(116)은 예컨대 Remote CM managing(301e)으로 구현될 수 있다.
한편, 통합 메모리 관리 모듈(110)은 통합 메모리 상태 정보 획득 모듈 및 통합 메모리 상태 정보 보고 모듈을 더욱 포함할 수 있다. 통합 메모리 상태 정보 획득 모듈은 모니터링을 통해 통합 메모리의 서비스 이용 상황과 관련된 상태 정보를 획득하는 것이다. 통합 메모리 상태 정보 보고 모듈은 획득된 상태 정보를 통합 메모리 서비스를 감시하는 모니터링 서버로 보고하는 것이다. 통합 메모리 상태 정보 획득 모듈과 통합 메모리 상태 정보 보고 모듈은 예컨대 CVM monitor 유닛(306)으로 구현될 수 있다.
통합 메모리 서비스 제공 모듈(120)은 프로세스 가상 주소 공간을 통해 통합 메모리를 선택된 노드에 사상시켜 통합 메모리 서비스를 제공하는 것이다. 바람직하게는, 통합 메모리 서비스 제공 모듈(120)은 통합 메모리를 사상시킬 노드에 데이터를 선반입(prefetching)시킨다. 또한, 통합 메모리 서비스 제공 모듈(120)은 메모리를 기부한 노드의 물리 메모리 위치에 통합 메모리를 예약 사상시킨다. 본 실시예에서 통합 메모리 관리 모듈(110)과 통합 메모리 서비스 제공 모듈(120)은 예컨대 CVM core 블록(300)으로 구현될 수 있다.
통합 메모리 서비스 제공 모듈(120)은 도 2의 (b)에 도시된 바와 같이 인터페이스 처리 모듈(121), 통합 메모리 사상 모듈(122) 및 통합 메모리 공유 모듈(123)을 포함할 수 있다. 인터페이스 처리 모듈(121)은 통합 메모리 서비스를 지원하기 위한 인터페이스를 처리하는 것이다. 통합 메모리 사상 모듈(122)은 인터페이스를 통해 선택된 노드마다 메모리로 사용 가능하게 가상의 주소 공간에 통합 메모리를 사상시키는 것이다. 통합 메모리 공유 모듈(123)은 선택된 노드가 적어도 두개일 때 통합 메모리를 선택된 노드들끼리 공유시키는 것이다. 인터페이스 처리 모듈(121)은 예컨대 CVM API supporter 유닛(302)으로 구현될 수 있다. 통합 메모리 사상 모듈(122)은 예컨대 CVM address manager 유닛(304)으로 구현될 수 있다. 통합 메모리 공유 모듈(123)은 CVM sharer 유닛(303)으로 구현될 수 있다.
한편, 통합 메모리 서비스 제공 모듈(120)은 페이지 폴트 발생 모듈(124), 페이지 폴트 핸들링 모듈(125) 및 페이지 캐쉬 적재 모듈(126)을 더욱 포함할 수 있다. 페이지 폴트 발생 모듈(124)은 통합 메모리 서비스를 이용하려는 서비스 이용 노드가 사상된 메모리 영역에 포함된 페이지에 최초 접근을 시도할 때에 페이지 폴트를 발생시키는 것이다. 페이지 폴트 핸들링 모듈(125)은 페이지 폴트가 발생되면 페이지 폴트를 핸들링시키는 것이다. 페이지 캐쉬 적재 모듈(126)은 통합 메모리의 물리 페이지를 서비스 이용 노드 상의 페이지 캐쉬에 적재시키는 것이다. 적재가 완료되면 서비스 이용 노드는 통합 메모리에 접근하는 것이 가능해지며, 이에 따라 통합 메모리 서비스가 가능해진다.
통합 메모리 서비스를 위한 소프트웨어 구조(100)는 제1 통합 메모리 서비스 지원 모듈(130)과 제2 통합 메모리 서비스 지원 모듈(140)을 더욱 포함할 수 있다. 제1 통합 메모리 서비스 지원 모듈(130)은 통합 메모리를 이용하기 위한 인터페이스를 제공하여 통합 메모리 서비스를 지원하는 것이다. 제2 통합 메모리 서비스 지원 모듈(140)은 통합 메모리를 처리하기 위한 명령어를 제공하여 통합 메모리 서비스를 지원하는 것이다. 제1 통합 메모리 서비스 지원 모듈(130)은 예컨대 CVMlib 블록(310)으로 구현될 수 있으며, 제2 통합 메모리 서비스 지원 모듈(140)은 예컨대 CVMctrl 블록(320)으로 구현될 수 있다.
본 소프트웨어 구조(100)는 저지연 초고속 내부 통신망으로 연결된 다중 노드에서 원격 메모리 직접 접근과 가상화 기법을 활용해 기존 메모리 계층 구조 상에 새로운 대용량 통합 메모리 계층을 생성한다. 특히, 본 소프트웨어 구조(100)는 데이터 집중형 고성능 컴퓨팅 환경에서 증가하는 대용량 메모리에 대한 사용자 요구를 수용하기 위해 저지연 초고속 내부 통신망(예컨대, 10G ethernet 또는 InfiniBand)으로 연결된 다중 노드 시스템 상에서 각 노드의 소규모 메모리 영역을 소프트웨어적인 메모리 가상화층을 이용해 대규모로 통합하고 사용자에게 기존 메모리 계층 구조 상의 시스템 메모리보다 긴 접근 시간을 갖는 대용량 통합 메모리 계층을 제공한다.
본 소프트웨어 구조(100)를 이용하면, 클라우드 컴퓨팅 환경에서 고성능 컴퓨팅 처리를 수행하는 컴퓨팅 장치를 수월하게 지원할 수 있다. 또한, 기존 다중 노드 시스템 상에서 대용량 통합 메모리 계층을 제공함에 있어서 메모리 하드웨어의 기술적 의존성을 탈피하고 메모리 사용시 문맥 교환의 부하를 효과적으로 감소시킬 수 있다. 또한, 시스템 차원의 메모리 공유 지원 서비스를 제공하여 메모리 가상화에 따른 시스템 확장성의 문제를 해결하고, 대용량 통합 메모리 계층을 지원함으로써 폭주형 대용량 스트림 데이터를 처리하기에 적합하다. 이하 도 3 내지 도 5를 참조하여 본 발명의 일실시예에 따른 대용량 통합 메모리 서비스를 제공하기 위한 소프트웨어 구조에 대하여 상세하게 설명한다. 도 3은 대용량 통합 메모리 계층을 지원하는 소프트웨어 구조를 다중 노드 시스템을 중심으로 개략적으로 도식화한 구성도이다. 도 4는 해당 소프트웨어 구조에서 핵심이 되는 CVM core 모듈(300)의 주요 요소를 도식화한 구성도이다. 도 5는 해당 소프트웨어 구조에서 사용자 인터페이스를 제공하는 인터페이스 라이브러리를 도식화한 구성도이다.
도 3을 참조하면, 본 발명의 일실시예로 초고속 저지연 내부 통신망으로 연결된 다중 노드 시스템상에서 대용량 통합 메모리 계층을 제공하는 소프트웨어 구조로 개별 노드에 대용량 통합 메모리 계층을 제공하는 CVM core 블록(300), 사용자나 응용 프로그램에게 해당 메모리 서비스를 제공하는 사용자 인터페이스 층인 CVMlib 블록(310) 및 대용량 통합 메모리 계층을 관리하기 위한 명령어 층인 CVMctrl 블록(320)을 포함한다. 이들 블록 중에서 CVM core 블록(300)은 사용자에게 대용량 통합 메모리 서비스를 제공하려는 모든 노드(330)에 포함되어 있다.
대용량 통합 메모리 서비스를 이용하려는 시스템 사용자와 응용 프로그램은 CVMlib 블록(310)과 CVMctrl 블록(320)을 사용한다. CVMctrl 블록(320)은 최하부의 CVM core 블록(300)을 제어하기 위한 사용자 명령행 인터페이스 도구다. CVMlib 블록(310)은 응용 프로그램이 대용량 통합 메모리 서비스를 이용하기 위해 자신의 실행 코드에 링크해서 사용할 수 있는 공유/정적 라이브러리로 프로그래머에게 대용량 통합 메모리의 사용과 관련된 응용 프로그래밍 인터페이스(API; Application Programming Interface)를 제공한다. 프로그래머는 이 응용 프로그래밍 인터페이스를 이용해서 대용량 통합 메모리 서비스를 사용하는 응용 프로그램을 개발할 수 있다. 상기에서, 실행 코드는 응용 프로그램의 소스 코드가 컴파일된 오브젝트 파일을 의미한다.
CVM core 블록(300)은 상위 블록(310, 320)을 통해서 사용자와 응용 프로그램이 요청한 모든 대용량 통합 메모리 서비스 관련 작업을 실제로 처리하고 서비스를 제공하는 부분이다. 이 블록(300)은 각 노드(330)의 커널 상에 존재하는 요소로 다수의 CVM core 블록(300)이 상호 연동해서 시스템 동작 중에만 의미를 갖는 가상 CVM engine으로 동작하는 소프트웨어 층을 형성한다. 도 3에 도시된 바와 같이, 노드(330) 상의 CVM core 블록(300)이 노드 하부의 노드 연결망(예컨대, InfiniBand)을 통해서 다른 노드의 CVM core 블록(300)과 상호 연동하여 동작함으로써 다중 노드 시스템 상에서 동작 실행 객체인 CVM engine을 형성한다.
CVM engine은 각 노드(330)에서 제공된 공헌 메모리 CM(331)을 통합 가상화해 대용량 통합 메모리를 형상화하며, 이 과정에서 발생하는 CVM core 블록(300) 간 데이터 교환이나 상호 기능 연동 작용은 응용 프로그램에게 투명하다. 즉, 각 노드(330) 상에서 수행되는 응용 프로그램은 대용량 통합 메모리 계층을 물리적으로 다중 노드에 걸쳐있는 메모리의 가상 통합 자원이라고 인지하지 못하며 자신의 노드(330) 상에 위치한 지역 메모리처럼 인식하고 사용한다.
CVM core 블록(300)은 Engine formalizer 유닛(301)을 통해 해당 노드(330)의 CVM engine 객체를 초기화하고 자기 노드(330)의 CM(331)을 local CM으로 등록하고 관리하며 시스템 수준의 대용량 통합 메모리로 형상을 구성하고 관리 추적한다. 또한, CVM core 블록(300)은 CVMlib 블록(310)의 API 요청을 처리하는 CVM API supporter 유닛(302)과, 사용자 프로세스에게 프로세스 주소 공간에 대용량 통합 메모리를 사상하고 메모리처럼 사용할 수 있도록 하는 CVM address manager 유닛(304)과, 대용량 통합 메모리 계층이 다중 노드 시스템 상에서 메모리 공유 지원 기능을 제공할 수 있도록 하는 CVM sharer 유닛(303), 및 원격 노드 상에 존재하는 remote CM에게 가상 메모리 처리 요청을 상호 교환할 수 있도록 해주는 CVM transaction protocol layer 유닛(305)을 포함한다. CVM core 블록(300)은 대용량 통합 메모리 계층의 상태 정보를 모니터링하고 해당 정보의 보고 기능을 제공하는 CVM monitor 유닛(306)도 포함할 수 있다.
CVM core 블록(300)은 접근하려는 대용량 통합 메모리가 local CM 상에 위치하면 CVM transaction protocol layer 유닛(305)을 통해 직접 메모리 페이지를 교환하나, 접근 대상이 원격 노드에 위치한 remote CM인 경우는 자신의 HCA(332)을 통해 대상 노드의 remote CM에 CPU의 개입없이 직접 접근해서 메모리 페이지를 교환한다.
도 4는 CVM core 블록(300)의 구조를 보다 자세히 기술한 것이다. CVM engine은 다수의 노드에 위치한 CM을 통합하여 단일한 가상 대용량 통합 메모리를 구성한다. CVM engine을 형성하는 CVM core 블록(300)은 초기화될 때 노드 상의 LM 중에 커널에 의해 공헌된 CM을 예약한다. 이렇게 지정된 메모리 영역은 노드의 운영체제 내에서 다른 용도로 사용되지 못하며 오직 CVM core 블록(300)에 의해서만 관리되고 사용된다. 이 CVM core 블록(300)은 다른 노드의 CVM core 블록(300)과 상호 연동하여 대용량 통합 메모리 서비스를 운영한다. CVM core 블록(300)은 다수의 유닛으로 구성된다. 각 유닛과 하부 유닛의 기능을 살펴보면 다음과 같다.
Engine formalizer 유닛(301)은 CVMlib 블록(320)의 CVM engine configuration API를 통해 전달받은 데이터를 CVM initializing(301a)으로 전달하여 local CM의 초기화를 수행하고 CVM managing(301b)이 관리하는 대용량 통합 메모리로 CVM topology(301c)을 통해 형상을 구축한다. CVM managing(301b)은 기본적인 대용량 통합 메모리를 관리하기 위해 CVM topology(301c)의 지원을 받아 하부에 존재하는 local CM managing(301d)과 Remote CM managing(301e)의 작업 대상을 선택한다. 또한, CVM managing(301b)은 대용량 통합 메모리의 사용을 추적하는 정보를 관리한다.
CVM API suppoerter 유닛(302)은 CVMlib 블록(310)의 API 호출을 처리하기 위해 관련된 작업을 처리할 유닛을 선택한다. 호출된 API가 CVM engine 초기화와 관련되면 Engine formalizer 유닛(301)을 호출하고, 메모리 할당과 관련된 것이면 CVM address manager 유닛(304)을 호출하며, 메모리 공유 지원에 관한 호출이면 CVM sharer 유닛(303)을 호출하며, 대용량 통합 메모리 상태 모니터링에 관련되면 CVM monitor 유닛(306)을 호출하여 작업을 수행한다.
CVM sharer 유닛(303)은 CVM sharing(303a)을 사용해 다중 노드에 거쳐 수행되는 대용량 통합 메모리의 공유 메커니즘을 지원한다.
CVM address manager 유닛(304)은 VM address mapping(304a)을 통해 대용량 통합 메모리의 사용자 주소 공간 사상을 진행하고 CVM fault handling(304b)을 통해 최초 메모리 접근시 발생하는 메모리 폴트를 처리한다. 또한, CVM prefetching(304c)은 remote CM 접근시 입출력을 수행하기 위해 발생하는 처리 지연을 방지하기 위해 실제 사용이 발생하기 이전에 필요한 원격 노드 상의 remote CM을 자신의 노드로 이동하는 선반입을 수행한다. CVM synchronizing(304d)은 다중 참조시에 발생할 수 있는 메모리 데이터의 일관성 문제를 해결하기 위해 필요한 동기화를 진행한다.
CVM transaction protocol layer 유닛(305)은 이상에서 살펴본 기능들을 원격 노드를 대상으로 수행하기 위한 대용량 통합 메모리 처리 프로토콜 층을 제공한다.
CVM monitor 유닛(306)은 CVM core 블록이 제공하는 대용량 통합 메모리의 상태 정보를 검색하고 보고하는 역할을 수행한다.
도 5는 CVMlib 블록(310)의 소프트웨어 구조를 도식화한다. CVMlib 블록(310)은 대용량 통합 메모리 서비스를 이용하기 원하는 응용 프로그램을 위해 효율적인 공통 모듈을 정의하고 외부에 응용 프로그래밍 인터페이스를 제공하는 공유/정적 라이브러리로 내부적으로 CVM access 유닛(311), CVM engine monitoring 유닛(312), 및 CVM engine configuration 유닛(313)을 포함한다. 응용 프로그램은 CVMlib 블록(310)에서 제공하는 응용 프로그래밍 인터페이스를 이용하여 대용량 통합 메모리 서비스 기능을 사용하는 실행 코드를 개발할 수 있다.
일반적으로, CVMlib 블록(310)이 제공하는 기능은 특정 메모리 할당 정책에 따른 대용량 통합 메모리 할당과 해제, 대용량 통합 메모리의 현재 상태 정보 확인, 노드별 CM의 현재 상태 정보 확인, 할당된 대용량 통합 메모리에 대한 노드별 메모리 분산 정보 확인, CVM engine의 기동 및 종료, 대용량 통합 메모리의 형상 관리 등을 포함한다.
다음으로, 본 실시예에 따른 소프트웨어 구조를 이용하여 통합 메모리 서비스를 제공하는 방법을 설명한다. 도 6은 본 발명의 바람직한 실시예에 따른 통합 메모리 서비스 제공 방법을 도시한 순서도이다. 이하 설명은 도 6을 참조한다.
먼저, 각 노드로부터 기부된 메모리들을 가상화하여 통합 메모리로 관리한다(통합 메모리 관리 단계, S600). 본 실시예에서 통합 메모리 관리 단계(S600)는 공헌 메모리 처리 단계, 통합 메모리 생성 단계, 및 가상 엔진 구동 단계를 포함할 수 있다. 공헌 메모리 처리 단계는 미리 정해진 프로토콜을 통해 각 노드로부터 기부된 메모리들을 로컬 메모리로 등록시키는 단계이다. 통합 메모리 생성 단계는 등록된 공헌 메모리를 가상화하여 통합 메모리로 생성하는 단계이다. 가상 엔진 구동 단계는 가상 엔진을 초기화시키며, 생성된 통합 메모리를 초기화된 가상 엔진으로 관리하는 단계이다.
가상 엔진 구동 단계 이후, 통합 메모리 상태 정보 획득 단계, 통합 메모리 상태 정보 보고 단계 등이 수행될 수 있다. 통합 메모리 상태 정보 획득 단계는 모니터링을 통해 통합 메모리의 서비스 이용 상황과 관련된 상태 정보를 획득하는 단계이다. 통합 메모리 상태 정보 보고 단계는 획득된 상태 정보를 통합 메모리 서비스를 관리하는 관리자 서버로 보고하는 단계이다.
한편, 가상 엔진 구동 단계는 서비스 이용 상황 추적 단계, 및 메모리 페이지 교환 단계를 포함할 수 있다. 서비스 이용 상황 추적 단계는 통합 메모리의 서비스 이용 상황을 추적하는 단계이다. 메모리 페이지 교환 단계는 추적 결과 통합 메모리가 로컬 노드 상에 위치하면, 통합 메모리 서비스를 제공할 때에 트랜잭션 프로토콜 계층(transaction protocol layer)을 이용하여 메모리 페이지를 교환하며, 추적 결과 통합 메모리가 원격 노드 상에 위치하면, 통합 메모리 서비스를 제공할 때에 HCA를 이용하여 메모리 페이지를 교환하는 단계이다.
이후, 가상의 주소 공간을 통해 통합 메모리를 선택된 노드에 사상시켜 통합 메모리 서비스를 제공한다(통합 메모리 서비스 제공 단계, S610). 바람직하게는, 통합 메모리 서비스 제공 단계(S610)는 통합 메모리를 사상시킬 노드에 데이터를 선반입(prefetching)시킨다.
본 실시예에서 통합 메모리 서비스 제공 단계(S610)는 인터페이스 처리 단계, 통합 메모리 사상 단계, 및 통합 메모리 공유 단계를 포함할 수 있다. 인터페이스 처리 단계는 통합 메모리 서비스를 지원하기 위한 인터페이스를 처리하는 단계이다. 통합 메모리 사상 단계는 인터페이스를 통해 선택된 노드마다 메모리로 사용 가능하게 가상의 주소 공간에 통합 메모리를 사상시키는 단계이다. 통합 메모리 공유 단계는 선택된 노드가 적어도 두개일 때 통합 메모리를 선택된 노드들끼리 공유시키는 단계이다.
한편, 통합 메모리 서비스 제공 단계(S610)는 페이지 폴트 발생 단계, 페이지 폴트 핸들링 단계, 페이지 캐쉬 적재 단계, 및 통합 메모리 서비스 실행 단계를 더욱 포함할 수 있다. 이단계들은 통합 메모리 공유 단계와 함께 수행될 수 있다. 페이지 폴트 발생 단계는 통합 메모리 서비스를 이용하려는 서비스 이용 노드가 사상된 메모리 영역에 포함된 페이지에 최초 접근을 시도할 때에 페이지 폴트를 발생시키는 단계이다. 페이지 폴트 핸들링 단계는 페이지 폴트가 발생되면 페이지 폴트를 핸들링시키는 단계이다. 페이지 캐쉬 적재 단계는 통합 메모리의 물리 페이지를 서비스 이용 노드 상의 페이지 캐쉬에 적재시키는 단계이다. 통합 메모리 서비스 실행 단계는 적재가 완료되면 서비스 이용 노드의 통합 메모리 접근을 허여하여 통합 메모리 서비스를 실행시키는 단계이다.
통합 메모리 관리 단계(S600)와 통합 메모리 서비스 제공 단계(S610) 사이에는 통합 메모리 서비스 지원 단계가 수행될 수 있다. 통합 메모리 서비스 지원 단계는 통합 메모리를 이용하기 위한 인터페이스를 제공하여 통합 메모리 서비스를 지원하거나, 통합 메모리를 처리하기 위한 명령어를 제공하여 통합 메모리 서비스를 지원하는 단계이다.
도 7은 대용량 통합 메모리 계층을 제공하는 소프트웨어의 논리적 기본 동작을 설명하는 도식도이다.
각 노드 상에 존재하는 CM(331)은 CVM core 블록(300)에 의해 대용량 메모리로 통합되기 위해 초기화된다. CM(331)은 운영체제가 동작하기 이전의 각 노드 상의 물리 메모리 LM(333)에서 시작된다. LM(333)은 커널에 의해 운용 메모리 PM(334)로 관리되며 이 PM(334) 중 특정 메모리 영역을 커널로부터 공헌받아 공헌 메모리 CM(331)을 형성한다. 각 노드의 CM(331)은 CM core 블록(300)에 의해 대용량 메모리로 통합 가상화된다.
각 노드의 PM(334)은 기존 시스템에서 사용되던 방법대로 할당되고 운용된다. 그러나, CM(331)은 CVM engine을 구성하는 CVM core 블록(300)을 통해 내부적으로 다르게 운용된다.
대용량 통합 메모리 계층은 engine interface(310)의 CVM access API를 사용해 메모리 할당과 해제 작업을 수행한다. 응용 프로그램에 의해서 메모리 할당이 요청되면 CVM core 블록(300)은 대용량 통합 메모리 할당 정보를 바탕으로 할당에 적합한 노드의 가용 메모리 영역을 찾아낸다. VM address mapping은 할당할 물리 메모리 영역을 사용자 프로세스가 기존 메모리처럼 접근할 수 있도록 프로세스의 가상 주소공간에 사상한다.
프로세스가 사상된 메모리 영역에 포함된 페이지에 최초 접근을 시도할 때 CPU는 페이지 폴트를 발생시킨다. 이것을 처리하기 위해 커널의 page fault handler를 거쳐 CVM fault handling으로 수행이 넘어온다. CVM fault handling은 대용량 통합 메모리의 실제 물리 페이지를 자신의 노드 상의 페이지 캐쉬에 적재한다. 페이지의 적재가 완료되면 사용자 프로세스는 해당 페이지를 통해 일반 메모리처럼 대용량 통합 메모리에 접근할 수 있다.
본 발명에서 제공하는 기능은 메모리 기반의 데이터 처리 패러다임을 지원하기 위해 각 노드의 소규모 메모리를 통합해 추상적인 대용량 통합 메모리 계층을 구성하는 것을 목적으로 한다. 원격 노드 상의 공헌 메모리를 접근하기 위해 발생할 수 있는 입출력 연산의 지연 현상을 극복하기 위해 데이터를 선입하고 다중 노드 시스템 차원의 메모리 공유를 제공하는데 기본 목적이 있다.
본 발명의 구성은 사용자 영역의 CVMctrl 블록과 CVMlib 블록, 그리고 대용량 통합 메모리 서비스의 작업을 처리하는 CVM core 블록으로 구성된다. CVM 메타데이터는 클러스터 마스터 노드의 전역 정보인 Cluster 설정 정보 테이블, CVM 할당 상태 정보 테이블, 로컬 노드 정보인 CVM 로컬 상태 정보 테이블, CVM 할당 맵 등으로 구성된다. CVM 메타데이터를 가진 마스터 노드와 로컬 노드의 연동을 통해 대용량 통합 메모리의 특정 노드 공헌 메모리 영역의 동적 재구성이 수행되고, 상태 정보를 이용한 메모리 할당 요청의 처리 및 변경이 수행된다. 로컬 노드의 CVM 로컬 상태 정보 테이블, 마스터 노드의 CVM 할당 상태 정보 테이블의 할당 상태 정보를 통해 대용량 메모리 할당 요청에 대한 처리가 수행되고, 할당이 이루어지면 해당 상태 정보 항목을 변경시킨다. 로컬 노드 공헌 메모리 영역에 대한 동적 재구성은 CVM 로컬 상태 정보 테이블의 상태 정보 항목 변경과 CVM 할당 맵의 재구성을 통해 수행된다.
본 발명에 따르면, 스토리지 저장 장치에 대한 입출력 부하가 없어 실시간성을 갖는 폭주형 대용량 스트림 처리에 접합하다. 또한, 원격 노드에 존재하는 대용량 메모리 영역에 접근시 발생할 수 있는 입출력 지연을 방지하기 위해 선반입 메커니즘을 사용함으로써 해당 메모리를 사용하는 프로세스에 발생할 수 있는 문맥 교환의 부하를 효과적으로 감소시킬 수 있다. 또한, 다중 노드 시스템의 하드웨어 가상화를 필요로 하지 않음으로써 불필요한 가상화에 따른 부하가 없어 대규모 노드를 갖는 시스템의 구축이 용이하고 기존 다중 노드 시스템 환경을 구축하기 좋다.
본 발명은 메모리 가상화, 메모리 공유 지원 등을 통해 폭주형 스트림 데이터를 처리하는 데에 적용될 수 있다.
100 : 통합 메모리 서비스를 위한 소프트웨어 구조
110 : 통합 메모리 관리 모듈 111 : 공헌 메모리 처리 모듈
112 : 통합 메모리 생성 모듈 113 : 가상 엔진 구동 모듈
114 : 서비스 이용 상황 추적 모듈 115 : 제1 메모리 페이지 교환 모듈
116 : 제2 메모리 페이지 교환 모듈 120 : 통합 메모리 서비스 제공 모듈
121 : 인터페이스 처리 모듈 122 : 통합 메모리 사상 모듈
123 : 통합 메모리 공유 모듈 124 : 페이지 폴트 발생 모듈
125 : 페이지 폴트 핸들링 모듈 126 : 페이지 캐쉬 적재 모듈
130 : 제1 통합 메모리 서비스 지원 모듈
140 : 제2 통합 메모리 서비스 지원 모듈
300: 대용량 통합 메모리 소프트웨어 구조의 코어 블록
310: 대용량 통합 메모리 소프트웨어 구조의 인터페이스 라이브러리 블록
320: 대용량 통합 메모리 소프트웨어 구조의 명령어 블록
330: 다중 노드 시스템의 개별 노드

Claims (18)

  1. 각 노드로부터 기부된 메모리들을 가상화하여 통합 메모리로 관리하고, 통합 메모리의 위치에 기초하여 다른 방식으로 메모리 페이지를 교환하는 통합 메모리 관리 모듈; 및
    가상의 주소 공간을 통해 통합 메모리를 선택된 노드에 사상시켜 통합 메모리 서비스를 제공하는 통합 메모리 서비스 제공 모듈;을 포함하고,
    상기 통합 메모리 관리 모듈은,
    통합 메모리의 서비스 이용 상황을 추적하는 서비스 이용 상황 추적 모듈; 및
    추적 결과 통합 메모리가 로컬 노드 상에 위치하면, 통합 메모리 서비스를 제공할 때에 트랜잭션 프로토콜 계층(transaction protocol layer)을 이용하여 메모리 페이지를 교환하는 것 및 추적 결과 통합 메모리가 원격 노드 상에 위치하면, 통합 메모리 서비스를 제공할 때에 HCA를 이용하여 메모리 페이지를 교환하는 것 중 어느 하나에 의해 메모리 페이지를 교환하는 제 1 및 제 2 메모리 페이지 교환 모듈; 을 포함하고,
    상기 제 1 메모리 페이지 교환 모듈은 추적 결과 상기 통합 메모리가 로컬 노드 상에 위치하면 이용되고, 상기 제 2 메모리 페이지 교환 모듈은 추적 결과 상기 통합 메모리가 원격 노드 상에 위치하면 이용되는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  2. 제 1 항에 있어서,
    통합 메모리를 이용하기 위한 인터페이스를 제공하여 통합 메모리 서비스를 지원하는 제1 통합 메모리 서비스 지원 모듈; 또는
    통합 메모리를 처리하기 위한 명령어를 제공하여 통합 메모리 서비스를 지원하는 제2 통합 메모리 서비스 지원 모듈
    을 더욱 포함하는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  3. 제 2 항에 있어서,
    상기 통합 메모리 서비스 제공 모듈은 통합 메모리를 사상시킬 노드에 데이터를 선반입(prefetching)시키는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  4. 제 1 항에 있어서,
    상기 통합 메모리 관리 모듈은,
    미리 정해진 프로토콜을 통해 각 노드로부터 기부된 메모리들을 공헌 메모리로 등록시키는 공헌 메모리 처리 모듈;
    등록된 공헌 메모리를 가상화하여 통합 메모리로 생성하는 통합 메모리 생성 모듈; 및
    가상 엔진을 초기화시키며, 생성된 통합 메모리를 초기화된 가상 엔진으로 관리하는 가상 엔진 구동 모듈
    을 포함하는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 통합 메모리 관리 모듈은,
    모니터링을 통해 통합 메모리의 서비스 이용 상황과 관련된 상태 정보를 획득하는 통합 메모리 상태 정보 획득 모듈; 및
    획득된 상태 정보를 통합 메모리 서비스를 관리하는 관리자 서버로 보고하는 통합 메모리 상태 정보 보고 모듈
    을 더욱 포함하는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  7. 제 1 항에 있어서,
    상기 통합 메모리 서비스 제공 모듈은,
    통합 메모리 서비스를 지원하기 위한 인터페이스를 처리하는 인터페이스 처리 모듈;
    상기 인터페이스를 통해 선택된 노드마다 메모리로 사용 가능하게 상기 주소 공간에 통합 메모리를 사상시키는 통합 메모리 사상 모듈; 및
    선택된 노드가 적어도 두개일 때 통합 메모리를 선택된 노드들끼리 공유시키는 통합 메모리 공유 모듈
    을 포함하는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  8. 제 7 항에 있어서,
    상기 통합 메모리 서비스 제공 모듈은,
    통합 메모리 서비스를 이용하려는 서비스 이용 노드가 사상된 메모리 영역에 포함된 페이지에 최초 접근을 시도할 때에 페이지 폴트를 발생시키는 페이지 폴트 발생 모듈;
    페이지 폴트가 발생되면 페이지 폴트를 핸들링시키는 페이지 폴트 핸들링 모듈; 및
    통합 메모리의 물리 페이지를 상기 서비스 이용 노드 상의 페이지 캐쉬에 적재시키는 페이지 캐쉬 적재 모듈
    을 더욱 포함하는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  9. 제 1 항에 있어서,
    상기 통합 메모리 서비스 제공 모듈은 메모리를 기부한 노드의 물리 메모리 위치에 통합 메모리를 예약 사상시키는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  10. 제 1 항에 있어서,
    상기 시스템는 노드들 간 연동을 통해 형상화된 가상 엔진에 의해 구현되거나, 클라우드 컴퓨팅을 구성하는 컴퓨팅 장치의 커널(kernel)에서 구현되는 것을 특징으로 하는 통합 메모리 서비스를 위한 시스템.
  11. 각 노드로부터 기부된 메모리들을 가상화하여 통합 메모리로 관리하는 통합 메모리 관리 단계; 및
    가상의 주소 공간을 통해 통합 메모리를 선택된 노드에 사상시켜 통합 메모리 서비스를 제공하는 통합 메모리 서비스 제공 단계를 포함하고,
    상기 통합 메모리 관리 단계는
    통합 메모리의 서비스 이용 상황을 추적하는 서비스 이용 상황 추적 단계; 및
    상기 통합 메모리의 위치에 기초하여 다른 방식으로 메모리 페이지를 교환하는 메모리 페이지 교환 단계;를 포함하고,
    상기 메모리 페이지 교환 단계는,
    추적 결과 통합 메모리가 로컬 노드 상에 위치하면, 통합 메모리 서비스를 제공할 때에 트랜잭션 프로토콜 계층(transaction protocol layer)을 이용하여 메모리 페이지를 교환하는 것 및 추적 결과 통합 메모리가 원격 노드 상에 위치하면, 통합메모리 서비스를 제공할 때에 HCA를 이용하여 메모리 페이지를 교환하는 메모리 페이지 교환하는 것 중 어느 하나에 의해 수행되는 것을 특징으로 하는 통합 메모리 서비스 제공 방법.
  12. 제 11 항에 있어서,
    통합 메모리를 이용하기 위한 인터페이스를 제공하여 통합 메모리 서비스를 지원하거나, 통합 메모리를 처리하기 위한 명령어를 제공하여 통합 메모리 서비스를 지원하는 통합 메모리 서비스 지원 단계
    를 더욱 포함하는 것을 특징으로 하는 통합 메모리 서비스 제공 방법.
  13. 제 12 항에 있어서,
    상기 통합 메모리 서비스 제공 단계는 통합 메모리를 사상시킬 노드에 데이터를 선반입(prefetching)시키는 것을 특징으로 하는 통합 메모리 서비스 제공 방법.
  14. 제 11 항에 있어서,
    상기 통합 메모리 관리 단계는,
    미리 정해진 프로토콜을 통해 각 노드로부터 기부된 메모리들을 공헌 메모리로 등록시키는 공헌 메모리 처리 단계;
    등록된 공헌 메모리를 가상화하여 통합 메모리로 생성하는 통합 메모리 생성 단계; 및
    가상 엔진을 초기화시키며, 생성된 통합 메모리를 초기화된 가상 엔진으로 관리하는 가상 엔진 구동 단계
    를 포함하는 것을 특징으로 하는 통합 메모리 서비스 제공 방법.
  15. 삭제
  16. 제 11 항에 있어서,
    상기 통합 메모리 관리 단계는,
    모니터링을 통해 통합 메모리의 서비스 이용 상황과 관련된 상태 정보를 획득하는 통합 메모리 상태 정보 획득 단계; 및
    획득된 상태 정보를 통합 메모리 서비스를 관리하는 관리자 서버로 보고하는 통합 메모리 상태 정보 보고 단계
    를 더욱 포함하는 것을 특징으로 하는 통합 메모리 서비스 제공 방법.
  17. 제 11 항에 있어서,
    상기 통합 메모리 서비스 제공 단계는,
    통합 메모리 서비스를 지원하기 위한 인터페이스를 처리하는 인터페이스 처리 단계;
    상기 인터페이스를 통해 선택된 노드마다 메모리로 사용 가능하게 상기 주소 공간에 통합 메모리를 사상시키는 통합 메모리 사상 단계; 및
    선택된 노드가 적어도 두개일 때 통합 메모리를 선택된 노드들끼리 공유시키는 통합 메모리 공유 단계
    를 포함하는 것을 특징으로 하는 통합 메모리 서비스 제공 방법.
  18. 제 11 항에 있어서,
    상기 통합 메모리 서비스 제공 단계는,
    통합 메모리 서비스를 이용하려는 서비스 이용 노드가 사상된 메모리 영역에 포함된 페이지에 최초 접근을 시도할 때에 페이지 폴트를 발생시키는 페이지 폴트 발생 단계;
    페이지 폴트가 발생되면 페이지 폴트를 핸들링시키는 페이지 폴트 핸들링 단계;
    통합 메모리의 물리 페이지를 상기 서비스 이용 노드 상의 페이지 캐쉬에 적재시키는 페이지 캐쉬 적재 단계; 및
    적재가 완료되면 상기 서비스 이용 노드의 통합 메모리 접근을 허여하여 통합 메모리 서비스를 실행시키는 통합 메모리 서비스 실행 단계
    를 포함하는 것을 특징으로 하는 통합 메모리 서비스 제공 방법.
KR1020100130098A 2010-12-17 2010-12-17 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법 KR101694977B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100130098A KR101694977B1 (ko) 2010-12-17 2010-12-17 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법
US13/314,443 US8943294B2 (en) 2010-12-17 2011-12-08 Software architecture for service of collective memory and method for providing service of collective memory using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100130098A KR101694977B1 (ko) 2010-12-17 2010-12-17 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법

Publications (2)

Publication Number Publication Date
KR20120068464A KR20120068464A (ko) 2012-06-27
KR101694977B1 true KR101694977B1 (ko) 2017-01-11

Family

ID=46235991

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100130098A KR101694977B1 (ko) 2010-12-17 2010-12-17 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법

Country Status (2)

Country Link
US (1) US8943294B2 (ko)
KR (1) KR101694977B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100983479B1 (ko) * 2009-02-11 2010-09-27 엔에이치엔(주) 분산 스페이스를 이용하여 분산 프로그래밍 환경을 제공하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
US8996800B2 (en) 2011-07-07 2015-03-31 Atlantis Computing, Inc. Deduplication of virtual machine files in a virtualized desktop environment
US9277010B2 (en) 2012-12-21 2016-03-01 Atlantis Computing, Inc. Systems and apparatuses for aggregating nodes to form an aggregated virtual storage for a virtualized desktop environment
US9069472B2 (en) * 2012-12-21 2015-06-30 Atlantis Computing, Inc. Method for dispersing and collating I/O's from virtual machines for parallelization of I/O access and redundancy of storing virtual machine data
US9250946B2 (en) 2013-02-12 2016-02-02 Atlantis Computing, Inc. Efficient provisioning of cloned virtual machine images using deduplication metadata
US9471590B2 (en) 2013-02-12 2016-10-18 Atlantis Computing, Inc. Method and apparatus for replicating virtual machine images using deduplication metadata
US9372865B2 (en) 2013-02-12 2016-06-21 Atlantis Computing, Inc. Deduplication metadata access in deduplication file system
CN104571934B (zh) * 2013-10-18 2018-02-06 华为技术有限公司 一种内存访问的方法、设备和系统
JP5963991B1 (ja) * 2015-02-27 2016-08-03 三菱電機株式会社 ユーザインタフェース実行装置およびユーザインタフェース設計装置
KR101708236B1 (ko) 2015-10-23 2017-02-20 전자부품연구원 로컬 처리 장치 및 그 데이터 송수신 방법
JP6740683B2 (ja) * 2016-04-07 2020-08-19 富士通株式会社 並列処理装置及び通信制御方法
CN107071059B (zh) * 2017-05-25 2018-10-02 腾讯科技(深圳)有限公司 分布式缓存服务实现方法、装置、终端、服务器及系统
KR102438319B1 (ko) 2018-02-07 2022-09-01 한국전자통신연구원 공통 메모리 인터페이스 장치 및 방법
CN108337697B (zh) * 2018-02-12 2021-06-18 重庆邮电大学 无线网络虚拟化中节点与链路的延迟映射方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090150511A1 (en) * 2007-11-08 2009-06-11 Rna Networks, Inc. Network with distributed shared memory
US20090210431A1 (en) 2007-11-12 2009-08-20 Attune Systems, Inc. Load Sharing Cluster File Systems

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917599B1 (en) * 2006-12-15 2011-03-29 The Research Foundation Of State University Of New York Distributed adaptive network memory engine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090150511A1 (en) * 2007-11-08 2009-06-11 Rna Networks, Inc. Network with distributed shared memory
US20090210431A1 (en) 2007-11-12 2009-08-20 Attune Systems, Inc. Load Sharing Cluster File Systems

Also Published As

Publication number Publication date
US20120159115A1 (en) 2012-06-21
US8943294B2 (en) 2015-01-27
KR20120068464A (ko) 2012-06-27

Similar Documents

Publication Publication Date Title
KR101694977B1 (ko) 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법
EP2851807B1 (en) Method and system for supporting resource isolation under multi-core architecture
US11010084B2 (en) Virtual machine migration system
CN113674133A (zh) Gpu集群共享显存系统、方法、装置及设备
US10802972B2 (en) Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics
US20220050722A1 (en) Memory pool management
TWI785320B (zh) 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法
Trivedi et al. RStore: A direct-access DRAM-based data store
US7793051B1 (en) Global shared memory subsystem
Aguilera et al. Memory disaggregation: why now and what are the challenges
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
US10936219B2 (en) Controller-based inter-device notational data movement system
Mishra et al. On-disk data processing: Issues and future directions
Jin et al. ChinaV: Building virtualized computing system
US11281612B2 (en) Switch-based inter-device notational data movement system
Goglin Memory footprint of locality information on many-core platforms
JP6998419B2 (ja) 制御プログラム
US11061609B2 (en) Distributed memory object method and system enabling memory-speed data access in a distributed environment
US20220206852A1 (en) Lockless handling of buffers for remote direct memory access (rdma) i/o operations
JP6694007B2 (ja) 情報処理装置
Girão et al. Performance and energy evaluation of memory organizations in noc-based mpsocs under latency and task migration
Cha et al. A software integration architecture for support of the large-capacity memory
Caldwell FluidMem: Open source full memory disaggregation
JP2022031363A (ja) 制御プログラム
Soumya OpenFAM: A Library for Programming Disaggregated Memory

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
GRNT Written decision to grant