KR20040012388A - 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 - Google Patents

클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 Download PDF

Info

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
Application number
KR1020020045951A
Other languages
English (en)
Other versions
KR100431511B1 (ko
Inventor
박선영
손덕주
김경배
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2002-0045951A priority Critical patent/KR100431511B1/ko
Publication of KR20040012388A publication Critical patent/KR20040012388A/ko
Application granted granted Critical
Publication of KR100431511B1 publication Critical patent/KR100431511B1/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
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

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

클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법{Global buffer management method capable of distributing loads in cluster systems}
본 발명은 다수의 호스트가 고속의 네트워크로 연결되어 하나의 시스템 이미지(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+ LoadGlobal Buffer
여기서, Host Load는 각 호스트의 총 부하로서, 기본적인 호스트 부하(LoadOriginal)에 프라이머리 카피(primary copy) 버퍼 블록에 대한 전송 요구를 처리하는데 필요한 부하(LoadGlobal Buffer), 즉 전역 버퍼 관리자가 버퍼 블록 전송 요구를 처리하는데 필요한 전역 버퍼 부하를 더한 값이다.
상기 기본적인 호스트 부하는 잠금 요청 횟수(NLock)를 통해 아래의 수학식 2와 같이 계산된다.
LoadOriginal= CPX NLock
여기서, 잠금 요청 횟수는 클러스터 시스템 내의 공유 데이터 사용 횟수를 나타내므로 호스트의 부하가 높을수록 잠금 요청 횟수는 증가한다. 잠금 요청 횟수는 최근 일정 기간 동안 수집된 것을 사용함으로써 호스트의 현재 상태를 반영한다. 상수 CP는 잠금을 획득하고 해지하는 사이의 평균 계산 지연 시간(average processing delay)을 나타낸다.
상기 전역 버퍼 관리자가 버퍼 블록 전송 요구를 처리하는데 필요한 전역 버퍼 부하(LoadGlobal Buffer)는 아래의 수학식 3과 같이 계산된다.
LoadGlobal Buffer= CTPX NGLOBAL HIT+ CTNX NgLOBAL MISS
여기서, 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)

  1. 클러스터 시스템의 특정 호스트의 상위 모듈이 디스크 블록에 대한 읽기/쓰기를 수행하기 위하여 전역 버퍼 관리자에게 버퍼 블록의 전달을 요구하는 단계와;
    전역 버퍼 관리자가 잠금 관리자에게 해당 디스크 블록에 대한 사용 권한을 요청하는 단계;
    잠금 관리자가 사용 권한의 수락 여부를 응답 메시지에 실어 전역 버퍼 관리자에게 보내는 단계;
    전역 버퍼 관리자가 사용 권한을 획득하지 못하면 상위 모듈의 버퍼 블록의 읽기/쓰기 동작을 실패하는 단계;
    전역 버퍼 관리자가 사용 권한을 획득하면 사용 권한을 획득한 호스트의 버퍼 캐쉬에 요청 받은 버퍼 블록이 있는지 찾는 단계;
    사용 권한을 획득한 호스트의 버퍼 캐쉬에 요청 받은 버퍼 블록이 없으면 다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 있는지 찾는 단계;
    다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 있으면 통신 모듈을 통해서 다른 호스트에게 버퍼 블록의 전송을 요청하는 단계;
    다른 호스트의 버퍼 캐쉬에 요청된 버퍼 블록이 없으면 디스크 I/O를 통해서 요청된 버퍼 블록을 버퍼 캐쉬로 복사하여 읽어오는 단계;
    다른 호스트에게 요청한 버퍼 블록의 전송이 실패하면 디스크 I/O를 통해서 요청된 버퍼 블록을 버퍼 캐쉬로 복사하여 읽어오는 단계;
    디스크 I/O를 통해서 버퍼 블록을 버퍼 캐쉬로 복사하여 읽어오거나 다른 호스트의 버퍼 캐쉬에서 버퍼 블록을 받으면 상위 모듈에게 전달하는 단계; 및
    상위 모듈이 버퍼 블록에 읽기/쓰기 동작을 마친 후 버퍼 블록 사용 해지를 요청하면 전역 버퍼 관리자가 잠금 관리자에게 버퍼 블록에 대한 사용 권한을 반환하는 단계
    로 이루어지는 것을 특징으로 하는 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법.
  2. 제 1 항에 있어서, 상기 잠금 관리자가 각 호스트의 부하를 계산하여 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여 사용 권한의 수락 여부를 응답 메시지에 실어 전역 버퍼 관리자에게 보내는 단계는,
    전역 버퍼 관리자가 상위 모듈의 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한을 획득할 수 있는가를 판별하는 단계와;
    전역 버퍼 관리자가 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한을 획득할 수 없으면 사용 권한 획득 실패 메시지를 보내는 단계;
    전역 버퍼 관리자가 버퍼 블록 전송 요구를 처리하는데 필요한 사용 권한을 가지면 이 전역 버퍼 관리자를 포함하고 있는 호스트의 ID를 잠금 테이블의 잠금 획득 호스트 필드에 추가하는 단계;
    이전에 소유자로 지정된 호스트의 부하가 특정한 기준치를 초과하는가를 판별한 결과, 기준치를 초과하지 않는 것으로 판별되면 전역 버퍼 관리자에게 사용 권한 획득 성공 응답 메시지를 보내는 단계;
    소유자로 지정된 호스트의 부하가 특정한 기준치를 초과하면 잠금 획득 호스트들 중 부하가 기준치 미만인 호스트가 있는가를 판별한 결과, 부하가 기준치 미만인 호스트가 없으면 전역 버퍼 관리자에게 사용 권한 획득 성공 응답 메시지를 보내는 단계; 및
    부하가 기준치 미만인 호스트가 있으면 부하가 기준치 미만인 잠금 획득 호스트들 중 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여 전역 버퍼 관리자에게 사용 권한 획득 성공 응답 메시지를 보내는 단계
    로 이루어지는 것을 특징으로 하는 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법.
  3. 제 1 항에 있어서, 상기 잠금 관리자가 각 호스트의 부하를 계산하여 부하가 가장 적은 호스트를 새로운 소유자 호스트로 지정하여 사용 권한의 수락 여부를 응답 메시지에 실어 전역 버퍼 관리자에게 보내는 단계는,
    주기적으로 각 호스트의 부하를 검사하여 부하가 기준치를 초과한 호스트가 있는지, 부하가 기준치 미만인 호스트가 있는지를 판별하는 단계와;
    과부하인 호스트에 프라이머리 카피(Primary Copy)로 설정된 버퍼 블록이 있는가를 판별하는 단계;
    과부하인 호스트에서 최근에 사용되지 않은 프라이머리 카피 버퍼 블록들을 선택하고, 실제로 선택된 버퍼 블록이 있는지 판별하는 단계;
    과부하인 호스트에 선택된 버퍼 블록이 있으면 부하가 가장 적은 호스트로 선택된 프라이머리 카피 버퍼 블록들을 이동시키는 단계; 및
    이동된 버퍼 블록에 대한 소유자 호스트를 부하가 가장 적은 호스트로 지정하는 단계
    로 이루어지는 것을 특징으로 하는 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법.
KR10-2002-0045951A 2002-08-03 2002-08-03 클러스터 시스템에서 부하 분산이 가능한 전역버퍼 관리방법 KR100431511B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112579298A (zh) * 2020-12-26 2021-03-30 中国建设银行股份有限公司 一种主机耦合体的均衡控制方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
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