KR20200117405A - 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법 - Google Patents

분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20200117405A
KR20200117405A KR1020190039459A KR20190039459A KR20200117405A KR 20200117405 A KR20200117405 A KR 20200117405A KR 1020190039459 A KR1020190039459 A KR 1020190039459A KR 20190039459 A KR20190039459 A KR 20190039459A KR 20200117405 A KR20200117405 A KR 20200117405A
Authority
KR
South Korea
Prior art keywords
lock
client
distributed
server
clients
Prior art date
Application number
KR1020190039459A
Other languages
English (en)
Other versions
KR102450133B1 (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 KR1020190039459A priority Critical patent/KR102450133B1/ko
Priority to US16/836,246 priority patent/US11500693B2/en
Publication of KR20200117405A publication Critical patent/KR20200117405A/ko
Application granted granted Critical
Publication of KR102450133B1 publication Critical patent/KR102450133B1/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1002

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명에 따른 서버 및 복수의 클라이언트들을 포함하는 분산 시스템의 동작 방법은, 상기 복수의 클라이언트들 중에서 제 1 클라이언트에서 상기 서버의 제 1 테이블 및 상기 클라이언트의 제 2 테이블을 이용하여 공유 자원에 대한 잠금을 획득하는 단계, 및 상기 제 1 클라이언트에서 상기 제 1 테이블과 상기 제 2 테이블을 이용하여 상기 공유 자원에 대한 잠금을 해제하는 단계를 포함하고, 상기 제 1 테이블은 분산 공유 자원에 대한 정보를 저장하는 잠금(DSLock) 테이블이고, 상기 제 2 테이블은 잠금 요청을 위한 자료구조(DSLock_node) 테이블인 것을 특징으로 한다.

Description

분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법{DISTRIBUTED SYSETM FOR MANAGING DISTRIBUTED LOCK AND OPERATING METHOD THEREOF}
본 발명은 네트워크로 연결된 다수 노드가 공유하는 자원의 일관성을 유지하기 위한 동시성 제어 기법에 관한 것이다.
일반적으로, 운영 체제는 잠금 관리자를 사용하여 자원에 대한 액세스를 구성하고 직렬화한다. 분산 잠금 관리자 (DLM; distributed lock manager)는 클러스터 전체 잠금 데이터베이스의 동일한 사본, 클러스터에 있는 모든 컴퓨터에서 실행된다.  DLM은 공유 자원에 대한 액세스를 동기화하는 수단을 사용함으로써 여러 시스템의 클러스터에서 분산 되는 소프트웨어 응용 프로그램을 제공한다. 최신 네트워크 기술이 발달함에 따라 공유 자원(shared resource), 특히 원격 공유 메모리(remote shared memory) 에 대한 접근 속도(access speed)가 로컬 메모리(local memory)에 대한 접근 속도와 크게 차이 나지 않는다. 이러한 상황에서 공유 자원에 대한 동기화 기법으로 DLM을 사용하는 것은 매우 비효율적이다. 짧은 공유 자원 접근 시간을 고려한 새로운 분산 잠금 기법이 필요하다.
미국공개특허: US 2017-0075856, 공개일: 2017년 3월 16일, 제목: DISTRIBUTED LOCK-FREE RDMA-BASED MEMORY ALLOCATION AND DE-ALLOCATION 미국공개특허: US 2017-0103039, 공개일: 2017년 4월 13일, 제목: DISTRIBUTED SELF-DIRECTED LOCK-FREE RDMA-BASED B-TREE KEY-VALUE MANAGER
Y. Chung et al, "Using RDMA for Lock Management", https://arxiv.org/abs/1507.03274, 공개일: 2015년 7월 20일.
본 발명의 목적은, 고속 RDMA 네트워크를 이용한 분산 시스템에서 공유 자원 접근 시간이 매우 짧은 경우에도 잠금 관련 연산으로 인한 프로세스의 불필요한 지연을 제거함으로써 성능을 향상시키는 데 있다.
본 발명의 실시 예에 따른 서버 및 복수의 클라이언트들을 포함하는 분산 시스템의 동작 방법은, 상기 복수의 클라이언트들 중에서 제 1 클라이언트에서 상기 서버의 제 1 테이블 및 상기 클라이언트의 제 2 테이블을 이용하여 공유 자원에 대한 잠금을 획득하는 단계; 및 상기 제 1 클라이언트에서 상기 제 1 테이블과 상기 제 2 테이블을 이용하여 상기 공유 자원에 대한 잠금을 해제하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 제 1 테이블은 분산 공유 자원에 대한 정보를 저장하는 잠금(DSLock) 테이블이고, 상기 제 2 테이블은 잠금 요청을 위한 자료구조(DSLock_node) 테이블인 것을 특징으로 한다.
실시 예에 있어서, 상기 제 1 및 제 2 테이블들의 각각은, 클라이언트 식별자(node_id) 및 클라이언트의 잠금 테이블에서 엔트리 가상 주소(lock_vaddr)를 포함할 수 있다.
실시 예에 있어서, 상기 제 2 테이블은 상기 공유 자원에 대한 잠금 상태를 나타내는 정보(TRUE 혹은 FALSE)을 포함할 수 있다.
실시 예에 있어서, 상기 제 1 테이블의 엔트리의 개수는 관리 대상 공유 자원의 개수인 것을 특징으로 한다.
실시 예에 있어서, 상기 서버는 상기 제 1 테이블을위한 메모리 공간을 할당하고, 상기 할당된 메모리 공간을 RDMA(remote direct memory access) 영역으로 등록하는 것을 특징으로 한다.
실시 예에 있어서, 상기 할당된 메모리 공간에 상기 RDMA 영역을 등록할 때, 상기 서버는 상기 할당된 메모리 공간에 대응하는 메모리 영역 키를 상기 복수의 클라이언트들에 배포하는 것을 특징으로 한다.
실시 예에 있어서, 상기 잠금을 획득하는 단계는, 잠금을 표현할 상기 제 2 테이블의 엔트리로 상기 제 1 클라이언트에 대응하는 노드를 설정하는 단계; 상기 서버의 주소와 상기 공유 자원의 식별 정보(id)를 이용하여 상기 제 2 테이블에서 상기 식별 정보에 대응하는 엔트리를 읽는 단계; 및 원격 CAS(compare and swap)을 사용하여 상기 제 2 테이블의 엔트리를 잠금 상태를 지시하는 값으로 설정하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 잠금을 해제하는 단계는, 해제할 잠금의 상기 2 테이블의 엔트리를 상기 제 1 클라이언트에 대응하는 노드로 설정하는 단계; 및 원격 CAS(compare and swap)을 사용하여 상기 제 2 테이블의 엔트리를 잠금 해제를 지시하는 값으로 설정하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 분산 시스템은, 공유 자원의 잠금(DSLock) 테이블을 갖는 제 1 테이블을 관리하는 서버; 및 잠금 요청을 위한 자료구조(DSLock_node) 테이블을 갖는 제 2 테이블을 관리하는 복수의 클라이언트들을 포함하고, 상기 복수의 클라이언트들의 각각은, 상기 제 1 및 제 2 테이블들을 이용하여 공유 자원에 대한 잠금 혹은 해제를 수행하고, 잠금 요청된 클라이언트의 프로세스가 비지-웨이트(busy-wait)되는 것을 특징으로 하는 것을 특징으로 한다.
실시 예에 있어서, 상기 복수의 클라이언트들 중에서 제 1 클라이언트는 상기 서버의 상기 제 1 테이블과 나머지 클라이언트들의 제 2 테이블들에 RDMA(remote direct memory access) 접근 가능한 것을 특징으로 한다.
실시 예에 있어서, 상기 복수의 클라이언트들 중에서 제 1 클라이언트가 잠금 경쟁이 없을 상태에서 잠금을 수행할 때, 상기 서버의 상기 제 1 테이블의 엔트리 값은 NULL 값이고, 상기 제 1 클라이언트를 제외한 나머지 클라이언트들의 제 2 테이블들의 엔트리 값들은 NULL 값인 것을 특징으로 한다.
실시 예에 있어서, 상기 복수의 클라이언트들 중에서 제 1 클라이언트가 잠금 상태에서 제 2 클라이언트가 잠금 획득을 시도할 때, 원격 CAS(compare and swam)을 사용하여 상기 제 2 클라이언트의 제 2 테이블의 엔트리 값이 상기 서버의 상기 제 1 테이블에 등록되는 것을 특징으로 한다.
실시 예에 있어서, 상기 복수의 클라이언트들에 잠금 경쟁이 없을 때, 잠금 해제 후에는 상기 서버의 제 1 테이블의 대응하는 엔트리 값이 NULL값이 되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 분산 시스템 및 그것의 동작 방법은, 잠금을 관리하는 서버의 병목 현상을 최소화시키고, 잠금 요청 클라이언트 프로세스를 비지-웨이트(busy-wait) 시킴으로써, 저지연 고대역폭 네트워크 기반 분산 시스템의 성능을 크게 향상시킬 수 있다.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다. 다만, 본 실시예의 기술적 특징이 특정 도면에 한정되는 것은 아니며, 각 도면에서 개시하는 특징들은 서로 조합되어 새로운 실시 예로 구성될 수 있다.
도 1은 일반적인 DLM를 사용한 프로세스의 잠금 획득/해제 과정을 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 분산 시스템(10)을 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 잠금 및 자료구조를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 분산 시스템의 초기 상태를 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 분산 스핀락 클라이언트의 특정 공유 자원에 대한 잠금을 획득하는 과정을 예시적으로 보여주는 흐름도이다.
도 6은 본 발명의 실시 예에 따른 분산 스핀락 클라이언트가 특정 공유 자원에 대한 잠금을 해제하는 과정을 예시적으로 보여주는 흐름도이다.
도 7은 본 발명의 실시 예에 따른 분산 스핀락 클라이언트(210)가 분산 스핀락 서버(100)에 저장된 DSLock 테이블에 RDMA 접근하는 과정을 예시적으로 보여주는 흐름도이다.
도 8은 본 발명의 실시 예에 따른 분산 스핀락 클라이언트(210)가 다른 분산 스핀락 클라이언트(220)에 저장된 DSLock_node 테이블에 RDMA 접근하는 과정을 예시적으로 보여주는 흐름도이다.
도 9는 본 발명의 실시 예에 따른 분산 시스템(10)의 초기 상태에서 특정 DSLock에 잠금 경쟁이 없는 경우 분신 스핀락 클라이언트(node1)가 잠금을 획득한 결과를 예시적으로 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 분산 시스템(10)의 클라이언트들의 잠금 경쟁이 있는 경우 제 1 분산 스핀락 클라이언트(node1)이 잠금을 가지고 있는 상태에서 제 2 분산 스핀락 클라이언트(node2)가 잠금 획득을 시도한 후의 자료구조 상태를 예시적으로 보여주는 도면이다.
도 11은 도 10에 도시된 상태에서 제 1 분산 스핀락 클라이언트(node1)가 잠금을 해제한 후의 자료구조 상태를 예시적으로 보여주는 도면이다
도 12는 도 11에 도시된 상태에서 제 2 분산 스핀락 클라이언트(node2)가 잠금을 해제한 후의 자료구조 상태를 예시적으로 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 분산 시스템(10)의 공유 자원을 관리하는 방법을 예시적으로 보여주는 흐름도이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다.
상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
일반적으로 네트워크로 연결된 다수의 컴퓨팅 노드가 공유하는 자원의 일관성을 유지하기 위하여 분산 잠금 관리자(distributed lock manager, DLM)를 사용한다. DLM은 공유 자원 리스트를 유지하고 자원 할당, 변경을 제어하는 잠금 메커니즘을 제공한다. DLM이 분산자원 자체에 접근을 제어하지는 않는다. DLM에 의해서 보호되는 분산 공유 자원에 접근하는 모든 프로세스(process)는 그 자원에 대한 잠금(lock)을 명시적으로 얻어야 한다. 프로세스는 DLM의 허락을 받은 후 분산 공유 자원에 접근한다.
도 1은 일반적인 DLM를 사용한 프로세스의 잠금 획득/해제 과정을 보여주는 도면이다. 도 1을 참조하면, DLM을 사용하는 경우 프로세스가 분산 공유 자원(30)에 대한 잠금을 획득(acquire)하고 해제(release)한다.
분산 노드의 프로세스는 첫 단계로 접근하고자 하는 공유 자원에 대응하는 잠금 세션을 열어서(open) 잠금 연산을 실행할 수 있는 준비를 한다(잠금 세션 열기). 잠금 세션을 만든 후, 프로세슨 잠금 획득 요청을 DLM에 전송한다. 이후 프로세스는 DLM의 회신이 wakeup 할 때까지 sleep한다(잠금 획득 요청 → sleep → wakeup). 잠금 획득 요청에 대한 성공 회신을 받으면, 프로세스는 잠금에 대응하는 공유 자원에 접근한다(공유 자원 접근). 공유 자원 접근이 끝난 후에, 프로세스는 잠금 해제 요청을 DLM에게 전송한다(잠금 해제 요청). 잠금 획득 요청 단계처럼, 프로세스는 DLM으로부터의 wakeup 회신을 받을 때까지 sleep 한다(sleep → wakeup).
DLM을 사용하는 경우는, 프로세스와 DLM 간의 다단계 통신 프로토콜로 인한 통신 지연 시간이 길고, 잠금 요청 집중으로 인한 DLM 서버의 병목현상이 발생함으로써 분산 시스템의 성능이 저하될 수 있다. 공유 디스크 블록에 접근할 경우, 블록 접근 시간이 매우 길기 때문에 잠금 획득 시간이 길어도 문제가 적지만, RDMA(remote direct memory access)로 원격 공유 메모리를 사용하는 경우는 문제가 크다. 또한, 프로세스는 DLM에 잠금 요청을 전송한 후 sleep을 하는데, 이후 잠금 요청 허락을 받은 후 wakeup 하는데 걸리는 시간이 RDMA 원격 메모리 접근 시간 대비하여 매우 길다.
본 발명의 실시 예에 따른 분산 시스템은, 분산 스핀락(distributed spinlock)을 이용하여 잠금 세션 open/acquire/release 지연 시간, 프로세스 sleep/wakeup 지연 시간을 제거할 수 있다. 분산 스핀락을 사용하여 프로세스는 sleep/wakeup 하지 않고 잠금을 획득할 때까지 비지-웨이트(busy-wait)한다. 잠금을 획득한 프로세스가 잠금을 해제할 경우는, 본 발명의 분산 시스템은 잠금을 요청한 프로세스에게 직접 잠금 권한을 전달함으로써 DLM 서버 병목 현상을 완화시킬 수 있다.
본 발명의 실시 예에 따른 분산 시스템은 단일 시스템에서 사용하는 MCS 알고리즘을 기반으로 RDMA atomic 연산을 이용하여 분산 시스템에 적용할 수 있다.
도 2는 본 발명의 실시 예에 따른 분산 시스템(10)을 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 분산 시스템(10)은 분산 스핀락 서버(100), 복수의 클라이언트들(210, 220, ?? , 2n0, n은 2 이상의 정수)을 포함할 수 있다.
분산 스핀락 서버(100)는 각 분산 공유 자원을 나타내는 잠금(DSLock) 테이블(혹은, 제 1 테이블)을 관리하도록 구현될 수 있다.
분산 스핀락 클라이언트들(210, 220, ?? , 2n0)의 각각은 잠금 요청을 위한 자료구조(DSLock_node) 테이블(혹은, 제 2 테이블)을 관리하도록 구현될 수 있다.
도 3은 본 발명의 실시 예에 따른 잠금 및 자료구조를 예시적으로 보여주는 도면이다. 도 3을 참조하면, node_id는 클라이언트 식별자를 나타내고, lock_vaddr은 클라이언트의 잠금 테이블에서 엔트리 가상 주소를 나타낸다.
실시 예에 있어서, Next 자료구조에서 node_id는 16 bit, lock_vaddr은 48 bit를 사용할 수 있다. 이는 RDMA 네트워크가 64bit 원격 atomic 연산만 지원하기 때문이다. locked는 잠금의 상태를 나타내는데, TRUE이면 다른 클라이언트가 잠금을 획득하여 자신은 잠금 획득을 기다려야 하는 상황을 나타낸 것이고, FALSE이면 클라이언트가 잠금을 획득한 상황을 나타낸 것이다.
실시 예에 있어서, 분산 시스템(10)은 분산 스핀락 서버(100)의 DSLock 테이블과 분산 스핀락 클라이언트의 DSLock_node 테이블을 초기화할 수 있다.
실시 예에 있어서, 분산 스핀락 서버(100)의 DSLock 테이블의 엔트리 수는 관리 대상 공유 자원의 수이다.
실시 예에 있어서, 분산 스핀락 서버(100)는 DSLock 테이블을 위한 메모리 공간을 할당하고, 할당된 메모리 공간을 RDMA(remote direct memory access) 영역으로 등록할 수 있다.
실시 예에 있어서, 분산 스핀락 서버(100)는 RDMA 등록 시 메모리 영역 키(memory region key)와 메모리 주소를 모든 분산 스핀락 클라이언트들(210, 220, ?? , 2n0)에 배포할 수 있다. 이후에, 분산 스핀락 서버(100)는 각 DSLock 테이블의 엔트리의 node_id, lock_vaddr 값을 0으로 초기화할 수 있다.
실시 예에 있어서, 분산 스핀락 클라이언트들(210, 220, ?? , 2n0)의 각각은 DSLock_node 테이블을 위한 메모리 영역을 할당하고, 할당된 메모리 영역을 RDMA 영역으로 등록할 수 있다. 또한 분산 스핀락 클라이언트들(210, 220, ?? , 2n0)의 각각은 RDMA 영역을 등록할 때 메모리 영역 키를 모든 분산 스핀락 클라이언트들 (210, 220, ?? , 2n0)에게 배포할 수 있다. 이후에 분산 스핀락 클라이언트들(210, 220, ?? , 2n0)의 각각은 DSLock_node 테이블 엔트리의 locked를 FALSE로, node_id와 lock_vaddr은 0으로 초기화할 수 있다.
실시 예에 있어서, 분산 스핀락 클라이언트들(210, 220, ?? , 2n0)의 각각은 다른 클라이언트 혹은 서버의 테이블에 RDMA 연산으로 접근하기 위한 신뢰 가능한 데이터그램(reliable datagram)을 지원하는 queue pair 하나를 생성할 수 있다.
도 4는 본 발명의 실시 예에 따른 분산 시스템의 초기 상태를 예시적으로 보여주는 도면이다. 도 4를 참조하면, 분산 스핀락 서버(100)의 각 DSLock 테이블의 엔트리의 node_id, lock_vaddr 값은 0으로 초기화되고, 분산 스핀락 클라이언트들(210, 220, ?? , 2n0)의 각각의 DSLock_node 테이블 엔트리의 locked를 FALSE로, node_id와 lock_vaddr은 0으로 초기화될 수 있다.
도 5는 본 발명의 실시 예에 따른 분산 스핀락 클라이언트의 특정 공유 자원에 대한 잠금을 획득하는 과정을 예시적으로 보여주는 흐름도이다. 도 2 내지 도 5를 참조하면, 분산 스핀락 클라이언트(도 2의 110)의 공유 자원에 대한 잠금을 획득하는 과정은 다음과 같이 진행될 수 있다.
잠금을 표현할 DSLock_node 엔트리로 node가 설정될 수 있다(S110). 서버주소와 공유 자원 id를 이용하여 DSLock 테이블에서 id에 해당하는 엔트리를 읽음으로써 tail이 설정될 수 있다(S120). remote_CAS(resource_id, tail, node)로 success가 설정될 수 있다(S130). success가 TRUE인지 판별될 수 있다(S140). 만일, success가 TRUE가 아니라면, S120 단계가 진행될 수 있다. 반면에, success가 TRUE라면, tail이 0인지가 판별될 수 있다(S150). 만일, tail이 0이라면, 잠금 획득 동작은 종료될 수 있다. 반면에, tail이 0이 아니라면, TRUE로 node.locked가 설정될 수 있다(S160). remote_SET(tail.next.node_id, tail.next.lock_vaddr, {현재 node_id, node의 주소})이 설정될 수 있다(S170). node.locked의 값이 FALSE가 될 때까지 대기(busy-waiting)할 수 있다(S180).
도 6은 본 발명의 실시 예에 따른 분산 스핀락 클라이언트가 특정 공유 자원에 대한 잠금을 해제하는 과정을 예시적으로 보여주는 흐름도이다. 도 2 내지 도 6을 참조하면, 분산 스핀락 클라이언트가 특정 공유 자원에 대한 잠금을 해제하는 과정은 다음과 같이 진행될 수 있다.
해제할 잠금의 DSLock_node 엔트리로 node가 설정될 수 있다(S210). remote_CAS(resource_id, node, {0, {0, 0}})으로 success가 설정될 수 있다(S220). success가 TRUE인 지가 판별될 수 있다(S230). 만일, success가 TRUE이면, 잠금 해제 과정이 종료될 수 있다. 반면에, success가 TRUE가 아니면, node.next가 NULL값이 아닐 때까지 대기(busy-wait)할 수 있다(S240). remote_SET(node.next, FALSE)로 설정될 수 있다(S250).
한편, 분산 스핀락 클라이언트가 분산 스핀락 서버에 저장된 DSLock 테이블과 다른 클라이언트에 저장된 DSLock_node 테이블에 RDMA 접근하기 위한 과정을 아래와 같다. 이 과정들은 잠금 획득, 잠금 해제 절차에서 활용될 수 있다.
도 7은 본 발명의 실시 예에 따른 분산 스핀락 클라이언트(210)가 분산 스핀락 서버(100)에 저장된 DSLock 테이블에 RDMA 접근하는 과정을 예시적으로 보여주는 흐름도이다. 도 2 내지 도 7를 참조하면, 분산 스핀락 클라이언트(210)가 분산 스핀락 서버(100)에 저장된 DSLock 테이블에 RDMA 접근하는 과정은 다음과 같이 진행될 수 있다.
remote_CAS(resource_id, cmp, new)에 따라 DSLock 테이블에 RDMA 접근 동작이 시작될 수 있다. queue pair에 보낼 work request(작업 요청)를 생성함으로써 wr라 설정될 수 있다(S310). wr 연산은 ATOMIC_CMP_SWP으로 설정될 수 있다(S320). wr의 원격지 주소는 서버 DSLock 테이블에서 resource_id가 가리키는 엔트리 주소로 설정될 수 있다(S330). wr의 비교값은 cmp.next 값으로 설정될 수 있다(S340). wr의 할당값은 new.next값으로 설정될 수 있다(S350). wr는 queue pair로 전송될 수 있다(S350). queue pair의 completion queue에서 wr의 상태가 검사될 수 있다(S370).
wr 연산이 성공인지가 판별될 수 있다(S380). 만일 wr 연산이 성공이라면, TRUE가 return될 수 있다(S390). 반면에 wr 연산이 성공이 아니라면, FALSE가 return될 수 있다(S395). 이로써, DSLock 테이블에 RDMA 접근 동작이 종료될 수 있다.
도 8은 본 발명의 실시 예에 따른 분산 스핀락 클라이언트(210)가 다른 분산 스핀락 클라이언트(220)에 저장된 DSLock_node 테이블에 RDMA 접근하는 과정을 예시적으로 보여주는 흐름도이다. 도 2 내지 도 8을 참조하면, 분산 스핀락 클라이언트(210)가 다른 분산 스핀락 클라이언트(220)에 저장된 DSLock_node 테이블에 RDMA 접근하는 과정은 다음과 같이 진행될 수 있다.
remote_SET(node_id, addr, value)에 따라 DSLock_node 테이블에 RDMA 접근 동작이 시작될 수 있다. queue pair에 보낼 work request를 생성함으로써 wr라 설정될 수 있다(S410). wr 연산은 RDMA_WRITE로 설정될 수 있다(S420). wr의 원격지 주소는 node_id, lock_vaddr로 설정될 수 있다(S430). wr의 원격 주소에 기록할 값은 value로 설정될 수 있다(S440). wr는 queue pair로 전송될 수 있다(S450). queue pair의 completion queue에서 wr의 상태가 검사될 수 있다(S460).
wr 연산이 성공인지가 판별될 수 있다(S470). 만일 wr 연산이 성공이라면, TRUE가 return될 수 있다(S480). 반면에 wr 연산이 성공이 아니라면, FALSE가 return될 수 있다(S485). 이로써, DSLock_node 테이블에 RDMA 접근 동작이 종료될 수 있다.
도 9는 본 발명의 실시 예에 따른 분산 시스템(10)의 초기 상태에서 특정 DSLock에 잠금 경쟁이 없는 경우 분신 스핀락 클라이언트(node1)가 잠금을 획득한 결과를 예시적으로 보여주는 도면이다. 도 9의 (a)는 초기 상태를 나타내고, 도 9의 (b)는 분산 스핀락 클라이언트(node1)이 잠금을 획득한 후의 자료구조를 나타낸다.
도 10은 본 발명의 실시 예에 따른 분산 시스템(10)의 클라이언트들의 잠금 경쟁이 있는 경우 제 1 분산 스핀락 클라이언트(node1)이 잠금을 가지고 있는 상태에서 제 2 분산 스핀락 클라이언트(node2)가 잠금 획득을 시도한 후의 자료구조 상태를 예시적으로 보여주는 도면이다.
잠금 획득(acquire) 절차에 따라 제 2 분산 스핀락 클라이언트(node2)는 주소 200번지의 DSLock_node 엔트리를 분산 스핀락 서버(100)의 DSLock 테이블에 등록할 수 있다. 동시에 여러 분산 스핀락 클라이언트가 분산 스핀락 서버(100)의 DSLock 테이블의 동일한 엔트리에 등록을 시도할 수 있다. 따라서, 분산 스핀락 서버(100)의 DSLock 테이블은 원격 CAS(Compare and Swap)을 사용하여 동기화를 해야 한다.
실시 예에 있어서, 분산 스핀락 클라이언트가 이미 알고 있는 DSLock 엔트리 값(tail) 등록을 시도할 때, DSLock의 엔트리 값(tail)과 시도한 값이 같으면(즉, 제 1 분산 스핀락 클라이언트(node1)을 가리키고 있으면), 원격 CAS는 제 2 분산 스핀락 클라이언트(node2)의 잠금 엔트리 주소를 분산 스핀락 서버(100)에 저장할 수 있다.
반면에, DSLock의 엔트리 값(tail)과 시도한 값이 다르면, 원격 CAS는 분산 스핀락 서버(100)의 DSLock의 엔트리 값(tail)을 다시 읽고, 다시 동기화를 실행할 수 있다.
도 11은 도 10에 도시된 상태에서 제 1 분산 스핀락 클라이언트(node1)가 잠금을 해제한 후의 자료구조 상태를 예시적으로 보여주는 도면이다
도 12는 도 11에 도시된 상태에서 제 2 분산 스핀락 클라이언트(node2)가 잠금을 해제한 후의 자료구조 상태를 예시적으로 보여주는 도면이다. 잠금 해제 후에는 대응 잠금에 대한 경쟁이 없으므로, 분산 스핀락 서버(100)의 DSLock 테이블 대응 엔트리는 NULL 값을 가질 수 있다.
최신 네트워크 기술이 발달함에 따라 공유 자원, 특히 원격 공유 메모리에 대한 접근 속도가 로컬 메모리 접근 속도와 크게 차이 나지 않는다. 이러한 상황에서 공유 자원에 대한 동기화 기법으로 DLM을 사용하는 것은 매우 비효율적이다. 짧은 공유 자원 접근 시간을 고려한 새로운 분산 잠금 기법이 필요하다. 본 발명의 실시 예에 따른 분산 시스템은 잠금을 관리하는 서버의 병목 현상을 최소화하고, 잠금 요청 클라이언트 프로세스가 busy-wait 하도록 함으로써, 저지연 고대역폭 네트워크 기반 분산 시스템의 성능을 크게 향상시킬 수 있다.
도 13은 본 발명의 실시 예에 따른 분산 시스템(10)의 공유 자원을 관리하는 방법을 예시적으로 보여주는 흐름도이다. 도 2 내지 도 13을 참조하면, 분산 시스템(10)의 공유 자원을 관리하는 동작은 다음과 같이 진행될 수 있다.
임의의 분산 스핀락 클라이언트(예, 210)는 분산 스핀락 서버(100)의 잠금(DSLock) 테이블 및 분산 스핀락 클라이언트의 자료구조(DSLock_node) 테이블을 이용하여 특정 공유 자원에 대한 잠금을 획득할 수 있다(S510). 또한, 분산 스핀락 클라이언트(210)는 분산 스핀락 서버(100)의 잠금(DSLock) 테이블 및 분산 스핀락 클라이언트의 자료구조(DSLock_node) 테이블을 이용하여 특정 공유 자원에 대한 잠금을 해제할 수 있다(S520).
이상에서 설명된 실시 예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/혹은 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(Field Programmable Gate Array), PLU(Programmable Logic Unit), 마이크로프로세서, 혹은 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 혹은 특수 목적 컴퓨터를 이용하여 구현될 수 있다.
본 발명의 실시 예에 따른 클라이언트는, 적어도 하나의 프로세서; 및 상기 적어도 하나의 프로세서에 의해 실행되는 적어도 하나의 인스트럭션을 저장하는 메모리를 포함하고, 상기 적어도 하나의 인스트럭션은, 서버의 제 1 테이블 및 클라이언트의 제 2 테이블을 이용하여 공유 자원에 대한 잠금을 획득하고; 및 클라이언트에서 제 1 테이블과 제 2 테이블을 이용하여 공유 자원에 대한 잠금을 해제하도록 적어도 하나의 프로세서에 실행되는 것을 특징으로 한다.
처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/혹은 복수 유형의 처리 요소를 포함할 수 있다. 예를 들어, 처리 장치 는 복수의 프로세서 혹은 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 혹은 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체 (magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명은 잠금 자료 구조를 서버와 클라이언트에 분산하여 관리할 수 있다. 서버는 가장 최근 잠금을 요청한 클라이언트 잠금 위치를 저장하고, 클라이언트는 현재 잠금 상태와 다음 잠금을 획득할 클라이언트 잠금 위치를 저장할 수 있다. 서버와 클라이언트, 클라이언트와 클라이언트가 협업하여 잠금 획득/해제를 통한 동기화를 수행할 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10: 분산 시스템
100: 분산 스핀락 서버
210, 220, 2n0: 분산 스핀락 클라이언트
DSLock 테이블: 제 1 테이블(잠금 테이블)
DSLock_node 테이블: 제 2 테이블(자료구조 테이블)

Claims (14)

  1. 서버 및 복수의 클라이언트들을 포함하는 분산 시스템의 동작 방법에 있어서,
    상기 복수의 클라이언트들 중에서 제 1 클라이언트에서 상기 서버의 제 1 테이블 및 상기 클라이언트의 제 2 테이블을 이용하여 공유 자원에 대한 잠금을 획득하는 단계; 및
    상기 제 1 클라이언트에서 상기 제 1 테이블과 상기 제 2 테이블을 이용하여 상기 공유 자원에 대한 잠금을 해제하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 테이블은 분산 공유 자원에 대한 정보를 저장하는 잠금(DSLock) 테이블이고,
    상기 제 2 테이블은 잠금 요청을 위한 자료구조(DSLock_node) 테이블인 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 제 1 및 제 2 테이블들의 각각은, 클라이언트 식별자(node_id) 및 클라이언트의 잠금 테이블에서 엔트리 가상 주소(lock_vaddr)를 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 제 2 테이블은 상기 공유 자원에 대한 잠금 상태를 나타내는 정보(TRUE 혹은 FALSE)을 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 제 1 테이블의 엔트리의 개수는 관리 대상 공유 자원의 개수인 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 서버는 상기 제 1 테이블을위한 메모리 공간을 할당하고, 상기 할당된 메모리 공간을 RDMA(remote direct memory access) 영역으로 등록하는 것을 특징으로 하는 방법.
  7. 제 6 항에 있어서,
    상기 할당된 메모리 공간에 상기 RDMA 영역을 등록할 때, 상기 서버는 상기 할당된 메모리 공간에 대응하는 메모리 영역 키를 상기 복수의 클라이언트들에 배포하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서,
    상기 잠금을 획득하는 단계는,
    잠금을 표현할 상기 제 2 테이블의 엔트리로 상기 제 1 클라이언트에 대응하는 노드를 설정하는 단계;
    상기 서버의 주소와 상기 공유 자원의 식별 정보(id)를 이용하여 상기 제 2 테이블에서 상기 식별 정보에 대응하는 엔트리를 읽는 단계; 및
    원격 CAS(compare and swap)을 사용하여 상기 제 2 테이블의 엔트리를 잠금 상태를 지시하는 값으로 설정하는 단계를 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 잠금을 해제하는 단계는,
    해제할 잠금의 상기 2 테이블의 엔트리를 상기 제 1 클라이언트에 대응하는 노드로 설정하는 단계; 및
    원격 CAS(compare and swap)을 사용하여 상기 제 2 테이블의 엔트리를 잠금 해제를 지시하는 값으로 설정하는 단계를 포함하는 방법.
  10. 공유 자원의 잠금(DSLock) 테이블을 갖는 제 1 테이블을 관리하는 서버; 및
    잠금 요청을 위한 자료구조(DSLock_node) 테이블을 갖는 제 2 테이블을 관리하는 복수의 클라이언트들을 포함하고,
    상기 복수의 클라이언트들의 각각은, 상기 제 1 및 제 2 테이블들을 이용하여 공유 자원에 대한 잠금 혹은 해제를 수행하고,
    잠금 요청된 클라이언트의 프로세스가 비지-웨이트(busy-wait)되는 것을 특징으로 하는 분산 시스템.
  11. 제 10 항에 있어서,
    상기 복수의 클라이언트들 중에서 제 1 클라이언트는 상기 서버의 상기 제 1 테이블과 나머지 클라이언트들의 제 2 테이블들에 RDMA(remote direct memory access) 접근 가능한 것을 특징으로 하는 분산 시스템.
  12. 제 10 항에 있어서,
    상기 복수의 클라이언트들 중에서 제 1 클라이언트가 잠금 경쟁이 없을 상태에서 잠금을 수행할 때, 상기 서버의 상기 제 1 테이블의 엔트리 값은 NULL 값이고, 상기 제 1 클라이언트를 제외한 나머지 클라이언트들의 제 2 테이블들의 엔트리 값들은 NULL 값인 것을 특징으로 하는 분산 시스템.
  13. 제 10 항에 있어서,
    상기 복수의 클라이언트들 중에서 제 1 클라이언트가 잠금 상태에서 제 2 클라이언트가 잠금 획득을 시도할 때, 원격 CAS(compare and swam)을 사용하여 상기 제 2 클라이언트의 제 2 테이블의 엔트리 값이 상기 서버의 상기 제 1 테이블에 등록되는 것을 특징으로 하는 분산 시스템.
  14. 제 10 항에 있어서,
    상기 복수의 클라이언트들에 잠금 경쟁이 없을 때, 잠금 해제 후에는 상기 서버의 제 1 테이블의 대응하는 엔트리 값이 NULL값이 되는 것을 특징으로 하는 분산 시스템.
KR1020190039459A 2019-04-04 2019-04-04 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법 KR102450133B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190039459A KR102450133B1 (ko) 2019-04-04 2019-04-04 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법
US16/836,246 US11500693B2 (en) 2019-04-04 2020-03-31 Distributed system for distributed lock management and method for operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190039459A KR102450133B1 (ko) 2019-04-04 2019-04-04 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20200117405A true KR20200117405A (ko) 2020-10-14
KR102450133B1 KR102450133B1 (ko) 2022-10-05

Family

ID=72662377

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190039459A KR102450133B1 (ko) 2019-04-04 2019-04-04 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US11500693B2 (ko)
KR (1) KR102450133B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230297413A1 (en) * 2022-03-16 2023-09-21 Shopify Inc. Dual stage bulkheads
CN116389579A (zh) * 2023-03-22 2023-07-04 安芯网盾(北京)科技有限公司 一种基于微服务的报表生成方法及系统
CN117539650B (zh) * 2023-10-10 2024-08-27 本原数据(北京)信息技术有限公司 数据管理系统的去中心化记录锁管理方法以及相关设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010053691A (ko) * 1999-12-01 2001-07-02 오길록 분산 데이터베이스 프로그램 간의 동기화를 위한 임계영역 진입 방법
JP3551104B2 (ja) * 1999-10-28 2004-08-04 日本電気株式会社 資源管理システム
JP2006023801A (ja) * 2004-07-06 2006-01-26 Yaskawa Electric Corp 分散処理システムとそのデータ共有方法
KR20090106392A (ko) * 2007-01-23 2009-10-08 인터내셔널 비지네스 머신즈 코포레이션 스핀 락을 통한 락의 공평성과 락킹 성능 획득 방법
KR20150089747A (ko) * 2014-01-28 2015-08-05 한국전자통신연구원 원격 직접 메모리 접근 지원 네트워크를 통한 고속 접근 보장 방법
US20170075856A1 (en) 2015-09-12 2017-03-16 Microsoft Technology Licensing, Llc Distributed lock-free rdma-based memory allocation and de-allocation
US20170103039A1 (en) 2015-10-13 2017-04-13 Microsoft Technology Licensing, Llc Distributed self-directed lock-free rdma-based b-tree key-value manager
JP2018110031A (ja) * 2018-03-07 2018-07-12 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタ内のロック管理方法、ロックサーバ及びクライアント

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4604694A (en) * 1983-12-14 1986-08-05 International Business Machines Corporation Shared and exclusive access control
US6182186B1 (en) * 1998-06-30 2001-01-30 Sun Microsystems, Inc. Method and apparatus that utilizes lock states to lock resources
US6748470B2 (en) * 2001-11-13 2004-06-08 Microsoft Corporation Method and system for locking multiple resources in a distributed environment
US7418500B1 (en) * 2002-03-25 2008-08-26 Network Appliance, Inc. Mechanism for controlled sharing of files in a clustered application environment
US7370054B1 (en) * 2003-09-29 2008-05-06 Sun Microsystems, Inc Method and apparatus for indexing a hash table which is organized as a linked list
EP1528478A1 (en) * 2003-11-03 2005-05-04 Sun Microsystems, Inc. Generalized addressing scheme for remote direct memory access enabled devices
US8700585B2 (en) * 2004-02-06 2014-04-15 Vmware, Inc. Optimistic locking method and system for committing transactions on a file system
GB0409326D0 (en) * 2004-04-27 2004-06-02 Ibm Locker manager for managing access to shared resources
US20060090168A1 (en) * 2004-09-28 2006-04-27 Takeshi Ogasawara Method and system for speeding up mutual exclusion
GB0506403D0 (en) * 2005-03-30 2005-05-04 Level 5 Networks Ltd Routing tables
US8108627B2 (en) * 2006-03-31 2012-01-31 Intel Corporation Array comparison and swap operations
US8032926B2 (en) 2006-12-06 2011-10-04 Electronics And Telecommunications Research Institute Method of configuring hierarchical network of user group and resource group and key distribution center
US20100100889A1 (en) * 2008-10-16 2010-04-22 International Business Machines Corporation Accelerating mutual exclusion locking function and condition signaling while maintaining priority wait queues
KR20100058300A (ko) 2008-11-24 2010-06-03 한국전자통신연구원 미래 인터넷 환경에서 적응적 자원 관리 방법 및 시스템
US8832216B2 (en) * 2011-08-31 2014-09-09 Oracle International Corporation Method and system for conditional remote direct memory access write
US8868604B2 (en) * 2012-09-26 2014-10-21 Oracle International Corporation Methods and apparatus for implementing Semi-distributed Lock Management
US9519591B2 (en) * 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
WO2017100978A1 (zh) 2015-12-14 2017-06-22 华为技术有限公司 一种集群中锁管理的方法、锁服务器及客户端

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3551104B2 (ja) * 1999-10-28 2004-08-04 日本電気株式会社 資源管理システム
KR20010053691A (ko) * 1999-12-01 2001-07-02 오길록 분산 데이터베이스 프로그램 간의 동기화를 위한 임계영역 진입 방법
JP2006023801A (ja) * 2004-07-06 2006-01-26 Yaskawa Electric Corp 分散処理システムとそのデータ共有方法
KR20090106392A (ko) * 2007-01-23 2009-10-08 인터내셔널 비지네스 머신즈 코포레이션 스핀 락을 통한 락의 공평성과 락킹 성능 획득 방법
KR20150089747A (ko) * 2014-01-28 2015-08-05 한국전자통신연구원 원격 직접 메모리 접근 지원 네트워크를 통한 고속 접근 보장 방법
US20170075856A1 (en) 2015-09-12 2017-03-16 Microsoft Technology Licensing, Llc Distributed lock-free rdma-based memory allocation and de-allocation
US20170103039A1 (en) 2015-10-13 2017-04-13 Microsoft Technology Licensing, Llc Distributed self-directed lock-free rdma-based b-tree key-value manager
JP2018110031A (ja) * 2018-03-07 2018-07-12 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタ内のロック管理方法、ロックサーバ及びクライアント
JP6561162B2 (ja) * 2018-03-07 2019-08-14 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタ内のロック管理方法、ロックサーバ及びクライアント

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Y. Chung et al, "Using RDMA for Lock Management", https://arxiv.org/abs/1507.03274, 공개일: 2015년 7월 20일.

Also Published As

Publication number Publication date
KR102450133B1 (ko) 2022-10-05
US20200319939A1 (en) 2020-10-08
US11500693B2 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
US7487153B2 (en) Locker manager for managing access to shared resources
US7325064B2 (en) Distributed locking protocol with asynchronous token prefetch and relinquish
US7484048B2 (en) Conditional message delivery to holder of locks relating to a distributed locking manager
US8543773B2 (en) Distributed shared memory
US5987550A (en) Lock mechanism for shared resources in a data processing system
EP2126704B1 (en) Achieving both locking fairness and locking performance with spin locks
KR102450133B1 (ko) 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법
CN108572876B (zh) 一种读写锁的实现方法及装置
US20070226269A1 (en) Method and system for an update synchronization of a domain information file
US9747323B1 (en) Method for reconstruction of a distributed lock state after a node addition or removal using a consistent hash
US8566298B1 (en) Method and apparatus for sharing resource locks amongst applications
US8370317B2 (en) Synchronizing shared resources in a collection
US5550973A (en) System and method for failure recovery in a shared resource system having a moving write lock
US20070078852A1 (en) Synchronizing shared resources in a collection
US20210263784A1 (en) Efficient and scalable use of shared resources
US8954409B1 (en) Acquisition of multiple synchronization objects within a computing device
WO2024188050A1 (zh) 分布式文件系统的文件锁管理方法、设备及介质
CN114356215A (zh) 一种分布式集群及分布式集群锁的控制方法
JP2005509944A (ja) 大きなデータ構造のエントリロック
WO2023103434A1 (zh) 一种锁管理方法、装置及系统
CN113448976B (zh) 数据处理方法、装置、计算机设备和存储介质
US7539678B2 (en) Systems and methods for controlling access to an object
US8918798B2 (en) Shared object lock under state machine control
US20140229670A1 (en) Cache coherency and synchronization support in expanders in a raid topology with multiple initiators
US11960510B2 (en) Data movement from data storage clusters

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