KR20230085075A - 분리 메모리 환경의 네트워크 송신 가속화 방법 및 장치 - Google Patents

분리 메모리 환경의 네트워크 송신 가속화 방법 및 장치 Download PDF

Info

Publication number
KR20230085075A
KR20230085075A KR1020220156303A KR20220156303A KR20230085075A KR 20230085075 A KR20230085075 A KR 20230085075A KR 1020220156303 A KR1020220156303 A KR 1020220156303A KR 20220156303 A KR20220156303 A KR 20220156303A KR 20230085075 A KR20230085075 A KR 20230085075A
Authority
KR
South Korea
Prior art keywords
node
transmission data
transmission
memory
data
Prior art date
Application number
KR1020220156303A
Other languages
English (en)
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 TW111146823A priority Critical patent/TW202340950A/zh
Priority to US18/076,051 priority patent/US11849005B2/en
Publication of KR20230085075A publication Critical patent/KR20230085075A/ko

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명의 일 실시예에 따른 분리 메모리 환경의 네트워크 송신 가속화 방법은 컴퓨팅 노드의 송신 버퍼에 송신 데이터를 복사하는 단계, 상기 송신 데이터 복사 중 페이지 폴트가 발생하면, 상기 송신 데이터의 저장 위치를 확인하는 단계, 상기 송신 데이터가 가장 많이 저장된 노드를 송신 노드로 설정하는 단계 및 상기 송신 노드에 송신 명령을 보내는 단계를 포함한다.

Description

분리 메모리 환경의 네트워크 송신 가속화 방법 및 장치{APPARATUS AND METHOD FOR ACCELERATING NETWORK TRANSMISSION IN MEMORY DISAGGREGATION ENVIRONMENT}
본 발명은 분리 메모리 환경의 네트워크 송신 가속화 기술에 관한 것이다.
구체적으로, 본 발명은 데이터가 원격 메모리에 위치함으로써 발생하는 비효율성을 개선하여 네트워크 송신 효율을 높이는 기술에 관한 것이다.
메모리 분리 시스템에서 빠른 메모리 접근이 요구되는 데이터는 가상머신이 동작하는 호스트에 존재하는 지역 DRAM에 위치하고, 그 외의 데이터를 원격 메모리 등에 위치시킴으로써 높은 메모리 접근 성능과 컴퓨터 메모리 서브시스템에 의해 제어되는 DRAM보다 대용량의 메모리를 제공할 수 있다. 즉, 임의의 데이터는 그 데이터의 접근 성격에 따라서 지역 DRAM 혹은 원격 메모리에 위치하게 된다.
클라우드 인프라에서 사용되는 대표적인 서비스 중 하나인 메모리 캐시 서비스는 네트워크를 통해서 메모리에 기록되어 있는 정보를 클라이언트 요청에 따라서 전송한다. 이는 클라이언트의 데이터 요청 패턴에 따라서 지역성 (Locality)이 강하게 나타나는 경우도 있으나, 그 성격이 거의 없는 경우도 존재한다. 이와 같은 서비스를 원격 메모리를 활용한 가상머신 시스템에서 지원하기 위해서는 클라이언트가 요청한 데이터를 분리 메모리 시스템은 가상머신 노드를 통해서 서비스해야 한다.
이때, 해당 데이터가 지역 DRAM에 위치할 경우 빠르게 네트워크를 통해서 해당 데이터를 전송할 수 있다. 이에 반해, 요청 데이터가 원격 메모리에 위치할 경우, 가상머신 노드는 원격 메모리에 접근하게 되고 이를 분리 메모리 관리자에 의해 원격 메모리로부터 지역 메모리로 적재한 후, 이를 네트워크를 통해서 데이터를 전송해야 한다. 이는 네트워크로 송신해야 하는 데이터를 포함하는 메모리 블록의 적재 요청, 원격 메모리 서버로부터 지역 DRAM으로의 적재를 수반하기 때문이 네트워크 요청에 대한 지연시간이 증가하고, 네트워크에 대한 대역폭을 충분히 사용하기 어렵다.
이렇게 전송되는 데이터가 클라이언트에 의해서 지속적으로 요구되는 경우, 분리 메모리 관리자는 이를 지역 DRAM에 계속 위치시킨다. 하지만 해당 데이터가 클라이언트에 의해 재요청되지 않을 경우, 해당 데이터는 분리 메모리 시스템의 원격 메모리 접근에 따라 원격 메모리에 다시 쓰이거나 혹은 지역 DRAM에서 삭제되게 된다. 특히 네트워크에서 서비스되는 메모리 캐시와 같은 응용은 메모리에 존재하는 대상 데이터의 재사용성 및 지역성이 떨어질 수 있으며 이는 지역 DRAM에서 유의미하게 사용되는 메모리 블록이 원격 메모리로 축출(eviction)되는 현상을 발생시키게 된다.
국내 공개특허공보 제10-2017-0007103호(발명의 명칭: RDMA NVMe 디바이스의 구현 방법)
본 발명의 목적은 분리 메모리 환경에서 적은 지연시간과 높은 네트워크 전송 대역폭을 제공하는 것이다.
또한, 본 발명의 목적은 분리 메모리 환경에서 지역 메모리의 활용성을 향상시키는 것이다.
상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 분리 메모리 환경의 네트워크 송신 가속화 방법은 컴퓨팅 노드의 송신 버퍼에 송신 데이터를 복사하는 단계, 상기 송신 데이터 복사 중 페이지 폴트가 발생하면, 상기 송신 데이터의 저장 위치를 확인하는 단계, 상기 송신 데이터가 가장 많이 저장된 노드를 송신 노드로 설정하는 단계 및 상기 송신 노드에 송신 명령을 보내는 단계를 포함한다.
이때, 상기 송신 명령은 상기 컴퓨팅 노드의 로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함할 수 있다.
이때, 상기 송신 노드는 상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청하고, 완전한 송신 데이터를 송신할 수 있다.
이때, 상기 송신 노드는 송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하여 상기 송신 데이터를 송신할 수 있다.
이때, 상기 송신 노드가 상기 컴퓨팅 노드에 상응하면 상기 메모리 노드로부터 상기 송신 데이터를 수신하고, 완전한 송신 데이터를 송신할 수 있다.
이때, 상기 송신 데이터의 구성 정보는 상기 송신 데이터가 저장된 노드 정보 및 노드 별 송신 데이터 정보를 포함할 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 분리 메모리 환경의 컴퓨팅 노드는 송신 버퍼에 송신 데이터를 복사하는 가상머신 네트워크 커널 모듈, 상기 송신 데이터 복사 중 페이지 폴트가 발생하면, 분리 메모리 환경 내 송신 데이터가 저장된 위치를 확인하는 분리 메모리 관리 모듈, 상기 송신 데이터가 가장 많이 저장된 노드를 송신 노드로 설정하는 오프로딩 모듈 및 상기 송신 노드에 송신 명령을 보내는 통신 모듈을 포함한다.
이때, 상기 송신 명령은 로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함할 수 있다.
이때, 상기 송신 명령은 상기 송신 노드가 상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청하고, 완전한 송신 데이터를 송신하도록 제어할 수 있다.
이때, 상기 송신 명령은 상기 송신 노드가 송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하여 상기 송신 데이터를 송신하도록 제어할 수 있다.
이때, 상기 통신 모듈은 상기 송신 노드가 상기 컴퓨팅 노드에 상응하면 메모리 노드로부터 상기 송신 데이터를 수신하고, 완전한 송신 데이터를 송신할 수 있다.
이때, 상기 송신 데이터의 구성 정보는 상기 송신 데이터가 저장된 노드 정보 및 노드 별 송신 데이터 정보를 포함할 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 분리 메모리 환경의 메모리 노드는 가상머신이 동작하는 컴퓨팅 노드의 송신 명령을 수신하고, 상기 송신 명령에 기반하여 송신 데이터를 송신하는 통신 모듈 및 상기 송신 데이터의 구성 정보를 이용하여 완전한 송신 데이터를 구성하는 분리 메모리 네트워크 서버를 포함하고, 상기 송신 명령은 상기 컴퓨팅 노드의 로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함한다.
이때, 상기 데이터 송신 명령은 상기 메모리 노드에 상기 송신 데이터가 가장 많이 저장된 경우 수신될 수 있다.
이때, 상기 통신 모듈은 상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청할 수 있다.
이때, 본 발명의 일 실시예에 따른 분리 메모리 환경의 메모리 노드는 송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하는 IP 스푸핑 모듈을 더 포함할 수 있다.
본 발명에 따르면, 분리 메모리 환경에서 적은 지연시간과 높은 네트워크 전송 대역폭을 제공할 수 있다.
또한, 본 발명은 분리 메모리 환경에서 지역 메모리의 활용성을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 분리 메모리 환경의 네트워크 송신 가속화 방법을 나타낸 흐름도이다.
도 2는 분리 메모리 시스템에서 사용되는 메모리 자원 할당 방법의 일 예이다.
도 3은 응용프로그램 클라이언트와 서버의 통신 순서를 나타낸 흐름도이다.
도 4는 가상머신의 네트워크 전송 구조를 나타낸다.
도 5는 가상머신의 네트워크 전송에 대한 데이터의 흐름을 나타낸다.
도 6 및 도 7은 본 발명의 일 실시예에 따른 네트워크 전송 가속화를 위한 시스템 구조를 나타낸 블록도이다.
도 8은 본 발명의 일 실시예에 따른 분리 메모리 가상머신에서의 네트워크 전송 가속화 방법을 나타낸 흐름도이다.
도 9는 분리 메모리 네트워크 서버로 전송되는 정보의 일 예이다.
도 10은 분리 메모리 관리자의 네트워크 가속화 처리에 따른 가상머신 제어 전달 경로를 나타낸 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 컴퓨팅 노드를 나타낸 블록도이다.
도 12는 본 발명의 일 실시예에 따른 메모리 노드를 나타낸 블록도이다.
도 13은 실시예에 따른 컴퓨터 시스템의 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
본 명세서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
클라우드 데이터 센터에서 수행되는 다수의 응용들이 사용자 또는 응용 로직 서버에서 네트워크를 통해 수행 서비스를 제공하고 있다. 이와 같은 응용들은 요청으로부터 응답이 오기까지의 서비스 응답시간(Service Latency)의 평균도 중요하지만, 또 다른 주요한 성능 요인은 꼬리 응답시간(Tail Latency)이다. 균일한 서비스 품질을 보장하기 위해 꼬리 응답시간을 짧게 유지하는 것이 중요하다.
즉, 다양한 응답시간 중 가장 오랜 걸린 응답시간 군이 주요한 성능이 되는 환경에서 분리 메모리 시스템은 메모리 블록이 원격 메모리에 위치함에 이를 컴퓨팅 노드로 적재 후 서비스를 하게 된다. 이와 같은 서비스는 그 지역성이 낮기 때문에 원격 메모리 접근이 잦고, 결과적으로 높은 꼬리 응답시간을 갖게 되어 그 적용 시나리오가 한정되게 된다.
본 발명은 네트워크 서비스를 수행함에 있어서 메모리 분리 시스템에서 네트워크 송신해야 할 데이터에 대해서 그 메모리 서버의 위치를 고려하고, 해당 서버로 네트워크 송신을 오프로딩함으로써 가속화하게 된다. 이는 다수의 요청된 서비스의 응답을 다수의 메모리 노드가 직접 응답하게 됨으로써 하나의 컴퓨팅 노드에서만 서비스하는 경우, 보다 높은 네트워크 대역폭을 제공할 수 있다. 이로 인해 분리 메모리 환경에서 집중된 노드가 아닌 다수의 메모리 서버가 네트워크에서 직접 서비스함으로써 꼬리 응답시간이 크게 증가하는 것을 방지한다.
도 1은 본 발명의 일 실시예에 따른 분리 메모리 환경의 네트워크 송신 가속화 방법을 나타낸 흐름도이다.
본 발명의 일 실시예에 따른 네트워크 송신 가속화 방법은 컴퓨팅 노드와 같은 네트워크 송신 가속화 장치에서 수행될 수 있다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 분리 메모리 환경의 네트워크 송신 가속화 방법은 컴퓨팅 노드의 송신 버퍼에 송신 데이터를 복사하는 단계(S110), 상기 송신 데이터 복사 중 페이지 폴트가 발생하면, 상기 송신 데이터의 저장 위치를 확인하는 단계(S120), 상기 송신 데이터가 가장 많이 저장된 노드를 송신 노드로 설정하는 단계(S130) 및 상기 송신 노드에 송신 명령을 보내는 단계(S140)를 포함한다.
이때, 상기 송신 명령은 상기 컴퓨팅 노드의 로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함할 수 있다.
이때, 상기 송신 노드는 상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청하고, 완전한 송신 데이터를 송신할 수 있다.
이때, 상기 송신 노드는 송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하여 상기 송신 데이터를 송신할 수 있다.
이때, 상기 송신 노드가 상기 컴퓨팅 노드에 상응하면 상기 메모리 노드로부터 상기 송신 데이터를 수신하고, 완전한 송신 데이터를 송신할 수 있다.
이때, 상기 송신 데이터의 구성 정보는 상기 송신 데이터가 저장된 노드 정보 및 노드 별 송신 데이터 정보를 포함할 수 있다.
도 2는 분리 메모리 시스템에서 사용되는 메모리 자원 할당 방법의 일 예이다.
도 2를 참조하면, 가상머신01은 물리노드01(110)에서 동작하며 직접 메모리를 위해서 물리노드01(110)에 위치하는 지역 메모리(111)를 사용한다. 또한 간접 메모리로써 물리노드02(120)와 물리노드03(130)에 위치하는 원격으로 접근 가능한 메모리(121, 131)를 사용한다. 이는 성능에 민감한 데이터는 지역 메모리(111)에 위치시키고, 성능-민감성이 떨어지는 데이터는 원격 메모리에 할당함으로써 높은 성능과 동시에 대용량의 메모리 사용 환경을 제공한다.
이와 같이 여러 노드에 걸쳐서 메모리를 활용하여 동작하는 하나의 가상머신을 생성함으로써 기존의 하나의 물리노드에 있는 메모리 자원만을 활용하는 가상머신 기술들과 비교하여 높은 유연성(Flexibility)과 높은 자원 활용률(Utilization)을 기대할 수 있다.
도 3은 응용프로그램 클라이언트와 서버의 통신 순서를 나타낸 흐름도이다.
도 4는 가상머신의 네트워크 전송 구조를 나타낸다.
도 3을 참조하면, connect 함수를 통해서 클라이언트는 listen을 수행하여 기다리고 있는 서버와 연결된다. 이후 클라이언트와 서버는 send/recv 함수를 이용하여 필요한 정보를 서로 주고받게 된다. 도 4에서 나타난 바와 같이, 네트워크 응용(210)에서 수행되는 send 함수는 시스템 콜을 이용하여 가상머신 네트워크 커널 모듈(220)로 요청하고 이때, 네트워크 응용(210)에 요청한 데이터를 가상머신 네트워크 커널 모듈(220)이 시스템으로부터 할당받은 버퍼에 복사한다. 이렇게 할당 받은 버퍼에 저장되어 있는 데이터는 더 이상의 복사 없이 가상머신 네트워크 장치(230)로 전달되고 이를 다시 가상 네트워크 커널 모듈(240)로 전달되어 최종적으로 네트워크 장치를 통해서 네트워크로 송신된다.
이때, 가상머신 네트워크 커널 모듈은 가상 네트워크 장치를 통해 가상 네트워크 커널 모듈과 연결되나, 본 발명의 범위가 이에 제한되지는 않는다. 즉, OpenVSwitch 혹은 vhost-user 등과 같이 물리 네트워크 인터페이스에 데이터를 전달하는 다양한 데이터 경로에 대해서 적용 가능하나 본 내용에서는 가상머신 커널 공간에 설치되어 있는 가상머신 네트워크 커널 모듈을 기준으로 기술한다.
도 5는 가상머신의 네트워크 전송에 대한 데이터의 흐름을 나타낸다.
도 5를 참조하면, 사용자가 요청한 데이터는 가상머신 네트워크 커널 모듈에서 전송 버퍼에 복사되고 이를 가상 네트워크 장치를 거쳐서 가상 네트워크 커널 모듈에 전달하여 요청 데이터를 네트워크로 전송하게 된다. 해당 결과는 가상IRQ 등을 통해서 가상CPU에게 전달된다.
도 6 및 도 7은 본 발명의 일 실시예에 따른 네트워크 전송 가속화를 위한 시스템 구조를 나타낸 블록도이다.
도 6 및 도 7을 참조하면, 네트워크 응용(310)의 요청에 의해 가상머신 네트워크 커널 모듈(320)은 네트워크 송신을 위한 버퍼를 할당받고 네트워크 응용(310)이 요청한 주소로부터 전송할 데이터를 버퍼로 복사한 후 이를 가상 네트워크 장치에 알림으로써 네트워크 송신이 수행된다. 네트워크 응용(310)이 가상머신 네트워크 커널 모듈(320)에게 요청한 데이터를 포함하는 페이지 혹은 메모리 블록이 원격 메모리 노드에 위치하여 있으면, 복사로 인해 메모리에 접근을 수반하고 이는 페이지 폴트가 발생하여 분리메모리 관리자(350)로 제어가 넘어가게 된다. 이때, 네트워크 응용이 전송하고자 한 데이터가 완전히 메모리가 지역 DRAM에 위치할 경우, 추가적인 비용 없이 가상 네트워크 장치를 이용하여 네트워크로 데이터를 전송하게 된다.
분리 메모리 관리자(350)는 페이지 폴트가 발생한 위치를 확인하여 해당 페이지 폴트가 가상머신 네트워크 커널 모듈에서 발생한 것을 확인하고, 이를 네트워크 전송에 대한 폴트 처리를 위임할 가상 네트워크 전송 오프로딩 모듈(360)에게 제어를 넘기게 된다. 이때, 가상 네트워크 전송 오프로딩 모듈(360)이 분리메모리 관리자(350)를 통해서 전송하고자 하는 데이터가 위치한 원격 메모리 노드를 조회하고 네트워크 송신을 위해 요구되는 데이터가 원격 메모리 노드의 위치를 확인한다.
송신할 데이터는 컴퓨팅 노드에 없거나 혹은 일부가 존재하고, 1개 이상의 메모리 노드에 위치하고 있게 된다. 이때, 가장 많은 데이터를 갖고 있는 노드를 통해서 전송하는 것을 주요 정책으로 한다. 전송하고자 하는 사용자 데이터에 대해서 컴퓨팅 노드가 가장 많은 데이터를 가지고 있으면 메모리 노드로부터 데이터를 전송받아서 완성된 송신 데이터를 네트워크 스푸핑 모듈을 통해서 전송한다. 이와 달리 임의의 메모리 노드가 전송하고자 하는 데이터 중 가장 많은 데이터를 가지고 있을 경우, 가상 네트워크 전송 오프로딩 모듈(360)은 인터커넥트(370)를 통해서 해당 메모리 노드(400-1)로 네트워크 전송 명령과 컴퓨팅 노드에 위치한 전송 데이터 일부를 송신한다. 이를 수신한 메모리 노드는 필요시 다른 메모리 노드(400-2)에게 데이터를 요청/전송받아 완전한 송신 데이터를 생성한다.
분리 메모리 네트워크 서버(410-1)는 해당 노드의 네트워크 전송 스푸핑 모듈(420)을 통해서 송신자 IP 주소지 스푸핑 (Source IP Address Spoofing)과 같은 방법을 이용하여 네트워크에 분리 메모리를 사용하는 가상머신에서 송신한 것과 같이 네트워크 패킷을 메모리 노드에 위치한 네트워크 장치(430)를 통해 패킷을 송신하고 패킷을 수신하는 수신측에서는 해당 패킷의 소스 IP가 가상머신인 컴퓨팅 노드로 인지하고 회신을 컴퓨팅 노드로 전송하게 된다.
도 8은 본 발명의 일 실시예에 따른 분리 메모리 가상머신에서의 네트워크 전송 가속화 방법을 나타낸 흐름도이다.
도 8을 참조하면, 먼저 가상머신 네트워크 커널 모듈에서 사용자 프로그램의 송신 데이터가 전송 버퍼로 복사된다. 이때, 송신 데이터가 원격 메모리에 위치하고 있으며 원격 메모리 접근이 발생하며, 이로 인해 페이지 폴트가 발생하고 제어가 분리메모리 관리자에게 전달된다. 이때, 송신 데이터가 모두 지역 DRAM에 위치해 있을 경우 폴트가 발생하지 않고 기존 가상머신과 동일하게 전송된다. 또한 네트워크 전송 폴트로 인지하지 못하는 경우, 기존 분리메모리 시스템과 같이 동일하게 수행하게 된다.
먼저 네트워크 전송에 대한 원격 메모리 접근 폴트로 확인되면, 가상 네트워크 전송 오프로딩 모듈이 분리메모리 관리자에게 폴트 주소에 관련된 원격 메모리 정보를 질의하게 된다. 사용자가 송신하고자 하는 데이터의 메모리 위치 정보를 확인하여 컴퓨팅 노드 혹은 원격 메모리 노드들 중 가장 많은 데이터가 위치한 노드를 선정한다.
도 9는 분리 메모리 네트워크 서버로 전송되는 정보의 일 예이다.
이때, 도 9에 도시된 바와 같이 데이터 구성정보와 컴퓨팅 노드 IP 주소, 컴퓨팅 노드 상에 위치하는 데이터를 이용하여 분리 메모리 네트워크 서버로의 송신을 요청하게 된다. 이후 분리 메모리 네트워크 서버는 송신요청 정보 상의 데이터 구성 정보를 확인하여, 필요할 경우 다른 원격 메모리 서버들에 필요한 데이터를 요청/수신하고 해당 정보를 모아서 완전한 송신 데이터를 생성한다. 완전한 송신 데이터를 이용하여 컴퓨팅 노드 주소를 이용해서 네트워크 전송을 수행하고, 이는 가상 네트워크 전송 오프로딩 모듈로 알려진다.
도 10은 분리 메모리 관리자의 네트워크 가속화 처리에 따른 가상머신 제어 전달 경로를 나타낸 흐름도이다.
도 10을 참조하면, 분리메모리 관리자는 가상머신 상에서 기존에 중단되었던 사용자 데이터의 복사 작업이 완료되었고, 또한 네트워크 송신이 끝났음을 알리도록 가상머신의 컨텍스트를 수정하는 에뮬레이션 작업을 수행한다. 이후 가상머신 네트워크 커널 모듈로 제어가 전달되며, 사용자 데이터 버퍼 복사와 네트워크 전송이 끝났음을 알고 사용자 프로그램에 네트워크 송신이 끝났음을 알리게 된다. 도 8에서 나타난 바와 같이 가속화 처리가 끝났을 때, 처리 성공에 따라 성공하면 가상머신 네트워크 커널 모듈은 데이터 송신이 성공했음을 확인하게 되고, 가속화 처리가 실패하면 사용자 데이터를 버퍼로 복사하는 작업을 재개함으로써 네트워크 송신을 가속화할 수 있다.
도 11은 본 발명의 일 실시예에 따른 컴퓨팅 노드를 나타낸 블록도이다.
도 11을 참조하면, 본 발명의 일 실시예에 따른 분리 메모리 환경의 컴퓨팅 노드는 송신 버퍼에 송신 데이터를 복사하는 가상머신 네트워크 커널 모듈(310), 상기 송신 데이터 복사 중 페이지 폴트가 발생하면, 분리 메모리 환경 내 송신 데이터가 저장된 위치를 확인하는 분리 메모리 관리 모듈(320), 상기 송신 데이터가 가장 많이 저장된 노드를 송신 노드로 설정하는 오프로딩 모듈(330) 및 상기 송신 노드에 송신 명령을 보내는 통신 모듈(340)을 포함한다.
이때, 상기 송신 명령은 로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함할 수 있다.
이때, 상기 송신 명령은 상기 송신 노드가 상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청하고, 완전한 송신 데이터를 송신하도록 제어할 수 있다.
이때, 상기 송신 명령은 상기 송신 노드가 송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하여 상기 송신 데이터를 송신하도록 제어할 수 있다.
이때, 상기 통신 모듈(340)은 상기 송신 노드가 상기 컴퓨팅 노드에 상응하면 메모리 노드로부터 상기 송신 데이터를 수신하고, 완전한 송신 데이터를 송신할 수 있다.
이때, 상기 송신 데이터의 구성 정보는 상기 송신 데이터가 저장된 노드 정보 및 노드 별 송신 데이터 정보를 포함할 수 있다.
도 12는 본 발명의 일 실시예에 따른 메모리 노드를 나타낸 블록도이다.
도 12를 참조하면, 본 발명의 일 실시예에 따른 분리 메모리 환경의 메모리 노드는 가상머신이 동작하는 컴퓨팅 노드의 송신 명령을 수신하고, 상기 송신 명령에 기반하여 송신 데이터를 송신하는 통신 모듈(420) 및 상기 송신 데이터의 구성 정보를 이용하여 완전한 송신 데이터를 구성하는 분리 메모리 네트워크 서버(410)를 포함하고, 상기 송신 명령은 상기 컴퓨팅 노드의 로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함한다.
이때, 상기 데이터 송신 명령은 상기 메모리 노드에 상기 송신 데이터가 가장 많이 저장된 경우 수신될 수 있다.
이때, 상기 통신 모듈(420)은 상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청할 수 있다.
이때, 본 발명의 일 실시예에 따른 분리 메모리 환경의 메모리 노드는 송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하는 IP 스푸핑 모듈을 더 포함할 수 있다.
도 13은 실시예에 따른 컴퓨터 시스템의 구성을 나타낸 도면이다.
실시예에 따른 메모리 분리 시스템의 네트워크 송신 가속화 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1000)에서 구현될 수 있다.
컴퓨터 시스템(1000)은 버스(1020)를 통하여 서로 통신하는 하나 이상의 프로세서(1010), 메모리(1030), 사용자 인터페이스 입력 장치(1040), 사용자 인터페이스 출력 장치(1050) 및 스토리지(1060)를 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은 네트워크(1080)에 연결되는 네트워크 인터페이스(1070)를 더 포함할 수 있다. 프로세서(1010)는 중앙 처리 장치 또는 메모리(1030)나 스토리지(1060)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1030) 및 스토리지(1060)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1030)는 ROM(1031)이나 RAM(1032)을 포함할 수 있다.
본 발명에서 설명하는 특정 실행들은 실시예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.
310: 가상머신 네트워크 커널 모듈
320: 메모리 관리 모듈
330: 오프로딩 모듈
340: 통신 모듈
410: 분리 메모리 네트워크 서버
420: 통신 모듈
1000: 컴퓨터 시스템 1010: 프로세서
1020: 버스 1030: 메모리
1031: 롬 1032: 램
1040: 사용자 인터페이스 입력 장치
1050: 사용자 인터페이스 출력 장치
1060: 스토리지 1070: 네트워크 인터페이스
1080: 네트워크

