KR20200117405A - 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법 - Google Patents
분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법 Download PDFInfo
- 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
Links
- 238000011017 operating method Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 65
- 230000008569 process Effects 0.000 claims abstract description 40
- 230000001934 delay Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 8
- 230000007958 sleep Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002269 spontaneous effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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/3891—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols 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
본 발명은 네트워크로 연결된 다수 노드가 공유하는 자원의 일관성을 유지하기 위한 동시성 제어 기법에 관한 것이다.
일반적으로, 운영 체제는 잠금 관리자를 사용하여 자원에 대한 액세스를 구성하고 직렬화한다. 분산 잠금 관리자 (DLM; distributed lock manager)는 클러스터 전체 잠금 데이터베이스의 동일한 사본, 클러스터에 있는 모든 컴퓨터에서 실행된다. DLM은 공유 자원에 대한 액세스를 동기화하는 수단을 사용함으로써 여러 시스템의 클러스터에서 분산 되는 소프트웨어 응용 프로그램을 제공한다. 최신 네트워크 기술이 발달함에 따라 공유 자원(shared resource), 특히 원격 공유 메모리(remote shared memory) 에 대한 접근 속도(access speed)가 로컬 메모리(local memory)에 대한 접근 속도와 크게 차이 나지 않는다. 이러한 상황에서 공유 자원에 대한 동기화 기법으로 DLM을 사용하는 것은 매우 비효율적이다. 짧은 공유 자원 접근 시간을 고려한 새로운 분산 잠금 기법이 필요하다.
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은 일반적인 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 테이블(자료구조 테이블)
100: 분산 스핀락 서버
210, 220, 2n0: 분산 스핀락 클라이언트
DSLock 테이블: 제 1 테이블(잠금 테이블)
DSLock_node 테이블: 제 2 테이블(자료구조 테이블)
Claims (14)
- 서버 및 복수의 클라이언트들을 포함하는 분산 시스템의 동작 방법에 있어서,
상기 복수의 클라이언트들 중에서 제 1 클라이언트에서 상기 서버의 제 1 테이블 및 상기 클라이언트의 제 2 테이블을 이용하여 공유 자원에 대한 잠금을 획득하는 단계; 및
상기 제 1 클라이언트에서 상기 제 1 테이블과 상기 제 2 테이블을 이용하여 상기 공유 자원에 대한 잠금을 해제하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 제 1 테이블은 분산 공유 자원에 대한 정보를 저장하는 잠금(DSLock) 테이블이고,
상기 제 2 테이블은 잠금 요청을 위한 자료구조(DSLock_node) 테이블인 것을 특징으로 하는 방법. - 제 1 항에 있어서,
상기 제 1 및 제 2 테이블들의 각각은, 클라이언트 식별자(node_id) 및 클라이언트의 잠금 테이블에서 엔트리 가상 주소(lock_vaddr)를 포함하는 방법. - 제 3 항에 있어서,
상기 제 2 테이블은 상기 공유 자원에 대한 잠금 상태를 나타내는 정보(TRUE 혹은 FALSE)을 포함하는 방법. - 제 1 항에 있어서,
상기 제 1 테이블의 엔트리의 개수는 관리 대상 공유 자원의 개수인 것을 특징으로 하는 방법. - 제 1 항에 있어서,
상기 서버는 상기 제 1 테이블을위한 메모리 공간을 할당하고, 상기 할당된 메모리 공간을 RDMA(remote direct memory access) 영역으로 등록하는 것을 특징으로 하는 방법. - 제 6 항에 있어서,
상기 할당된 메모리 공간에 상기 RDMA 영역을 등록할 때, 상기 서버는 상기 할당된 메모리 공간에 대응하는 메모리 영역 키를 상기 복수의 클라이언트들에 배포하는 것을 특징으로 하는 방법. - 제 1 항에 있어서,
상기 잠금을 획득하는 단계는,
잠금을 표현할 상기 제 2 테이블의 엔트리로 상기 제 1 클라이언트에 대응하는 노드를 설정하는 단계;
상기 서버의 주소와 상기 공유 자원의 식별 정보(id)를 이용하여 상기 제 2 테이블에서 상기 식별 정보에 대응하는 엔트리를 읽는 단계; 및
원격 CAS(compare and swap)을 사용하여 상기 제 2 테이블의 엔트리를 잠금 상태를 지시하는 값으로 설정하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 잠금을 해제하는 단계는,
해제할 잠금의 상기 2 테이블의 엔트리를 상기 제 1 클라이언트에 대응하는 노드로 설정하는 단계; 및
원격 CAS(compare and swap)을 사용하여 상기 제 2 테이블의 엔트리를 잠금 해제를 지시하는 값으로 설정하는 단계를 포함하는 방법. - 공유 자원의 잠금(DSLock) 테이블을 갖는 제 1 테이블을 관리하는 서버; 및
잠금 요청을 위한 자료구조(DSLock_node) 테이블을 갖는 제 2 테이블을 관리하는 복수의 클라이언트들을 포함하고,
상기 복수의 클라이언트들의 각각은, 상기 제 1 및 제 2 테이블들을 이용하여 공유 자원에 대한 잠금 혹은 해제를 수행하고,
잠금 요청된 클라이언트의 프로세스가 비지-웨이트(busy-wait)되는 것을 특징으로 하는 분산 시스템. - 제 10 항에 있어서,
상기 복수의 클라이언트들 중에서 제 1 클라이언트는 상기 서버의 상기 제 1 테이블과 나머지 클라이언트들의 제 2 테이블들에 RDMA(remote direct memory access) 접근 가능한 것을 특징으로 하는 분산 시스템. - 제 10 항에 있어서,
상기 복수의 클라이언트들 중에서 제 1 클라이언트가 잠금 경쟁이 없을 상태에서 잠금을 수행할 때, 상기 서버의 상기 제 1 테이블의 엔트리 값은 NULL 값이고, 상기 제 1 클라이언트를 제외한 나머지 클라이언트들의 제 2 테이블들의 엔트리 값들은 NULL 값인 것을 특징으로 하는 분산 시스템. - 제 10 항에 있어서,
상기 복수의 클라이언트들 중에서 제 1 클라이언트가 잠금 상태에서 제 2 클라이언트가 잠금 획득을 시도할 때, 원격 CAS(compare and swam)을 사용하여 상기 제 2 클라이언트의 제 2 테이블의 엔트리 값이 상기 서버의 상기 제 1 테이블에 등록되는 것을 특징으로 하는 분산 시스템. - 제 10 항에 있어서,
상기 복수의 클라이언트들에 잠금 경쟁이 없을 때, 잠금 해제 후에는 상기 서버의 제 1 테이블의 대응하는 엔트리 값이 NULL값이 되는 것을 특징으로 하는 분산 시스템.
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)
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)
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)
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 | 华为技术有限公司 | 一种集群中锁管理的方法、锁服务器及客户端 |
-
2019
- 2019-04-04 KR KR1020190039459A patent/KR102450133B1/ko active IP Right Grant
-
2020
- 2020-03-31 US US16/836,246 patent/US11500693B2/en active Active
Patent Citations (9)
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)
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 |