KR20040012388A - 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 - Google Patents
클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 Download PDFInfo
- Publication number
- KR20040012388A KR20040012388A KR1020020045951A KR20020045951A KR20040012388A KR 20040012388 A KR20040012388 A KR 20040012388A KR 1020020045951 A KR1020020045951 A KR 1020020045951A KR 20020045951 A KR20020045951 A KR 20020045951A KR 20040012388 A KR20040012388 A KR 20040012388A
- Authority
- KR
- South Korea
- Prior art keywords
- buffer
- host
- manager
- block
- global
- Prior art date
Links
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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법에 관한 것으로서, 클러스터 시스템에서 전역 버퍼 관리자를 통하여 여러 호스트들 간에 버퍼 캐쉬를 공유할 때, 전역 버퍼 관리자의 동작에 필요한 시스템 부하가 클러스터 시스템 내의 특정 호스트에 집중되어 성능을 저하시키는 현상을 방지하기 위하여 각 호스트의 부하를 계산하여 전역 버퍼 관리자의 요구를 분산하고, 전역 버퍼 관리자는 속도가 느린 디스크 I/O를 통해서가 아닌 다른 호스트의 메모리 상에 존재하는 버퍼 캐쉬로부터 디스크 상의 블록(디스크 블록) 내에 저장된 블록 데이터를 메모리로 읽은 복사본에 해당하는 버퍼 블록을 가져오도록 하며, 버퍼 블록들을 사용되지 않는 호스트(Idle host)로 이동시킬 수 있도록 되어 있으며,
이에 따라서, 클러스터 시스템의 확장성을 높이고, 전역 버퍼 요구에 대한 응답 속도를 감소시키지 않으면서 부하를 분산시킬 수 있으며, 적어도 하나의 호스트의 버퍼 캐쉬에 유효한 버퍼 블록이 남아 있도록 하여 버퍼 블록의 전송 요구에 대한 성공률을 높이고 블록 데이터에 대한 접근 속도를 향상시킬 수 있다.
Description
본 발명은 다수의 호스트가 고속의 네트워크로 연결되어 하나의 시스템 이미지(Single System Image)를 제공하도록 구성된 클러스터 시스템에 관한 것이며, 보다 상세히는 호스트간에 CPU, 메모리, 디스크와 같은 저장 장치 등의 자원을 긴밀히 공유할 수 있도록 하며, 특히 호스트의 메모리를 통한 데이터 전송 시에 공유 데이터의 빠른 접근을 가능하게 하는 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법에 관한 것이다.
공지된 바와 같이 GMS(Global Memory System)는 미국의 워싱턴 대학에서 진행하는 프로젝트로 클러스터 시스템을 위한 전역 메모리 관리(Global MemoryManagement) 알고리즘을 제안하고 구현하였다.
이러한 종래의 클러스터 시스템을 위한 전역 메모리 관리 알고리즘에 관한 연구는 페이지 캐쉬를 통한 전역 메모리 관리 기법을 대상으로 하고 있으며, 수정되지 않은 페이지만을 전역 페이지로 고려하고 있다.
따라서, 여러 호스트의 쓰기/읽기에 대한 동시성 제어(concurrency control)를 위해 잠금과 같은 방법이 사용되지 않는다.
특히, 상기 GMS는 각 페이지의 위치를 나타내는 테이블 정보를 유지하며, 이들 페이지는 지역(local) 혹은 전역(global) 페이지로 분리되는데, 지역 페이지는 호스트가 사용 중인 페이지이고, 전역 페이지는 특정 호스트가 다른 호스트를 위해 저장하고 있는 페이지이다. 상기 전역 페이지는 지역 페이지 캐쉬와 디스크 사이에 존재하는 영역으로 지역 페이지 캐쉬가 부족할 경우, 디스크로 페이지 블록들을 옮겨서 자유 공간(free space)을 만드는 것이 아니라 전역 페이지 캐쉬로 옮겨서 다시 사용될 경우에 디스크보다 빠른 접근 속도를 얻을 수 있도록 한다.
그러나, 상기와 같이 클러스터 시스템을 위한 전역 메모리 관리 알고리즘을 제안하고 구현한 GMS에서는 페이지 대체 정책(page replacement policy)으로 LRU(least recently used)를 사용하고 있지만 각 호스트의 부하를 고려한 페이지 대체 정책이라든가 페이지 요구를 분산시키는 방법에 대해서는 고려하고 있지 않다.
한편, 상기한 클러스터 시스템에서 사용되지 않는 호스트(idle host)의 메모리를 활용하는 연구가 진행 중이며, 이러한 연구는 크게 두 가지 방식으로 나뉘는데, 첫 번째 방식은 운영체제를 수정하여 구현하는 방법으로 사용자는 다른 호스트의 메모리를 사용하는지 알 수 없지만 보다 효과적으로 원격(remote) 메모리를 활용할 수 있으며, 두 번째 방식은 다른 호스트의 메모리를 할당받아 사용할 수 있도록 사용자 인터페이스를 제공하여 프로그래머가 원격 메모리의 사용을 직접 지정하도록 되어 있다. 이들 연구에서 원격 메모리는 지역 메모리 보다 느리지만 디스크(disk)로부터 데이터를 읽는 것에 비해 훨씬 빠르기 때문에 스왑 디바이스(swap device)나 페이징 디바이스(paging device)로 사용된다.
그러나, 상기 두 방법 모두 다른 호스트의 메모리 상의 데이터를 공유하기 위한 것이 아니라, 단지 사용되지 않는 메모리 자원을 활용하는 것이다.
따라서, 본 발명은 상술한 종래의 문제점을 해결하기 위한 것으로, 본 발명의 목적은 클러스터 시스템에서 전역 버퍼 관리자를 통하여 여러 호스트들 간에 버퍼 캐쉬를 공유할 때, 전역 버퍼 관리자의 동작에 필요한 시스템 부하가 시스템 내의 특정 호스트에 집중되어 성능을 저하시키는 현상을 방지하기 위하여 각 호스트의 부하를 계산하여 전역 버퍼 관리자의 요구를 분산하고, 전역 버퍼 관리자는 속도가 느린 디스크 I/O를 통해서가 아닌 다른 호스트의 메모리 상에 존재하는 버퍼 캐쉬로부터 디스크 상의 블록(디스크 블록) 내에 저장된 블록 데이터를 메모리로읽은 복사본에 해당하는 버퍼 블록을 가져오도록 하며, 버퍼 블록들을 사용되지 않는 호스트(Idle host)로 이동시킬 수 있도록 된 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법을 제공하는데 있다.
상기와 같은 본 발명의 목적을 달성하기 위한 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법은, 클러스터 시스템의 특정 호스트의 상위 모듈이 디스크 블록에 대한 읽기/쓰기를 수행하기 위하여 전역 버퍼 관리자에게 버퍼 블록의 전달을 요구하는 단계와; 전역 버퍼 관리자가 잠금 관리자에게 해당 디스크 블록에 대한 사용 권한을 요청하는 단계; 잠금 관리자가 각 호스트의 부하를 계산하여 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여 사용 권한의 수락 여부를 응답 메시지에 실어 전역 버퍼 관리자에게 보내는 단계; 전역 버퍼 관리자가 사용 권한을 획득하지 못하면 상위 모듈의 버퍼 블록의 읽기/쓰기 동작을 실패하는 단계; 전역 버퍼 관리자가 사용 권한을 획득하면 새로운 소유자 호스트의 버퍼 캐쉬에 요청 받은 버퍼 블록이 있는지 찾는 단계; 새로운 소유자 호스트의 버퍼 캐쉬에 요청 받은 버퍼 블록이 없으면 다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 있는지 찾는 단계; 다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 있으면 통신 모듈을 통해서 다른 호스트에게 버퍼 블록의 전송을 요청하는 단계; 다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 없으면 디스크 I/O를 통해서 요청된 버퍼 블록을 버퍼 캐쉬로 복사하여 읽어오는 단계; 다른 호스트에게 요청한 버퍼 블록의 전송이 실패하면 디스크 I/O를 통해서 요청된 버퍼 블록을 버퍼 캐쉬로 복사하여읽어오는 단계; 상기 새로운 소유자 호스트의 버퍼 캐쉬에 요청 받은 버퍼 블록이 있거나 디스크 I/O를 통해서 버퍼 블록을 버퍼 캐쉬로 복사하여 읽어오거나 다른 호스트의 버퍼 캐쉬에서 버퍼 블록을 받으면 상위 모듈에게 전달하는 단계; 및 상위 모듈이 버퍼 블록에 읽기/쓰기 동작을 마친 후 버퍼 블록 사용 해지를 요청하면 전역 버퍼 관리자가 잠금 관리자에게 버퍼 블록에 대한 사용 권한을 반환하는 단계로 이루어진다.
도 1a는 본 발명에 따른 부하 분산이 가능한 전역버퍼 관리방법을 적용하는 클러스터 시스템을 도시한 구성도,
도1b는 본 발명에 따른 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법을 도시한 흐름도,
도 2는 잠금 관리자가 유지하는 잠금 테이블을 도시한 구성도,
도 3a는 전역 버퍼 관리자가 유지하는 테이블을 도시한 구성도,
도 3b는 하나의 디스크 블록이 여러 호스트의 버퍼 캐쉬에 복사된 상태를 도시한 구성도,
도 4는 잠금 관리자가 전역 버퍼 관리자에게 전송하는 응답 메시지를 도시한 구성도,
도 5는 각 호스트의 부하 정보를 저장하는 테이블을 도시한 구성도,
도 6은 부하 분산을 위해 잠금 관리자가 잠금 획득 호스트 중 부하가 가장 적은 호스트를 선택하여 새로운 소유자 호스트(Owner Host)를 찾는 방법을 도시한 흐름도,
도 7은 부하 분산을 위해 잠금 관리자가 클러스터 내의 모든 호스트 중 부하가 가장 적은 호스트를 선택하여 새로운 소유자 호스트(Owner Host)를 찾는 방법을 도시한 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
111: 상위 모듈 112: 전역 버퍼 관리자
113: 잠금 관리자 114: 통신 모듈
120: 버퍼 캐쉬
이하, 본 발명에 따른 실시 예를 첨부한 도면을 참조하여 상세히 설명하기로 한다.
도 1a를 참조하면, 본 발명에 따른 클러스터 시스템의 각 호스트들은 고속 네트워크로 연결되며, 각각 상위 모듈(111)과 전역 버퍼 관리자(112), 잠금 관리자(113), 통신 모듈(114), 및 버퍼 캐쉬(120)를 포함하고 있다.
상위 모듈(111)은 디스크 상의 블록, 즉 디스크 블록 내에 저장된 블록 데이터를 메모리로 읽은 복사본에 해당하는 버퍼 블록을 버퍼 캐쉬(120)로 복사하여 전달받아 상기 블록 데이터에 대해서 읽기/쓰기 동작을 수행하며, 파일 시스템 등이 될 수 있다.
상기 전역 버퍼 관리자(112)는 상위 모듈(111)로부터 전달되는 블록 데이터 요구를 처리한다.
상기 잠금 관리자(113)는 동시에 여러 호스트가 동일한 블록 데이터에 접근하여 일관성을 깨는 것을 방지하는 역할을 담당한다.
상기 버퍼 캐쉬(120)는 각 호스트의 메모리 상에 존재하며 디스크(혹은 저장 장치)에 쓰여진 블록 데이터들의 복사본(버퍼 블록이라 함)을 저장한다.
상기 통신 모듈(114)은 전역 버퍼 관리자(112)와 잠금 관리자(113)가 다른 호스트로 메시지를 교환하고자 할 때 사용된다.
상기와 같이 구성된 클러스터 시스템은 본 발명에 따른 부하 분산이 가능한 전역버퍼 관리방법에 의해 다음과 같이 작동한다.
도 1b를 참조하면, 최초에 클러스터 시스템의 특정 호스트의 상위 모듈(111)이 디스크 블록에 대한 읽기/쓰기를 수행하기 위하여 전역 버퍼 관리자(112)에게 버퍼 블록의 전달을 요구하면(S131), 상기 전역 버퍼 관리자(112)는 잠금 관리자(113)에게 해당 디스크 블록에 대한 사용 권한을 요청한다(S132).
이에 따라서, 상기 잠금 관리자(113)는 각 호스트의 부하를 계산하여 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여 사용 권한의 수락 여부를 응답 메시지에 실어 전역 버퍼 관리자(112)에게 보낸다(S133).
이때, 상기 전역 버퍼 관리자(112)의 사용 권한이 수락된 것을 잠금을 획득했다고 표현하며, 실제로 상기 전역 버퍼 관리자(112)가 잠금을 획득하지 못하면, 즉 사용 권한을 획득하지 못하면 상위 모듈(111)의 버퍼 블록의 읽기/쓰기 동작은 실패한다(S135).
반면에, 상기 전역 버퍼 관리자(112)가 잠금을 획득하면, 즉 사용 권한을 획득하면 잠금을 획득한 호스트의 버퍼 캐쉬(120)에 요청 받은 버퍼 블록이 있는지 찾는다(S134,S136).
만약, 잠금을 획득한 호스트의 버퍼 캐쉬(120)에 요청 받은 버퍼 블록이 없으면 다른 호스트의 버퍼 캐쉬(120)에 요청된 버퍼 블록이 있는지 찾고(S137,S138), 다른 호스트의 버퍼 캐쉬(120)에 요청된 버퍼 블록이 있으면 통신 모듈(114)을 통해서 다른 호스트에게 버퍼 블록의 전송을 요청한다(S140).
또한, 다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 없거나(S138), 다른 호스트에게 요청한 버퍼 블록의 전송이 실패하면(S141) 디스크 I/O를 통해서 요청된 버퍼 블록을 버퍼 캐쉬(120)로 복사하여 읽어온다(S139).
상기와 같이 새로 잠금을 획득한 호스트의 버퍼 캐쉬(120)에 요청 받은 버퍼 블록이 있거나 디스크 I/O를 통해서 버퍼 블록을 버퍼 캐쉬(120)로 복사하여 읽어오거나 다른 호스트의 버퍼 캐쉬(120)에서 버퍼 블록을 받으면 상위 모듈(111)에게 전달하며(S142), 이어서 상기 상위 모듈(111)은 버퍼 블록에 읽기/쓰기 동작을 마친 후(S143) 버퍼 블록 사용 해지를 요청하고(S144), 이에 따라서 상기 전역 버퍼 관리자(112)는 잠금 관리자(113)에게 버퍼 블록에 대한 사용 권한을 반환한다.
상기한 바와 같이 본 발명에 따른 클러스터 시스템에 있어서, 잠금을 통해 버퍼 블록(혹은 블록 데이터)에 접근을 제어하는 잠금 관리자(113)와, 버퍼캐쉬(20) 정보를 유지하고 상위 모듈(111)의 버퍼 블록 요구를 처리해 주는 전역 버퍼 관리자(112)는 버퍼 블록 요구의 분산을 위해 함께 연동한다.
이때, 상기 잠금 관리자(113)의 역할은 다수의 호스트 상에 존재하는 상위 모듈(111)이 동시에 동일한 디스크 블록에 읽기/쓰기 동작을 수행하여 데이터의 일관성을 깨지 않도록 하는 것이다. 디스크 상의 블록 데이터는 디스크 번호와 디스크 내의 블록 번호를 통해서 유일하게 구분될 수 있는데, 이것을 잠금 ID로 한다.
상기 전역 버퍼 관리자(112)는 이것을 가지고 잠금 관리자(113)에게 사용 허가를 획득한다. 사용 허가는 두 가지 모드가 있으며 읽기 모드와 쓰기 모드가 있다. 읽기 모드로 설정된 블록 데이터는 동시에 다수의 호스트 상의 버퍼 캐쉬(120)에 읽어 사용할 수 있고 쓰기 모드로 설정된 블록 데이터는 동시에 하나의 호스트 상의 버퍼 캐쉬에 읽어 수정할 수 있다.
상기 전역 버퍼 관리자(112)는 상위 모듈(111)의 블록 데이터 읽기/쓰기 요구에 대해서 적당한 잠금 모드를 획득하고 블록 데이터를 버퍼 캐쉬(120)로 읽어와 상위 모듈(111)로 전달한다.
본 발명에 따른 클러스터 시스템에서 함께 연동하는 잠금 관리자(113)와 전역 버퍼 관리자(112)의 작용을 보다 상세히 설명하면 다음과 같다.
도 2를 참조하면, 상기 잠금 관리자(113)가 유지하는 잠금 테이블은, 도 1a와 같이 다수의 호스트에 잠금 관리자(113)가 존재하여 분산된 형태로 관리될 수도 있고, 하나의 호스트에 잠금 관리자(113)가 존재하여 중앙 집중 방식으로 관리될수도 있다.
도 2에 있어서, 잠금 테이블의 각 필드는 블록 데이터를 유일하게 구분하는 잠금 ID(21)와 잠금 모드(22), 사용을 허가받은 호스트 ID(23), 블록 데이터를 버퍼 캐쉬(120)에 저장하고 있는 대표 호스트의 ID, 즉 잠금 소유자 호스트 필드(24)를 나타낸다.
도 2의 잠금 테이블에 있어서, 쓰기 모드(write mode)의 잠금은 단지 하나의 호스트만이 디스크 블록을 버퍼 캐쉬(120)에 읽어 사용할 수 있고, 읽기 모드(read mode)의 잠금은 동일한 디스크 블록을 여러 호스트가 버퍼 캐쉬(120)에 읽어 사용할 수 있다. 또한, 잠금 ID가 'Lock 0'인 블록 데이터는 호스트 1번이 쓰기 모드로 사용하고 있고, 잠금 ID가 'Lock 3'인 블록 데이터는 호스트 3번과 4번이 읽기 모드로 사용하고 있다. 만약, 호스트 2번의 상위 모듈(111)이 'Lock 3'에 해당하는 블록 데이터에 쓰기 동작을 수행하려 한다면 잠금 관리자(113)는 호스트 3번과 4번에 있는 상위 모듈(111)에게 'Lock 3'에 해당하는 블록 데이터의 사용 권한을 반환하도록 요청하고, 요청이 모두 수락되면 호스트 2번에게 쓰기 모드의 잠금을 허가한다.
본 발명에 따른 잠금 관리자(113)는 획득한 사용 권한은 다른 호스트의 상위 모듈(111)이 필요로 하기 전까지 반환하지 않고 계속 사용할 수 있도록 콜백 록킹(callback locking) 방법을 사용한다.
도 3a를 참조하면, 상기 전역 버퍼 관리자(112)가 유지하는 테이블은 전역버퍼 관리자(112)가 속한 호스트의 버퍼 캐쉬(120)에 존재하는 버퍼 블록들을 관리한다.
상기 전역 버퍼 관리자(112)는 각 잠금 ID(31)에 해당하는 버퍼 블록들을 연결 리스트(34) 형태로 관리한다. 32번의 프라이머리 카피(Primary Copy)는 블록 데이터의 주 복사본을 버퍼 캐쉬(120)에 가지고 있는 호스트의 ID를 나타내고, 33번의 버퍼 블록 소유 호스트는 블록 데이터를 버퍼 캐쉬(120)에 가지고 있는 모든 호스트들의 ID를 나타낸다.
상기 전역 버퍼 관리자(112)는 상위 모듈(111)이 블록 데이터에 읽기/쓰기를 요청하면 자신이 속한 호스트의 버퍼 캐쉬(120)에 요구되는 버퍼 블록이 있는지 살펴보고, 없다면 다른 호스트의 전역 버퍼 관리자(112)로부터 해당 버퍼 블록을 전송 받는다.
만약, 다른 호스트의 버퍼 캐쉬(120)에도 요구되는 버퍼 블록이 없다면 디스크 I/O를 통해서 디스크 상의 블록 데이터를 자신의 버퍼 캐쉬(120)에 읽어서 버퍼 블록을 상위 모듈에 전달한다. 도 3a의 'Lock 1', 'Lock 3'과 같이 하나의 잠금 ID에는 여러 개의 블록 데이터로 구성된 익스텐트(extent), 즉 작은 블록 데이터를 여러 개 합한 크기의 블록이 대응될 수 있다.
도 3a의 테이블의 33번이 나타내는 바와 같이 Lock ID에 대응되는 디스크 블록의 복사본인 버퍼 블록을 버퍼 캐쉬(120)에 소유하고 있는 호스트는 다수가 존재할 수 있다. 이들 중 프라이머리 카피(Primary Copy)를 소유한 호스트(32)는 해당 버퍼 블록을 가능한 자신의 버퍼 캐쉬(120)에서 해제되지 않도록 하여 다른 호스트상에 있는 전역 버퍼 관리자(112)로부터의 버퍼 블록 전송 요구에 응답한다.
도 3b는 도 3a에서 Lock 2에 해당하는 버퍼 블록 20번이 디스크와 호스트 0, 2, 3번의 버퍼 캐쉬(120)에 존재하는 예를 나타낸다. 도 3a에서 Lock 2의 호스트 3번이 프라이머리 카피(Primary Copy)로 표시되어 있으므로, 호스트 3번은 버퍼 블록 20번을 가능한 버퍼 캐쉬(120)에서 삭제하지 않도록 한다. 호스트 1번 혹은 4번이 버퍼 블록 20번을 필요로 한다면 호스트 3번의 전역 버퍼 관리자(112)는 자신의 버퍼 캐쉬(120)에서 버퍼 블록 20번을 전송해 준다. 특정 호스트가 프라이머리 카피(Primary Copy)를 갖도록 하는 이유는 적어도 하나 이상의 호스트가 자신의 버퍼 캐쉬(120)에 상위 모듈(111)로부터 요구되는 디스크 블록의 복사본인 버퍼 블록을 가지고 있어야 다른 호스트로부터 버퍼 블록 전송 요구가 있을 때, 디스크 I/O를 하지 않고 버퍼 캐쉬(120)에서 전송해 줄 수 있다. 이는 느린 디스크 I/O 횟수를 감소시킴으로 빠른 블록 데이터 접근이 가능하게 하는 방법이다.
한편, 상기 잠금 관리자(113)가 유지하는 잠금 테이블에 잠금 획득 호스트 ID 정보(23)는 도 1a에서 잠금 관리자(113)가 전역 버퍼 관리자(112)에게 응답 메시지를 보낼 때 함께 전송된다.
상기 전역 버퍼 관리자(112)는 테이블의 버퍼 소유 호스트 필드(33)에 잠금 관리자(113)가 보낸 잠금 획득 호스트 정보(23)를 저장한다. 모든 전역 버퍼 관리자(112)는 디스크 블록을 버퍼 캐쉬(120)로 복사하기 전에 잠금을 획득하므로 잠금을 획득한 호스트는 자신의 버퍼 캐쉬(120)에 버퍼 블록을 소유하고 있다.
프라이머리 카피(Primary Copy)에 표시되는 호스트 정보(32)도 잠금 관리자(113)가 정해서 응답 메시지에 함께 실어 보낸다. 잠금 관리자(113)가 정한 호스트는 소유자(Owner) 필드(24)에 표시되고 전역 버퍼 관리자(112)는 응답 메시지에 표시된 소유자 정보를 프라이머리 카피(Primary Copy) 필드(32)에 저장한다.
도 4는 잠금 관리자(113)가 전역 버퍼 관리자(112)에게 전달하는 응답 메시지의 형식을 나타낸 것이다. 도 1a에서 전역 버퍼 관리자(112)에게 전달되는 응답 메시지에는 Lock ID 필드(41)와 읽기/쓰기 모드를 나타내는 필드(42), 요청에 대한 성공/실패를 나타내는 응답 필드(43), 사용 권한을 획득한 호스트들의 ID를 나타내는 필드(44), 소유자 호스트 필드(45)가 포함된다.
상기 전역 버퍼 관리자(112)는 다른 호스트에게 버퍼 블록의 전송 요청을 할 때, 테이블 정보를 참조하여 프라이머리 카피(Primary Copy)를 소유한 호스트(32)에게 가장 먼저 버퍼 블록을 요청하고 실패하면 버퍼 소유 호스트(33) 중에서 적당한 호스트를 선택하여 버퍼 전송 요구를 보낸다. 잠금 관리자(113)는 전역 버퍼 관리자(112)로부터 특정 블록 데이터에 대한 사용 권한을 요청 받았을 때, 사용 권한을 허가할 수 있다면 소유자 호스트를 정해 응답 메시지에 포함시킨다. 소유자 호스트는 프라이머리 카피(Primary Copy)를 갖는 호스트이고 이후에 발생하는 버퍼 블록 전송 요구를 받는다. 버퍼 블록의 전송 요구가 특정 호스트에게 집중되면 이 호스트의 처리 오버헤드가 증가하여 응답 속도가 느려지기 때문에 클러스터 시스템의 전체 성능을 저하시키는 문제가 발생한다. 따라서 부하가 높은 호스트가 소유자 호스트가 되는 것은 가능한 피해야 한다. 잠금 관리자(113)가 소유자 호스트를 정하는 방법은 다음과 같은 네 가지가 있다.
첫째, 소유자 호스트를 바꾸지 않고 처음에 잠금을 획득한 호스트가 계속해서 소유자 호스트가 되도록 한다. 이 방법은 부하 분산을 고려하지 않는 간단한 방법이다. 특정 잠금 ID에 대해서 처음 사용 권한을 획득한 호스트는 잠금 획득 호스트 필드(23)에 자신 밖에 없으므로 첫 소유자 호스트가 된다. 이후에 잠금을 획득한 호스트가 계속 추가되어도 소유자 호스트를 바꾸지 않는다.
둘째, 잠금을 획득한 호스트(23) 중 임의의(random) 호스트가 소유자 호스트가 되도록 한다. 이하의 방법에서 소유자 호스트가 바뀌는 경우, 새로운 소유자 호스트에게 해당 잠금 ID에 대한 소유자 호스트가 되었음을 알려서 소유자 호스트가 해당 버퍼 블록을 버퍼 캐쉬에서 삭제하지 않도록 한다.
셋째, 잠금을 획득한 호스트(23) 중 부하(CPU 사용량, 메모리 사용량 등)가 가장 적은 호스트가 소유자 호스트가 되도록 한다.
도 5는 잠금 관리자(113)가 유지하는 테이블 중의 하나이며 각 호스트의 부하 정보가 일정 시간 간격으로 갱신된다. 도면에서 51로 표시된 행은 각 호스트의 ID를 나타내고 52로 표시된 수치는 각 호스트의 총 부하 정보이다. 각 호스트의 부하를 수치적으로 구하는 방법은 아래의 수학식 1과 같다.
여기서, Host Load는 각 호스트의 총 부하로서, 기본적인 호스트 부하(LoadOriginal)에 프라이머리 카피(primary copy) 버퍼 블록에 대한 전송 요구를 처리하는데 필요한 부하(LoadGlobal Buffer), 즉 전역 버퍼 관리자가 버퍼 블록 전송 요구를 처리하는데 필요한 전역 버퍼 부하를 더한 값이다.
상기 기본적인 호스트 부하는 잠금 요청 횟수(NLock)를 통해 아래의 수학식 2와 같이 계산된다.
여기서, 잠금 요청 횟수는 클러스터 시스템 내의 공유 데이터 사용 횟수를 나타내므로 호스트의 부하가 높을수록 잠금 요청 횟수는 증가한다. 잠금 요청 횟수는 최근 일정 기간 동안 수집된 것을 사용함으로써 호스트의 현재 상태를 반영한다. 상수 CP는 잠금을 획득하고 해지하는 사이의 평균 계산 지연 시간(average processing delay)을 나타낸다.
상기 전역 버퍼 관리자가 버퍼 블록 전송 요구를 처리하는데 필요한 전역 버퍼 부하(LoadGlobal Buffer)는 아래의 수학식 3과 같이 계산된다.
여기서, NGLOBAL HIT는 최근 일정 기간 동안 처리한 전역 버퍼 요구 중에서 요청된 버퍼 블록이 버퍼 캐쉬(120)에 있는 경우의 횟수를 나타내고, NgLOBAL MISS는 버퍼 캐쉬(120)에 존재하지 않는 경우의 횟수를 나타낸다. 상수 CTP는 요청된 버퍼 블록을 버퍼 캐쉬(120)에서 찾아 다른 호스트로 전송하는데 필요한 평균 시간을 나타내고, 상수 CTN는 요청이 실패했을 경우에 이를 처리하는데 필요한 평균 시간을 나타낸다.
도 6은 상기한 세 번째 방법으로 상기 잠금 관리자(113)가 새로운 소유자 호스트를 정하는 과정을 나타낸다.
먼저, 상기 전역 버퍼 관리자(112)가 잠금 관리자(113)에게 해당 디스크 블록에 대한 사용 권한을 요청하면, 상기 잠금 관리자(113)는 전역 버퍼 관리자(112)가 상위 모듈(111)의 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한이 허가될 수 있는가를 판정한다(S61).
만약, 상기 전역 버퍼 관리자(112)가 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한이 허가되지 않으면, 상기 잠금 관리자(113)는 전역 버퍼 관리자(112)에게 사용 권한 획득 실패 메시지를 보내고(S63), 반대로 전역 버퍼 관리자(112)가 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한을 획득할 수 있다면 이 전역 버퍼 관리자(112)를 포함하고 있는 호스트의 ID를 잠금을 획득한 호스트 필드(23)에 추가한다(S62).
이어서, 잠금 관리자(113)는 이전에 소유자로 지정된 호스트(24)의 부하가 특정한 기준치를 초과하는가를 판별한 결과(S64), 기준치를 초과하지 않는 것으로 판별되면 전역 버퍼 관리자(112)에게 사용 권한 획득 성공 응답 메시지를 보내고(S67), 반대로 소유자로 지정된 호스트의 부하가 특정한 기준치를 초과하면 잠금 획득 호스트들 중 부하가 기준치 미만인 호스트가 있는가를 판별한다(S65).
이때, 부하가 기준치 미만인 호스트가 없으면 전역 버퍼 관리자(112)에게 사용 권한 획득 성공 응답 메시지를 보내고(S67), 부하가 기준치 미만인 호스트가 있으면 부하가 기준치 미만인 잠금 획득 호스트(23)들 중 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여(S66) 전역 버퍼 관리자(112)에게 사용 권한 획득 성공 응답 메시지를 보낸다(S67).
넷째, 클러스터 시스템 내의 모든 호스트들 중에 부하가 적은 호스트가 소유자 호스트가 되도록 한다. 특정 호스트의 부하가 기준치 이상으로 높아지면 잠금 관리자(113)가 도 5의 테이블을 통해 이를 알아내고 부하가 높은 호스트가 프라이머리 카피(Primary Copy) 호스트로 설정된 버퍼 블록들을 부하가 적은 호스트로 이동(migration)시킨다.
이동되는 프라이머리 카피(Primary Copy) 버퍼 블록들은 호스트가 최근에 사용하지 않았던 것으로 한다. 즉, LRU(Least Recently Used) 대체 알고리즘으로 이동되는 프라이머리 카피(Primary Copy) 버퍼 블록들을 정한다.
도 7은 상기한 네 번째 방법으로 상기 잠금 관리자(113)가 새로운 소유자 호스트를 정하는 과정을 나타낸다.
먼저, 상기 잠금 관리자(113)가 주기적으로 각 호스트의 부하를 검사하여(S71) 부하가 기준치를 초과한 호스트가 있는지(S72), 부하가 기준치 미만인 호스트가 있는지를 판별한다(S73).
또한, 상기 잠금 관리자(113)는 상기와 같은 부하 검사 결과 과부하인 호스트에 프라이머리 카피(Primary Copy)로 설정된 버퍼 블록이 있는가를 판별한다(S74).
만약, 과부하인 호스트에 프라이머리 카피(Primary Copy)로 설정된 버퍼 블록이 있으면, 과부하인 호스트에서 최근에 사용되지 않은 프라이머리 카피 버퍼 블록들을 선택하고(S75), 실제로 선택된 버퍼 블록이 있는지 판별한다(S76).
이때, 과부하인 호스트에 선택된 버퍼 블록이 있으면 부하가 가장 적은 호스트로 선택된 프라이머리 카피 버퍼 블록들을 이동시킨 후(S77), 이동된 버퍼 블록에 대한 소유자 호스트를 부하가 가장 적은 호스트로 지정한다. 이후에 상기 전역 버퍼 관리자(112)가 잠금 관리자(113)에게 이동된 버퍼 블록에 대한 사용 권한을 요청하고 이 요청이 수락된다면 사용 권한 획득 성공 응답 메시지와 함께 새로운소유자 호스트 정보를 전달한다.
상술한 바와 같이 본 발명에 따른 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법은, 클러스터 시스템에서 전역 버퍼 관리자를 통하여 여러 호스트들 간에 버퍼 캐쉬를 공유할 때, 전역 버퍼 관리자의 동작에 필요한 시스템 부하가 시스템 내의 특정 호스트에 집중되어 성능을 저하시키는 현상을 방지하기 위하여 각 호스트의 부하를 계산하여 전역 버퍼 관리자의 요구를 분산하고, 전역 버퍼 관리자는 속도가 느린 디스크 I/O를 통해서가 아닌 다른 호스트의 메모리 상에 존재하는 버퍼 캐쉬로부터 디스크 상의 블록(디스크 블록) 내에 저장된 블록 데이터를 메모리로 읽은 복사본에 해당하는 버퍼 블록을 가져오도록 하며, 버퍼 블록들을 사용되지 않는 호스트(Idle host)로 이동시킬 수 있도록 되어 있기 때문에, 전역 버퍼 관리자를 사용하는 클러스터 시스템의 확장성을 높일 수 있을 뿐만 아니라, 메모리 사용량과 CPU 부하까지 고려한 간단한 부하 계산 방법을 이용하여 전역 버퍼 요구에 대한 응답 속도를 감소시키지 않으면서 부하를 분산시킬 수 있는 장점이 있다.
특히, 본 발명은 프라이머리 카피(Primary copy)를 갖는 호스트를 둠으로써 적어도 하나의 호스트의 버퍼 캐쉬에 유효한 버퍼 블록이 남아 있도록 하여 버퍼 블록의 전송 요구에 대한 성공률을 높이고 블록 데이터에 대한 접근 속도를 향상시킬 수 있는 장점이 있다.
이상에서 설명한 것은 본 발명에 따른 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법을 실시하기 위한 하나의 실시 예에 불과한 것으로서, 본 발명은 상기한 실시예에 한정되지 않고, 이하의 특허청구의 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 정신이 있다고 할 것이다.
Claims (3)
- 클러스터 시스템의 특정 호스트의 상위 모듈이 디스크 블록에 대한 읽기/쓰기를 수행하기 위하여 전역 버퍼 관리자에게 버퍼 블록의 전달을 요구하는 단계와;전역 버퍼 관리자가 잠금 관리자에게 해당 디스크 블록에 대한 사용 권한을 요청하는 단계;잠금 관리자가 사용 권한의 수락 여부를 응답 메시지에 실어 전역 버퍼 관리자에게 보내는 단계;전역 버퍼 관리자가 사용 권한을 획득하지 못하면 상위 모듈의 버퍼 블록의 읽기/쓰기 동작을 실패하는 단계;전역 버퍼 관리자가 사용 권한을 획득하면 사용 권한을 획득한 호스트의 버퍼 캐쉬에 요청 받은 버퍼 블록이 있는지 찾는 단계;사용 권한을 획득한 호스트의 버퍼 캐쉬에 요청 받은 버퍼 블록이 없으면 다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 있는지 찾는 단계;다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 있으면 통신 모듈을 통해서 다른 호스트에게 버퍼 블록의 전송을 요청하는 단계;다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 없으면 디스크 I/O를 통해서 요청된 버퍼 블록을 버퍼 캐쉬로 복사하여 읽어오는 단계;다른 호스트에게 요청한 버퍼 블록의 전송이 실패하면 디스크 I/O를 통해서 요청된 버퍼 블록을 버퍼 캐쉬로 복사하여 읽어오는 단계;디스크 I/O를 통해서 버퍼 블록을 버퍼 캐쉬로 복사하여 읽어오거나 다른 호스트의 버퍼 캐쉬에서 버퍼 블록을 받으면 상위 모듈에게 전달하는 단계; 및상위 모듈이 버퍼 블록에 읽기/쓰기 동작을 마친 후 버퍼 블록 사용 해지를 요청하면 전역 버퍼 관리자가 잠금 관리자에게 버퍼 블록에 대한 사용 권한을 반환하는 단계로 이루어지는 것을 특징으로 하는 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법.
- 제 1 항에 있어서, 상기 잠금 관리자가 각 호스트의 부하를 계산하여 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여 사용 권한의 수락 여부를 응답 메시지에 실어 전역 버퍼 관리자에게 보내는 단계는,전역 버퍼 관리자가 상위 모듈의 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한을 획득할 수 있는가를 판별하는 단계와;전역 버퍼 관리자가 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한을 획득할 수 없으면 사용 권한 획득 실패 메시지를 보내는 단계;전역 버퍼 관리자가 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한을 가지면 이 전역 버퍼 관리자를 포함하고 있는 호스트의 ID를 잠금 테이블의 잠금 획득 호스트 필드에 추가하는 단계;이전에 소유자로 지정된 호스트의 부하가 특정한 기준치를 초과하는가를 판별한 결과, 기준치를 초과하지 않는 것으로 판별되면 전역 버퍼 관리자에게 사용 권한 획득 성공 응답 메시지를 보내는 단계;소유자로 지정된 호스트의 부하가 특정한 기준치를 초과하면 잠금 획득 호스트들 중 부하가 기준치 미만인 호스트가 있는가를 판별한 결과, 부하가 기준치 미만인 호스트가 없으면 전역 버퍼 관리자에게 사용 권한 획득 성공 응답 메시지를 보내는 단계; 및부하가 기준치 미만인 호스트가 있으면 부하가 기준치 미만인 잠금 획득 호스트들 중 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여 전역 버퍼 관리자에게 사용 권한 획득 성공 응답 메시지를 보내는 단계로 이루어지는 것을 특징으로 하는 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법.
- 제 1 항에 있어서, 상기 잠금 관리자가 각 호스트의 부하를 계산하여 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여 사용 권한의 수락 여부를 응답 메시지에 실어 전역 버퍼 관리자에게 보내는 단계는,주기적으로 각 호스트의 부하를 검사하여 부하가 기준치를 초과한 호스트가 있는지, 부하가 기준치 미만인 호스트가 있는지를 판별하는 단계와;과부하인 호스트에 프라이머리 카피(Primary Copy)로 설정된 버퍼 블록이 있는가를 판별하는 단계;과부하인 호스트에서 최근에 사용되지 않은 프라이머리 카피 버퍼 블록들을 선택하고, 실제로 선택된 버퍼 블록이 있는지 판별하는 단계;과부하인 호스트에 선택된 버퍼 블록이 있으면 부하가 가장 적은 호스트로 선택된 프라이머리 카피 버퍼 블록들을 이동시키는 단계; 및이동된 버퍼 블록에 대한 소유자 호스트를 부하가 가장 적은 호스트로 지정하는 단계로 이루어지는 것을 특징으로 하는 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0045951A KR100431511B1 (ko) | 2002-08-03 | 2002-08-03 | 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0045951A KR100431511B1 (ko) | 2002-08-03 | 2002-08-03 | 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040012388A true KR20040012388A (ko) | 2004-02-11 |
KR100431511B1 KR100431511B1 (ko) | 2004-05-13 |
Family
ID=37320373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2002-0045951A KR100431511B1 (ko) | 2002-08-03 | 2002-08-03 | 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100431511B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579298A (zh) * | 2020-12-26 | 2021-03-30 | 中国建设银行股份有限公司 | 一种主机耦合体的均衡控制方法和装置 |
-
2002
- 2002-08-03 KR KR10-2002-0045951A patent/KR100431511B1/ko not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579298A (zh) * | 2020-12-26 | 2021-03-30 | 中国建设银行股份有限公司 | 一种主机耦合体的均衡控制方法和装置 |
CN112579298B (zh) * | 2020-12-26 | 2024-08-13 | 中国建设银行股份有限公司 | 一种主机耦合体的均衡控制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
KR100431511B1 (ko) | 2004-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1316019B1 (en) | Managing replacement of data in a cache on a node based on caches of other nodes | |
US8812794B2 (en) | Resolving messaging deadlock in a distributed shared memory | |
US5604882A (en) | System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system | |
US10747673B2 (en) | System and method for facilitating cluster-level cache and memory space | |
US8402225B2 (en) | Method for performing cache coherency in a computer system | |
EP1255201B1 (en) | Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols | |
US8176259B2 (en) | System and method for resolving transactions in a cache coherency protocol | |
US7177987B2 (en) | System and method for responses between different cache coherency protocols | |
US10162757B2 (en) | Proactive cache coherence | |
US9361229B2 (en) | Distributed shared caching for clustered file systems | |
US7386680B2 (en) | Apparatus and method of controlling data sharing on a shared memory computer system | |
US6112281A (en) | I/O forwarding in a cache coherent shared disk computer system | |
CN103744799A (zh) | 一种内存数据访问方法、装置和系统 | |
US7873613B2 (en) | Providing storage control in a network of storage controllers | |
CN107341114B (zh) | 一种目录管理的方法、节点控制器和系统 | |
JP2001184248A (ja) | 分散処理システムにおけるデータアクセス管理装置 | |
CN108990422B (zh) | 一种锁分配的方法、装置和计算设备 | |
KR20170107061A (ko) | 멀티 코어 시스템에서 데이터 방문자 디렉토리에 액세스하는 방법 및 장치 | |
US7174437B2 (en) | Memory access management in a shared memory multi-processor system | |
US6298419B1 (en) | Protocol for software distributed shared memory with memory scaling | |
US9063858B2 (en) | Multi-core system and method for data consistency by memory mapping address (ADB) to hash table pattern associated with at least one core | |
US6148375A (en) | Hierarchical bus simple COMA architecture for shared memory multiprocessors having a bus directly interconnecting caches between nodes | |
KR100431511B1 (ko) | 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 | |
US6834281B1 (en) | Method and apparatus to support multi-node direct access to file system data | |
JP2007188518A (ja) | データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130424 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20140430 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20150520 Year of fee payment: 12 |
|
LAPS | Lapse due to unpaid annual fee |