KR20170116941A - 현재 확인 메시지에서 다음 rdma 동작을 위한 타겟 버퍼 어드레스의 피기배킹 시스템 및 방법 - Google Patents

현재 확인 메시지에서 다음 rdma 동작을 위한 타겟 버퍼 어드레스의 피기배킹 시스템 및 방법 Download PDF

Info

Publication number
KR20170116941A
KR20170116941A KR1020170026422A KR20170026422A KR20170116941A KR 20170116941 A KR20170116941 A KR 20170116941A KR 1020170026422 A KR1020170026422 A KR 1020170026422A KR 20170026422 A KR20170026422 A KR 20170026422A KR 20170116941 A KR20170116941 A KR 20170116941A
Authority
KR
South Korea
Prior art keywords
rdma
nodes
memory blocks
data storage
storage system
Prior art date
Application number
KR1020170026422A
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 삼성전자주식회사
Publication of KR20170116941A publication Critical patent/KR20170116941A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1664Details of the supervisory signal the supervisory signal being transmitted together with payload signals; piggybacking
    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5061Pools of addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Multi Processors (AREA)

Abstract

분산 데이터 스토어에 노드로 구성된 데이터 스토리지 시스템이 개시된다. 데이터 스토리지 시스템은 RDMA 인에이블 네트워크 어댑터, 버퍼 관리 유닛, 및 RDMA 응용 프로그램 인터페이스를 포함한다. 네트워크 어댑터는 분산 데이터 스토어에서 하나 이상의 다른 노드와 통신을 수립하도록 구성된다. 버퍼 관리 유닛은 하나 이상의 다른 노드와 함께 RDMA 버퍼들로서 다수의 메모리 블록들을 사전 등록한다. RDMA 응용 프로그램 인터페이스는 다른 노드들 중 하나에 의해 개시된 RDMA 동작을 처리하고, 다른 노드들 중 하나의 노드에 의해 개시된 RDMA 동작의 완료에 응답하여 RDMA 인에이블 네트워크 어댑터를 통해 다른 노드들 중 하나에 확인 메시지를 전송한다. 여기서, 확인 메시지는 후속 RDMA 동작에 사용될 수 있는 RDMA 버퍼의 개시 어드레스에 대응하는 타겟 어드레스를 포함한다.

Description

현재 확인 메시지에서 다음 RDMA 동작을 위한 타겟 버퍼 어드레스의 피기배킹 시스템 및 방법{SYSTEM AND METHOD OF PIGGYBACKING TARGET BUFFER ADDRESS FOR NEXT RDMA OPERATION IN CURRENT ACKNOWLEDGEMENT MESSAGE}
본 발명은 데이터 저장 시스템들에 관한 것이다. 구체적으로, 현재 확인 메시지에서 다음 RDMA(Remote direct memory access) 동작을 위한 타겟 버퍼 어드레스를 피기배킹(piggybacking)하는 시스템 및 방법에 관한 것이다.
일반적으로, 분산 데이터 스토어(store)는 데이터가 다수의 데이터 저장 시스템들에 저장되는 컴퓨터 네트워크이다. 각 데이터 저장 시스템은 노드로 지칭될 수 있다. 예를 들어, 데이터 볼륨은 각 노드에서 여러 솔리드 스테이트 드라이브(SSDs)에 걸쳐 스트리핑(striped)될 수 있고, 여러 노드들에 걸쳐 스트리핑될 수 있으며, 한 노드의 읽기 및 쓰기 동작들이 다른 노드로 리-디렉션될 수 있다. 노드들이 쉽게 추가, 제거 또는 교체될 수 있기 때문에, 분산 데이터 스토어들은 확장성이 뛰어나고 유지 관리 비용이 저렴하다. 따라서, 분산 데이터 스토어들은 데이터 센터들에 자주 사용된다.
비록 분산 데이터 스토어들은 일반적인 이더넷 네트워크들 및 일반적인 클라이언트-서버 아키텍쳐들을 사용하여 구현되지만, 이런 분산 데이터 스토어들은 충분한 서버 CPU 코어들이 최대 로드를 만족시키도록 제공되지 않는다면, 자주 상당한 대기 시간의 문제를 겪게 된다. 이것은 서버 CPU들이 증가된 로드 수요들을 만족시키기 위하여 시간의 경과에 따라 계속적으로 업그레이드되어야 하거나, 또는 로드가 충돌하는 동안 추가적인 서버 CPU 자원들이 회전되도록 서버 클라이언트들이 기다려야 할 필요가 있다는 것을 의미한다.
원격 직접 메모리 접근(Remote direct memory access: RDMA)는 일반적인 이더넷 네트워크들 및 일반적인 클라이언트-서버 아키텍쳐들의 높은 대기 시간 문제에 대한 해결책을 제공한다. RDMA는, 어떤 하나의 컴퓨터의 OS를 수반하지 않고서도 한 컴퓨터의 메모리로부터 다른 컴퓨터의 메모리로 직접 메모리 접근을 허용한다. 이것은 고속 처리량, 낮은 대기 시간 네트워킹을 허용하고, 이는 대규모의 병렬 컴퓨터 클러스터들에서 특히 유용하다. 이러한 이점들에서 볼 때, RDMA-인에이블 분산 데이터 스토어들의 적용이 점차 증가되고 있다.
일반적으로, 로컬 노드에서 실행되는 응용 프로그램(application)이 RDMA 읽기 또는 쓰기 동작을 원격 노드에서 수행할 때, 그 응용 프로그램은 원격 노드에서의 RDMA 버퍼의 목표 어드레스를 명시해야만 한다. RDMA 버퍼는 원격 RDMA 동작 시에 로컬 노드가 읽거나 또는 쓰는 곳이다. 그러나, 각 노드에서 실행되는 각 응용 프로그램은 그 자신의 버퍼 메모리 공간을 관리하고, 자신의 버퍼 메모리 공간의 어느 부분이 RDMA 버퍼로써 사용 가능한 부분인지를 결정하기 때문에, RDMA 버퍼 등록 과정이 매 원격 RDMA 동작 전에 로컬 노드와 원격 노드 사이에서 수행된다. RDMA 버퍼 등록 과정 동안, 원격 노드에서 실행되는 응용 프로그램은 RDMA 버퍼에 대한 메모리 공간을 할당하고, RDMA 버퍼의 목표 어드레스는 로컬 노드와 공유된다. 원격 노드는 노드 간 통신을 통해, 예를 들어 RDMA를 통해 작은 메시지들을 교환함으로써, 로컬 노드와 목표 어드레스를 공유할 수 있다.
이것은 원격 노드 통신을 위해 RDMA를 사용하는 일반적인 응용 프로그램들이 RDMA 버퍼 등록 과정의 결과로써 대기 시간 문제들에 봉착할 수 있다는 것을 의미한다. 그 결과, 이러한 대기 시간 문제들은 분산 데이터 스토어의 I/O 성능에 나쁜 영향을 미칠 수 있다.
본 발명의 목적은 분산 데이터 스토어에서 노드로 구성되는 데이터 저장 시스템을 제공하는 것이다.
본 발명의 목적은 분산 데이터 스토어에서 노드로 구성되는 데이터 저장 시스템의 구동 방법을 제공하는 것이다.
본 발명의 실시예에 따르면 시스템은 RDMA 인에이블 네트워크 어댑터, 버퍼 관리 유닛, 및 RDMA 응용 프로그램 인터페이스를 포함한다. RDMA 인에이블 네트워크 어댑터는 분산 데이터 스토어들에서 하나 이상의 다른 노드들과 통신을 수립하도록 구성된다. 버퍼 관리 유닛은 하나 이상의 다른 노드와 함께 RDMA 버퍼들로서 다수의 메모리 블록들을 사전 등록하도록 구성된다. RDMA 응용 프로그램 인터페이스는: 상기 다른 노드들 중 하나에 의해 개시된 RDMA 동작을 처리하고, 상기 다른 노드들 중 상기 하나의 노드에 의해 개시된 RDMA 동작의 완료에 응답하여 상기 RDMA 인에이블 네트워크 어댑터를 통해 상기 다른 노드들 중 상기 하나에 확인 메시지를 전송하는 RDMA 응용 프로그램 인터페이스를 포함하고, 상기 확인 메시지는 후속 RDMA 동작에 사용될 수 있는 RDMA 버퍼의 개시 어드레스에 대응하는 타겟 어드레스를 포함한다.
본 발명의 실시예에 따르면 상기 방법은: 상기 분산 데이터 스토어들에서 하나 이상의 다른 노드들과 통신을 확립하기 위하여 데이터 스토리지 시스템의 RDMA 인에이블 네트워크 어댑터를 구동하는 단계, 하나 이상의 다른 노드들과 함께 RDMA 버퍼들로서 다수의 메모리 블록들을 사전 등록하는 단계, 상기 다른 노드들 중 하나에 의해 개시된 RDMA 동작을 처리하는 단계, 및 상기 다른 노드들 중 상기 하나의 노드에 의해 개시된 상기 RDMA 동작의 완료에 응답하여 상기 RDMA 인에이블 네트워크 어댑터를 통해 상기 다른 노드들 중 상기 하나에 확인 메시지를 전송하는 단계를 포함하고, 여기서 상기 확인 메시지는 후속 RDMA 동작에 사용될 수 있는 RDMA 버퍼의 개시 어드레스에 대응하는 타겟 어드레스를 포함한다.
본 발명에 따르면, RDMA 동작에 대해 RDMA 버퍼 등록 프로세스를 수행할 필요가 없으며, 그로 인해 노드 간 통신의 대기 시간을 감소시킬 수 있다.
본 발명의 부분으로써 포함된 첨부 도면들은 위에 제공된 일반적인 설명과 여기에 기술된 원칙들을 설명 및 개시하기 위하여 아래에 제공된 다양한 실시예들의 상세한 설명과 함께 다양한 실시예들을 서술한다.
도 1은 본 시스템 및 방법의 일 실시예에 따른 분산 데이터 스토어의 노드들 사이에 노드 간 통신을 설명하기 위한 블록도이다.
도 2는 본 시스템 및 방법의 일 실시예에 따른 분산 데이터 스토어의 일 노드로 구성된 데이터 스토리지 시스템의 하이 레벨 동작들을 나타낸 흐름도이다.
도 3은 본 시스템 및 방법의 실시예들을 구현하기 위해 사용되는 일 실시예의 컴퓨터 아키텍처, 예를 들어, 데이터 스토리지 시스템을 나타낸 예시도이다.
도면에서의 각 도면들은 반드시 스케일대로 그려지는 것은 아니며, 유사한 구조 또는 기능의 구성 요소는 도면 전체에 걸쳐 예시적인 목적을 위해 일반적으로 유사한 참조 번호로 표시된다. 도면들은 단지 본 명세서에 설명된 다양한 실시예의 설명을 용이하게 하기 위한 것이며, 본 명세서에 개시된 모든 측면을 기술하지 않으며, 특허청구범위의 권리범위를 제한하지 않는다.
여기에 개시된 각각의 특징 및 개시는 본 시스템 및 방법을 제공하기 위해 개별적으로 이용되거나 또는 다른 특징 및 개시와 함께 이용될 수도 있다. 이들 특징 및 개시들 중 다수를 개별적으로 및 조합하여 사용하는 대표적인 예가 첨부된 도면을 참조하여 설명된다. 본 명세서의 상세한 설명은 본 발명의 측면들을 실시하기 위한 상세한 내용을 당업자에게 예시하지만, 특허청구범위의 권리범위를 제한하지는 않는다. 따라서, 상세한 설명에 개시된 특징들의 조합은 본 발명의 개시한 대표적인 예이며, 가장 넓은 의미에서 그 개시를 실시하는 데 필수적이지 않을 수도 있다.
"데이터 스토리지(저장) 시스템" 및 "노드"의 용어는 본 명세서에서 상호 교환적으로 사용된다. 그들을 사용한 문맥에서 명백하게 반대로 나타내지 않는 한, 이들 용어는 당업자가 이해하는 것과 동일한 의미를 갖는다.
전술한 바와 같이, 원격 노드 통신을 위해 RDMA를 사용하는 일반적인 응용 프로그램들은 RDMA 버퍼 등록 프로세스가 모든 원격 RDMA 동작에 대해 수행되기 때문에 대기 시간(latency) 문제들을 겪을 수 있다. 따라서 이러한 대기 시간 문제들은 분산 데이터 스토어의 I/O 성능에 나쁜 영향을 줄 수 있다.
본 시스템 및 방법의 실시예들은 각 노드가 후속 원격 RDMA 동작들에서 사용할 목적으로 의도된 RDMA 버퍼들을 사전 등록하게 함으로써 이러한 대기 시간 문제들을 극복한다. 또한, 제2 노드 상에서 제1 노드에 의해 수행되는 원격 RDMA 동작이 완료된 후에, 제2 노드는, 원격 RDMA 동작의 완료를 나타내기 위해 제2 노드가 제1 노드로 전송하는 확인 응답 메시지(ACK)에서 다음에 이용 가능한 RDMA 버퍼의 목표 어드레스를 피기백(piggyback)하거나 포함한다. 확인 응답 메시지에서 다음에 이용 가능한 RDMA 버퍼의 목표 어드레스를 피기백함으로써, 이는 적어도 제2 노드가 목표 버퍼 어드레스를 포함하는 여분의 RDMA 소형 메시지를 제1 노드에 송신할 필요성을 제거한다. 따라서, 일반적인 응용 프로그램들의 접근법과는 달리, 본 시스템 및 방법의 실시예들은 모든 RDMA 동작에 대해 RDMA 버퍼 등록 프로세스를 수행할 필요가 없으며, 그로 인해 노드 간 통신의 대기 시간을 감소시킬 수 있다.
도 1은 본 발명의 시스템 및 방법의 일 실시예에 따른 분산 데이터 스토어의 노드들 사이에 노드 간 통신을 설명하기 위한 블록도이다. 도 1은 분산 데이터 스토어의 노드들로 구성된 3개의 데이터 스토리지 시스템들(101)(각각 부호 101a, 101b, 101c로 표기됨)을 나타내지만, 본 발명의 시스템 및 방법은 여기에 한정되지 않으며, 다른 개수의 노드들을 갖는 분산 데이터 스토어에 적용될 수 있다. 각 데이터 스토리지 시스템은 RDMA-인에이블(활성화) 네트워크 어댑터(102)(각각 102a, 102b, 102c로 표기됨) 및 응용 프로그램(103)(각각 103a, 103b, 103c로 표시됨)을 포함한다.
각 데이터 스토리지 시스템의 RDMA-인에이블 네트워크 어댑터(102)는 분산 데이터 스토어에서 다른 데이터 스토리지 시스템들의 네트워크 어댑터들과 통신하도록 구성된다. 네트워크 어댑터들(102)은 RDMA-인에이블되지만, 2개의 데이터 스토리지 시스템들 간의 통신 모드는 단지 RDMA 통신으로 제한되지 않는다. 예를 들어, 데이터 스토리지 시스템(101a)은 또한 전송 컨트롤 프로토콜(Transmission Control Protocol(TCP)/인터넷 프로토콜(Internet Protocol(IP))을 사용하여 다른 데이터 스토리지 시스템들(101b, 101c) 각각과 통신할 수 있다.
각 데이터 스토리지 시스템에서 실행되는 응용 프로그램(103)은 RDMA 응용 프로그램 인터페이스(104)(각각 104a, 104b, 104c로 표기됨) 및 버퍼 관리 유닛(105)(각각 105a, 105b, 105c로 표기됨)을 포함한다. RDMA 응용 프로그램 인터페이스(104)는 네트워크 어댑터(102)의 RDMA 기능들을 활용하기 위하여 네트워크 어댑터(102)와 통신하도록 응용 프로그램(103)을 활성화시키고 그리고 원격 노드에 의해 개시된 RDMA 동작들을 처리한다. 버퍼 관리 유닛(105)은 응용 프로그램(102)의 버퍼 메모리 공간을 RDMA 버퍼들로 사용하기 위하여 관리한다.
도 1에 도시된 경우에서, 데이터 스토리지 시스템(101a)은 클라이언트 노드들로 동작하는 두 개의 데이터 스토리지 시스템들(101b, 101c)의 서버 노드로서 동작한다. 따라서, 데이터 스토리지 시스템(101a)은 데이터 스토리지 시스템들(101b, 101c)로부터의 RDMA 트래픽을 수신한다.
데이터 스토리지 시스템들(101)의 클라이언트-서버 역할들이 결정되는 노드들의 클러스터 초기화 시점에, 응용 프로그램(103a)은, 데이터 스토리지 시스템(101a)이 두 개의 가능한 클라이언트들을 갖고, 즉, 데이터 스토리지 시스템들(101b, 101c)이 데이터 스토리지 시스템(101a)에 RDMA 접근 권한을 갖고, 데이터 스토리지 시스템(101a)에서 읽기 동작 또는 쓰기 동작과 같은 RDMA 동작들을 개시 및 수행할 수 있는지를 검출한다. 검출에 응답하여 버퍼 관리 유닛(105a)은 가능한 클라이언트들, 즉 데이터 스토리지 시스템들(101b, 101c) 각각에 대한 RDMA 버퍼들로서 다수의 메모리 블록들을 사전 등록한다.
응용 프로그램(103a)은 후속의 RDMA 동작들에서 RDMA 버퍼들로써, 데이터 스토리지 시스템(101b)에 의해 사용될 n개의 메모리 블록들(b)의 풀(pool)(이하, "버퍼 풀(b)"라 함)과 데이터 스토리지 시스템(101c)에 의해 사용될 n개의 메모리 블록들(c)의 풀(이하, "버퍼 풀(c)"라 함)을 자신의 버퍼 메모리 공간에 국부적으로 할당함으로써, RDMA 버퍼들을 사전 등록한다. 여기서, n은 자연수이다. RDMA 버퍼들은 읽기 및/또는 쓰기 버퍼들일 수 있다. 그 다음, 응용 프로그램(103a)은 자신의 가능한 클라이언트들 각각에 각각의 버퍼 풀들의 개시 어드레스를 포함하는 정보를 전송한다. 즉, RDMA 응용 프로그램 인터페이스(104a) 및 네트워크 어댑터(102a)의 사용을 통해, 응용 프로그램(103a)은 개시 어드레스(예를 들어, 버퍼 풀(b)에서 블록 1 어드레스)를 포함하는 버퍼 풀(b)에 대한 정보를 데이터 스토리지 시스템(101b)에 전송하고, 개시 어드레스(예를 들어, 버퍼 풀(c)의 블록 1 어드레스)를 포함하는 버퍼 풀(c)에 대한 정보를 데이터 스토리지 시스템(101c)으로 전송한다. 이러한 방법으로, 하나 또는 그 이상의 데이터 스토리지 시스템들(101b, 101c)이 데이터 스토리지 시스템(101a)에서 후속적인 RDMA 동작을 시작 및 수행하면, 대응하는 하나 또는 그 이상의 데이터 스토리지 시스템들(101b, 101c)은 어느 RDMA 버퍼들을 사용할 것인지 이미 알게 된다.
데이터 스토리지 시스템(101b)이 데이터 스토리지 시스템(101a)상에서 RDMA 동작을 수행한 후에, 데이터 스토리지 시스템(101a)은 데이터 스토리지 시스템(101b)에 의해 시작된 RDMA 동작의 완료에 응답하여, 자신의 네트워크 어댑터(102a)를 통해 확인 메시지(ACK)를 데이터 스토리지 시스템(101b)으로 전송하고, 그리고 확인 메시지(ACK)는 다음 RDMA 동작에서 사용될 수 있는 버퍼 풀(b)의 RDMA 버퍼의 개시 어드레스에 대응하는 목표 어드레스를 포함한다. 유사하게, 데이터 스토리지 시스템(101c)이 데이터 스토리지 시스템(101a)상에서 RDMA 동작을 수행한 후에, 데이터 스토리지 시스템(101a)은 데이터 스토리지 시스템(101c)에 의해 시작된 RDMA 동작의 완료에 응답하여, 자신의 네트워크 어댑터(102a)를 통해 확인 메시지(ACK)를 데이터 스토리지 시스템(101c)로 전송하고, 그리고 확인 메시지(ACK)는 다음 RDMA 동작에서 사용될 수 있는 버퍼 풀(c)의 RDMA 버퍼의 개시 어드레스에 대응하는 목표 어드레스를 포함한다
다시 말해, 후속하는 RDMA 동작에서 사용할 수 있는 다음 RDMA 버퍼의 목표 어드레스는 각 RDMA 동작의 완료 후에 전송되는 확인 메시지 상에 피기백(piggyback)된다. 이 방식으로 목표 어드레스를 피기백하는 것은 데이터 스토리지 시스템(101a)이 데이터 스토리지 시스템들(101b, 101c)에 목표 버퍼 어드레스들을 포함하는 여분의 RDMA 소형 메시지들을 송부할 필요를 적어도 제거할 수 있다. 따라서, 일반적인 응용 프로그램들의 접근과는 달리, 본 시스템 및 방법의 실시예들은 각 RDMA 동작에 대한 RDMA 버퍼 등록 처리를 수행할 필요가 없고, 그 결과 노드 간 통신의 대기 시간을 감소시킬 수 있다.
도 2는 본 시스템 및 방법의 일 실시예에 따른 분산 데이터 스토어에서 노드로 구성된 데이터 스토리지 시스템의 하이레벨 동작들에 대한 플로우 챠트를 나타낸다. 데이터 스토리지 시스템은 분산 데이터 스토어에서 하나 이상의 다른 노드들과 통신하기 위하여 데이터 스토리지 시스템의 RDMA 인에이블 네트워크 어댑터를 작동시킨다(201). 데이터 스토리지 시스템은 하나 이상의 다른 노드들과 함께 RDMA 버퍼들로서 다수의 메모리 블록들을 사전 등록한다(202).
데이터 스토리지 시스템은, 데이터 스토리지 시스템에 원격 RDMA 접근권한을 갖는 다른 노드들 각각에 대한 메모리 블록들의 풀(pool)을 할당하는 것, 그리고 데이터 스토리지 시스템에 원격 RDMA 접근 권한을 갖는 다른 노드들 각각에 대한 메모리 블록들의 각 풀의 개시 어드레스를 포함하는 정보를 전송하는 것을 포함하는 다수의 메모리 블록들을 사전 등록한다. 데이터 스토리지 시스템은 분산 데이터 스토어의 클러스터 초기화 동안 다수의 메모리 블록들의 사전 등록을 더 수행한다.
데이터 스토리지 시스템은 다른 노드들 중 하나에 의해서 개시된 RDMA 동작을 처리한다(203). RDMA 동작이 완료된 이후에, 데이터 스토리지 시스템은 다른 노드들 중 하나에 의해 개시된 RDMA 동작의 완료에 응답하여, RDMA 인에이블 네트워크 어댑터를 통해 다른 노드들 중 하나에 확인 메시지를 전송하며, 확인 메시지는 다음 RDMA 동작에 사용 가능한 RDMA 버퍼의 개시 어드레스에 대응하는 타겟 어드레스를 포함한다(204).
더 구체적으로, 데이터 스토리지 시스템은 다음 RDMA 버퍼로서 다른 노드들 중 하나에 대해 할당된 메모리 블록들의 풀에 다음 메모리 블록을 배정할 수 있고, 타겟 어드레스로서 다른 노드들 중 하나에 다음 RDMA 버퍼의 개시 어드레스를 반환할 수 있다. 만약 데이터 스토리지 시스템이 다른 노드들 중 하나에 할당된 메모리 블록들의 제1 풀이 데이터로 가득 찬 것으로 판단하면, 데이터 스토리지 시스템은 다른 노드들 중 하나에 대한 메모리 블록들의 제2 풀을 할당하고, 타겟 어드레스로서 다른 노드들 중 하나에 메모리 블록들의 제2 풀의 개시 어드레스를 반환할 수 있다.
요약하면, 본 시스템 및 방법의 실시예들에 따르면, 각 노드는 사전 등록할 수 있고, 그 결과, RDMA 동작들을 하는 동안 다른 노드들에 의해서 RDMA 버퍼들로써 사용하기 위한 메모리 블록들의 풀들을 국부적으로 예약할 수 있다. 다른 노드 마다 메모리 블록들의 적어도 하나의 풀이 예약될 수 있다. 다른 노드들은, 예를 들어, RDMA 접근 권한을 갖고 인스턴트(instant) 노드상에 RDMA 읽기 또는 쓰기 동작들을 수행할 수 있는 클라이언트 노드들일 수 있다. 인스턴트 노드에 RDMA 접근 권한을 갖는 다른 노드들에게 그들의 사전 등록된 RDMA 버퍼들 각각의 풀은 통지되게 된다. 데이터 스토리지 시스템은, 노드들 각각이 데이터 분산 스토어의 부분으로써 기능하도록 초기화되는 클러스터 초기화 동안에 RDMA 버퍼들의 사전 등록을 더 수행한다.
더욱이, 본 시스템 및 방법의 실시예들에 따르면, 인스턴트 노드상에서 다른 노드들 중 하나에 의해서 개시된 RDMA 동작의 완료 이후에, 인스턴트 노드는 후속 RDMA 동작에 사용하기 위한 다음 RDMA 버퍼의 타겟 어드레스를 포함하는 확인 메시지를 초기 노드에 전송한다. 본 시스템 및 방법의 실시예들의 이점은 분산 데이터 스토어의 개선된 I/O 성능으로 표현되는 감소된 대기 시간이다.
도 3은 본 시스템 및 방법, 예를 들어 데이터 스토리지 시스템의 구현 예에 사용될 수 있는 컴퓨터 아키텍처의 일 예를 나타낸다. 컴퓨터 아키텍쳐의 일 예는 본 발명에 기술된 하나 이상의 구성요소를 실행하기 위해 사용될 수 있으며, 사용자 단말 및/또는 프록시 및 데이터 교환 플랫폼 서버들에 한정되지 않는다. 아키텍쳐(300)의 일 예는 정보 통신을 위한 시스템 버스(320), 및 정보 처리를 위해 버스(320)에 결합된 프로세서(310)를 포함한다. 아키텍쳐(300)는 프로세서(310)에 의해 실행되고, 정보 및 명령을 저장하기 위해 버스(320)에 결합된 랜덤 엑세스 메모리(RAM) 또는 다른 동적 스토리지 장치(325)(여기서 메인 메모리라 함)를 더 포함한다. 또한, 메인 메모리(325)는 프로세서(310)에 의해서 명령을 수행하는 동안 일시적 변수 또는 다른 중간 정보 저장하기 위해 사용될 수 있다. 아키텍처(300)는 프로세서(310)에 의해서 사용된 스태틱 정보 및 명령들을 저장하기 위해 버스(320)에 결합된 읽기 전용 메모리(ROM) 및/또는 다른 스태틱 스토리지 장치(326)를 더 포함할 수 있다.
마그네틱 디스크 또는 광학 디스크와 같은 데이터 스토리지 장치(321) 및 그에 대응하는 드라이브는 정보 및 명령을 저장하기 위해 아키텍처(300)에 결합될 수 있다. 아키텍처(300)는 I/O 인터페이스(330)를 통해 제2 I/O 버스(350)에 결합될 수 있다. 복수의 I/O 디바이스들은 디스플레이 디바이스(343), 입력 장치(예를 들어, 키보드(342), 커서 컨트롤 장치(341, 및/또는 터치 스크린 장치)를 포함하는 I/O 버스(350)에 결합될 수 있다.
통신 장치(340)는 네트워크를 통해 다른 컴퓨터(예를 들어, 서버 또는 클라이언트)의 엑세스를 허용한다. 통신 장치(340)는 하나 이상의 모뎀, 네트워크 인터페이스 카드들, 무선 네트워크 인터페이스 또는 다른 인터페이스 장치(즉, 이더넷, 토큰링(token ring) 또는 다른 타입의 네트워크에 결합을 위해 사용됨)를 포함할 수 있다.
여기에 상세하게 기술된 일부 부분들은 컴퓨터 메모리에서 데이터 비트들의 동작으로 묘사되는 알고리즘 및 기호의 문구로 표현되었다. 이러한 알고리즘적 설명 및 표현은 데이터 처리 기술 분야의 당업자가 그들의 작업 내용을 당업자에게 가장 효과적으로 전달하기 위하여 사용하는 수단이다. 여기서, 알고리즘은 일반적으로 원하는 결과를 유도하는 단계들의 일관성있는 시퀀스로 이해된다. 단계들은 물리적 양을 물리적으로 조작해야 하는 단계들이다. 보통, 반드시 그런 것은 아니지만, 이러한 양은 저장, 전송, 결합, 비교 및 기타 조작이 가능한 전기 또는 자기 신호의 형태를 취한다. 원칙적으로 일반적인 사용의 이유로 이 신호들을 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 참조하는 것이 때로는 편리하다고 판명되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양과 관련되어 있고, 단지 이들 양에 적용되는 편리한 라벨일 뿐이라는 것을 명심해야 한다. 특별히 언급하지 않는 한, 이하의 설명으로부터 명백한 바와 같이, "처리", "컴퓨팅", "계산", "결정" 또는 "표시"등과 같은 용어를 사용하는 논의는 전체적으로 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(전자)량으로 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 내의 물리적 양으로 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 나타낸다.
또한, 본 발명은 여기에서 그 동작을 수행하는 장치에 관련된다. 이 장치는 요구된 목적을 위해 특별히 구성된 것이며, 또한 이것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해서 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이런 컴퓨터 프로그램은 플로피 디스크, 광학 디스크, CD-ROM 및 자기 광학 디스크를 포함하는 임의 유형의 디스크와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 판독 전용 메모리(ROM), 랜덤 엑세스 메모리(RAM), EPROM, EEPROM, 마그네틱 또는 광학 카드, 또는 전자 명령을 저장하기에 적합한 임의의 유형의 매체를 포함할 수 있으며, 각각 컴퓨터 시스템 버스에 결합될 수 있다.
여기에 제시된 알고리즘은 임의의 특정 컴퓨터 또는 다른 장치와 본질적으로 관련이 없다. 다양한 범용 시스템, 메시징 서버 또는 개인용 컴퓨터가 본 명세서의 개시에 따라 프로그램과 함께 사용될 수 있거나, 요구된 방법 단계를 수행하기 위해보다 특수화된 장치를 구성하는 것이 편리할 수도 있다. 다양한 이러한 시스템에 필요한 구조는 위의 설명에 나와 있다. 여기에 설명된 바와 같은 개시의 교시를 구현하기 위해 다양한 프로그래밍 언어가 사용될 수 있다.
또한, 대표예 및 종속항의 다양한 특징들은 본 발명의 추가 실시예를 제공하기 위해 구체적으로 및 명시적으로 열거되지 않은 방식으로 결합 될 수 있다. 도면에 도시된 구성 요소의 치수 및 형상은 본 발명이 실제 어떻게 수행되는지 이해를 돕기 위해 설계된 것이며, 실시예에 도시된 치수 및 형상을 제한하지 않는다.

Claims (10)

  1. 분산 데이터 스토어에 노드로 구성된 데이터 스토리지 시스템에서, 상기 데이터 스토리지 시스템은:
    상기 분산 데이터 스토어에서 하나 이상의 다른 노드들과 통신을 수립하도록 구성된 RDMA 인에이블 네트워크 어댑터;
    상기 하나 이상의 다른 노드들과 함께 RDMA 버퍼들로서 다수의 메모리 블록들을 사전 등록하는 버퍼 관리 유닛; 및
    상기 다른 노드들 중 하나에 의해 개시된 RDMA 동작들을 처리하고, 그리고 상기 다른 노드들 중 상기 하나의 노드에 의해 개시된 RDMA 동작의 완료에 응답하여 상기 RDMA 인에이블 네트워크 어댑터를 통해 상기 다른 노드들 중 상기 하나에 확인 메시지를 전송하는 RDMA 응용 프로그램 인터페이스를 포함하고,
    상기 확인 메시지는 후속 RDMA 동작에 사용될 수 있는 RDMA 버퍼의 개시 어드레스에 대응하는 타겟 어드레스를 포함하는 것을 특징으로 하는 데이터 스토리지 시스템.
  2. 제1항에 있어서, 상기 다수의 메모리 블록들을 사전 등록하는 단계는:
    상기 데이터 스토리지 시스템에 원격 RDMA 접근 권한을 갖는 상기 다른 노드들 중 각 하나에 대한 메모리 블록들의 풀을 할당하는 단계; 및
    상기 데이터 스토리지 시스템에 원격 RDMA 접근 권한을 갖는 상기 다른 노드들 중 각 하나에 메모리 블록들의 각 풀의 개시 어드레스를 포함하는 정보를 전송하는 단계를 포함하는 것을 특징으로 하는 데이터 스토리지 시스템.
  3. 제2항에 있어서, 상기 다수의 메모리 블록들의 사전 등록은 분산 데이터 스토어의 클러스터 초기화 동안 수행되는 것을 특징으로 하는 데이터 스토리지 시스템.
  4. 제2항에 있어서, 상기 버퍼 관리 유닛은:
    다음 RDMA 버퍼로서 메모리 블록들의 풀에 다음 메모리 블록을 배치하고,
    상기 다음 RDMA 버퍼의 개시 어드레스를 반환하며,
    상기 타겟 어드레스는 상기 다음 RDMA 버퍼의 상기 개시 어드레스에 대응하는 것을 특징으로 하는 데이터 스토리지 시스템.
  5. 제2항에 있어서, 상기 버퍼 관리 유닛은:
    상기 다른 노드들 중 상기 하나에 할당된 메모리 블록의 제1 풀에 데이터를 채울 것을 결정하고,
    상기 다른 노드들 중 상기 하나에 메모리 블록의 제2 풀을 할당하도록 구성되며,
    상기 타겟 어드레스는 상기 메모리 블록들의 상기 제2 풀의 개시 어드레스에 대응하는 것을 특징으로 하는 데이터 스토리지 시스템.
  6. 분산 데이터 스토어에서 노드로서 구성된 데이터 스토리지 시스템을 구동하는 방법에서, 상기 방법은:
    상기 분산 데이터 스토어에서 하나 이상의 다른 노드들과 통신을 확립하기 위하여 상기 데이터 스토리지 시스템의 RDMA 인에이블 네트워크 어댑터를 구동하는 단계;
    상기 하나 이상의 다른 노드들과 함께 RDMA 버퍼들로서 다수의 메모리 블록들을 사전 등록하는 단계;
    상기 다른 노드들 중 하나에 의해 개시된 RDMA 동작을 처리하는 단계; 및
    상기 다른 노드들 중 상기 하나에 의해 개시된 상기 RDMA 동작의 완료에 응답하여 상기 RDMA 인에이블 네트워크 어댑터를 통해 상기 다른 노드들 중 상기 하나에 확인 메시지를 전송하는 단계를 포함하고,
    상기 확인 메시지는 후속 RDMA 동작에 사용될 수 있는 RDMA 버퍼의 개시 어드레스에 대응하는 타겟 어드레스를 포함하는 데이터 스토리지 시스템 구동 방법.
  7. 제6항에 있어서, 상기 다수의 메모리 블록들을 사전 등록하는 단계는:
    상기 데이터 스토리지 시스템에 원격 RDMA 접근 권한을 갖는 상기 다른 노드들 중 각 하나에 대한 메모리 블록들의 풀을 할당하는 단계; 및
    상기 데이터 스토리지 시스템에 원격 RDMA 접근 권한을 갖는 상기 다른 노드들 중 각 하나에 메모리 블록들의 각 풀의 개시 어드레스를 포함하는 정보를 전송하는 단계를 포함하는 것을 특징으로 하는 데이터 스토리지 시스템 구동 방법.
  8. 제7항에 있어서, 상기 다수의 메모리 블록들의 사전 등록은 분산 데이터 스토어의 클러스터 초기화 동안 수행되는 것을 특징으로 하는 데이터 스토리지 시스템 구동 방법.
  9. 제7항에 있어서, 다음 RDMA 버퍼로서 메모리 블록의 풀에 다음 메모리 블록을 배치하는 단계;
    상기 다음 RDMA 버퍼의 개시 어드레스를 반환하는 단계를 더 포함하고,
    상기 타겟 어드레스는 상기 후속 RDMA 버퍼의 상기 개시 어드레스에 대응하는 것을 특징으로 하는 데이터 스토리지 시스템 구동 방법.
  10. 제7항에 있어서, 상기 다른 노드들 중 상기 하나에 할당된 메모리 블록의 제1 풀에 데이터를 채울 것을 결정하는 단계; 및
    상기 다른 노드들 중 상기 하나에 메모리 블록의 제2 풀을 할당하는 단계를 더 포함하고,
    상기 타겟 어드레스는 상기 메모리 블록들의 상기 제2 풀의 개시 어드레스에 대응하는 것을 특징으로 하는 데이터 스토리지 시스템 구동 방법.
KR1020170026422A 2016-04-12 2017-02-28 현재 확인 메시지에서 다음 rdma 동작을 위한 타겟 버퍼 어드레스의 피기배킹 시스템 및 방법 KR20170116941A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662321653P 2016-04-12 2016-04-12
US62/321,653 2016-04-12
US15/184,913 US10176144B2 (en) 2016-04-12 2016-06-16 Piggybacking target buffer address for next RDMA operation in current acknowledgement message
US15/184,913 2016-06-16

Publications (1)

Publication Number Publication Date
KR20170116941A true KR20170116941A (ko) 2017-10-20

Family

ID=59998233

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170026422A KR20170116941A (ko) 2016-04-12 2017-02-28 현재 확인 메시지에서 다음 rdma 동작을 위한 타겟 버퍼 어드레스의 피기배킹 시스템 및 방법

Country Status (2)

Country Link
US (1) US10176144B2 (ko)
KR (1) KR20170116941A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11263167B2 (en) * 2020-03-30 2022-03-01 Verizon Patent And Licensing Inc. Methods and systems for transmitting arrays of sequenced data blocks
CN114244857A (zh) * 2021-04-12 2022-03-25 无锡江南计算技术研究所 一种分布式存储系统的内存池管理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278829A (en) * 1991-01-10 1994-01-11 Digital Equipment Corporation Reduced broadcast algorithm for address resolution protocol
US20040252709A1 (en) 2003-06-11 2004-12-16 Fineberg Samuel A. System having a plurality of threads being allocatable to a send or receive queue
US8078743B2 (en) 2006-02-17 2011-12-13 Intel-Ne, Inc. Pipelined processing of RDMA-type network transactions
US20080235409A1 (en) 2006-05-31 2008-09-25 Alexey Vitalievich Ryzhykh Multiple Phase Buffer Enlargement for Rdma Data Transfer Related Applications
US8473966B2 (en) 2006-09-29 2013-06-25 D.E. Shaw Research, Llc Iterative exchange communication
US8909727B2 (en) 2010-11-24 2014-12-09 International Business Machines Corporation RDMA read destination buffers mapped onto a single representation
US9146785B2 (en) 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
US10133596B2 (en) * 2012-03-16 2018-11-20 Oracle International Corporation System and method for supporting application interoperation in a transactional middleware environment
WO2013154540A1 (en) 2012-04-10 2013-10-17 Intel Corporation Continuous information transfer with reduced latency
US10157108B2 (en) 2014-05-27 2018-12-18 International Business Machines Corporation Multi-way, zero-copy, passive transaction log collection in distributed transaction systems

Also Published As

Publication number Publication date
US20170293588A1 (en) 2017-10-12
US10176144B2 (en) 2019-01-08

Similar Documents

Publication Publication Date Title
US10331595B2 (en) Collaborative hardware interaction by multiple entities using a shared queue
US8131814B1 (en) Dynamic pinning remote direct memory access
EP3267322B1 (en) Scalable direct inter-node communication over peripheral component interconnect-express (pcie)
US8249072B2 (en) Scalable interface for connecting multiple computer systems which performs parallel MPI header matching
US20190079895A1 (en) System and method for maximizing bandwidth of pci express peer-to-peer (p2p) connection
CN109729106B (zh) 处理计算任务的方法、系统和计算机程序产品
US8495262B2 (en) Using a table to determine if user buffer is marked copy-on-write
US8862801B2 (en) Handling atomic operations for a non-coherent device
US11201836B2 (en) Method and device for managing stateful application on server
WO2013082809A1 (zh) 协处理加速方法、装置及系统
JP6308508B2 (ja) メムキャッシュドシステムのクライアント装置およびサーバ装置、データをキャッシュするメモリのための方法、コンピュータプログラム、並びにコンピュータ可読ストレージ媒体
US7002956B2 (en) Network addressing method and system for localizing access to network resources in a computer network
WO2022017475A1 (zh) 一种数据访问方法及相关设备
CN112948149A (zh) 一种远端内存共享方法、装置、电子设备及存储介质
CN103858111A (zh) 一种实现聚合虚拟化中内存共享的方法、设备和系统
CN113900965A (zh) 净荷高速缓存
US20240061802A1 (en) Data Transmission Method, Data Processing Method, and Related Product
CN115686875A (zh) 用于在多个进程之间传输数据的方法、设备和程序产品
US7451259B2 (en) Method and apparatus for providing peer-to-peer data transfer within a computing environment
KR20170116941A (ko) 현재 확인 메시지에서 다음 rdma 동작을 위한 타겟 버퍼 어드레스의 피기배킹 시스템 및 방법
CN109783002B (zh) 数据读写方法、管理设备、客户端和存储系统
CN114296916B (zh) 一种提高释放rdma性能的方法、装置及介质
US11847049B2 (en) Processing system that increases the memory capacity of a GPGPU
US11509562B1 (en) System and method for a system level data sharding analysis of information handling systems
US20230205448A1 (en) System and method for a local level data sharding analysis of information handling systems

Legal Events

Date Code Title Description
A201 Request for examination