Claims (16)

  1. 가상머신이 동작하는 컴퓨팅 노드 및 메모리 노드를 포함하는 분리 메모리 환경의 네트워크 송신 가속화 방법에 있어서,
    상기 컴퓨팅 노드의 송신 버퍼에 송신 데이터를 복사하는 단계;
    상기 송신 데이터 복사 중 페이지 폴트가 발생하면, 상기 송신 데이터의 저장 위치를 확인하는 단계;
    상기 송신 데이터가 가장 많이 저장된 노드를 송신 노드로 설정하는 단계; 및
    상기 송신 노드에 송신 명령을 보내는 단계
    를 포함하는 것을 특징으로 하는 네트워크 송신 가속화 방법.
  2. 청구항 1에 있어서,
    상기 송신 명령은
    상기 컴퓨팅 노드의 로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함하는 것을 특징으로 하는 네트워크 송신 가속화 방법.
  3. 청구항 2에 있어서,
    상기 송신 노드는
    상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청하고, 완전한 송신 데이터를 송신하는 것을 특징으로 하는 네트워크 송신 가속화 방법.
  4. 청구항 2에 있어서,
    상기 송신 노드는
    송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하여 상기 송신 데이터를 송신하는 것을 특징으로 하는 네트워크 송신 가속화 방법.
  5. 청구항 1에 있어서,
    상기 송신 노드가 상기 컴퓨팅 노드에 상응하면 상기 메모리 노드로부터 상기 송신 데이터를 수신하고, 완전한 송신 데이터를 송신하는 것을 특징으로 하는 네트워크 송신 가속화 방법.
  6. 청구항 2에 있어서,
    상기 송신 데이터의 구성 정보는
    상기 송신 데이터가 저장된 노드 정보 및 노드 별 송신 데이터 정보를 포함하는 것을 특징으로 하는 네트워크 송신 가속화 방법.
  7. 송신 버퍼에 송신 데이터를 복사하는 가상머신 네트워크 커널 모듈;
    상기 송신 데이터 복사 중 페이지 폴트가 발생하면, 분리 메모리 환경 내에서 송신 데이터가 저장된 위치를 확인하는 분리 메모리 관리 모듈;
    컴퓨팅 노드 및 메모리 노드 중 상기 송신 데이터가 가장 많이 저장된 노드를 송신 노드로 설정하는 오프로딩 모듈; 및
    상기 송신 노드에 송신 명령을 보내는 통신 모듈
    을 포함하는 것을 특징으로 하는 분리 메모리 환경의 컴퓨팅 노드.
  8. 청구항 7에 있어서,
    상기 송신 명령은
    로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함하는 것을 특징으로 하는 분리 메모리 환경의 컴퓨팅 노드.
  9. 청구항 8에 있어서,
    상기 송신 명령은
    상기 송신 노드가 상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청하고, 완전한 송신 데이터를 송신하도록 제어하는 것을 특징으로 하는 분리 메모리 환경의 컴퓨팅 노드.
  10. 청구항 8에 있어서,
    상기 송신 명령은
    상기 송신 노드가 송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하여 상기 송신 데이터를 송신하도록 제어하는 것을 특징으로 하는 분리 메모리 환경의 컴퓨팅 노드.
  11. 청구항 7에 있어서,
    상기 통신 모듈은
    상기 송신 노드가 상기 컴퓨팅 노드에 상응하면 상기 메모리 노드로부터 상기 송신 데이터를 수신하고, 완전한 송신 데이터를 송신하는 것을 특징으로 하는 분리 메모리 환경의 컴퓨팅 노드.
  12. 청구항 8에 있어서,
    상기 송신 데이터의 구성 정보는
    상기 송신 데이터가 저장된 노드 정보 및 노드 별 송신 데이터 정보를 포함하는 것을 특징으로 하는 분리 메모리 환경의 컴퓨팅 노드.
  13. 가상머신이 동작하는 컴퓨팅 노드의 송신 명령을 수신하고, 상기 송신 명령에 기반하여 송신 데이터를 송신하는 통신 모듈; 및
    상기 송신 데이터의 구성 정보를 이용하여 완전한 송신 데이터를 구성하는 분리 메모리 네트워크 서버
    를 포함하고,
    상기 송신 명령은
    상기 컴퓨팅 노드의 로컬 메모리에 저장된 송신 데이터, 상기 송신 데이터의 구성 정보 및 상기 컴퓨팅 노드의 IP 주소 중 적어도 어느 하나를 포함하는 것을 특징으로 하는 분리 메모리 환경의 메모리 노드.
  14. 청구항 13에 있어서,
    상기 데이터 송신 명령은
    상기 메모리 노드에 상기 송신 데이터가 가장 많이 저장된 경우 수신되는 것을 특징으로 하는 분리 메모리 환경의 메모리 노드.
  15. 청구항 13에 있어서,
    상기 통신 모듈은
    상기 송신 데이터의 구성 정보를 이용하여 상기 송신 데이터가 저장된 다른 노드에 상기 송신 데이터를 요청하는 것을 특징으로 하는 분리 메모리 환경의 메모리 노드.
  16. 청구항 13에 있어서,
    송신자 IP 주소를 상기 컴퓨팅 노드의 IP 주소로 변경하는 IP 스푸핑 모듈을 더 포함하는 것을 특징으로 하는 분리 메모리 환경의 메모리 노드.
KR1020220156303A 2021-12-06 2022-11-21 분리 메모리 환경의 네트워크 송신 가속화 방법 및 장치 KR20230085075A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW111146823A TW202340950A (zh) 2021-12-06 2022-12-06 用於在記憶體分離環境中加速網路傳輸的方法及設備
US18/076,051 US11849005B2 (en) 2021-12-06 2022-12-06 Method and apparatus for accelerating network transmission in memory-disaggregated environment

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210173192 2021-12-06
KR1020210173192 2021-12-06

Publications (1)

Publication Number Publication Date
KR20230085075A true KR20230085075A (ko) 2023-06-13

Family

ID=86763001

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220156303A KR20230085075A (ko) 2021-12-06 2022-11-21 분리 메모리 환경의 네트워크 송신 가속화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20230085075A (ko)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
국내 공개특허공보 제10-2017-0007103호(발명의 명칭: RDMA NVMe 디바이스의 구현 방법)

Similar Documents

Publication Publication Date Title
US11934341B2 (en) Virtual RDMA switching for containerized
CN111277616B (zh) 一种基于rdma的数据传输方法和分布式共享内存系统
US20160294983A1 (en) Memory sharing using rdma
KR100758272B1 (ko) 데이터 무 복사 파일 이동 방법
CN107547623B (zh) 应用数据传输方法、装置、应用服务器和应用代理服务器
CN108933829A (zh) 一种负载均衡方法及装置
CN111343262B (zh) 分布式集群登录方法、装置、设备和存储介质
US10700925B2 (en) Dedicated endpoints for network-accessible services
US8832215B2 (en) Load-balancing in replication engine of directory server
US8458702B1 (en) Method for implementing user space up-calls on java virtual machine before/after garbage collection
WO2016019566A1 (zh) 内存管理方法、装置和系统、以及片上网络
CN112346871A (zh) 一种请求处理方法及微服务系统
US20210373928A1 (en) Method, system and apparatus for sharing of fpga board by multiple virtual machines
JP2017537404A (ja) メモリアクセス方法、スイッチ、およびマルチプロセッサシステム
US20230281141A1 (en) Method for order-preserving execution of write request and network device
CN111338806A (zh) 一种业务控制方法及装置
US20240205170A1 (en) Communication method based on user-mode protocol stack, and corresponding apparatus
WO2020253407A1 (zh) 一种执行写操作、读操作的方法及装置
CN113360077B (zh) 数据存储方法、计算节点及存储系统
CA3129982A1 (en) Method and system for accessing distributed block storage system in kernel mode
WO2014101502A1 (zh) 基于内存芯片互连的内存访问处理方法、内存芯片及系统
CN109783002B (zh) 数据读写方法、管理设备、客户端和存储系统
CN117370046A (zh) 进程间通信方法、系统、设备和存储介质
CN110471627B (zh) 一种共享存储的方法、系统及装置
US11675510B2 (en) Systems and methods for scalable shared memory among networked devices comprising IP addressable memory blocks