KR20050088366A - 다중 시스템 클러스터에서의 리소스 경합을 관리하는 방법및 장치 - Google Patents

다중 시스템 클러스터에서의 리소스 경합을 관리하는 방법및 장치 Download PDF

Info

Publication number
KR20050088366A
KR20050088366A KR1020057009822A KR20057009822A KR20050088366A KR 20050088366 A KR20050088366 A KR 20050088366A KR 1020057009822 A KR1020057009822 A KR 1020057009822A KR 20057009822 A KR20057009822 A KR 20057009822A KR 20050088366 A KR20050088366 A KR 20050088366A
Authority
KR
South Korea
Prior art keywords
cluster
local
resource
resources
contention
Prior art date
Application number
KR1020057009822A
Other languages
English (en)
Other versions
KR100834432B1 (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20050088366A publication Critical patent/KR20050088366A/ko
Application granted granted Critical
Publication of KR100834432B1 publication Critical patent/KR100834432B1/ko

Links

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
    • 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
    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

각각의 사용자가 체인에서의 그 이전의 사용자(들)에 의해 보유된 리소스를 기다리고 있는 경합 체인들을 식별하고 체인의 헤드에 있는 사용자(들)에게 그들의 요구가 적어도 체인 최선 대기자의 요구인 것처럼 시스템 리소스들을 할당하는 것에 의해, 다중 시스템 클러스터의 리소스들에 액세스하기 위한 사용자들 사이에서의 경합을 관리하는 방법 및 장치. 최적 리소스 할당에 요구한 경합 데이터는, 시스템들간의 데이터 흐름이 최소이고 크로스-시스템 경합의 완전한 뷰를 갖고 있지 않은 경우라 하더라도, 시스템 클러스터에 걸쳐 효과적으로 분산된다.

Description

다중 시스템 클러스터에서의 리소스 경합을 관리하는 방법 및 장치{METHOD AND APPARATUS FOR MANAGING RESOURCE CONTENTION IN A MULTISYSTEM CLUSTER}
본 발명은 정보 처리 시스템에서 직렬화된 리소스들로의 액세스를 위한 사용자들 사이에서의 경합을 관리하는 방법 및 장치에 관한 것이다. 보다 구체적으로, 본 발명은 복수개의 이와 같은 시스템들을 포함하는 시스템 클러스터에서 이와 같은 경합을 관리하는 방법 및 장치에 관한 것이다.
정보 처리 시스템들에서 리소스 경합은 공지의 현상이다. 리소스 경합은, 사용자(예를 들어, 작업의 프로세스 또는 다른 유닛)가 다른 사용자에 의해 이미 보유된 리소스로의 액세스를 시도하고 제2 사용자에 의해 요청된 액세스가 제 1 사용자의 액세스와 모순될 경우에 발생한다. 이것은, 예를 들어, 둘 중 어느 한쪽의 사용자가 문제가 되는 리소스로의 배타적인 액세스를 요청 중일 경우에 발생한다. 리소스 관리자들은, 리소스를 위해 경쟁 중인 요청자들 사이에서 경합을 관리하는 소프트웨어 컴포넌트들인데, 이들은, 하나 이상의 이러한 사용자들에게 상기 리소스로의 액세스를 보유자로서 허가하고 상기 리소스가 이용 가능해질 때까지 나머지 사용자들을 대기자들의 풀(pool of waiters)에 배치하는 것에 의해, 제어한다.
다수의 리소스 관리자들 및 다수의 작업 유닛들을 가진, IBM z/OSTM 오퍼레이팅 시스템과 같은, 컴퓨터 오퍼레이팅 시스템에서, 리소스 경합 관리는 복잡한 문제이다. 경합 체인들이 형성되거나, 다른 방법으로, 경합이 리소스들을 크로스할 수 있다. 예를 들어, 작업 A는 리소스 R1을 기다리고 있지만 R2를 보유하고 있는 한편, 작업 B는 R1을 보유하고 있지만, 작업 C에 의해 보유되어 있는 R3를 기다리고 있다. 경합이 시스템들을 크로스할 수도 있다. 상기 예에서, 각각의 작업은 별개의 시스템상에 존재할 수 있다. 경합이 리소스 관리자들을 크로스할 수도 있다. 예를 들어, R1은 GRS 인큐(enqueue)일 수 있고 R2는 DB2TM 래치일 수 있다. z/OS의 GRS(global resource serialization) 컴포넌트가 인큐들을 관리하는 한편, IMSTM IRLM가 DB2 리소스들을 개별적으로 관리한다.
크로스-리소스 경합(cross-resource contention)은 통상적으로, 리소스 각각의 보유자들 및 대기자들의 토폴로지를 추적하고 임의의 교차점들을 찾아내는 것에 의해, 단일 리소스 관리자(예를 들어, GRS)내에서 해결된다. 크로스-시스템 경합은 통상적으로, (클러스터를 독립적인 시스템들이 아니라 하나의 유닛으로서 관리하여) 리소스 관리자에게 전체 클러스터의 데이터를 알리는 것에 의해, 해결된다. 크로스-리소스 관리자 경합은 통상적으로, 보고 제품(reporting product)으로 하여금, 보고 제품이 마치 가상의 리소스 관리자인 것처럼, 인터페이스들 모두를 조회하고 데이터를 관련짓게 하는 것에 의해 "해결된다". 문제는 경합 중인 리소스 수의 O(2n) 차수이므로, 계산적으로도 복잡하다는 것이다.
z/OS의 기본 MVSTM 컴포넌트는, ("인큐 추진(enqueue promotion)"이라고 흔히 알려져 있는) 간단하고 효율적인 해결책: 작업의 요구에는 상관없이, 경합 중인 것으로 보고되는 리소스를 보유 중인 어떤 작업의 CPU 및 MPL 액세스를 자동적으로 (그리고 일시적으로) 지지하는 해결책을 가진다. 이것은, 실제 토폴로지와 무관하게, 리소스에 대한 "중요한" 대기자(들)이 존재하는 것처럼 보유자를 관리하는 것과 마찬가지이다. 이것의 운용을 평가하기 위해, 다음의 예를 고려한다.
1. 작업 A는 리소스 R1을 보유한다.
2. 작업 B는 리소스 R2를 보유하며 R1을 기다린다.
3. 작업 C는 R2를 기다린다.
기호로는, 이것을 체인 C → B → A로서 표현할 수 있는데, 대문자들은 작업들을 표현하고, (체인에서의 "링크"인) "→" 기호는, 기호의 왼쪽에 있는 작업이 기호의 오른쪽에 있는 작업에 의해 보유된 리소스를 기다리는 중이라는 것을 지시한다. 따라서, 상기 체인은, 작업 C가 작업 B에 의해 보유된 리소스를 기다리는 중이며, 작업 B는 작업 A에 의해 보유된 리소스를 기다리는 중이라는 것을 의미한다.
이들이 GRS 리소스들이라고 가정하면, 종래의 MVS 구현은, 작업들 A 및 B가 경합하의 리소스들을 보유하고 있기 때문에, 각각을 동일하게 한정된 시간 동안 추진하면서 이들을 지원할 것이다. 그러나, B는 사실상 A를 기다리고 있으므로, B를 지원하는 것은 도움이 되지 않는다. B 자체가 멀티태스킹이라면, 이러한 도움은 실제로, 리소스 경합에 관해서는 아무 것도 하지 않으면서, 경쟁 중인 작업에 해를 끼칠 수 있다.
도 1은 본 발명을 통합하는 컴퓨터 시스템 클러스터를 나타낸다.
도 2A 내지 도 2C는 경합 체인들의 다양한 유형들을 나타낸다.
도 3은 경합 체인의 헤드에 위치한 사용자에게 리소스들을 할당하는 절차를 나타낸다.
도 4는 몇몇 시스템들상의 트랜잭션들 및 리소스들 사이에서의 통상적인 경합 시나리오를 나타낸다.
도 5는 로컬 리소스 관리자로부터의 통지에 응답하여 수반되는 일반적인 절차를 나타낸다.
도 6은 원격 시스템으로부터 경합 데이터의 동보(broadcast)를 수신하는 것에 응답하여 수반되는 일반적인 절차를 나타낸다.
도 7A 내지 도 7G는 다양한 동작 예들에서의 다중 시스템 경합 상태를 나타낸다.
도 8A 내지 도 8H는 본 발명의 일 실시예의 경합 데이터를 저장하기 위한 다양한 데이터 구조들을 나타낸다.
도 9는 도 4에 나타낸 경합 시나리오가 클러스터의 시스템들 중 하나에 의해 포착되는 방법을 나타낸다.
위에서 확인된 동시 출원의 주제인, 본 발명의 일 태양은, 각각의 사용자가 할당된 요구를 가지며 그것이 액세스하고자 하는 리소스에 대한 보유자이거나 대기자일 수 있는 정보 처리 시스템에서 리소스들에 액세스하기 위한 사용자들 사이의 경합을 관리하는 방법 및 장치를 구비한다. 본 발명의 이러한 태양에 따르면, 체인에서 후속 사용자를 갖는 각각의 사용자가 후속 사용자가 기다리는 리소스를 보유하는 사용자들 체인에서, 헤드에 위치하는 사용자는 대기자가 아닌 것으로 식별된다. 체인 헤드에서의 사용자는, 바람직하게도, 사용자에게 그것의 요구가 적어도 이와 같은 최선 대기자(neediest waiter)의 요구인 것처럼 시스템 리소스들을 할당하는 것에 의해, 그것의 요구가 적어도 체인에서 최선 대기자의 요구인 것처럼 관리된다.
바람직하게도 그리고 본 발명의 이러한 태양에 대한 독립적인 발명적 특징으로서, 클러스터의 리소스 각각이 클러스터의 다른 리소스를 기다리는 사용자에 의해 보유되었거나 클러스터의 다른 리소스를 보유하고 있는 사용자에 의해 대기되고 있는 리소스들의 클러스터를 식별하고 클러스터의 어떤 리소스에 대한 최선 대기자의 요구를 판정하는 것에 의해, 이러한 경합 체인이 식별된다. 클러스터에서의 리소스 보유자이지만 임의의 다른 리소스를 기다리고 있지 않는 사용자가 식별되고, 리소스의 그 보유자는, 사용자에게 역시 바람직하게도 그것의 요구가 적어도 이와 같은 최선 대기자의 요구인 것처럼 시스템 리소스들을 할당하는 것에 의해, 그것의 요구가 적어도 클러스터에서의 임의의 리소스에 대한 최선 대기자의 요구인 것처럼 관리된다.
클러스터를 식별하는 단계는 리소스에 대한 경합 상태의 변화에 대한 통지를 수신하는 것에 응답하여 수행되는 것이 바람직하다. 따라서, 리소스는, 그것이 클러스터의 다른 리소스를 기다리는 사용자에 의해 지금 보유되고 있거나 클러스터의 다른 리소스를 보유 중인 사용자에 의해 대기되고 있는 것처럼, 클러스터에 새롭게 할당된다. 한편, 리소스가 클러스터의 다른 리소스를 기다리는 사용자에 의해 더 이상 보유되지 않거나 클러스터의 다른 리소스를 보유 중인 사용자에 의해 더 이상 대기되지 않을 경우, 리소스는 클러스터로부터 제거된다.
따라서, 본 발명의 이러한 태양은, 체인 헤드의 작업(예를 들어, 4의 요구성 팩터를 가진 상기 작업 A)이, 그것이 리소스를 해제할 때까지는, 체인의 다른 어디에서의 작업(예를 들어, 1의 요구를 가진 상기 작업 C)보다도 좀더 요구한 작업의 요구성 팩터(neediness factor)를 가진 것처럼 실행될 수 있도록 하기 위해, "요구성(neediness)" 팩터의 기본 시스템 리소스 할당 메커니즘으로의 통합을 의도한다. 요구성의 개념을 상기 예로 통합하면, 그것이 어떻게 상이하게 동작하는지를 보다 잘 이해할 수 있다.
1. 4의 "요구"를 가진 작업 A는 리소스 R1을 보유한다. (이 명세서에서, 더 작은 숫자들은 더 큰 요구를 의미하므로, 더 작은 숫자들은 "도움을 위한 우선 순위"로 간주될 수 있다.)
2. 5의 요구를 가진 작업 B는 리소스 R2를 보유하며 R1을 기다린다.
3. 1의 요구를 가진 작업 C는 R2를 기다린다.
기호로는, 이것을 체인 C(1) → B(5) → A(4)로서 표현할 수 있는데, 대문자들은 작업들을 표현하고, 괄호안의 숫자들은 작업들의 "요구"를 표현하며, (체인에서의 "링크"인) "→" 기호는, 기호의 왼쪽에 있는 작업이 기호의 오른쪽에 있는 작업에 의해 보유된 리소스를 기다리는 중이라는 것을 지시한다. 따라서, 상기 체인은, 1의 요구를 가진 작업 C가 5의 요구를 가진 작업 B에 의해 보유된 리소스를 기다리는 중이며, 작업 B는 4의 요구를 가진 작업 A에 의해 보유된 리소스를 기다리는 중이라는 것을 의미한다.
이런 방식의 "요구성" 팩터의 사용은 불분명할 수도 있는 몇가지 이점들을 제공한다. 첫번째, 그것으로 인해, B 또한 다른 리소스를 기다리고 있는 중이라는 것을 알 수 있으므로, 상기 B와 같은 작업을 지원하는 것을 방지함으로써, 잘 하면 불요구한 동작을 방지할 수 있고 최악의 경우에는 관련이 없는 경쟁 작업에 해를 끼칠 수 있다. 두번째, 그것은, 시스템 리소스 할당자로 하여금 다른 것보다 A를 그리고 한정된 시간 동안이 아니라 끝없이 지원하게 하기 위한 지식을 시스템 리소스 할당자에게 제공한다. 종래의 구현은 체인을 무시하고 A와 B 모두를 한정된 소정 시간 동안 "중요한" 것으로 취급하지만, 본 발명으로는, C가 기다리는 동안에는, A가 실제로 1의 요구를 가지거나 "가장 중요하다"는 것을 알 수 있다. 세번째, 그것은, 시스템 리소스 할당자로 하여금 원한다면, 예를 들어, 네트워크의 최선 작업이 현재의 보유자라면, 체인의 헤드에 위치한 보유자(들)를 지원하는 것을 기권하게 하기 위한 지식을 시스템 리소스 할당자에게 제공한다.
본 발명의 이러한 제 1 태양은 단일 시스템에서 또는 복수개의 이와 같은 시스템들을 포함하는 시스템 클러스터에서 실시될 수 있다. 리소스 클러스터들을 식별하는 본 발명의 변형은 특히 멀티시스템 구현에 사용하기에 적합한데, 후술되는 바와 같이, 그것은 로컬 경합 데이터에 대한 서브세트만의 교환을 요구로하기 때문이다.
본 출원의 주제인 본 발명의 다른 태양은, 주위로는 데이터를 거의 전달하지 않으면서, 경합 중인 멀티시스템 리소스 수에 대한 O(n) 차수의 다수 시스템들에 걸쳐 리소스 할당을 관리하는 프로토콜을 의도한다.
상술된 단일-시스템 발명의 태양들을 통합하는 본 발명의 이러한 다른 태양은 복수개 시스템들을 포함하는 시스템 클러스터에서, 각각의 사용자가 할당된 요구를 가지며 그것이 액세스하고자 하는 리소스에 대한 보유자이거나 대기자일 수 있는, 리소스로의 액세스를 위한 사용자들 사이에서의 경합을 관리하는 방법 및 장치를 의도한다. 본 발명의 이러한 태양에 따르면, 로컬 시스템으로서 동작하는 이러한 시스템 각각은 로컬 시스템상의 경합에 기초해 리소스들의 로컬 클러스터들로의 그룹화를 지시하며 로컬 클러스터의 하나 이상의 리소스들에 대한 요구를 각각의 로컬 클러스터에 대해 지시하는 로컬 클러스터 데이터를 저장한다. 또한, 각각의 시스템은, 원격 시스템들로서 동작하는, 시스템 클러스터의 다른 시스템들로부터, 원격 시스템상의 경합에 기초해 리소스들의 원격 클러스터들로의 그룹화를 이와 같은 원격 시스템 각각에 대해 지시하며 원격 클러스터의 하나 이상의 리소스들에 대한 요구를 각각의 원격 클러스터에 대해 지시하는 원격 클러스터 데이터를 수신한다. 각각의 로컬 시스템은 로컬 클러스터 데이터와 원격 클러스터 데이터를 결합해, 시스템들에 걸친 경합에 기초한 리소스들의 복합 클러스터들로의 그룹화를 지시하며 그러한 복합 클러스터의 하나 이상의 리소스들에 대한 요구를 각각의 복합 클러스터에 대해 지시하는 복합 클러스터 데이터를 생성한다. 그 다음, 각각의 로컬 시스템은 이러한 복합 클러스터 데이터를 사용해 복합 클러스터들에서의 리소스들에 대한 로컬 시스템상의 보유자들을 관리한다.
바람직하게도, 로컬, 원격, 및 복합 클러스터 데이터는 문제가 되는 클러스터에서의 임의의 리소스에 대한 최선 대기자의 요구를 지시하고, 복합 클러스터들에서의 리소스들에 대한 로컬 시스템상의 보유자들은, 임의의 다른 리소스를 기다리고 있지 않는 이와 같은 보유자들을 식별하고 이러한 보유자들에게 그들의 요구가 적어도 대응되는 복합 클러스터에서의 임의의 리소스에 대한 최선 대기자의 요구인 것처럼 시스템 리소스들을 할당하는 것에 의해, 관리된다.
바람직하게도, 각각의 로컬 시스템은, 로컬 시스템상의 사용자가 리소스들 중 하나를 보유하고 있으면서 리소스들 중 다른 것을 기다리고 있으면, 한 쌍의 리소스들을 공통 로컬 클러스터에 할당하고, 로컬 시스템상의 사용자와 관련하여 리소스 경합 상태의 변화에 대한 통지를 수신하는 것에 응답하여 로컬 클러스터 데이터를 업데이트한다. 또한, 각각의 로컬 시스템은, 임의의 업데이트들을 포함하여, 자신의 로컬 클러스터 데이터를 원격 시스템들로 전송하는데, 원격 시스템들은 전송된 클러스터 데이터를, 수신 중인 시스템들에 관한 원격 클러스터 데이터로서 처리한 다음, 그에 따라 그들의 복합 클러스터 데이터를 업데이트한다. 전송된 로컬 클러스터 데이터는 리소스, 로컬 시스템상의 경합에 기초해 리소스가 할당된 클러스터, 및 리소스에 대한 로컬 시스템상의 요구를 지시한다.
클러스터에 참여 중인 각각의 리소스 관리자 인스턴스로부터의 (완전 리소스 토폴로지가 아닌) 부분적인 데이터 및 "요구성"의 측정치를 사용하면, 각각의 시스템은 개별적으로, (크로스-"상기 모든" 리소스들의 전이 클로우져(transitive closure)에서의 모든 대기자들을 포함하여) 리소스에 대한 최선 대기자가 체인의 헤더에 위치한 리소스의 어떤 보유자보다도 좀더 요구한지를 알 수 있다. 그 다음, 시스템은, 이와 같은 보유자(들)에게 그들의 요구성 측정이 최선 작업 블록보다 최선인 것처럼 리소스들을 할당할 수 있다.
프로토콜은, 각 시스템으로부터의 보유자들 및 대기자들의 완전 리스트 대신에, 리소스 당 한 세트의 정보만을 전달함으로써, 어떤 시스템도 클러스터에 걸친 경합의 완결된 뷰를 갖지 않는다. 데이터 자체는, 클러스터-고유의 리소스 이름, 송신 시스템상의 최선 대기자에 대한 요구 값, 및 송신-시스템-고유의 토큰만으로 이루어진다. 후자의 토큰이 2개의 리소스들에 대해 매칭되면, 그들의 관리는 통합되어야 한다(토큰들은 송신 시스템의 로컬 데이터에만 기초해 할당된다). 또한, 토폴로지의 작업의 일부분들은 경합 중이지 않은 다른 리소스들을 보유한다 하더라도, 프로토콜은 경합 중인 리소스들에 관한 데이터만을 송신한다. 송신 시스템의 클러스터 정보는 다양한 방법으로 인코딩될 수 있다. 따라서, 송신 시스템상의 로컬 경합에만 기초해 토큰을 송신하기 보다는, 로컬 시스템은, 바람직한 실시예로서, 중요한 클러스터 할당(즉, 하나 이상의 리소스를 포함하는 클러스터에 대한 할당)이 로컬 또는 원격 정보에 기초하는지에 대한 지시와 함께, 원격 경합에도 기초하는 클러스터 이름을 송신한다.
본 발명은 컴퓨터 오퍼레이팅 시스템의 일부로서 구현되거나 이러한 오퍼레이팅 시스템과 함께 작용하는 "미들웨어" 소프트웨어로서 구현되는 것이 바람직하다. 이러한 소프트웨어 구현은, 본 발명의 방법 단계들을 수행하기 위해 하드웨어 머신에 의해 실행될 수 있는 명령어들의 프로그램 형태인 로직을 포함한다. 명령어들의 프로그램은 반도체, 자기, 광학, 또는 다른 저장 기술을 사용하는 하나 이상을 볼륨들을 구비하는 프로그램 저장 장치에서 구체화될 수 있다.
도 1은 본 발명을 통합하는 컴퓨터 시스템 클러스터(100)를 나타낸다. 클러스터(100)는 적당한 임의 유형의 상호 접속(104)에 의해 함께 결합되어 있는 개별적인 시스템들(102;Sy1, Sy2, Sy3)을 포함한다. 예시적인 3개의 시스템들이 표시되어 있지만, 본 발명이 소정 갯수의 시스템들로 한정되는 것은 아니다. 클러스터(100)는, 다양한 시스템들로부터의 요청자들에 의해 경합되는 하나 이상의 글로벌 또는 다중 시스템 리소스들(106)을 가진다.
클러스터의 각 시스템(102)은 개별적인 물리적 머신이나 하나 이상의 물리적 머신들에 대한 개별적인 논리적 파티션을 구비할 수 있다. 각각의 시스템은, 본 발명의 펑크션들을 수행하는 이외에 시스템 서비스들을 제공하며 시스템 리소스들의 사용을 관리하는 일반적인 펑크션들을 수행하는 오퍼레이팅 시스템(OS;108)을 포함한다. 본 발명이 소정 하드웨어 또는 소프트웨어 플랫폼에 한정되는 것은 아니지만, 각각의 시스템(102)은 IBM zSeriesTM 서버 또는 이와 같은 서버의 논리적 파티션상에서 실행되는 IBM z/OS 오퍼레이팅 시스템의 인스턴스를 구비하는 것이 바람직하다.
각각의 시스템(102)은, 다중 시스템 리소스들(106) 및, 선택적으로는, 동일 시스템상의 요청들에게만 이용 가능한 로컬 리소스들(112)로의 액세스를 위해 서로 경합하는 하나 이상의 요청자들(110)을 포함한다. 요청자(110)는 리소스들(106 또는 112)로의 액세스를 위해 경합하는 임의의 엔티티를 구비할 수 있으며 시스템 리소스들을 할당하기 위한 단일 엔티티로서 취급된다.
(요청자들(110)에게 할당된 시스템 리소스들은 요청자들 사이에서의 경합 대상들인 리소스들(106 및 112)과는 구별되어야 한다. 시스템 리소스들은, 처리율 또는 응답 시간과 같은 소정 성능 측정을 향상시키기 위해, 대부분 요청자들 스스로에게 투명한 방식으로 요청자들(110)에게 할당된다. 한편, 리소스들(106 및 110)은 요청자들에 의해 그들의 실행의 일부로서 명시적으로 요청된다. 이들을 구별할 요구가 있을 경우, 리소스들의 후자 부류를 때로는 "직렬화된 리소스들" 등과 같은 용어를 사용해 언급할 것이다.)
각각의 오퍼레이팅 시스템(108)은, 하나 이상의 리소스 관리자들(114) 및 WLM(workload manager;116)을 포함하여, 본 발명의 관심사인 몇가지 컴포넌트들을 포함한다.
각각의 리소스 관리자(114)는, 리소스(106 또는 112)를 위해 경쟁하는 요청자들(110) 사이에서 경합을 관리하는데, 하나 이상의 이러한 요청자들에게 리소스로의 액세스를 보유자로서 허용하고 리소스가 이용 가능해 질 때까지 나머지 요청자들을 대기자들의 풀에 배치하는 것에 의해 제어한다. 본 발명이 소정 리소스 관리자로 한정되는 것은 아니지만, (다중 시스템 리소스들(106)을 위해 사용되는) 이와 같은 리소스 관리자 중 하나가, 여기에 참조로써 통합되어 있는, IBM publication z/OS MVS Planning: Global Resource Serialization, SA22-7600-02(March 2002)와 같은 참조에 설명되어 있는, z/OS 오퍼레이팅 시스템의 GRS(Global Resource Serialization) 컴포넌트일 수 있다. 또한, (GRS는 z/OS의 일부이므로) 리소스 관리자들(114)이 오퍼레이팅 시스템(108)의 일부인 것으로 묘사되어 있지만, (IRLM과 같은) 다른 리소스 관리자들은 오퍼레이팅 시스템과 별개로 존재할 수 있다.
WLM(116)은, 작업 유닛(또는 작업 유닛이 속하는 서비스 클래스)에 할당되어, 어떤 의미에서, 프로세싱 중인 다른 작업 유닛들에 관한 그 작업 유닛의 상대적인 우선 순위를 반영하는 "요구" 값에 기초해, 시스템 리소스들을 (어드레스 공간들, 고립된 장소들 등일 수 있는) 작업 유닛들에 할당한다. 본 발명이 소정 작업량 관리자에 한정되는 것은 아니지만, 이와 같은 작업량 관리자의 하나가, 모두가 여기에 참조로써 통합되어 있는, IBM publications z/OS MVS Planning: Workload Management, SA22-7602-04(Oct. 2002) 및 z/OS MVS Programming: Workload Management Services, SA22-7619-03(Oct. 2002)와 같은 참조에 설명되어 있는, IBM z/OS 오퍼레이팅 시스템의 작업량 관리 컴포넌트이다. 이와 같은 작업량 관리 컴포넌트는, 여기에 참조로써 통합되어 있는, IBM publication z/OS MVS Initialization and Tuning Guide, SA22-7591-01(March 2002), 특히 3장(pages 3-1 내지 3-84)과 같은 참조에 설명되어 있는, IBM z/OS 오퍼레이팅 시스템의 SRM(system resources manager) 컴포넌트와 함께 작용한다. 이러한 컴포넌트들이 상호 작용하는 소정 방식은 본 발명의 분야가 아니므로, 양자의 컴포넌트들이 도 1의 "WLM"으로 레이블링되어 있는 박스(116)에 의해 참조되는 것으로 가정한다.
요구 값이 사용자에게 할당되는 소정 방식도, 할당된 요구 값에 기초해 시스템 리소스들이 사용자에게 할당되는 방식도, 본 발명의 분야는 아니다. 업계에 공지되어 있는 다수의 기술들 중 어떤 것도 이들을 위해 사용될 수 있다. 바람직하게도, 요구 값은 시스템 클러스터에 걸쳐 유사한 의미를 갖는 것이어야 한다. 나타낸 실시예에서, 요구 값은, 리소스 그룹 제한들과 중요성을 시스템들에 걸쳐 안전하게 비교될 수 있는 하나의 양으로 통합하는, 액티브 WLM 정책에 기초해 계산되는 동적 값이다. 순서는 임의적이지만, 본 설명에서는, 더 낮은 숫자들이 더 높은 요구 또는 우선 순위를 표현하므로, 1의 요구를 가진 사용자는 5의 요구를 가진 사용자보다 "좀더 요구"하다.
도 2A 내지 도 2C는, 시스템 클러스터(100)의 리소스들(106 및 112) 사이에서 전개될 수 있는 다양한 경합 체인들을 나타낸다. 이러한 체인들이 좀더 공식적으로는 방향 그래프들로서 공지되어 있지만, 여기에서는 체인 용어를 사용할 것이다. 화살표로 묘사되어 있는, 이러한 체인들의 각 링크는, (화살표 꼬리의 노드로써 표현된) 사용자가 (화살표 머리의 노드로써 표현된) 다른 사용자에 의해 보유된 리소스를 기다리고 있는 관계를 표현한다. 이와 같은 관계의 "전이 클로우져(transitive closure)"는, 화살표들을 따라가면, 모든 노드들이 결국은 경합 중인 어떤 리소스도 기다리지 않으므로 체인의 헤드에 서는 보유자를 포인팅하도록, 체인의 임의 노드를 수반하는 이와 같은 관계들 모두를 포함하는 것에 의해 형성되는 체인이다. (체인이 하나 이상의 헤드를 가질 수 있는지의 여부는 도 2D에 대한 설명에서 후술된다.)
도 2A는 상기 배경 및 요약 부분에서 설명된 경합 시나리오를 나타내는데, 사용자 C는, 사용자 A에 의해 보유된 리소스 R1을 기다리고 있는 사용자 B에 의해 보유된 리소스 R2를 기다리고 있다. 여기에서 개시된 바와 같이, 보유자이지만 대기자가 아니므로 체인의 헤드에 위치하는 사용자 A에게는, A가 리소스 R1과의 작업을 종료하게 하는 것이 R1의 대기자들 모두에게 이익이 될 것이므로, 사용자 A의 요구가 적어도 대기자들(B 및 C)의 요구보다 최선인 것처럼 시스템 리소스들이 할당된다. (B가 리소스 R1을 보유자로서 획득하는 때가 나중에 존재할 수도 있지만) 사용자 B는 리소스를 기다리고 있으며 실행하고 있지 않아, 이 시점에서 더 많은 리소스들을 B에게 할당하는 것은 소용이 없으므로, 사용자 B 또한 보유자이지만, 이러한 우선적인 할당이 주어지지 않는다.
도 2A에 나타낸 경합 시나리오는, 각각의 사용자가 단일 사용자에 의해 보유된 리소스를 보유하거나 그리고/또는 기다리는 직선 체인이다. 그러나, 일반적으로, 경합 체인들은 분기될 수 있어, 단일 사용자가 다수 사용자에 의해 대기되는 리소스를 보유하거나 다수 사용자들에 의해 보유된 리소스들을 기다릴 수 있다. 또한, 일부 리소스들은, 다수의 동시적인 보유자들을 허용하는, 공유 액세스를 위해 요청될 수도 있다.
도 2B는, 추가적인 사용자 D가 사용자 B에 의해 보유된 리소스 R3를 기다리고 있다는 점에서, 도 2A에 나타낸 시나리오와 차이가 있는, 제 1 유형의 분기를 가진 경합 시나리오를 나타낸다. 여기에서, 사용자 A에게는, 사용자 A의 요구가 적어도 대기자들(B, C, 및 D)의 요구보다 최선인 것처럼 시스템 리소스들이 할당되는데, 이들 대기자들 모두가 A가 리소스 R1과의 작업을 종료하는 것으로부터 이익을 얻을 것이기 때문이다.
도 2C는, 사용자 C가 사용자 A에 의해 제어되는 리소스 R4를 기다리고 있는 사용자 D에 의해 제어되는 추가적인 리소스 R3를 기다리고 있다는 점에서, 도 2A에 나타낸 시나리오와 차이가 있는, 양자 유형의 분기를 가진 경합 시나리오를 나타낸다. 여기에서 다시, 사용자 A에게는, 사용자 A의 요구가 적어도 대기자들(B, C, 및 D)의 요구보다 최선인 것처럼 시스템 리소스들이 할당되는데, 이들 대기자들 모두가 A가 리소스 R1과의 작업을 종료하는 것으로부터 이익을 얻을 것이기 때문이다.
마지막으로, 도 2D는, 사용자 C 또한, 사용자 E에 의해 보유된 리소스 R4를 기다리고 있는 사용자 D에 의해 보유된 리소스 R3를 기다리고 있다는 점에서, 도 2A에 나타낸 체인과 차이가 있는, 제 2 유형의 분기를 가진 경합 시나리오를 나타낸다. 이론적으로, 이것은, 각각이 하나의 헤드를 갖는 부분적으로 중복되는 2개의 체인들로서 분석될 수 있는데, 하나는 C → B → A 체인이고, 다른 체인은 C → D → E이다. 제 1 체인에서는, 사용자 A에게, 사용자 A의 요구가 적어도 대기자들(B 및 C)의 요구보다 최선인 것처럼 시스템 리소스들이 할당되는 한편, 제 2 체인에서는, 사용자 E에게, 사용자 E의 요구가 적어도 대기자들(C 및 D)의 요구보다 최선인 것처럼 시스템 리소스들이 할당된다.
이것을 요약하는 도 3을 참조하면, 이상적인 구현으로서, 체인의 후속 사용자를 갖는 각각의 사용자가 후속 사용자가 기다리고 있는 리소스를 보유하는 사용자들 체인의 헤드에 위치하는, 대기자가 아닌 사용자를 먼저 식별한다(단계 302). 도 2D에서는, 이것이, 사용자들 A-C로 이루어진 체인에 대해서는 사용자 A일 것이고 사용자들 C-E로 이루어진 체인에 대해서는 사용자 E일 것이다. 다음으로는, 체인 헤드의 사용자에게, 그 사용자의 요구가 적어도 그 체인에서의 최선 대기자의 요구인 것처럼 시스템 리소스를 할당한다(단계 304). 다시 말해, 체인의 헤드에 위치한 사용자의 요구보다 더 큰 요구를 가진 이와 같은 최선 대기자가 존재하고, 이와 같은 대기자의 요구가 사용자의 요구보다 더 크다면, 사용자에게는 대기자의 그러한 요구에 기초해 시스템 리소스들이 할당될 것이다.
2개 체인들로서의 이러한 처리에서, (화살표들의 방향으로 진행하는) 사용자 D의 가지는 사용자 A에게로 공급되지 않으며 따라서 사용자 D는 사용자 A에게 호의를 보임으로써 이익을 취하는 관계에 있지 않으므로, 사용자 A의 리소스 할당은 사용자 D의 요구에 의존하지 않는다. 마찬가지 이유로, 사용자 E의 리소스 할당은 사용자 B의 요구에 의존하지 않는다. 따라서, 바람직한 실시예에서, 이러한 체인들(또는 이러한 체인들의 링크들을 구성하는 리소스들)은 2개의 개별적인 리소스 클러스터들로서 분석되는데, 제 1 리소스 클러스터는 리소스들 R1-R2를 포함하고, 제 2 리소스 클러스터는 리소스들 R3-R4를 포함한다. 제 1 클러스터에서, 사용자 A에게는, 사용자 A의 요구가 적어도 제 1 클러스터의 리소스들(R1 및 R2) 중 하나에 대한 대기자들(B 및 C)의 최선 요구인 것처럼 시스템 리소스들이 할당된다. 마찬가지로, 제 2 클러스터에서는, 사용자 E에게, 사용자 E의 요구가 적어도 제 2 클러스터의 리소스들(R3 및 R4) 중 하나에 대한 대기자들(C 및 D)의 최선 요구인 것처럼 시스템 리소스들이 할당된다.
상기 모든 예들에서, 경합 체인들은 비순환인데, 이것은 화살표들의 방향들로 링크들을 따라가는 것에 의해 폐쇄 경로를 형성할 수 없다는 것을 의미한다. 폐쇄 경로가 존재한다면, 리소스 교착 상태(resource deadlock)가 존재하는 것인데, 리소스 교착 상태는 교착 상태에 관련된 사용자들 중 하나 이상을 차단하는 것에 의해서만 해제될 수 있다.
이제 다중 시스템 구현들의 세부 사항들로 들어가면, 도 4는 몇몇 시스템들상의 트랜잭션들과 리소스들 사이에서의 통상적인 경합 시나리오를 나타낸다. 도면에서, 시스템 Sy1상의 (1의 요구를 가진) 트랜잭션 TxA는 시스템 Sy2상의 트랜잭션들 (2의 요구를 가진) TxB 및 (4의 요구를 가진) TxD에 의해 보유된 리소스 Ra를 기다리고 있다. 시스템 Sy2상의 트랜잭션 TxB는 시스템 Sy3상의 (3의 요구를 가진) 트랜잭션 TxC에 의해 보유된, 그리고 시스템 Sy3상의 (5의 요구를 가진) 트랜잭션 TxE에 의해서도 보유된, 리소스 Rb를 기다리고 있다.
이 예에서는, 시스템 Sy2를 시스템들(Sy1-Sy3)이 경합을 관리하는 방법을 도시하는 것으로 생각할 것이다. 본 발명의 일 태양에 따르면, 시스템 Sy2는 클러스터에서의 경합에 대한 완전한 글로벌 픽처가 아니라, 다음의 표 1에서 지시되는 바와 같은, 경합 정보의 서브세트를 저장하거나 유지한다.
<표 1>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxB(2),TxD(4) Sy1 1 1
Cab Rb TxB(2) Sy3 5 2
Cab 클러스터 Ra, Rb가 링크됨 1
상기 표 1에 나타낸 바와 같이, Sy2는, 보유자들이나 대기자들로서 리소스들을 위해 경합하고 있는 자신의 로컬 트랜잭션들(TxB 및 TxD)에 대한 경합 데이터의 완전한 세트("로컬 시스템 정보")를 저장한다. 로컬 트랜잭션이 경합 중인 이와 같은 각각의 리소스를 위해, Sy2는, 그들의 본질적인 "요구" 값들을 포함하여, 로컬 보유자들 및 대기자들을 추적한다. 또한, 적어도 하나의 로컬 트랜잭션(TxB)이 요청된 리소스(Ra)의 보유자이면서 요청된 다른 리소스(Rb)의 대기자이므로, 시스템 Sy2는 리소스들(Ra 및 Rb)을 공통 클러스터(Cab)에 할당했다.
상기 표 1에 나타내거나 (그것을 그 자체로 저장하거나 요구에 따라 다른 데이터로부터 유도하는 것에 의해) WLM의 로컬 인스턴스에 의해 추적되는 데이터는 로컬 클러스터 데이터, 원격 클러스터 데이터, 및 복합 클러스터 데이터를 포함한다. 로컬 클러스터 데이터는, 로컬 시스템상의 경합 및, 로컬 클러스터 각각에 대한, 로컬 클러스터의 임의의 리소스에 대한 최선 대기자의 요구에 기초한 리소스들의 로컬 클러스터들로의 그룹화를 지시한다. 마찬가지로, 원격 클러스터 데이터는, 소정 원격 시스템에 대해, 원격 시스템상의 경합 및, 각각의 원격 클러스터에 대한, 원격 클러스터의 임의의 리소스에 대한 최선 대기자의 요구에 기초한 리소스들의 원격 클러스터들로의 그룹화를 지시한다. 마지막으로, 대응되는 로컬 데이터와 원격 데이터를 결합하는 것에 의해 생성되는 복합 클러스터 데이터는 시스템들에 걸친 경합 및, 복합 클러스터 각각에 대한, 복합 클러스터의 임의의 리소스에 대한 최선 대기자의 요구에 기초한 리소스들의 복합 클러스터들로의 그룹화를 지시한다.
상기 표 1에서, "로컬 시스템 정보"라는 제목하의 항목들은 로컬 클러스터 데이터를 표현하는데, 로컬 사용자가 경합하의 리소스를 기다리거나 리소스를 보유한다는 점에서 로컬 클러스터 데이터는 로컬 경합에만 기초하기 때문이다. 리소스에 대한 최선 로컬 대기자의 요구는, "로컬 시스템 정보" 아래의 "대기자들" 컬럼을 살펴보는 것에 의해 식별될 수 있다. 따라서, 리소스 Ra의 경우, 로컬 대기자(및 그에 따른 "최선" 로컬 대기자)가 존재하지 않는 반면, 리소스 Rb의 경우, 최선 대기자(TxB)가 2의 요구를 가진다. 로컬 경합에 기초한 리소스들의 클러스터들로의 그룹화가 표 1에 명시적으로 나타나지는 않지만, 로컬 사용자가 하나의 리소스를 보유하면서 다른 것을 기다리는 경우의 리소스 엔트리들의 쌍을 찾아보는 것에 의해 유도될 수 있다. 따라서, 상기 표 1에서, 사용자 TxB를 리소스 Ra의 보유자 및 리소스 Rb의 대기자로서 열거하는 것은, 리소스들(Ra 및 Rb)이 로컬 경합 데이터에 기초해 공통 클러스터에 할당된다는 것을 의미한다.
마찬가지로, "원격 대기자 정보"라는 제목하의 항목들은 원격 클러스터 데이터를 표현하는데, 원격 클러스터 데이터는 소정의 원격 시스템들상의 경합에만 기초하기 때문이다. "시스템 이름" 컬럼의 리소스에 대해 열거된 각각의 원격 시스템에 대한, 최선 대기자의 요구가 인접한 "NQO" 컬럼에서 지시된다. 소정의 원격 시스템으로부터의 경합 데이터에 기초한 리소스들의 클러스터들로의 그룹화가 상기 표 1 에서 지시되지는 않지만, 그것이 로컬 클러스터 할당 정보와 결합되어 복합 클러스터 할당이 획득될 수 있도록 하기 위해, 로컬 WLM 인스턴스에 의해 추적된다. 클러스터들의 결합은 직접적인 방식으로 수행된다. 따라서, 제 1 시스템이 리소스들(A 및 B)을 (그것의 로컬 경합 데이터에 기초해) 공통 클러스터에 할당하고, 마찬가지로 제 2 시스템이 리소스(B 및 C)을 공통 클러스터에 할당하며, 제 3 시스템이 리소스들(C 및 D)을 공통 클러스터에 할당하면, 얻어진 복합 클러스터는 리소스들(A, B, C, 및 D)을 포함한다.
한편, 제 1 컬럼("리소스 클러스터")은 복합 클러스터 데이터를 표현하는데, 제 1 컬럼의 클러스터로의 리소스 할당은 로컬 클러스터 데이터 및 원격 클러스터 데이터 모두에 기초하기 때문이다. 마지막 컬럼("NQO") 또한 복합 클러스터 데이터를 표현하는데, 열거된 요구가 (로컬 시스템으로 보고된) 모든 시스템들에 걸친 리소스에 대한 최선 대기자의 요구가기 때문이다.
시스템 Sy2는 상기한 바와 같은 표 형태로 경합 데이터를 저장할 수 있지만, 통상적으로는, 다음에서 부연되는 바와 같이, 조작의 용이성을 최적화하기 위해 이와 같은 데이터를 다수의 데이터 구조들에 걸쳐 분산할 것이다.
도 5는 로컬 리소스 관리자로부터의 경합 통지에 응답하여 WLM의 로컬 인스턴스에 의해 수반되는 일반적인 절차(500)를 나타낸다. 단계들의 특정 시퀀스가 설명되지만, 각각의 단계가 수행될 때 요구한 입력 데이터가 이용될 수만 있다면, 시퀀스는 달라질 수 있다.
절차(500)는, WLM 인스턴스가, 리소스가 로컬 사용자들에게 해제됨에 따른 리소스의 경합 상태 변화에 대한 통지를 로컬 리소스 관리자로부터 수신할 때, 시작된다. 이러한 변화는 다음 중 하나를 의미할 수 있다.
1. 로컬 사용자가 다른 사용자에 의해 보유된 리소스에 대한 대기자가 되었다.
2. 로컬 사용자가 더 이상 리소스에 대한 대기자가 아니다. 이것은, 로컬 사용자가 리소스를 보유자로서 획득했거나 (다음 예에서 설명되는 바와 같이, 어쩌면 로컬 사용자가 종료되어 더 이상 존재하지 않기 때문에) 보유자 또는 대기자로서 더 이상 리소스에 관심이 없기 때문일 수 있다.
3. 로컬 사용자에 의해 보유된 리소스가 현재 경합 중이다.
4. 로컬 사용자에 의해 보유된 리소스가 더 이상 경합 중에 있지 않다.
로컬 리소스 관리자로부터의 통지는 리소스 뿐만 아니라 로컬 보유자들 및 대기자들도 식별한다. 바람직한 실시예에서, WLM은 (이러한 데이터의 특정 소스가 본 발명의 일부를 형성하지는 않지만) 별도로 나타내지 않은 SRM 컴포넌트로부터 이들 보유자들 및 대기자들의 (본 발명에 따라 변경된 요구들이 아니라 그들의 본질적인 요구들인) 개별적인 "요구들"을 획득한다.
리소스 관리자 인스턴스로부터 이러한 통지를 수신하는 것에 응답하여, WLM의 로컬 인스턴스는 먼저 문제가 되는 리소스에 대한 로컬 경합 데이터를 업데이트한다(단계 504). 이러한 업데이트 단계는 로컬 시스템상에서 새롭게 경합 중인 리소스에 대해 새로운 엔트리를 생성하는 단계, 로컬 시스템상에서 이미 경합 중인 리소스에 대한 기존 엔트리를 수정하는 단계, 또는 로컬 시스템상에서 더 이상 경합 중이지 않은 리소스에 대한 기존 엔트리를 삭제하는 단계를 포함할 수 있다. 이러한 로컬 경합 데이터는,이와 같은 사용자의 "요구"와 함께, 리소스를 보유하거나 기다리는 로컬 사용자의 식별 정보를 포함한다.
로컬 경합 데이터를 업데이트한 후, WLM의 로컬 인스턴스는 요구하다면 리소스의 클러스터 할당을 업데이트한다(단계 506). 디폴트로, 리소스는 자신만을 멤버로서 포함하는 단순 클러스터(trivial cluster)에 할당된다. 로컬 경합 데이터 또는 원격 경합 데이터에 의해 지시된다면, 리소스는 하나 이상의 다른 리소스를 포함하는 비단순 클러스터에 할당된다. 리소스는, 로컬 경합 데이터에 기초해, 그 데이터가, 동일한 로컬 사용자가 리소스들 중 하나를 보유하면서 다른 것을 기다린다는 것, 즉, 리소스가 다른 리소스를 기다리고 있는 사용자에 의해 보유되었거나 다른 리소스를 보유 중인 사용자에 의해 대기되고 있다는 것을 지시한다면, 다른 리소스를 포함하는 클러스터에 할당된다. 리소스는, 원격 경합 데이터에 기초해, 그 데이터가 적어도 하나의 원격 시스템이 원격 시스템에 로컬인 경합 데이터에 기초해 2개의 리소스들을 공통 클러스터에 할당했다는 것을 지시한다면, 다른 리소스를 포함하는 클러스터에 할당된다. 따라서, 이러한 클러스터 할당 단계는, (1) 리소스에 대한 클러스터 할당을 변경없이 유지하는 단계; (2) 변경된 로컬 경합 데이터 및 임의의 기존 원격 경합 데이터가 이러한 할당을 지시한다면, 리소스를 비단순 클러스터에 새롭게 할당하는 단계; 또는 (3) 변경된 로컬 경합 데이터 및 임의의 기존 원격 경합 데이터가 더 이상 이러한 할당을 지시하지 않으면, 기존의 클러스터를 분해하는 단계를 수반할 수 있다. 리소스의 클러스터 할당이 변경되면, 그 변경에 의해 영향을 받는 다른 리소스들에 대한 클러스터 정보 또한 이때 변경된다.
동시에, WLM의 로컬 인스턴스는, 리소스에 대한 로컬 경합 데이터에만 기초하는, 리소스에 대한 귀속된 "요구" 값을 업데이트한다(단계 508). 이러한 귀속된 요구는, 리소스에 대한 로컬 경합 데이터에 의해 지시되는 바와 같이, 리소스에 대한 어떠한 로컬 대기자에 대한 요구들보다 크다. 이 단계를 클러스터 할당 단계에 수반되는 것으로 나타내기는 했지만, 어떤 단계도 다른 단계의 결과를 사용하지 않으므로, 단계들의 순서는 중요하지 않다.
리소스에 대한 클러스터 할당 및 귀속 요구 값을 업데이트한 이후의 소정 시점에서, WLM의 로컬 인스턴스는, (1) 로컬 및 원격 경합 데이터 모두(상기 표 1의 "NQO" 컬럼)에 기초하는, 리소스에 대한 귀속 요구 값; (2) 로컬 및 원격 경합 데이터에 기초하는, 리소스들의 복합 클러스터로의 그룹화; 및 (3) 전체로서의 리소스 클러스터에 대한 귀속 "요구" 값을 포함하는, 자신의 복합 클러스터 데이터를 업데이트한다(단계 510). 간단하게, 마지막으로 제시된 것이 복합 클러스터를 구성하는 모든 리소스들에 대한 요구들 중 최고인데, 여기에서 요구는 클러스터를 구성하는 리소스들에 대한 원격 경합 데이터 뿐만 아니라 로컬 경합 데이터에도 기초한다.
그 다음, WLM의 로컬 인스턴스는 자신의 업데이트된 로컬 경합 데이터에 대한 요약을 클러스터의 다른 시스템들로 동보한다(단계 512). 이러한 데이터 요약은 다음과 같은 것들을 포함한다.
1. 로컬 시스템 이름.
2. 리소스 이름. 리소스가 다중 시스템 리소스라면, 리소스 이름은 클러스터에 걸쳐 인지되는 리소스의 실제 이름이다. 리소스가 로컬 리소스라면, 리소스 이름은, 다음의 예 2에서 설명되는 바와 같이, 실제 로컬 리소스 이름을 위한 "프럭시"로서 기능하는 일반적인 로컬 리소스 이름이다.
3. 리소스가 할당되는 클러스터를 식별하는 클러스터 ID. 이 값은 확실하게 로컬인데, 수신 시스템은, 2개의 리소스들이 송신 시스템상의 동일 클러스터에 속하는지를 식별하기 위해 이 값을 비교하지만, 이 값의 구조 또는 내용들에 관해서는 어떠한 가정도 하지 않는다. 다음의 예들에서, 클러스터 이름은, 순전히 판독자의 이해를 돕기 위한 기억용 장치로서, 클러스터의 다중 시스템 리소스들에 대한 결합으로서 주어진다. 그러나, 바람직한 실시예에서, "클러스터 이름"은 실제로, 수신 시스템이 유일하게 동일한 송신 시스템으로부터 유래하는 다른 클러스터 ID들과의 동일성을 테스트할 수 있는 까다로운 "클러스터 ID"이다.
4. 송신 시스템의 "로컬 시스템 정보"에만 기초하는, 리소스에 대한 "요구" - 즉, 리소스에 대한 최선의 로컬 대기자. 이것은, 그것의 데이터만이 고려된다면, 이 시스템의 요구가 무엇이어야 한다고 생각하는지에 대한 투표로서 간주될 수 있다. 리소스에 대한 로컬 대기자가 존재하지 않으면, 다음의 예 1에서 설명되는 바와 같이, 로컬 요구가 존재하지 않는다는 것을 지시하는 더미 값이 전송된다.
5. 송신 시스템상의 트랜잭션이 리소스가 클러스터에 포함될 것을 강제하는지의 여부, 즉, 리소스가 로컬 경합 데이터에 기초해 비단순 클러스터에 할당되는지의 여부에 대한 지시. 이것은 부울 값이지만, 예/아니오가 아니라, 본 설명에서는 로컬/원격의 값들이 주어질 것이다. 로컬은, (1) 송신 시스템이, 리소스에 대해 대기자이면서 다른 리소스의 보유자이기도 한 하나 이상의 트랜잭션을 가진다는 것; 및 (2) 동일한 트랜잭션이 이 리소스에 대해 대기자이거나 보유자라는 것(따라서, 송신 시스템은 그룹으로서 관리될, 트랜잭션(들)에 접속된 리소스들의 그룹을 요구로 한다는 것)을 의미한다. 원격은, 송신 시스템의 로컬 데이터 중 어떤 것도 리소스가 비단순 클러스터의 일부일 것을 요구하지 않는다는 것을 의미한다. 단순 클러스터들은 정확히 하나의 리소스를 가지며 항상 클러스터링 코드를 좀더 용이한 비트화 하기 위한 '원격' 값을 가진다.
클러스터 재할당이 있었다면, WLM 또한 재할당에 의해 영향을 받는 각각의 다른 리소스에 대한 유사한 정보를 동보한다.
마지막으로, 로컬 WLM 인스턴스는 로컬 사용자들의 "요구" 값들에 대해 요구한 조정들을 수행한다(단계 514). 좀더 구체적으로, WLM은 다른 리소스에 대한 대기자는 아닌(따라서 경합 체인의 헤드에 위치한) 리소스의 로컬 보유자에 대한 "요구"를 조정하여, 그것을 리소스를 포함하는 클러스터의 최선 대기자에 대한 본질적인 요구와 매칭시킨다. 조정된 값은, 사용자에게 할당되는(그리고 값들을 다른 사용자들에게 귀속시키는데 사용되는) 본질적인 요구 값이 아니라, 시스템 리소스들을 보유자에게 할당하는데 실제로 사용되는 귀속 "요구" 값이다. 따라서, 소정 요구 값을 귀속시키는 이유가 사라지면, 사용자에게 귀속된 요구 값은 본질적인 요구 값이나 덜 중요한 귀속 요구 값으로 복귀한다.
도 6은 원격 시스템상의 WLM 인스턴스로부터 원격 경합 데이터의 동보를 수신하는 것(단계 602)에 응답하여 WLM의 로컬 인스턴스에 의해 수반되는 일반적인 절차(600)를 나타낸다. 이러한 동보는, 영향을 받은 리소스 각각에 대한, 단계 512의 설명에서 열거된 정보를 포함한다.
이러한 통지를 수신하는 것에 응답하여, WLM의 로컬 인스턴스는 먼저 문제가 되는 리소스에 대한 원격 경합 데이터를 업데이트한다(단계 604). 단계 304에서 설명된 로컬 경합 데이터의 업데이트와 마찬가지로, 이러한 업데이트 단계는 로컬 시스템상에서 새롭게 경합 중인 리소스에 대해 새로운 엔트리를 생성하는 단계, 로컬 시스템상에서 이미 경합 중인 리소스에 대한 기존 엔트리를 수정하는 단계, 또는 로컬 시스템상에서 더 이상 경합 중이지 않은 리소스에 대한 기존 엔트리를 삭제하는 단계를 포함할 수 있다. 이러한 원격 경합 데이터는, 리소스에 대한 원격 시스템상의 최선 대기자에 대한 요구와 함께, 리소스에 대한 대기자를 가진 임의의 원격 시스템에 대한 식별 정보를 포함한다.
리소스에 대한 자신의 원격 경합 데이터를 업데이트한 후, WLM의 로컬 인스턴스는, 단계 510에서와 같이, 리소스에 대한 자신의 복합 클러스터 데이터를 업데이트한다. 단계 510에서와 같이, 업데이트된 복합 클러스터는 (1) 로컬 및 원격 경합 데이터 모두에 기초하는, 리소스에 대한 귀속 요구 값; (2) 로컬 및 원격 경합 데이터에 기초하는, 리소스들의 복합 클러스터로의 그룹화; 및 (3) 로컬 및 원격 경합 데이터에 기초하는, 전체로서의 리소스 클러스터에 대한 귀속 "요구" 값을 포함한다(단계 606).
마지막으로는, 단계 514에서와 같이, 로컬 WLM 인스턴스는 다른 리소스에 대한 대기자는 아닌(따라서 경합 체인의 헤드에 위치하는) 리소스의 로컬 보유자에 대한 "요구"를 조정하여, 그것을 리소스를 포함하는 클러스터의 최선 대기자에 대한 본질적인 요구와 매칭시킨다(단계 608).
상세한 예들 및 시나리오들은 다음과 같다.
예 1("간단한" 전이 클로우져의 경우)
이 예는 크로스-시스템 전이 클루우져의 경우로서, 하나 이상의 리소스가 관련되며, 기다리는 다른 (요구한) 사용자가 이동 중인 상이한 리소스를 취하도록 하기 위해, 하나의 리소스를 보유 중인 불요구한 사용자가 지원된다. 토폴로지는, 동일한 리소스에 대한 보유자들 및 대기자들이 상이한 시스템들상에 존재하는, 다중 시스템이다.
이것은, 다중 시스템 리소스들이 동일한 리소스 클러스터로 관련될 경우에만 발생하는 것을 나타내므로, "간단한" 전이 클로우져 경우이다.
이 예의 표기 방법은 다음과 같다. 각각의 보유자 및 대기자는 트랜잭션(Txn, 예를 들어, TxA, TxB)이고 NQO(eNQueue Order) 값을 가진다. NQO 값들은, 더 작은 값일수록 (좀더 지원 가치가 있는) 좀더 요구한 것이다. 각각의 시스템은 번호가 매겨지고(Sy1, Sy2) 이들 시스템들 모두는 동일한 "시스템 클러스터"에 속한다. 각각의 리소스는 소문자를 가지며(Ra, Rb) 다중 시스템의 범위내에 존재한다. 각각의 리소스 클러스터는, 리소스들의 리스트가 클러스터에 속한다는 것을 나타내는 하나 이상의 소분자들을 가진다(Ca, Cab). 리소스들을 획득하기 위한 요청들은 다른 언급이 없다면 배타적인 제어를 위한 것이다.
시간 순서의, 이벤트들의 시퀀스는 다음의 표 2와 같다.
<표 2>
시간(t) 이벤트
1 경합이 없음.
2 Sy1: TxB가 Ra를 획득함.
3 Sy2: TxC가 Rb를 획득함.
6 Sy1: TxB가 Rb를 요청하지만 TxC가 그것을 보유하므로 보류됨.
7 Sy2: TxA가 Ra를 요청하지만 TxB가 그것을 보유하므로 보류됨.
10 Sy2: TxC가 Rb를 해제함.
11 Sy1: TxB가 재개되며 Rb를 획득함.
12 Sy1: TxB가 Rb를 해제함.
13 Sy1: TxB가 Ra를 해제함.
14 Sy2: TxA가 재개되며 Ra를 획득함(경합이 없음).
t < 6 동안에는, 경합이 존재하지 않으므로 어떤 시스템에도 WLM 경합 데이터가 존재하지 않는다.
t = 6에서, 경합이 발생한다(Sy1: TxB가 Rb를 요청하지만 TxC가 그것을 보유하므로 보류됨). 그 결과, Sy1은:
1. 리소스 Rb에 대한 경합을 추적하기 시작한다.
2. Rb만으로 이루어진 리소스 클러스터를 생성한다.
3. TxB를 Rb에 대한 로컬 대기자 리스트에 추가한다.
이 시점에서, Sy1의 상태는 다음의 표 3과 같다.
<표 3>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cb Rb TxB(4)
Sy1이 다음으로 자신의 리소스 토폴로지를 재평가할 때, Sy1은 Cb에 대한 NQO를 계산한다.
1. Sy1이 그것에 관해 알고 있는(사실상 이 시점에서는 유일한), Rb에 대한 토폴로지와 관련된 최선 엔티티가 TxB이므로, TxB의 NQO(4)를 Rb에 대한 NQO로 사용한다.
2. Cb의 모든 리소스들에 대한 NQO를 계산하였으므로, Cb에 대한 NQO를 Cb의 모든 리소스 NQO 중 최선으로서 계산한다. 이것은 4의 NQO를 Rb로부터 Cb로 전파한다.
3. Rb가 다중 시스템 리소스이므로, Sy1은 Rb의 정보를 시스템 클러스터의 여타 모든 시스템들로 동보한다. 상술된 바와 같이, Rb에 대해 송신된 정보는 시스템 이름, 리소스 이름, 클러스터 ID, 송신 시스템의 "로컬 시스템 정보"에만 기초하는 리소스에 대한 NQO, 및 "로컬"로 설정될 때는 송신 시스템상의 트랜잭션이 리소스가 클러스터에 포함될 것을 강제한다는 것을 지시하는 부울 값(로컬/원격)을 포함한다.
4. 상기 설명에 기초하면, 송신된 데이터는 Sy1, Rb, Cb, 4, 원격이다.
이 시점에서, Sy1의 상태는 다음의 표 4와 같다.
<표 4>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cb Rb TxB(4) 4
Sy2는 이 정보를 수신하는 동시에, Sy2에서 실행 중인 리소스 관리자 인스턴스는 Sy2에 Rb에 관한 경합을 통지한다. 연산들의 순서는 무관하지만, 앞서 설명된 순서로 열거될 것이다. 코드의 유일한 "트릭"은, Sy2상의 리소스 관리자가 경기에서 승리하면, 원격 데이터가 도달할 때, 코드는 이미 등가의 클러스터를 구축했다는 것을 인지하고 원격 정보를 자신의 기존 데이터에 추가해야 한다는 것이다.
Sy1으로부터 원격 정보를 수신한 후, Sy2의 상태는 다음의 표 5와 같다.
<표 5>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cb Rb Sy1 4
Sy2의 로컬 리소스 관리자가 Rb에 관한 경합을 Sy2에 통지하고 나면, Sy1 및 Sy2의 상태는 다음의 표 6 및 표 7과 같아진다.
<표 6>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cb Rb TxB(4) 4
<표 7>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cb Rb TxC(5) Sy1 4 4
Sy2상의 로컬 NQO가, TxC의 NQO인 5가 아니라 4라는 것에 주의한다. 첫번째, 리소스 보유자들의 NQO(s)는 리소스의 NQO에 절대 영향을 미치지 않는데, 보유자는 실행 중이므로, WLM의 정책 조정 코드는 이미 NQO를 암시적으로 사용하고 있다. 두번째, Sy2는 이제 시스템 클러스터의 다른 어딘가에 4의 NQO를 가진 트랜잭션이 기다리고 있다는 것을 알고 있는데, 4는 5보다 좀더 요구한 것으로 정의되므로, Rb에 대한 NQO는 4보다 작을 수 없다.
t = 7에서는, 다른 리소스에 대해 경합이 발생한다(Sy2: TxA가 Ra를 요청하지만 TxB가 그것을 보유하므로 보류됨). 도 7A는 t= 7 이후의 토폴로지를 나타낸다.
리소스 Ra 또한 다중 시스템 범위를 가지므로, 이것은, 다음의 표 8 및 표 9와 같은 상태를 보여주는, Rb에 대해 발생한 것과 같은, 유사한 비트의 주고받기(similar bit of hand-shaking)를 초래한다.
<표 8>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra Sy2 1 1
Cb Rb TxB(4) 4
<표 9>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxA(1) 1
Cb Rb TxC(5) Sy1 4 4
일단 Sy1상의 리소스 관리자 인스턴스가 Ra에 관한 경합을 Sy1에 통지하고 나면, Sy1은 Ca 및 Cb를 (새로운) 클러스터 Cab로 링크하는 필수적인 단계를 수행한다. Ra에 관한 경합이 단순히 보고된 후, 유효한(그러나 아직은 불완전한) 상태는 다음의 표 10과 같을 수 있다(이들이 2개의 개별적인 단계들인지 아니면 하나의 통합된 단계인지의 코드 구현에 따라, 이들은 별개로 표시된다).
<표 10>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxB(4) Sy2 1 1
Cb Rb TxB(4) 4
Sy1이 다음으로 자신의 토폴로지를 재평가할 때, Sy1은 로컬 정보에 기초해 하나의 트랜잭션(TxB)이 2개의 상이한 리소스들(Ra 및 Rb)와 관련되어 있으므로 이들 리소스들의 관리가 통합되어야 한다는 것(다시 말해, Ra 및 Rb가 동일한 리소스 클러스터 Cab에 존재해야 한다는 것)을 알게 된다. 클러스터의 NQO는 자신의 멤버 리소스들 중 최선 NQO(이 경우에서는 1)이다.
<표 11>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxB(4) Sy2 1 1
Cab Rb TxB(4) 4
Cab 클러스터 Ra 및 Rb가 링크됨 1
Ra 및 Rb가 함께 관리되어야 한다는 "신호"는, 경합하의 하나 이상의 리소스들을 보유하면서 경합하의 하나 이상의 리소스들을 기다리지도 하는 하나 이상의 트랜잭션이 존재한다는 것이다.
자신의 토폴로지 뷰를 재평가한 후, Sy1은 (전과 같이) 자신의 뷰를 클러스터의 다른 시스템들에 동보한다.
1. Sy1, Ra, Cab, 더미 NQO 값, 로컬.
2. Sy1, Rb, Cab, 4, 로컬.
더미 NQO 값은 단지, WLM이 생성할 수 있는 어떤 것보다도 요구가 덜한 값이다. Sy1은 로컬 대기자들을 갖지 않으므로, 순수한 로컬 NQO 값을 갖지 않지만, Ra 및 Rb가 그것의 로컬 데이터에 기초해 하나의 유닛으로서 관리되어야 한다는 "가상 메시지"를 송신해야 한다.
Sy2는 (Ca 및 Cb가 통합되어야 한다는 것을 의미하는, Ra 및 Rb가 하나의 유닛으로서 관리되어야 한다는 사실을 포함하는) 데이터를 통합하여, 다음의 표 12와 같은 결과를 얻는다.
<표 12>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxA(1) 1
Cab Rb TxC(5) Sy1 4 4
Cab 클러스터 Sy1: Ra 및 Rb가 링크됨 1
어느 쪽도 완전한 토폴로지의 카피를 갖고 있지 않은 경우라 하더라도, 이제 양자의 시스템들은 문제의 중요성(즉, 최선 대기자의 NQO 값)에 동의한다.
t = 10에서는, 경합이 풀리기 시작한다(Sy2: TxC가 Rb를 해제함). Rb에 대한 Sy2의 뷰는 이제 원격 데이터만을 포함한다.
<표 13>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxB(4) Sy2 1 1
Cab Rb TxB(4) 4
Cab 클러스터 Ra 및 Rb가 링크됨 1
<표 14>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxA(1) 1
Cab Rb Sy1 4 4
Cab 클러스터 Sy1: Ra 및 Rb가 링크됨 1
t = 11에서, Sy1상의 리소스 관리자 인스턴스는, Rb가 이용 가능하다는 것을 발견하고 Rb를 자신의 큐(queue)에 기다리는 제 1 대기자에게 제공한다(Sy1: TxB가 재개되어 Rb를 획득함). 리소스 관리자의 대기 큐는 이제 비어 있으므로, 그것은 Rb의 경합이 끝났다는 것을 지시할 것을 WLM에 통지한다. (타이밍 윈도들로 인해 2개의 시스템들이 상이한 클러스터들에 동일한 리소스를 가질 수도 있기는 하지만) 각각의 시스템내에서 임의의 단일 리소스는 단일 클러스터에만 속할 수 있으므로, Sy1은 그것의 리소스 클러스터로부터 Rb를 제거한다.
<표 15>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxB(4) Sy2 1 1
Sy2상의 리소스 관리자 인스턴스는 Rb가 더 이상 경합되지 않는다는 것을 통지받는 동시에(리소소 관리자 구현에 따라, 이것은 t = 10에서와 같이 빨리 발생할 수도 있다), 이 또한 자신의 리소스 토폴로지로부터 Rb를 제거한다.
<표 16>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxA(1) 1
t = 12에서는, 해제된 리소스가 더 이상 경합 중이 아니므로, 변화가 없다(Sy1: TxB가 Rb를 해제함).
t = 13에서는, 경합이 완전히 풀린다(Sy1: TxB가 Ra를 해제함). Sy1상의 리소스 관리자 인스턴스는 Ra의 경합 종료를 신호할 것을 WLM에 통지한다.
<표 17>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
t = 14에서는, Sy2 또한 경합의 종료를 알게 된다[Sy2: TxA가 재개되며 Ra를 획득함(경합이 없음)]. Sy2상의 리소스 관리자 인스턴스는 Ra의 경합 종료를 신호할 것을 WLM에 통지한다. <표 18>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
예 2(로컬 리소스들을 가진 전이 클로우져의 경우)
이 예는 또 하나의 크로스-시스템 전이 클로우져의 경우로서, 하나 이상의 리소스가 관련되며, 기다리는 다른 (요구한) 사용자가 이동 중인 상이한 리소스를 취하도록 하기 위해, 하나의 리소스를 보유 중인 불요구한 사용자(unneedy user)가 지원되어야 한다. 토폴로지는 역시, 동일한 리소스에 대한 보유자들 및 대기자들이 상이한 시스템들상에 존재하는, 다중 시스템이다. 또한 그리고 예 1과 달리, 각각의 시스템은 순수한 로컬 (비-다중 시스템) 리소스들상의 동일한 트랜잭션들에 관한 경합을 가진다. 이것은, 다중 시스템과 단일 시스템 리소스들 모두가 동일한 리소스 클러스터에 관련될 때 어떤 일이 발생하는지를 나타낸다.
표기 방법은, 다중 시스템 리소스들은 대문자 R(Ra, Rb)을 사용하는 한편, 로컬 리소스들은 소문자 r(rc, rd)을 사용한다는 것을 제외하면, 예 1에서와 동일하다. Rlocal(= RL)은 "원격 시스템에 대해 로컬인 범위내의 리소스들의 소정 미지 세트"를 위한 프럭시 이름이다. 실제 값은 관련이 없으며, 요구한 것은, 모든 참가자들이 이 값에 동의하고 이 값이 유효한 임의의 리소스 이름과 충돌하지 않아야 한다는 것이다.
시간 순서의, 이벤트들의 시퀀스는 다음의 표 19와 같다.
<표 19>
시간(t) 이벤트
1 경합이 없음.
2 Sy1: TxB가 Ra를 획득함.
3 Sy2: TxC가 Rb를 획득함.
4 Sy1: TxB가 rl을 획득함.
5 Sy2: TxA가 rj를 획득함.
6 Sy1: TxB가 Rb를 요청하지만 TxC가 그것을 보유하므로 보류됨.
7 Sy2: TxA가 Ra를 요청하지만 TxB가 그것을 보유하므로 보류됨.
8 Sy1: TxS가 rl을 요청하지만 TxB가 그것을 보유하므로 보류됨.
9 Sy2: TxT가 rj를 요청하지만 TxA가 그것을 보유하므로 보류됨.
10 Sy2: TxC가 Rb를 해제함.
11 Sy1: TxB가 재개되며 Rb를 획득함.
12 Sy1: TxB가 Rb를 해제함.
13 Sy1: TxB가 Ra를 해제함.
14 Sy2: TxA가 재개되며 Ra를 획득함(다중 시스템 경합은 없음).
15 Sy1: TxB가 rl을 해제함.
16 Sy1: TxS가 재개되며 rl을 획득함.
17 Sy2: TxA가 rj를 해제함.
18 Sy2: TxT가 재개되며 rj를 획득함.
t < 8 동안에는, 각 시스템상의 경합 상태가 예 1에서와 정확하게 동일하므로, 여기에서는 설명하지 않을 것이다.
t = 8에서, 로컬(비-다중 시스템) 리소스 rl상에서 경합이 발생한다(Sy1: TxS가 rl을 요청하지만 TxB가 그것을 보유하므로 보류됨). 리소스 rl은 Sy1상의 리소스 클러스터로만 통합된다. TxS로부터의 rl에 대한 NQO는 3이지만, 클러스터 Cabl은 Ra로 인해 여전히 1의 NQO를 가진다.
<표 20>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cabl Ra TxB(4) Sy2 1 1
Cabl Rb TxB(4) 4
Cabl rl TxB(4) TxS(3) 3
Cabl 클러스터 Ra, Rb, rl이 링크됨 1
Sy1이 자신의 클러스터 뷰를 동보할 때, Ra 및 Rb가 다른 시스템들에 대해 가시적일 수 있는 클러스터의 유일한 리소스들이므로, Sy1은 rl을 직접적으로 동보하지 않을 것이다. 대신에, Sy1은 (우리가 rl만을 알고 있는) Sy1의 로컬 리소스들 모두에 대한 프럭시(Rlocal)를 동보할 것이다.
1. Sy1, Ra, Cabl, 더미 NQO 값, 로컬.
2. Sy1, Rb, Cabl, 4, 로컬.
3. Sy1, Rlocal, Cabl, 3, 로컬.
이 데이터를 수신하여 자신의 토폴로지를 업데이트한 후, Sy2는 이것을 다음의 표 21의 상태라고 생각한다.
<표 21>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
CabL Ra TxA(1) 1
CabL Rb TxC(5) Sy1 4 4
CabL Rlocal Sy1 3 3
CabL 클러스터 Sy1: Ra, Rb, Rlocal이 링크됨 1
t = 9에서는, 다른 로컬 리소스가 다른 시스템상에서의 경합을 나타낸다(Sy2: TxT가 rj를 요청하지만 TxA가 그것을 보유하므로 보류됨). 도 7B는 t = 9 이후의 토폴로지를 나타낸다.
Sy2상에서 Sy1에 대해 수행된 것과 유사한 프로세싱이 발생한 다음, Sy2는 자신의 데이터를 Sy1으로 동보한다. Sy2는 다음과 같은 것들을 동보한다.
1. Sy2, Ra, CabL, 1, 로컬.
2. Sy2, Rb, CabL, 더미 NQO 값, 원격.
3. Sy2, Rlocal, CabL, 2, 로컬.
상기 동보들에서, Sy2상의 로컬 리소스들에 대한 프럭시 이름은, 후술되는 바와 같이, 프럭시는 전체로서의 시스템 클러스터에 대해서가 아니라 각각의 리소스 클러스터에 대해 정의되므로, 클러스터 이름에 의해 암시적으로 한정된다. 또한, Ra 및 Rlocal의 2개 리소스들만이 로컬 데이터에 기초해 공통 클러스터에 할당될 수 있으므로, 이들에 대한 동보들만이 부울 값 "로컬"을 포함한다.
<표 22>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
CablL Ra TxB(4) Sy2 1 1
CablL Rb TxB(4) 4
CablL rl TxB(4) TxS(3) 3
CablL Rlocal Sy2 2 2
CablL 클러스터 Ra, Rb, rl이 링크됨 Sy2: Ra, Rb, Rlocal이 링크됨 1
<표 23>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
CabLj Ra TxA(1) 1
CabLj Rb TxC(5) Sy1 4 4
CabLj Rlocal Sy1 3 3
CabLj rj TxA(1) TxT(2) 2
CabLj 클러스터 Ra, Rb, rj가 링크됨 Sy1: Ra, Rb, Rlocal이 링크됨 1
"Sy2,2" 엔트리를 Sy2상의 Rlocal에 대한 "원격 대기자 정보"에 추가하거나 더미 트랜잭션을 Sy2상의 "로컬 시스템 정보.대기자들"에 추가하는 것에 의해, 모든 로컬 리소스 경합을 요약할 수도 있지만, 상기 표는 이러한 최적화없이 나타낸 것이다. 그것은, Rlocal로 하여금 상기 방법들 중 하나에 의해 로컬 상태 데이터를 요약하게 함으로써 동보 코드를 좀더 간단하게 할 수 있을 것이며, 그 다음, Rlocal은 다중 시스템 범위에서 생성될 수 있으므로 동보 코드에서의 특수한 경우들이 불요구할 것이다. 분명히 특수한-경우여야 하는 다른 경우들이 존재한다. 사실상, 시스템 당 하나가 아니라, 리소스 당 하나의 Rlocal을 허용해야 한다.
t = 10에서는, 경합이 풀리기 시작한다(Sy2: TxC가 Rb를 해제함). Sy2의 Rb에 대한 뷰는 이제 원격 데이터만을 포함한다.
<표 24>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
CablL Ra TxB(4) Sy2 1 1
CablL Rb TxB(4) 4
CablL rl TxB(4) TxS(3) 3
CablL Rlocal Sy2 2 2
CablL 클러스터 Ra, Rb, rl이 링크됨 Sy2: Ra, Rb, Rlocal이 링크됨 1
<표 25>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
CabLj Ra TxA(1) 1
CabLj Rb Sy1 4 4
CabLj Rlocal Sy1 3 3
CabLj rj TxA(1) TxT(2) 2
CabLj 클러스터 Ra, Rb, rj가 링크됨 Sy1: Ra, Rb, Rlocal이 링크됨 1
t = 11에서는, Sy1상의 리소스 관리자 인스턴스가 Rb가 이용 가능하다는 것을 발견하고 Rb를 자신의 큐에 기다리고 있는 제 1 대기자에게 제공한다(Sy1: TxB가 재개되며 Rb를 획득함). 리소스 관리자의 대기 큐는 이제 비어 있으므로, Rb의 경합이 끝났다는 것을 지시할 것을 WLM에 통지한다. 동시에, Sy2상의 리소스 관리자 인스턴스도 Rb가 더 이상 경합되지 않는다는 것을 통지 받는다(리소스 관리자 구현에 따라, 이것은 t = 10에서만큼 빨리 발생했을 수도 있다). 각 시스템내에서는 하나의 리소스만이 하나의 클러스터에 속할 수 있으므로, 양자의 시스템들 모두 자신의 리소스 클러스터로부터 Rb를 제거해야 한다. 2개의 시스템들은, 타이밍 윈도들로 인해 일시적으로 또는 리소스 토폴로지로 인해 영구적으로, 동일한 리소스를 동일한 순간에 상이한 클러스터들에 가질 수도 있다. 2개 이상의 시스템들이 관련될 경우, 비대칭 토폴로지들의 예들이 나타난다.
<표 26>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
CalL Ra TxB(4) Sy2 1 1
CalL rl TxB(4) TxS(3) 3
CalL Rlocal Sy2 2 2
CalL 클러스터 Ra,rl이 링크됨 Sy2: Ra, Rlocal이 링크됨 1
<표 27>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
CaLj Ra TxA(1) 1
CaLj Rlocal Sy1 3 3
CaLj rj TxA(1) TxT(2) 2
CaLj 클러스터 Ra, rj가 링크됨 Sy1: Ra, Rlocal이 링크됨 1
t = 12에서는, 해제된 리소스가 더 이상 경합 상태에 있지 않으므로, 변화가 없다(Sy1: TxB가 Rb를 해제함).
t = 13에서는, 다중 시스템 경합이 완전히 풀린다(Sy1: TxB가 Ra를 해제함). Sy1상의 리소스 관리자 인스턴스는 Ra의 경합 종료를 신호할 것을 WLM에 통지한다.
Sy1상의 리소스 클러스터는 이제 로컬 리소스들 및 다중 시스템 경합에 관련된 원격 로컬 리소스들에 대한 프럭시만으로 이루어져 있으므로, 프럭시 또한 클러스터로부터 제거될 수 있다. Sy2는 Ra의 경합 종료를 통지받지 않았으므로, 여전히 자신의 프럭시 리소스를 클러스터의 일부로서 유지한다.
<표 28>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cl rl TxB(4) TxS(3) 3
<표 29>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
CaLj Ra TxA(1) 1
CaLj Rlocal Sy1 3 3
CaLj rj TxA(1) TxT(2) 2
CaLj 클러스터 Ra, rj가 링크됨 Sy1: Ra, Rlocal이 링크됨 1
t = 14에서는, Sy2 또한 경합의 종료를 알게 된다(Sy2: TxA가 재개되며 Ra를 획득함). Sy2상의 리소스 관리자 인스턴스는 Ra의 경합 종료를 신호할 것을 WLM에 통지한다.
<표 30>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cj rj TxA(1) TxT(2) 2
t = 15에서는, 로컬 리소스들 중 하나에 대한 경합이 종료되고(Sy1: TxB가 rl을 해제함), TxS가 재개된다. 리소스 관리자가 rl에 대한 경합이 끝났다는 것을 Sy1에 통지하면, Sy1의 토폴로지는 다시 공백이 된다.
t = 17에서는, 마지막 경합이 끝나고(Sy2: TxA가 rj를 해제함) TxT가 재개된다. 리소스 관리자가 rl에 대한 경합이 끝났다는 것을 Sy2에 통지하면, Sy2의 토폴로지도 다시 공백이 된다.
예 3: 클러스터 분해하기(BreakClu1)
이 예는 리소스 클러스터를, 관련된 리소스들 중 하나에 대한 경합 종료없이, 더 작은 클러스터들로 분해하는 것과 관련이 있다. Ra와 Rb를 링크하는 트랜잭션은 생략되지만, 각각의 리소스가 다른 대기자들을 가지므로, 양자의 리소스들은 경합 이후에도 여전히 존재한다. 표기 방법은 예 1에서와 동일하다.
시간 순서의, 이벤트들의 시퀀스는 다음의 표 31과 같다.
<표 31>
시간(t) 이벤트
1 경합이 없음.
2 Sy1: TxD가 Rb를 획득함.
3 Sy2: TxA가 Ra를 획득함.
4 Sy1: TxD가 Ra를 요청하지만 TxA가 그것을 보유하므로 보류됨.
5 Sy1: TxB가 Ra를 요청하지만 TxA가 그것을 보유하므로 보류됨.
6 Sy1: TxE가 Rb를 요청하지만 TxD가 그것을 보유하므로 보류됨.
7 Sy2: TxC가 Rb를 요청하지만 TxD가 그것을 보유하므로 보류됨.
8 Sy1: TxD가 연산자에 의해 취소되거나 중단되어 원래 상태로 돌려짐(취소됨)
t < 4 동안에는, 경합이 존재하지 않으므로 어떤 시스템상에도 WLM 경합 데이터가 존재하지 않는다.
t = 4와 t = 7 사이에서 발생하는 이벤트들은 앞서의 예들에서 설명되었다. 도 7C는 t = 7 이후의 토폴로지를 나타낸다. 이 시점에서의 상태 데이터는 다음의 표 32처럼 보인다.
<표 32>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxB(4),TxD(2) 2
Cab Rb TxD(2) TxE(3) Sy2 5 3
Cab 클러스터 Ra, Rb가 링크됨 2
<표 33>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxA(1) Sy1 2 2
Cab Rb TxC(5) Sy1 3 3
Cab 클러스터 Sy1: Ra, Rb가 링크됨 2
트랜잭션 TxD가 (이유에 상관없이) t = 8에서 종료될 때, 각 시스템상의 리소스 관리자 인스턴스는 TxD가 가졌던 남아 있는 모든 대기 요청들(Ra)을 삭제하고 그것이 보유한 모든 리소스들(Rb)을 해제한다. 이러한 토폴로지 변화들이 WLM에 통지되고 나면, Sy1은, 리소스 클러스터 Cab가 2개의 부분들(Ca 및 Cb)로 분해되어야 한다는 것을 알 수 있다. Sy1은 2개가 링크되어 있다는 것을 국소적으로 판정했고(이것이 더 이상 국소적으로 진실이 아니라는 것을 알 수 있으며) 원격 시스템의 데이터는 이들이 링크되어야 한다고 하기 때문에, 이것을 알 수 있다. 그러나, 양자의 리소스들은 여전히 경합 상태에 있다. Sy1이 자신의 토폴로지 데이터를 다음으로 동보할 때, Sy2상의 "Sy1: Ra, Rb가 링크됨" 데이터가 삭제되고 또한 Sy2는 자신의 토폴로지를 업데이트한다. WLM이 이 모든 것을 리소스 관리자 인스턴스들이 소유권을 재할당하기 전에 실현했다고 가정하면, 얻어지는 상태는 다음의 표 34 및 표 35와 같다.
<표 34>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxB(4) 4
Cb Rb TxE(3) Sy2 5 3
<표 35>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxA(1) Sy1 4 4
Cb Rb TxC(5) Sy1 3 3
이것은, 관련된 리소스들 중 하나에 대한 경합의 종료에 의존하는 것이 아니라, Ra 및 Rb를 함께 관리해야 하는 "메모리"를 제거하기 위한 소정 메커니즘을 가지고 있다는 것을 의미한다. 일부의 대안들은 다음과 같다.
1. Sy1은, 더 이상 소정 리소스 클러스터가 요구하다고 생각하지 않는다는 것을 지시하는 데이터를 명시적으로 송신한다. 예를 들어, Ra, Ca, 4, 원격을 송신한다. Sy2가 Ra에 대한 Sy1의 이전 데이터를 대체할 때, Sy2는 Sy1으로부터 입력되는 Ra 및 Rb를 더 이상 함께 관리할 요구가 없다는 것을 알 수 있으므로, Sy2가 클러스터를 지속시키기 위한 다른 "결정 사항들(votes)"을 갖지 않으면, Sy2는 클러스터를 국소적으로 분해할 수 있다.
2. Sy1의 데이터는 노화된다(따라서, "곧장" 대체되지 않으면 삭제된다). 이것은, 그 시간 이후에는 데이터가 수신자에 의해 삭제될 "TTL"(time to live) 값을 송신하는 것에 의해 구현될 수 있을 것이다. 이 메커니즘은 또한, 실패한 시스템들, 상실된 신호들, 버그들, 복구 문제들 등에 대한 안전망을 제공할 수도 있다. 또한, TTL은, 투명한 통신 지연을 형성하며 송신자 및 수신자에게 공통 구간에 동의할 것을 요구하지 않는다는 이점도 가진다.
가장 로버스트한 해결책은 3가지 모두일 것이다. 경합의 종료를 전역적으로 알리는 리소스 관리자로 하여금 "Ra" 블록을 국소적으로 삭제하는 경우를 처리하게 함으로써, "클러스터 분해" 메시지를 송신하기에 충분할만큼 오랫동안 그것을 보유할 요구가 없어진다. 리소스에 대한 경합이 국소적으로 하지만 비원격적으로 종료되고 로컬 시스템의 결정 사항이 비단순 클러스터를 구축하도록 강제된 경우라면, TTL 값으로 하여금 원격 시스템들상의 클러스터를 분해하게 한다. 클러스터가 분해되어야 하지만 경합이 끝나지 않았다면, 여전히 "Ra" 블록을 가지며 어찌되었든 "클러스터 분해" 메시지를 송신하는 것이 자연스러운 결과일 것이다.
예 4: 클러스터 분해하기 (BreakClu2)
이 예에서는, 공통 보유자(들)에 의해 결합된 리소스 클러스터만이 "n"개 리소스들에 대한 하나의 리소스 클러스터로서 또는 하나의 리소스 각각에 대한 "n"개 클러스터들로서 취급될 수 있다. 이 결과는 문서화하기에 충분한 가치가 있을 만큼 놀라운 것이다.
표기 방법은 예 1에서와 같다.
시간 순서의, 이벤트들의 시퀀스는 다음의 표 36과 같다.
<표 36>
시간(t) 이벤트
1 경합이 없음.
2 Sy2: TxA가 Ra 및 Rb를 획득함.
3 Sy1: TxB가 Ra를 요청하지만 TxA가 그것을 보유하므로 보류됨.
4 Sy1: TxC가 Ra를 요청하지만 TxA가 그것을 보유하므로 보류됨.
5 Sy1: TxD가 Rb를 요청하지만 TxA가 그것을 보유하므로 보류됨.
6 Sy2: TxE가 Rb를 요청하지만 TxA가 그것을 보유하므로 보류됨.
도 7D는 t = 6 이후의 토폴로지를 나타낸다.
t = 6이 될 때까지 발생하는 이벤트들은 이전의 예들에 의해 커버되었다. 여기에서 관심이 있는 것은, 정의하는 방법에 따라, 이 상황을 하나의 리소스 클러스터로 또는 2개의 리소스 클러스트들로 취급할 수 있다는 것이다. 리소스 클러스터가, 하나의 리소스에 대해서는 보유자로서 그리고 상이한 리소스에 대해서는 대기자로서 동일한 트랜잭션을 갖는(그리고 그 다음으로는 이러한 지식을 시스템 클러스터의 모든 시스템들에 대해 가산하는) 시스템에 의해 식별될 수 있는 이전 예들로부터의 정의를 사용한다면, 상기 도표는 명백하게, 기대될 수 있는 하나가 아니라, 2개의 리소스 클러스터들을 묘사한다.
리소스 클러스터 Cab를 형성할만한 가치는 없지만 그렇게 하는 것과 관련된 오버헤드는 존재하므로(좀더 엄밀하게, 클러스터가 분해되어야 하는지를 판정하는 경우와 관련된 오버헤드가 존재한다), 이 정의가 계속 사용될 것이다. 따라서, 상기 도표에 대응되는 상태 데이터는 다음의 표 37 및 표 38과 같을 것이다.
<표 37>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxB(4),TxC(5) 4
Cb Rb TxD(2),TxE(1) 1
<표 38>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxA(3) Sy1 4 4
Cb Rb TxA(3) Sy1 1 1
이러한 정의에 내재된 가정은, WLM이 작업을 지원하고자 시도할 경우, WLM은 NQO 값들에 기초해 요구한 각각의 리소스를 조사하고 보유자(들)를 지원할 것이라는 것이다. 이러한 토폴로지가 하나의 리소스 클러스터로서 취급된다면, TxA는 클러스터 Cab로부터 1의 NQO를 이어받을 것이다. 이것을 2개의 클러스터들로서 취급한다면, WLM은 다음과 같이 결론지어야 한다.
1. Ca는, 보유자의 3의 NQO가 리소스 클러스터의 4의 NQO보다 최선이기 때문에, 지원이 불요구하다.
2. Cb는, 1의 클러스터 NQO가 TxA의 3의 NQO보다 최선이기 때문에, 지원이 요구하다.
이러한 시나리오가 하나 또는 2개의 리소스 클러스터들로서 취급되는지의 여부와 상관없이, TxA는 1의 NQO를 물려주기를 종료하므로, 어느 것이든 선택할 수 있다. 2개의 "단순"(단일 리소스) 클러스터들을 관리하는 것이, 복합 클러스터를 분해되어야 할 시점을 위한 테스트들로 인해, 하나의 복합 클러스터보다 좀더 효율적이므로, 이 경우는 2개의 단순 리소스 클러스터들로서 취급된다.
예 5: 간단한 세방향 시나리오(3wayEasy)
이 예는 간단한 3-시스템 시나리오이다. 이 또한 전이 클루우져의 경우이지만, 그것의 비대칭 토폴로지는 시스템들로 하여금, 자신이 리소스 관리자로부터 입력되는 로컬 대기자/보유자 정보를 가지고 있지 않은 리소스들을 추적하게 한다. 표기 방법은 예 1에서와 같다.
시간 순서의, 이벤트들의 시퀀스는 다음의 표 39와 같다.
<표 39>
시간(t) 이벤트
1 경합이 없음.
2 Sy2: TxB가 Ra를 획득함.
3 Sy3: TxC가 Rb를 획득함.
4 Sy1: TxA가 Ra를 요청하지만 TxB가 그것을 보유하므로 보류됨.
5 Sy2: TxB가 Rb를 요청하지만 TxC가 그것을 보유하므로 보류됨.
6 Sy3: TxC가 Rb를 해제함.
7 Sy2: TxB가 Rb를 획득함.
8 Sy2: TxB는, Ra 및 Rb를 해제하며, 종료됨.
9 Sy1: TxA가 Ra를 획득함.
t = 5가 될 때까지 발생하는 이벤트들은 이전의 예들에 의해 커버되었다. 도 7E는 t = 5 이후의 토폴로지를 나타낸다. 이 시점에서의 상태 데이터는 다음의 표 40, 표 41, 및 표 42와 같다.
<표 40>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxA(1) 1
Cab Rb Sy2 2 2
Cab 클러스터 Sy2: Ra, Rb가 링크됨 1
<표 41>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxB(2) Sy1 1 1
Cab Rb TxB(2) 2
Cab 클러스터 Ra, Rb가 링크됨 1
<표 42>
시스템 Sy3
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra Sy1 1 1
Cab Rb TxC(3) Sy2 2 2
Cab 클러스터 Sy2: Ra, Rb가 링크됨 1
여기에서 관심있는 것은, Sy3가 Ra와 관련은 없지만, (Sy1상의 TxA로부터 이어받은) TxC의 NQO가 1이어야 하는지를 판정하기 위해, 여전히 Ra에 관한 적어도 일부 데이터를 추적한다는 것이다. 그럼에도 불구하고, 이것이 많은 어려움을 야기시켜서는 안되는데, Sy1 및 Sy2는 어떤 여타 시스템들이 Ra와 관련되어 있는지를 알지 못하며, 이것은 모든 시스템들이 (이 또한 움직이는 타깃인) 그들의 최근 토폴로지 데이터를 동보한 후에야 "발견될 수 있다". 따라서, Sy1 및 Sy2는 그들의 데이터를 무슨 일이 있어도 동보해야 한다. 추가적인 부담은, Sy3가 자신의 피어들로부터 수신하는 요약 데이터를 부기해야 하지만, 그것이 Ra와 관련이 없는 한, 복잡한 트랜잭션-기반 로직 중 어떤 것도 발동되지 않는다는 점이다. 이것은, 클러스터의 NQO 및 그 NQO로 인도된 시스템의 식별 정보를 동보하는 것에 의해 제거될 수도 있지만, 다시 클러스터들을 좀더 작은 부분들로 분해해야 하는 시점이 되면 표면화되는 몇가지 쟁점들이 존재한다. 각각의 리소스를 추적하는 것은, 올바른 NQO로 인도되는 것을 식별하기 위해 지불해야 하는 작은 댓가인 것처럼 보인다.
이러한 상태로부터 벗어나는 것은 이전 예들에서와 같이 진행된다.
예 6: 클러스터의 분해가 수반되는 세방향 시나리오(3wayBreakClu)
이 예는, 거대한 클러스터가, 우리를 몰아내는 어떠한 "경합 종료" 이벤트들없이, 좀더 작은 것들로 분해되는, 3-시스템 전이 클로우져의 경우이다. 이 예 또한 리소스의 다중 공유 보유자들을 가진 토폴로지를 나타낸다. 표기 방법은 예 1에서와 같다.
시간 순서의, 이벤트들의 시퀀스는 다음의 표 43과 같다.
<표 43>
시간(t) 이벤트
1 경합이 없음.
2 Sy2: TxB가 공유되는 Ra를 획득함.
3 Sy2: TxD가 공유되는 Ra를 획득함.
4 Sy3: TxC가 Rb를 획득함.
5 Sy1: TxA가 Ra를 요청하지만 TxB가 그것을 보유하므로 보류됨.
6 Sy2: TxB가 Rb를 요청하지만 TxC가 그것을 보유하므로 보류됨.
7 Sy3: TxE가 Rb를 요청하지만 TxC가 그것을 보유하므로 보류됨.
8 Sy3: TxC가 Rb를 해제함.
9 Sy2: TxB가 Rb를 획득함.
10 Sy2: TxB가, Ra 및 Rb를 해제하며, 종료됨.
12 Sy3: TxE가 Rb를 획득함.
13 Sy2: TxD가 Ra를 해제함.
14 Sy1: TxA가 Ra를 획득함.
t = 7이 될 때까지 발생하는 이벤트들은 이전의 예들에서 커버되었다. 이전의 예에서와 같이, Sy3는 Ra와 관련이 없지만, 여전히 Ra에 관한 적어도 일부의 데이터를 추적한다.
도 7F는 t = 7 이후의 토폴로지를 나타낸다. 이 시점에서의 상태 데이터는 다음의 표 44, 표 45, 및 표 46과 같다.
<표 44>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxA(1) 1
Cab Rb Sy2Sy3 25 2
Cab 클러스터 Sy2: Ra, Rb가 링크됨 1
<표 45>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra TxB(2),TxD(4) Sy1 1 1
Cab Rb TxB(2) Sy3 5 2
Cab 클러스터 Ra, Rb가 링크됨 1
<표 46>
시스템 Sy3
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Cab Ra Sy1 1 1
Cab Rb TxC(3) TxE(5) Sy2 2 2
Cab 클러스터 Sy2: Ra, Rb가 링크됨 1
이러한 상태로부터 벗어나는 것은 이전 예들에서와 같이 진행된다. 이번에, t = 8 및 t = 9에서의 이벤트들은 리소스 클러스터 Cab가 더 이상 불요구하다는 것을 의미하고, 이전 예들에 의하여, 이 경우 클러스터는 분해될 것이다. 따라서, t = 9 이후에는, 도 7G 및 다음의 표 47, 표 48, 및 표 49에 나타낸 상태를 갖게 된다.
<표 47>
시스템 Sy1
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxA(1) 1
Cb Rb Sy3 5 5
<표 48>
시스템 Sy2
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra TxB(2),TXD(4) Sy1 1 1
Cb Rb TxB(2) Sy3 5 5
<표 49>
시스템 Sy3
리소스클러스터 리소스이름 로컬 시스템 정보 원격 대기자 정보 NQO
보유자들 대기자들 시스템 이름 NQO
Ca Ra Sy1 1 1
Cb Rb TxE(5) 5
관련된 리소스들 중 하나에 대한 경합을 해결짓지 않으면서 리소스 클러스터가 분해되었던 이전의 경우와 마찬가지로, 단일 트랜잭션(여기에서는 TxB)이 경합하의 리소스들을 보유하기만 하거나 기다리기만 한다면, 2개의 개별적인 리소스 클러스터들과 동시에 관련될 수 있다는 것을 알 수 있다. 그것이 경합하의 어떤 리소스를 기다리자 마자, 보유하거나 기다리는 경합하의 모든 리소스들은 단일 리소스 클러스터로서 관리되어야 한다.
데이터 구조들
도 8A 내지 도 8H는 본 발명에 따른 경합 데이터를 저장하기 위한 데이터 구조들의 한가지 가능한 세트를 나타낸다.
도 8A를 참조하면, RCCT(resource contention control table;802)를 사용해 관심있는 다양한 항목들만을 유일하게 (또는 주로) 하나의 WLM 서브컴포넌트에 앵커(anchor)한다. 이것은 다음과 같은 것들을 포함한다.
1. 리소스 클러스터 요소들(RCLU들;806;도 8B)을 위한 앵커(804).
2. 리소스 요소들(RSRC들;810;도 8C)을 위한 앵커(808).
3. 트랜잭션 테이블(TRXNT;814;도 8F)을 위한 앵커(812).
도 8B를 참조하면, 각각의 리소스 클러스터 요소(RCLU;806)는 단일 리소스 클러스터와 관련된 데이터를 포함한다. 이것은 다음과 같은 것들을 포함한다.
1. 클러스터 ID(816).
2. 클러스터 NQO(818;클러스터의 모든 리소스들 중 최소)
3. 클러스터의 리소스들에 대한 리소스 요소들(RSRC들;810;도 8C)을 위한 앵커(820).
도 8C를 참조하면, 각각의 리소스 요소(RSRC;810)는 경합하의 리소스를 설명한다. 이것은 다음과 같은 것들을 포함한다.
1. 리소스 지문/이름(822).
2. 리소스 NQO(824). (동보 경로상의 효율성을 위해 로컬/시스템 클러스터 값들을 별개로 유지하기를 원할 수도 있지만, 그렇지 않다면 이것은 시스템 클러스터 NQO이다.)
3. 클러스터 요소(RCLU;806;도 8B)로의 포인터(826).
4. 로컬 보유자들에 대한 리소스 경합 큐 요소들(RCQE들;830;도 8H)을 위한 앵커(828).
5. 로컬 대기자들에 대한 리소스 경합 큐 요소들(RCQE들;830)을 위한 앵커(832).
6. 이러한 리소스에 관한 원격 데이터를 위한 시스템 데이터 앵커들(SDA들;836;도 8D)을 위한 앵커.
도 8D를 참조하면, 각각의 시스템 데이터 앵커(SDA;836)는 단일 시스템에 대한 원격 시스템 정보를 위한 앵커로서 기능한다. 이것은 다음과 같은 것들을 포함한다.
1. 원격 시스템 ID(838).
2. 이 시스템으로부터의 원격 시스템 데이터 요소들(RSDE들;842;도 8E)을 위한 앵커(840).
3. 원격 시스템의 최고로 공지된 송신 시퀀스 수를 표현하는 값(844). 다시 말해, 아웃바운드 경로상에서, 송신 시스템은 토폴로지 데이터의 각 '배치(batch)'와 동일한 (타임스탬프와 유사한) 값을 포함한다. 각각의 수신 시스템은 입력 메시지들의 값을 이 값과 비교하며, 메시지가 (수신 시스템이 동일한 송신자로부터 후자의 데이터를 이미 수신했기 때문에, 진부하다는 것을 의미하는) 더 낮은 값을 가지면, 메시지는 무시된다.
4. 토폴로지 메시지가 원격 시스템으로부터 수신될 때 로컬 클록을 사용해 업데이트된 타임스탬프(846). 도 8E를 참조하면, 각각의 리소스 시스템 데이터 요소(RSDE;842)는 리소스에 대한 원격 시스템 정보를 포함한다. 이것은 다음과 같은 것들을 포함한다.
1. 시스템을 위한 시스템 데이터 앵커(SDA;도 8D)로의 포인터(848).
2. 리소스를 위한 리소스 요소(RSRC;810;도 8C)로의 포인터(850).
3. 동일한 리소스를 위한 다른 RSDE들(842)을 위한 큐 링크들(852).
4. 원격 시스템상의 대기자들만을 고려하는, 원격 시스템의 NQO(854).
5. 디버그만을 위한 송신 타임스탬프(856;송신될 때의 원격 시스템상의 클록 값).
6. 디버그 및 TTL 프로세싱을 위한, 수신될 때의 로컬 클록 값을 표현하는 타임스탬프(858).
7. 이러한 리소스에 대한 원격 클러스터 ID(860). 원격 시스템이 보유자 및 대기자 모두였던 트랜잭션을 가진다면, 관련된 모든 리소스들은 동일한 클러스터 ID를 가질 것이며 동일한 클러스터내에 존재해야 한다. 상이한 시스템들로부터의 원격 데이터가 어떤 리소스들이 클러스터에 속하는지에 관해 불일치한다면, 클러스터들은 국소적으로 합쳐진다.
8. 원격 시스템이 얼마나 자주 데이터와 함께 별도의 비트를 송신할 예정인지에 대응되는, 원격 시스템에 의해 공급되는 TTL 구간(862). 로컬 타임이, 수신된 타임스탬프에 이 값을 더한 것보다 크다면, 이 요소는 삭제에 적합하다.
도 8F를 참조하면, 트랜잭션 테이블(TRXNT;814)을 사용해 관심있는 다양한 항목들만을 유일하게(또는 주로) 단일 WLM 서브컴포넌트로 앵커한다. 이것은 다음과 같은 것들을 포함한다.
1. 트랜잭션 테이블(814)이 구축되었을 때의 어드레스 공간들의 수(864).
2. 트랜잭션 테이블(814)이 구축되었을 때의 고립된 장소들(enclaves)의 수(866).
3. 트랜잭션 테이블의 시작으로부터 제 1 테이블 엔트리(868)까지의 오프셋(868).
4. 어드레스 공간들인 트랜잭션들에 대한 (최고 864까지의) 엔트리들(TRXNE들)의 영역(870).
5. 고립된 장소들인 트랜잭션들에 대한 (최고 866까지의) 엔트리들(TRXNE들)의 영역(872).
도 8G를 참조하면, 트랜잭션 테이블(TRXNT;814)의 영역(870 또는 872)에 대한 각각의 엔트리(TRXNE;874)는, 경합이 WLM에 의해 관리되고 있는 하나 이상의 리소스와 관련된 단일 트랜잭션에 관한 정보를 포함한다. 이것은 다음과 같은 것들을 포함한다.
1. 유형(876): 어드레스 공간 또는 고립된 장소.
2. 이러한 트랜잭션을 위한 어드레스 공간 ID(ASID) 또는 고립된 장소 ID(878).
3. 이러한 트랜잭션을 위한 어드레스 공간 또는 고립된 장소 토큰(880). ASID들 및 고립된 장소 ID들은 재사용 가능하고, 토큰들은, ID들이 재사용되는 경우라 하더라도 단일 이미지내에서 고유성을 제공한다.
4. 이러한 트랜잭션에 의해 보유된 리소스들에 대한 경합 요소들(RCQE들;830;도 8H)의 큐(884)를 위한 앵커(882).
5. 이러한 트랜잭션에 의해 대기되는 리소스들에 대한 경합 요소들(RCQE들;830)의 큐(888)를 위한 앵커(886).
6. 이러한 트랜잭션의 NQO(888).
도 8H를 참조하면, 각각의 리소스 경합 큐 요소(RCQE;830)는 트랜잭션(보유자 또는 대기자)을 리소스와 관련짓는다. 이것은 다음과 같은 것들을 포함한다.
1. TRXNT(810)의 트랜잭션을 위한 TRXNE(874)의 오프셋(892).
2. 이러한 트랜잭션을 위한 후속/이전 RCQE(830)로의 큐 링크들(894).
3. 리소스를 위한 리소스 요소(RSRC;810)로의 포인터(896).
4. 이러한 리소스를 위한 후속/이전 RCQE(830)로의 큐 링크들(898).
5. (단지 큐 식별을 위한 것일 수 있는) 보유/대기 비트(899).
도 9는, 도 4에 도시되고 도 4의 설명에 수반되는 테이블에서 Sy2에 대해 요약된 경합 시나리오가 도 8A 내지 도 8H에 나타낸 다양한 데이터 구조들에 의해 포착되는 방법을 나타낸다.
소정 실시예를 나타내고 설명하였지만, 당업자들에게는 다양한 변경들이 명백할 것이다. 따라서, (로컬 또는 원격 경합 데이터 중 하나에 기초해) 공통 클러스터의 일부라고 생각되는 모든 리소스들에 대해 공통 클러스터 ID를 송신하는 대신에, 로컬 시스템은 로컬 경합 데이터에 기초해 공통 클러스터에 속한다고 공지된 리소스들에 대해서만 공통 클러스터 ID를 사용할 수도 있다. 당업자들에게는 또 다른 변형들도 명백할 것이다.

Claims (20)

  1. 복수개 시스템들을 포함하는 시스템 클러스터에서 하나 이상의 리소스에 액세스하기 위한 사용자들간 경합을 관리하기 위한 방법으로서, 상기 각 사용자는 할당된 요구(assigned need)를 가지며 액세스하고자 하는 리소스에 대한 보유자이거나 대기자일 수 있고, 상기 방법은 로컬 시스템으로서의 상기 시스템들 중 하나 이상에서 수행되는 것인, 상기 사용자들간 경합을 관리하기 위한 방법에 있어서,
    상기 로컬 시스템상의 경합에 기초해 상기 리소스들의 하나 이상의 로컬 클러스터들로의 그룹화를 가리키고, 상기 로컬 클러스터들 각각에 대해 상기 로컬 클러스터 내의 하나 이상의 리소스들에 대한 요구를 가리키는, 로컬 클러스터 데이터를 저장하는 단계;
    원격 시스템으로서의 상기 시스템 클러스터 내의 다른 시스템으로부터, 상기 원격 시스템상의 경합에 기초해 상기 리소스들의 하나 이상의 원격 클러스터들로의 그룹화를 가리키고, 상기 원격 클러스터들 각각에 대해 상기 원격 클러스터 내의 하나 이상의 리소스들에 대한 요구를 가리키는, 원격 클러스터 데이터를 수신하는 단계;
    상기 시스템들에 걸친 경합에 기초해 상기 리소스들의 하나 이상의 복합 클러스터들로의 그룹화를 가리키고, 상기 복합 클러스터들 각각에 대해 상기 복합 클러스터 내의 하나 이상의 리소스들에 대한 요구를 가리키는 복합 클러스터 데이터를 생성하기 위해, 상기 로컬 클러스터 데이터와 상기 원격 클러스터 데이터를 결합하는 단계; 및
    상기 클러스터에 대한 상기 복합 클러스터 데이터에 따라, 상기 복합 클러스터들 중 하나의 리소스에 대한 상기 로컬 시스템상의 보유자를 관리하는 단계를 구비하는 경합 관리 방법.
  2. 제1 항에 있어서, 상기 클러스터들 중 하나의 하나 이상의 리소스들에 대한 상기 요구는 상기 클러스터의 임의의 리소스에 대한 최선 대기자의 요구인 경합 관리 방법.
  3. 제 1 항에 있어서,
    상기 관리하는 단계는,
    다른 어떤 리소스를 기다리고 있지 않은, 상기 복합 클러스터들 중 하나의 리소스에 대한 상기 로컬 시스템상의 보유자를 식별하는 단계; 및
    상기 로컬 시스템상의 상기 리소스 보유자에게, 그것의 요구가 적어도 상기 복합 클러스터의 어떤 리소스에 대한 최선 대기자의 요구인 것처럼, 시스템 리소스들을 할당하는 단계를 구비하는 경합 관리 방법.
  4. 제 1 항에 있어서,
    상기 수신하는 단계는 상기 시스템 클러스터의 원격 시스템들로서 복수개의 다른 시스템들 각각에 대해 수행되는 경합 관리 방법.
  5. 제 1 항에 있어서,
    상기 로컬 시스템은, 상기 로컬 시스템상의 사용자가 상기 리소스들 중 하나를 보유하면서 상기 리소스들 중 다른 것을 기다리고 있으면, 한 쌍의 리소스들을 공통 로컬 클러스터에 할당하는 경합 관리 방법.
  6. 제 1 항에 있어서,
    상기 로컬 시스템은, 상기 로컬 시스템상의 사용자와 관련하여 리소스의 경합 상태 변화에 대한 통지를 수신하는 것에 응답하여, 상기 로컬 클러스터 데이터를 업데이트하는 경합 관리 방법.
  7. 제 6 항에 있어서,
    상기 로컬 시스템은 상기 업데이트된 로컬 클러스터 데이터를 상기 원격 시스템으로 전송하는 경합 관리 방법.
  8. 제 1 항에 있어서,
    상기 로컬 시스템은 상기 원격 시스템으로부터 원격 클러스터 데이터의 수신시에 상기 복합 클러스터 데이터를 업데이트하는 경합 관리 방법.
  9. 제 1 항에 있어서,
    상기 로컬 시스템은 상기 로컬 클러스터 데이터를 상기 원격 시스템으로 전송하는 경합 관리 방법.
  10. 제 9 항에 있어서,
    상기 전송된 로컬 클러스터 데이터는 리소스, 상기 로컬 시스템상의 경합에 기초해 상기 리소스가 할당되는 클러스터, 및 상기 리소스에 대한 상기 로컬 시스템상의 요구를 지시하는 경합 관리 방법.
  11. 각각이 할당된 요구를 가지며 자신이 액세스하고자 하는 리소스에 대한 보유자이거나 대기자일 수 있는 사용자들 사이에서, 복수개 시스템들을 포함하는 시스템 클러스터의 하나 이상의 리소스에 액세스하기 위한 경합을 관리하는 장치로서,
    상기 장치는 상기 시스템들 중 하나 이상과 로컬 시스템으로서 관련되고,
    상기 로컬 시스템상의 경합에 기초해 상기 리소스들의 하나 이상의 로컬 클러스터들로의 그룹화를 지시하고 상기 로컬 클러스터 각각에 대해 상기 로컬 클러스터의 하나 이상의 리소스들에 대한 요구를 지시하는 로컬 클러스터 데이터를 저장하는 로직;
    상기 시스템 클러스터의 원격 시스템으로서의 다른 시스템으로부터, 상기 원격 시스템상의 경합에 기초해 상기 리소스들의 하나 이상의 원격 클러스터들로의 그룹화를 지시하고 상기 원격 클러스터들 각각에 대해 상기 원격 클러스터의 하나 이상의 리소스들에 대한 요구를 지시하는 원격 클러스터 데이터를 수신하는 로직;
    상기 시스템들에 걸친 경합에 기초해 상기 리소스들의 하나 이상의 복합 클러스터들로의 그룹화를 지시하고 상기 복합 클러스터들 각각에 대해 상기 복합 클러스터의 하나 이상의 리소스들에 대한 요구를 지시하는 복합 클러스터 데이터를 생성하기 위해, 상기 로컬 클러스터 데이터와 상기 원격 클러스터 데이터를 결합하는 로직; 및
    상기 클러스터에 대한 상기 복합 클러스터 데이터에 따라, 상기 복합 클러스터들 중 하나의 리소스에 대한 상기 로컬 시스템상의 보유자를 관리하는 로직을 구비하는 경합 관리 장치.
  12. 제 11 항에 있어서,
    상기 관리하는 로직은,
    다른 어떤 리소스를 기다리고 있지 않은, 상기 복합 클러스터들 중 하나의 리소스에 대한 상기 로컬 시스템상의 보유자를 식별하는 로직; 및
    상기 로컬 시스템상의 상기 리소스 보유자에게, 그것의 요구가 적어도 상기 복합 클러스터의 어떤 리소스에 대한 최선 대기자의 요구인 것처럼, 시스템 리소스들을 할당하는 로직을 구비하는 경합 관리 장치.
  13. 제 11 항에 있어서,
    상기 로컬 시스템은, 상기 로컬 시스템상의 사용자가 상기 리소스들 중 하나를 보유하면서 상기 리소스들 중 다른 것을 기다리고 있으면, 한 쌍의 리소스들을 공통 로컬 클러스터에 할당하는 경합 관리 장치.
  14. 제 11 항에 있어서,
    상기 로컬 시스템은, 상기 로컬 시스템상의 사용자와 관련하여 리소스의 경합 상태 변화에 대한 통지를 수신하는 것에 응답하여, 상기 로컬 클러스터 데이터를 업데이트하고 상기 업데이트된 로컬 클러스터 데이터를 상기 원격 시스템으로 전송하는 경합 관리 장치.
  15. 제 11 항에 있어서,
    상기 로컬 시스템은 로컬 클러스터 데이터를 상기 원격 시스템으로 전송하고, 상기 전송된 로컬 클러스터 데이터는 리소스, 상기 로컬 시스템상의 경합에 기초해 상기 리소스가 할당되는 클러스터, 및 상기 리소스에 대한 상기 로컬 시스템상의 요구를 지시하는 경합 관리 장치.
  16. 각각이 할당된 요구를 가지며 자신이 액세스하고자 하는 리소스에 대한 보유자이거나 대기자일 수 있는 사용자들 사이에서, 복수개 시스템들을 포함하는 시스템 클러스터의 하나 이상의 리소스에 액세스하기 위한 경합을 관리하는 방법 단계들을 수행하기 위해 머신에 의해 실행 가능한 명령어들의 프로그램을 유형적으로 구체화하는, 상기 머신에 의해 판독 가능한 프로그램 저장 장치로서,
    상기 방법 단계들은 상기 시스템들 중 하나 이상에서 로컬 시스템으로서 수행되고,
    상기 로컬 시스템상의 경합에 기초해 상기 리소스들의 하나 이상의 로컬 클러스터들로의 그룹화를 지시하고 상기 로컬 클러스터 각각에 대해 상기 로컬 클러스터의 하나 이상의 리소스들에 대한 요구를 지시하는 로컬 클러스터 데이터를 저장하는 단계;
    상기 시스템 클러스터의 원격 시스템으로서의 다른 시스템으로부터, 상기 원격 시스템상의 경합에 기초해 상기 리소스들의 하나 이상의 원격 클러스터들로의 그룹화를 지시하고 상기 원격 클러스터들 각각에 대해 상기 원격 클러스터의 하나 이상의 리소스들에 대한 요구를 지시하는 원격 클러스터 데이터를 수신하는 단계;
    상기 시스템들에 걸친 경합에 기초해 상기 리소스들의 하나 이상의 복합 클러스터들로의 그룹화를 지시하고 상기 복합 클러스터들 각각에 대해 상기 복합 클러스터의 하나 이상의 리소스들에 대한 요구를 지시하는 복합 클러스터 데이터를 생성하기 위해, 상기 로컬 클러스터 데이터와 상기 원격 클러스터 데이터를 결합하는 단계; 및
    상기 클러스터에 대한 상기 복합 클러스터 데이터에 따라, 상기 복합 클러스터들 중 하나의 리소스에 대한 상기 로컬 시스템상의 보유자를 관리하는 단계를 구비하는 프로그램 저장 장치.
  17. 제 16 항에 있어서,
    상기 관리하는 단계는,
    다른 어떤 리소스를 기다리고 있지 않은, 상기 복합 클러스터들 중 하나의 리소스에 대한 상기 로컬 시스템상의 보유자를 식별하는 단계; 및
    상기 로컬 시스템상의 상기 리소스 보유자에게, 그것의 요구가 적어도 상기 복합 클러스터의 어떤 리소스에 대한 최선 대기자의 요구인 것처럼, 시스템 리소스들을 할당하는 단계를 구비하는 프로그램 저장 장치.
  18. 제 16 항에 있어서,
    상기 로컬 시스템은, 상기 로컬 시스템상의 사용자가 상기 리소스들 중 하나를 보유하면서 상기 리소스들 중 다른 것을 기다리고 있으면, 한 쌍의 리소스들을 공통 로컬 클러스터에 할당하는 프로그램 저장 장치.
  19. 제 16 항에 있어서,
    상기 로컬 시스템은, 상기 로컬 시스템상의 사용자와 관련하여 리소스의 경합 상태 변화에 대한 통지를 수신하는 것에 응답하여, 상기 로컬 클러스터 데이터를 업데이트하고 상기 업데이트된 로컬 클러스터 데이터를 상기 원격 시스템으로 전송하는 프로그램 저장 장치.
  20. 제 16 항에 있어서,
    상기 로컬 시스템은 로컬 클러스터 데이터를 상기 원격 시스템으로 전송하고, 상기 전송된 로컬 클러스터 데이터는 리소스, 상기 로컬 시스템상의 경합에 기초해 상기 리소스가 할당되는 클러스터, 및 상기 리소스에 대한 상기 로컬 시스템상의 요구를 지시하는 프로그램 저장 장치.
KR1020057009822A 2002-12-31 2003-11-14 다중시스템 클러스터에서의 리소스 경합을 관리하는 방법 및 장치 KR100834432B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/334,203 2002-12-31
US10/334,203 US7228351B2 (en) 2002-12-31 2002-12-31 Method and apparatus for managing resource contention in a multisystem cluster

Publications (2)

Publication Number Publication Date
KR20050088366A true KR20050088366A (ko) 2005-09-05
KR100834432B1 KR100834432B1 (ko) 2008-06-04

Family

ID=32654967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057009822A KR100834432B1 (ko) 2002-12-31 2003-11-14 다중시스템 클러스터에서의 리소스 경합을 관리하는 방법 및 장치

Country Status (6)

Country Link
US (1) US7228351B2 (ko)
JP (1) JP4370260B2 (ko)
KR (1) KR100834432B1 (ko)
CN (1) CN1331052C (ko)
AU (1) AU2003300229A1 (ko)
WO (1) WO2004066148A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658423B1 (en) * 2001-01-24 2003-12-02 Google, Inc. Detecting duplicate and near-duplicate files
US7284018B1 (en) * 2003-10-15 2007-10-16 Sun Microsystems, Inc. Logless transaction coordination
JP3896111B2 (ja) * 2003-12-15 2007-03-22 株式会社日立製作所 リソース割り当てシステム、方法及びプログラム
US7680970B2 (en) * 2004-10-22 2010-03-16 Fisher-Rosemount Systems, Inc. Method and system for batch process arbitration in a process control system
US7739314B2 (en) * 2005-08-15 2010-06-15 Google Inc. Scalable user clustering based on set similarity
DE102006001257A1 (de) * 2005-12-30 2007-07-12 Advanced Micro Devices, Inc., Sunnyvale Automatisiertes Zustandabschätzungssystem für Cluster-Anlagen und Verfahren zum Betreiben des Systems
US8103642B2 (en) * 2006-02-03 2012-01-24 Oracle International Corporation Adaptive region locking
KR100898454B1 (ko) 2006-09-27 2009-05-21 야후! 인크. 통합 검색 서비스 시스템 및 방법
KR101156618B1 (ko) * 2008-11-21 2012-06-14 연세대학교 산학협력단 무선 네트워크에서 자원을 할당하는 방법
US8510739B2 (en) 2010-09-16 2013-08-13 International Business Machines Corporation Shared request grouping in a computing system
US9317329B2 (en) * 2010-11-15 2016-04-19 Qualcomm Incorporated Arbitrating resource acquisition for applications of a multi-processor mobile communications device
US8484655B2 (en) 2010-12-09 2013-07-09 International Business Machines Corporation Management of copy services relationships via policies specified on resource groups
US8577885B2 (en) 2010-12-09 2013-11-05 International Business Machines Corporation Partitioning management of system resources across multiple users
US20120151163A1 (en) 2010-12-09 2012-06-14 International Business Machines Corporation Management of host passthrough and session commands using resource groups
US8793286B2 (en) 2010-12-09 2014-07-29 International Business Machines Corporation Hierarchical multi-tenancy management of system resources in resource groups
US9094394B2 (en) 2012-01-23 2015-07-28 Microsoft Technology Licensing, Llc Managing cross-premises resources through integrated view
CN103813481A (zh) * 2013-09-23 2014-05-21 杭州优能通信系统有限公司 一种智能终端设备及其业务处理方法
CN103905250B (zh) * 2014-03-21 2018-02-23 浪潮电子信息产业股份有限公司 一种优化管理集群状态的方法
US9569280B2 (en) * 2014-09-15 2017-02-14 Seagate Technology Llc Managing resource collisions in a storage compute device
US10257053B2 (en) 2016-06-28 2019-04-09 International Business Machines Corporation Analyzing contention data and following resource blockers to find root causes of computer problems
CN109753485B (zh) * 2018-12-07 2021-05-07 新华三云计算技术有限公司 一种磁盘锁管理方法及装置
US11222297B2 (en) * 2019-11-21 2022-01-11 Rockspoon, Inc. System and method for matching patrons, servers, and restaurants within the food service industry

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5339427A (en) * 1992-03-30 1994-08-16 International Business Machines Corporation Method and apparatus for distributed locking of shared data, employing a central coupling facility
US5444693A (en) * 1992-04-27 1995-08-22 At&T Corp. System for restoration of communications networks
US5719868A (en) * 1995-10-05 1998-02-17 Rockwell International Dynamic distributed, multi-channel time division multiple access slot assignment method for a network of nodes
US5805900A (en) * 1996-09-26 1998-09-08 International Business Machines Corporation Method and apparatus for serializing resource access requests in a multisystem complex
US6151688A (en) * 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US6038651A (en) * 1998-03-23 2000-03-14 International Business Machines Corporation SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum
US6330612B1 (en) * 1998-08-28 2001-12-11 International Business Machines Corporation Method and apparatus for serializing access to a shared resource in an information handling system
US6189007B1 (en) * 1998-08-28 2001-02-13 International Business Machines Corporation Method and apparatus for conducting a high performance locking facility in a loosely coupled environment
US6732166B1 (en) * 1999-05-28 2004-05-04 Intel Corporation Method of distributed resource management of I/O devices in a network cluster
US6631406B1 (en) 1999-06-03 2003-10-07 Fujitsu Network Communications, Inc. Common management information base (MIB)
US6442564B1 (en) * 1999-06-14 2002-08-27 International Business Machines Corporation Facilitating workload management by using a location forwarding capability
CA2381017A1 (en) * 1999-09-03 2001-03-15 General Instrument Corporation Resource access control system
US6681242B1 (en) * 2000-01-10 2004-01-20 Sun Microsystems, Inc. Method and apparatus for detecting dependency cycles between resources in a computer system
JP2002057699A (ja) * 2000-08-11 2002-02-22 Nec Corp パケット伝送方式、パケット伝送方法及び記録媒体
US6889253B2 (en) * 2001-04-30 2005-05-03 International Business Machines Corporation Cluster resource action in clustered computer system incorporation prepare operation
US7047299B1 (en) * 2001-08-31 2006-05-16 Hewlett-Packard Development Company, L.P. Generic cluster aware lock broker with user defined locking modes
US7580972B2 (en) * 2001-12-12 2009-08-25 Valve Corporation Method and system for controlling bandwidth on client and server
US7444634B2 (en) * 2002-10-31 2008-10-28 Sun Microsystems, Inc. Method and apparatus for providing dynamic locks for global resources

Also Published As

Publication number Publication date
JP2006512688A (ja) 2006-04-13
US7228351B2 (en) 2007-06-05
CN1331052C (zh) 2007-08-08
CN1711523A (zh) 2005-12-21
AU2003300229A1 (en) 2004-08-13
KR100834432B1 (ko) 2008-06-04
US20040128385A1 (en) 2004-07-01
JP4370260B2 (ja) 2009-11-25
WO2004066148A1 (en) 2004-08-05

Similar Documents

Publication Publication Date Title
KR100834432B1 (ko) 다중시스템 클러스터에서의 리소스 경합을 관리하는 방법 및 장치
KR100586285B1 (ko) 자원 경쟁을 관리하기 위한 방법 및 장치
JP2882475B2 (ja) スレッド実行方法
US6502136B1 (en) Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage
JP2001142726A (ja) マルチスレッド化コンピュータ環境において、複数のプロセスに渡りコミュニケータを設定する方法およびシステム
JPH1165863A (ja) 共有資源管理方法
EP0665495A2 (en) A distributed lock manager using a passive, state-full control-server
US20050235289A1 (en) Method for allocating resources in a hierarchical data processing system
JP2009525536A (ja) 適応型の領域ロック処理
CN111526186A (zh) 基于Raft的分布式服务器集群配置方法
US9460143B2 (en) Methods, systems, and computer readable media for a multi-view data construct for lock-free operations and direct access
US20130332435A1 (en) Partitioning optimistic concurrency control and logging
US7293011B1 (en) TQ distribution that increases parallism by distributing one slave to a particular data block
US20110131192A1 (en) Approaches to Reducing Lock Communications In a Shared Disk Database
WO2024066342A1 (zh) 任务处理方法、装置、电子设备及存储介质
US20030126187A1 (en) Apparatus and method for synchronization in a multi-thread system of JAVA virtual machine
Liu et al. Leader set selection for low-latency geo-replicated state machine
US20030187909A1 (en) System and method for interleaving multiple requests from multiple users in order to prevent starvation of any user&#39;s request
US7188113B1 (en) Reducing contention by slaves for free lists when modifying data in a table partition
US6799172B2 (en) Method and system for removal of resource manager affinity during restart in a transaction processing system
JP2008544371A (ja) ロック関連の一貫性欠如を処理する方法
CN108089919B (zh) 一种并发处理api请求的方法及系统
JP2005310117A (ja) 動的分散環境におけるノードマッチング
CN114205354A (zh) 事件管理系统、事件管理方法、服务器及存储介质
US20060203813A1 (en) System and method for managing a main memory of a network server

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G170 Publication of correction
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130425

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140425

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee