KR101960138B1 - 분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들 - Google Patents

분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR101960138B1
KR101960138B1 KR1020160151208A KR20160151208A KR101960138B1 KR 101960138 B1 KR101960138 B1 KR 101960138B1 KR 1020160151208 A KR1020160151208 A KR 1020160151208A KR 20160151208 A KR20160151208 A KR 20160151208A KR 101960138 B1 KR101960138 B1 KR 101960138B1
Authority
KR
South Korea
Prior art keywords
cache
cache slices
slices
computer node
computer
Prior art date
Application number
KR1020160151208A
Other languages
English (en)
Other versions
KR20170058293A (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 KR20170058293A publication Critical patent/KR20170058293A/ko
Application granted granted Critical
Publication of KR101960138B1 publication Critical patent/KR101960138B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Landscapes

  • Engineering & Computer Science (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)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

캐시 슬라이스들로 파티셔닝된 분산형 캐시의 적응적 파티셔닝을 수행하기 위한 방법들 및 시스템들이 제공된다. 분산형 캐시의 슬라이스들이 라우팅 테이블에 기초하여서 클러스터의 상이한 컴퓨터 노드들에 할당될 수 있다. 사전-결정된 시간 간격 후에, 캐시 슬라이스들은 액세스 통계치들에 기초하여서 클러스터의 다른 컴퓨터 노드들에 재할당될 수 있으며, 캐시 슬라이스들이 클러스터의 컴퓨터 노드들로 재-할당되는 것에 대응하는 새로운 라우팅 테이블이 제공된다.

Description

분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR ADAPTIVE PARTITIONING IN DISTRIBUTED CACHE MEMORIES}
본 개시는 분산형 캐시 또는 저장 메모리의 적응적 파티셔닝을 위한 시스템들 및 방법들에 관한 것이다.
컴퓨터 클러스터들은 네트워크를 통해서 상호접속될 수 있는 2 개 이상의 컴퓨터 노드들로 구성된다. 컴퓨터 클러스터들은 분산형 저장 메모리 시스템들, 예를 들어서, 분산형 캐시 시스템들을 구현할 수 있다. 클러스터의 전체 저장 용량은 통상적으로 어느 정도의 규격 크기의 다수의 슬라이스들로 분할된다. 이 슬라이스들은 클러스터의 컴퓨터 노드들에 걸쳐서 분산된다. 각 슬라이스는 하나 및 오직 하나의 컴퓨터 노드에 대해서만 국한될 수 있다. 원격 컴퓨터 노드에 의해서 소유된 슬라이스 내에 상주하는 로직 블록 어드레스(LBA)에 대한 컴퓨터 노드에서의 임의의 요청이 원격 노드 상에서의 프로세싱을 위해서 네트워크를 통해서 전송될 필요가 있다.
이는 네트워크 상의 트래픽을 증가시킬 수 있으며, 이는 네트워크 경합으로 인해서 네트워크 대역폭 및 레이턴시를 저하시킬 수 있다. 따라서, 슬라이스들을 적절하게 분산시켜서 네트워크 성능에 대한 원격 데이터 요청들의 영향을 줄일 수 있는 시스템들 및 방법들이 바람직하다.
캐시 슬라이스들로 파티셔닝된 분산형 캐시의 적응적 파티셔닝을 수행하기 위한 방법들 및 시스템들이 제공된다. 분산형 캐시의 슬라이스들이 라우팅 테이블에 기초하여서 클러스터의 상이한 컴퓨터 노드들에 할당될 수 있다. 사전-결정된 시간 간격 후에, 캐시 슬라이스들은 액세스 통계치들에 기초하여서 클러스터의 다른 컴퓨터 노드들에 재할당될 수 있으며, 캐시 슬라이스들이 클러스터의 컴퓨터 노드들로 재-할당되는 것에 대응하는 새로운 라우팅 테이블이 제공된다.
본 개시의 양태들에 따라서, 네트워크에 의해서 상호접속된 복수의 컴퓨터 노드들을 포함하는 클러스터 내에서의 분산형 캐시의 적응적 파티셔닝을 위한 방법이 제공되며, 상기 분산형 캐시는 캐시 슬라이스들로 파티셔닝된다. 상기 방법은, 제1 라우팅 테이블에 기초하여서 복수의 제1 캐시 슬라이스들을 제1 컴퓨터 노드에 할당하는 단계, 제1 시간 간격 이후에, 상기 컴퓨터 노드들의 상기 캐시 슬라이스들에 대한 액세스 통계치들에 기초하여서, 복수의 제2 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 재할당하고, 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트를 상기 제1 컴퓨터 노드가 아닌 적어도 하나의 컴퓨터 노드에 재할당하는 단계, 및 상기 제1 시간 간격 이후에, 상기 캐시 슬라이스들의 상기 컴퓨터 노드들로의 할당사항에 따라서, 제2 라우팅 테이블을 제공하는 단계를 포함할 수 있다.
본 개시의 양태들에 따라서, 네트워크에 의해서 상호접속된 복수의 컴퓨터 노드들을 포함하는 클러스터 내에서의 분산형 캐시의 적응적 파티셔닝을 위한 시스템이 제공된다. 상기 시스템은 캐시 슬라이스들로 파티셔닝된 상기 분산형 캐시, 및 제1 컴퓨터 노드를 포함할 수 있다. 상기 제1 컴퓨터 노드는, 제1 라우팅 테이블에 기초하여서 복수의 제1 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 할당하고, 제1 시간 간격 이후에, 상기 컴퓨터 노드들의 상기 캐시 슬라이스들에 대한 액세스 통계치들에 기초하여서, 복수의 제2 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 재할당하고, 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트를 상기 제1 컴퓨터 노드가 아닌 적어도 하나의 컴퓨터 노드에 재할당하며, 상기 제1 시간 간격 이후에, 상기 캐시 슬라이스들의 상기 컴퓨터 노드들로의 할당사항에 따라서, 제2 라우팅 테이블을 제공하도록 구성될 수 있다.
본 개시의 다양한 목적들, 특징들, 및 이점들이 다음의 상세한 설명이 다음의 도면들과 관련하여서 고려되면서 참조됨으로써 보다 완벽하게 이해될 수 있으며, 도면들에서 유사한 참조 부호들은 유사한 요소들을 나타낸다. 다음의 도면들은 단지 예시적인 목적을 위한 것이며 본 발명을 한정하고자 하는 것은 아니며 본 발명의 범위는 다음의 청구항들에서 제시된다.
도 1은 본 개시의 양태들에 따른, 예시적인 클러스터 시스템을 예시한다.
도 2는 본 개시의 양태들에 따른, 예시적인 클러스터 시스템, 클러스터 노드당 데이터 전송률, 및 예시적인 슬라이스 할당사항을 예시한다.
도 3은 본 개시의 양태들에 따른, 예시적인 클러스터 시스템, 클러스터 노드당 데이터 전송률, 및 슬라이스 재-할당사항을 예시한다.
도 4는 본 개시의 양태들에 따른, 클러스터 시스템에서 라우팅 맵들을 업데이트하기 위한 예시적인 방법을 예시한다.
분산형 캐시 시스템들의 적응적 파티셔닝을 위한 시스템들 및 방법들이 개시된다. 클러스터의 전체 캐시는 다수의 슬라이스들로 분할되며, 이 슬라이스들은 클러스터의 컴퓨터 노드들과 연관된다. 개시된 시스템들 및 방법들은 클러스터의 네트워크 사용률을 검사하고 슬라이스들을 새로운 컴퓨터 노드들로 재-할당할 수 있다. 새로운 할당사항을 나타내는 새로운 라우팅 맵(routing map)이 클러스터의 매 컴퓨터 노드로 라우팅될 수 있다.
도 1은 컴퓨터 노드들의 예시적인 클러스터(100)를 도시한다. 구체적으로, 클러스터(100)는 컴퓨터 노드들(102, 104, 및 106)을 포함한다. 노드(102)는 서버(108) 및 저장 디바이스(110)를 포함하고, 노드(104)는 서버(112) 및 저장 디바이스(114)를 포함하며, 노드(106)는 서버(116) 및 저장 디바이스(118)를 포함한다. 노드들(102, 104, 및 106)은 네트워크(120)를 통해서 상호접속된다. 종래 기술의 일부 분산형 저장 시스템들은 통상적으로 슬라이스들을 스트라이핑을 통해서 컴퓨터 노드들 간에 분산시킨다. 데이터 스트라이핑 기법은, 예를 들어서, 라운드-로빈 방식으로 상이한 컴퓨터 노드들의 물리적 저장 디바이스들 상에 순차적 슬라이스들을 로컬 방식으로 저장한다. 예를 들어서, 클러스터(100) 내의 슬라이스들은 노드들(102, 104, 및 106)에 이러한 순서로 연속적으로 할당될 수 있다. 종래 기술의 다른 분산형 저장 시스템들은 예를 들어서, 해시 함수를 사용하여서, 슬라이스들을 클러스터의 노드들 간에 랜덤하게 분산시킬 수 있다.
이러한 종래 기술 시스템들은 양호하지 않은 스케일링 능력(scalability)을 보인다. 예를 들어서, 클러스터 내의 "N" 개의 노드들 간에 슬라이스들을 랜덤하면서 균일하게 분산시키는 것을 가정하면, 특정 노드의 서버로부터 요청된 데이터 패킷이 해당 노드에 로컬 방식으로(locally) 저장될 수 있는 확률은 오직 1/N이다. 요청된 데이터 패킷이 로컬 방식으로 저장되지 않으면, 데이터 패킷에 대한 요청은 네트워크를 통해서 원격 노드로 전송될 필요가 있으며 데이터 패킷은 네트워크를 통해서 이를 요청한 노드로 전송될 필요가 있다. 노드들의 개수가 증가할수록, 증가하는 개수의 데이터 패킷들이 데이터 패킷 요청들을 만족시키기 위해서 네트워크를 통해서 전송되어야 한다. 이는 네트워크의 가용 대역폭에 부정적인 영향을 줄 수 있다. 상위 층 애플리케이션들이 또한 네트워크 대역폭에 대해서 서로 경합할 수 있기 때문에, 시스템은 네트워크 혼잡으로 인해 양호하지 않은 성능을 가질 수 있다.
상술한 바와 같은, 액세스들에 대한 선행 지식 없이, 슬라이스들은 클러스터 내의 모든 노드들 간에 초기에 스트라이핑될 수 있다(striped). 각 노드는 글러스터 내의 모든 슬라이스 소유권에 대한 정보를 갖는 라우팅 맵을 가질 수 있으며, 이 정보는 요청을 적절한 소유자에게 라우팅하는데 사용될 수 있다. 각 노드는 또한 모든 슬라이스들에 대한 액세스 통계치들을 유지할 수 있다. 이러한 정보를 저장하기 위한 데이터 구조는 슬라이스들의 개수에 따라서 크기가 정해질 수 있는 어레이일 수 있으며 또한 타임스탬프를 위한 어레이 내의 필드를 가질 수 있다. 슬라이스 수는 어레이 인덱스로부터 암시될 수 있으며 어레이 내의 각 인덱스는 해당 슬라이스에 대한 액세스 통계치, 예를 들어서, 해당 노드로부터의 해당 특정 슬라이스로부터 판독되고/되거나 이에 기록된 데이터의 양을 나타낼 수 있다. 데이터 레이트(MB/sec)가 데이터 구조 내의 해당 정보의 최종 리셋 이후의 기간(interval) 동안에 용이하게 계산될 수 있도록 타임스탬프는 전체 데이터 구조에 대해서 저장될 수 있다.
특정 노드가 로직 블록 어드레스(LBA)에 대한 요청을 수신할 때마다, 상기 노드는 LBA가 속한 슬라이스를 결정할 수 있으며, 이어서 라우팅 맵을 참조하여서 이 특정 슬라이스의 소유자 노드를 결정할 수 있다. 특정 노드가 이 특정 슬라이스의 소유자이면, 이 특정 노드는 임의의 네트워크 자원들 없이, 상기 요청을 로컬 방식으로 서비스할 수 있다. 특정 슬라이스가 다른 노드에 의해서 소유된 경우에는, 상기 요청은 이 소유자에게 라우팅된다. 또한, 특정 노드는 이에 따라서 상기 슬라이스에 대한 액세스 통계치 카운터를 수정할 수 있다.
본 개시의 양태들에 따라서, 사전-결정된 시간 간격 이후에, 개시된 시스템들 및 방법들은 각 슬라이스에 대한 새로운 소유자들을 결정할 수 있으며, 이는 네트워크 사용률을 저감시킬 수 있다. 새로운 소유자들은 액세스 통계치들에 대한 충분한 정보가 수집된 사전-결정된 기간 이후에 결정되어서, 새로운 소유자들에 대한 이러한 결정을 통보할 수 있다. 개시된 방법이 슬라이스가 새로운 소유자로 변경될 수 있다고 결정하면, 이 슬라이스는 예를 들어서, 사용자 개입 없이 또는 캐시를 재생성할 필요 없이, 동적으로 재할당될 수 있다.
2 개 이상의 노드가 동일한 슬라이스 내의 데이터에 액세스할 수 있기 때문에, 슬라이스가 새로운 소유자에 재할당된 후에, 다른 노드들은 여전히 이 슬라이스에 원격으로 액세스하는 것을 요구할 수 있다. 따라서, 네트워크는 여전히 원격 노드들에서의 데이터 액세스에 대한 요청들을 수용해야 한다. 본 개시의 양태들에 따라서, 슬라이스가 액세스의 로컬성(locality)에 기초하여서 노드에 재할당될 수 있는데, 예를 들어서, 가장 많은 데이터를 전달하는 노드에 재할당될 수 있으며, 이는 네트워크에 대한 영향을 최소화시킬 수 있다.
네트워크 사용률 저감에 추가하여서, 슬라이스들의 동적 할당은 또한 스케일링 능력을 개선할 수 있는데, 그 이유는 이러한 동적 할당은 보다 많은 컴퓨터 노드들을 클러스터 내로 추가시키는 것을 가능하게 할 수 있기 때문이다. 개시된 시스템들 및 방법들은 또한 예를 들어서, 새로운 애플리케이션들, 애플리케이션 고장들의 경우에 또는 부하 균형유지를 위해서, 액세스 패턴들에서의 변화들에 대해서 보다 양호하게 적응할 수 있다.
도 2 및 도 3은 슬라이스들의 예시적인 동적 할당 및 결과적인 네트워크 사용률 저감을 예시한다. 구체적으로, 도 2는 2 개의 노드들(N1, N2)을 갖는 클러스터(200)를 도시한다. 클러스터의 전체 캐시는 4 개의 슬라이스들(202)로 분할된다. 초기에, 슬라이스들(202)은 라우팅 맵(204)에서 에시된 바와 같은 라운드-로빈 방식으로 노드들(N1 및 N2) 간에서 할당된다. 구체적으로, 슬라이스들{0, 2}은 노드(N1)에 할당되고, 슬라이스들{1, 3}은 노드(N2)에 할당된다. 이 슬라이스들 내의 데이터에 대한 임의의 수신된 요청들은 라우팅 맵(204)에 따라서 서비스될 수 있다. 예를 들어서, 슬라이스 0 내에 상주하는 LBA에 대한 노드(N1) 상에서의 요청이 로컬 방식으로 서비스될 것이다. 슬라이스 1 내에 상주하는 LBA에 대한 노드(N1) 상에서의 요청은 예를 들어서, 노드(N2)로부터의 LBA를 요청함으로써 네트워크를 통해서 서비스될 것이다. 상술한 바와 같이, 사전-결정된 시간 간격 이후에, 개시된 시스템들 및 방법들은 예를 들어서, 클러스터 내의 노드들에 대한 액세스 통계치들을 조사함으로써 슬라이스들에 대한 새로운 소유자들을 결정할 수 있다. 예시적 실례로서, 테이블(206)은 노드(N1)에 대한 액세스 통계치들을 도시하고 테이블(208)은 노드(N2)에 대한 액세스 통계치들을 도시한다. 예를 들어서, 테이블(206)은 노드(N1)이 데이터를 슬라이스 0에 전송률 50MB/s로 요청하고(210) 데이터를 슬라이스 1에 전송률 100MB/s로 요청한 것(212)을 나타낸다. 상술한 바와 같이, 오직 원격 요청들만이 네트워크 사용률을 증가시키며, 이는 총 가용 네트워크 대역폭을 저감시키며, 따라서, 노드(N1)에 있어서는, 원격 슬라이스들, 예를 들어서, 슬라이스들 1 및 3 내의 데이터에 대한 요청은 네트워크 사용률을 증가시킨다. 따라서, 노드(N2)에 있어서는, 원격 슬라이스들, 예를 들어서, 슬라이스들 0 및 2 내의 데이터에 대한 요청은 네트워크 사용률을 증가시킨다. 테이블들(206 및 208) 내의 액세스 통계치들에 근거하여서, 노드(N1)에 대한 원격 요청 레이트가 다음의 등식에 기초하여서 계산될 수 있다:
Figure 112016123308165-pat00001
마찬가지로, 노드(N2)에 대한 원격 요청 레이트가 다음의 등식에 기초하여서 계산될 수 있다:
Figure 112016123308165-pat00002
따라서, 총 네트워크 사용률은 130 MB/s + 80 MB/s = 210 MB/s이며, 이는 높은 편이다. 본 개시의 양태들에 따라서, 원격 전송률 및 총 네트워크 사용률에 따라서, 슬라이스들은 총 네트워크 사용률을 줄이도록 재할당될 수 있다. 이러한 바가 도 3에서 예시된다. 예를 들어서, 도 3은 도 2의 클러스터를 도시하되, 여기서 슬라이스들 중 2 개가 재할당되었다. 구체적으로, 노드(N2)에 이전에 할당된 슬라이스 1은 노드(N1)에 재할당되었고(302) 노드(N1)에 이전에 할당된 슬라이스 2는 노드(N2)에 재할당되었다(304). 모든 재-할당 이후에, 새로운 라우팅 맵(306)이 모든 노드들로 순환되며, 이로써 각 노드가 새로운 슬라이스 할당사항을 알 수 있게 될 수 있다.
이러한 재-할당들 이후에, 노드(N1)에 대한 원격 요청 레이트는 다음의 등식에 기초하여서 계산될 수 있다:
Figure 112016123308165-pat00003
마찬가지로, 노드(N2)에 대한 원격 요청 레이트는 다음의 등식에 기초하여서 계산될 수 있다:
Figure 112016123308165-pat00004
따라서, 총 네트워크 사용률은 50 MB/s + 60 MB/s = 110 MB/s이며 이는 크게 낮아진 것이며, 예를 들어서, 초기 값에 비해서 52.3%만큼 낮아진 것이다. 클러스터 내의 각 노드는 소정의 시간 창 내에서 자신이 액세스한 각 슬라이스에 대해서, 액세스 크기의 누적 값을, 예를 들어서, 바이트로 유지할 수 있다. 이어서, 상기 창 크기로 상기 액세스 크기를 나눔으로써 각 슬라이스에 대한 전송률이 계산될 수 있다. 재맵핑 시에, 각 슬라이스에 대해서, 재-맵핑 알고리즘은 각 노드의 전송률을 체크할 수 있으며 최고 전송률을 갖는 노드에 그것을 할당할 수 있다. 슬라이스의 현 소유자가 이 특정 슬라이스 대한 최고의 전송률을 갖는 경우에, 이 슬라이스는 재-맵핑될 필요가 없다. 다수의 노드들이 최고 전송률을 갖는 경우에, 이러한 견주는 상황은 예를 들어서, 액세스 크기, 슬라이스 소유권 전환 주기, 캐시 폴루션(pollution) 및 다른 휴리스틱 사항(heuristics)을 사용하여서 깨질 수 있다. 최초의 새로운 네트워크 사용률은 원격 노드들에 의한 각 슬라이스에 대한 전송률의 합산에 의해서 계산될 수 있다. 통계치들이 재-맵핑 과정(round) 후에 리셋될 수 있다.
재-맵핑의 빈도는 운영자에 의해서 결정될 수 있다. 예를 들어서, 하루의 특정 시간에, 예를 들어서, 요청 트래픽이 낮은 때에, 재맵핑이 실행될 수 있다. 재-맵핑은 또한 자동적일 수 있는데, 예를 들어서, 배경동작(background)에서의 프로세스가 전송률을 각 노드로부터 주기적으로 폴링하고(poll), 예를 들어서, 애플리케이션 액세스 패턴들에서의 변화로 인해서, 정상 상태로부터의 변화가 존재하는지의 여부를 결정할 수 있다.
본 발명의 다른 양태들에 따라서, 예를 들어서, 노드 상에서의 캐시 공간 사용률, 축출(eviction) 및 소유권 변동 이후에 완화된 필요가 있을 더티 데이터(dirty data)의 양과 같은, 다른 휴리스틱 사항이 사용되어서 개선된 슬라이스 배치(placement)를 결정할 수 있다. 각 노드는 플러시(flush)될 수 있는 더티 데이터의 양을 추적할 수 있다. 슬라이스의 재-맵핑은 피해질 수 있으며, 이는 임계치를 초과하는 더티 데이터를 플러시하는 것을 의미할 것이다. 재-맵핑 동안에 상이한 노드들에 의해서 대량의 데이터를 플러싱하는 것은 디스크로의 랜덤 기록들을 생성할 수 있고, 따라서 재-맵핑을 수행하기 위한 시간에 영향을 줄 수 있으며, 또한 캐시 미스 시에 디스크로부터 데이터를 페치할 필요가 있는 애플리케이션 I/O들에도 영향을 줄 수 있다. 예를 들어서, 전송률에 기초하여서 어떤 노드가 슬라이스에 대한 최적 소유자일 수 있지만, 이러한 바가 그의 최적 소유자 상에 해당 슬라이스를 저장하는 것이 성능을 개선시킬 것이라는 것을 의미하지 않기 때문에, 캐시 사용률도 또한 고려될 수 있다. 각 노드에 대해서, 우선순위들이 전송률에 기초하여서 이러한 슬라이스들에 할당될 수 있다. 이러한 우선순위들은 캐시 사용률과 함께 재-맵핑 동안에 사용되어서 특정 슬라이스가 소정의 노드로 재-맵핑되어야 하는지의 여부를 결정할 수 있다. 캐시 사용률이 낮다면, 재-맵핑이 발생할 수 있다; 이와 달리, 낮은 우선순위 슬라이스를 맵핑하는 것은 다른 보다 높은 우선순위의 슬라이스들로부터의 데이터가 축출되게 할 있으며, 이는 성능에 부정적인 영향을 줄 수 있다.
새로운 라우팅 맵이 생성된 후에, 예를 들어서, 임의의 다운타임 없이, 클러스터를 삭제 또는 재생성하지 않고서, 또는 긴 기간 동안에 데이터 요청들의 프로세싱을 중지하지 않고서, 각 클러스터 내의 라우팅 맵들을 동적으로 업데이트하는 것이 바람직하다.
본 개시의 양태들에 따라서, 새로운 라우팅 맵은 클러스터 내의 모든 노드들 간에서 자동적으로 업데이트될 수 있다. 예를 들어서, 노드들 중 하나는 관리자 노드로 할당될 수 있으며, 이 관리자 노드는 업데이트를 조율하는 책임을 질 수 있다. 관리자 노드는 새로운 라우팅 맵을 클러스터의 모든 다른 노드들로 제공할 수 있으며 업데이트 프로세스를 시작하도록 이들에게 요청할 수 있다. 본 개시의 양태들에 따라서, 업데이트 프로세스는 3 개의 단계들을 포함할 수 있다. 제1 단계 동안에, 모든 노드들은 개별적으로 새로운 라우팅 맵을 현 라우팅 맵과 비교할 수 있으며 어느 슬라이스들이 이 노드들에게 할당되었는지(예를 들어서, 획득된 슬라이스들이 그러함)를 결정하고, 어느 슬라이스들이 이 노드들에게 더 이상 할당되지 않는지(예를 들어서, 손실된 슬라이스들이 그러함)를 결정할 수 있다.
현 슬라이스 소유자들은 캐시 미스 시에 백엔드로부터 데이터를 페치할 수 있다. 재맵핑 동안에, 구 소유자가 모든 더티 데이터를 플러시하지 않았고 모든 후속 기록사항을 라이트-스루(write-through)로서 간주하였다면, 새로운 소유자는 (원격-히트 기간이 종료된 이후에) 결국 스테일(stale) 데이터를 백엔드로부터 페치하게 될 수 있다. 모든 손실된 슬라이스 소유권들에 대해서, 노드들은 이러한 슬라이스들에 대해서 자신들이 캐시 내에서 갖는 임의의 더티 데이터를 플러시할 수 있으며 또한 이러한 슬라이스들이 라이트-스루하게 할 수 있다. 따라서, 플러시된 이후에, 임의의 새로운 기록들은 슬라이스를 다시 더티 상태로 만들지 않을 것이다. 이는 어떠한 에러의 경우에도, 슬라이스의 구 소요자를 의존하지 않을 수 있도록 백엔드(캐싱된 디바이스)와의 일관성을 보장할 수 있다.
모든 취득된 슬라이스 소유권들에 대해서, 노드들은 캐시 내에 존재하는 임의의 기존 데이터를 삭제할 수 있다. 이러한 동작은, 전술한 바와 같이, 손실된 슬라이스 소유권들에 대한 프로세스가 해당 노드가 그에 대한 소유권을 상실한 슬라이스들에 속한 데이터를 삭제하지 않고서 더티 데이터를 플러시하기 때문에 수행된다. 이러한 동작은 그에 대한 소유권이 상실된 슬라이스에 속하는 데이터는 결국에는 새로운 데이터가 캐싱되는 때에 캐시로부터 축출될 것이기 때문에, 어떠한 문제도 초래하지 않는다. 예를 들어서, 슬라이스가 새로운 소유자에 재맵핑되었다면, 구 소유자는 소유권 변경 이전에 이 슬라이스와 연관된 임의의 더티 데이터를 플러시할 수 있다. 소유권 변동 이후의 원격-히트 기간 동안에, 새로운 소유자는 캐시 미스 시에 구 소유자에게 데이터에 대해서 요청할 수 있는데, 이는 데이터를 백엔드로부터 획득하는 대신에, 데이터를 구 소유자로부터 얻는 것이 보다 빠를 수 있기 때문이다. 이러한 바는 네트워크 및 고체상 드라이브 액세스들이 하드 디스크 드라이브 액세스들보다 신속하기 때문에 대체적으로 적용된다. 소유권 변동 이후에 요구되는 캐싱은 또한 캐시 폴루션을 회피할 수 있는데, 그 이유는 구 소유자에서 캐싱된 슬라이스의 모든 블록들이 새로운 소유자에 의해서 필요하게 되지는 않을 것이기 때문이다. 원격-히트 기간은 유한 기간 동안일 수 있으며 새로운 소유자의 캐시를 워밍 업하기 위한 것일 수 있다. 블록에 대한 판독 요청을 위해서, 새로운 소유자는 해당 블록에 대하여 구 소유자에게 질의를 하여서 이를 캐싱할 수 있다. 구 소유자가 해당 블록을 가지고 있지 않으면, 새로운 소유자는 이를 백엔드로부터 페치할 수 있다. 나중에 기록 요청이 이 블록을 수정할 수 있으며, 이는 구 소요자 상에서의 블록의 카피가 스테일(stale)되게 할 것이다. 새로운 재맵핑 과정 동안에, 슬라이스가 그의 구 소유자에게 재맵핑된다면, 그리고 구 소유자가 여전히 해당 블록을 그의 캐시 내에 가지고 있다면, 판독 요청을 위해서 구 소요자는 스테일 데이터를 리턴시킬 것이다. 이는 그에 대한 소유권을 획득하고 있는 슬라이스에 대해서 노드가 가질 수 있는 임의의 기존의 데이터를 사전에 삭제(cleaning)하는 이유이다.
이 단계를 완료한 후에, 각 노드는 이 단계의 완료 상태에 대하여, 예를 들어서, 노드가 더티 데이터를 성공적으로 플러시하였고 임의의 사전에 존재하는 데이터를 성공적으로 삭제하였는지의 여부 또는 이 단계에서 에러가 존재하였는지의 여부를, 관리자 노드에 통보할 수 있다. 본 개시의 양태들에 따라서, 모든 노드들이 이 단계를 성공적으로 완료하였다고 알리면, 관리자 노드는 모든 노드들로 하여금 업데이트 프로세스의 제2 단계로 진행하게 지시할 수 있다. 적어도 하나의 노드가 제1 단계 동안에 에러가 존재하였다고 알리면, 관리자 노드는 모든 노드들이 업데이트 프로세스를 중단시키게 지시할 수 있다.
제2 단계에서, 관리자 노드가 모든 노드들로 하여금 그들의 요청들을 개별적으로 서비스하는 것을 중지하도록 지시할 수 있으며, 예를 들어서, 수신된 요청들은 큐 내에서 유지될 수 있으며, 새로운 라우팅 맵을 적용하도록 지시할 수 있다. 이 단계를 완료한 후에, 각 노드는 이 단계의 완료 상태를, 예를 들어서, 해당 노드가 새로운 맵을 성공적으로 적용하였는지의 여부 또는 이 단계에서 에러가 존재하였는지의 여부를 관리자 노드에 통보할 수 있다. 모든 노드들이 이 단계가 성공적이었다고 알리면, 관리자 노드는 모든 노드들이 업데이트 프로세스의 제3 단계로 진행하도록 지시할 수 있다. 적어도 하나의 노드가 제1 단계 동안에 에러가 존재하였다고 알리면, 관리자 노드는 모든 노드들이 업데이트 프로세스를 중단하도록 지시할 수 있다. 노드들이 중단 명령을 수신하면, 노드들은 새로운 라우팅 맵을 폐기할 수 있으며 이전의 라우팅 맵에 따라서 그들의 요청들의 프로세싱을 재개할 수 있다. 본 개시의 다른 양태들에 따라서, 관리자 노드는 어느 정도 시간이 지난 이후에 시작되어 상기 프로토콜을 재시도할 수 있다. 업데이트 프로세스의 제3 단계에서, 모든 노드들은 그들의 요청들을 서비스하는 것을 재개할 수 있다.
도 4는 본 개시의 양태들에 따른, 라우팅 맵을 업데이트하기 위한 예시적인 방법(400)을 도시한다. 구체적으로, 관리자 노드는 새로운 라우팅 맵을 모든 노드들로 전송할 수 있으며 업데이트 프로세스를 시작하도록 이들에게 요청할 수 있다(402). 노드들이 새로운 라우팅 맵을 수신하면, 노드들은 새로운 라우팅 맵을 현 라우팅 맵과 비교할 수 있다(404). 이어서, 노드들은 이들이 획득한 및/또는 손실한 슬라이스들을 결정할 수 있다(406). 모든 손실된 슬라이스 소유권들에 대해서, 노드들은 이러한 슬라이스들에 대한 캐시 내의 더티 데이터를 플러시하고 이러한 슬라이스들이 라이트-스루하게 할 수 있다(408). 모든 획득된 슬라이스 소유권들에 대해서, 노드들은 캐시 내에 존재할 수 있는 임의의 사전에 존재하는 데이터를 삭제한다(410). 에러가 노드들 중 임의의 것에서 발생하면(412), 관리자 노드는 프로세스를 중단시킬 수 있다(414). 에러가 발생하지 않으면, 노드들은 그들의 요청들을 서비스하는 것을 중지할 수 있으며(416) 새로운 라우팅 맵을 적용할 수 있다(418). 에러가 노드들 중 임의의 것에서 발생하면(420), 관리자 노드는 프로세스를 중단시킬 수 있다(414). 에러가 발생하지 않으면, 노드들은 요청들을 서비스하는 것을 재개할 수 있다.
모든 노드들에 걸쳐서 라우팅 맵을 업데이트한 후에, 슬라이스들의 새로운 소유권이 유효하게 된다. 그러나, 새로운 소유자들은 바로 전에 완료된 소유권 업데이트 과정 이후에 획득한 슬라이스들에 대한 어떠한 데이터도 포함하지 않는다. 이는 어떠한 데이터 일관성 문제도 야기하지 않는데, 그 이유는 소유권 변동 이전에, 변경된 소유권을 갖는 슬라이스들에 속하는 모든 더티 데이터가 플러시되고 따라서 새로운 소유자는 데이터를 백엔드로부터 항시적으로 페치하여서 임의의 요청을 서비스할 수 있기 때문이다. 그러나, 이는 캐시가 재-워밍업될 필요가 있기 때문에 레이턴시를 증가시킬 수 있으며, 이러한 바는 각 소유권 변동 과정 이후에 톱니 타입의 성능 특성들으로 이어질 수 있다.
본 개시된 시스템들 및 방법들은 이러한 문제를 완화시킬 수 있다. 본 개시의 양태들에 따라서, 데이터는 소유권 변동 이전에, 백엔드로 플러시되는 대신에, 새로운 소유자에 전달될 수 있다. 본 개시의 다른 양태에 따라서, 데이터는 소유권 변동 이후에, 배경동작에서 구 소유자 노드로부터 새로운 소유자 노드로 전달될 수 있다.
이러한 해결방식들은, 특정 슬라이스에 대해서 캐싱된 모든 데이터가 빈번하게 액세스될 수는 없기 때문에 캐시 폴루션으로 잠재적으로 이어질 수 있다. 예를 들어서, 슬라이스의 오직 서브세트만이 빈번하게 액세스될 수 있으며, 나머지는 드물게 액세스되며, 이로써 캐싱되기에 충분하게 핫(hot)한 상태로 되지 않게 된다. 이러한 상황들에 있어서, 특정 슬라이스에 대한 모든 캐싱된 데이터를 구 소유자 노드로부터 새로운 소유자 노드로 전달하는 것은 일부 보다 빈번하게 액세스되는 데이터의 새로운 소유자로부터의 축출로 이어질 수 있다.
본 개시의 양태들에 따라서, 요구 중인 데이터를 캐싱하는 것은 톱니 성능을 개선할 수 있으며 또한 캐시 폴루션을 피할 수 있다. 요구 중인 데이터를 캐싱하는 것은 시간 제한적(time-bound) 프로세스이며, 이른바 원격-히트 기간이다. 새로운 라우팅 맵 및 구 라우팅 맵을 참조함으로써, 개시된 방법은 슬라이스에 대한 현 및 구 소유자들을 결정할 수 있다. 임의의 요청에 대해서, 새로운 소유자가 데이터를 가지고 있지 않으면, 개시된 방법은 구 소유자를 조회하여서 구 소유자가 그의 캐시 내에 해당 데이터를 여전히 가지고 있는지를 체크할 수 있다. 이는 라우팅 맵을 업데이트하는 프로세스 동안에, 손실된 슬라이스에 대한 데이터가 삭제되지 않은 것을 가정한다. 해당 데이터가 플러시될 수 있으며 이로써 이 데이터는 캐시 내에서 삭제되며 결국에는 캐시 가비지(garbage) 수거 정책들에 따라서 축출될 수 있다.
본 개시의 양태들에 따라서, 구 소유자가 여전히 해당 데이터를 가지고 있으면, 해당 요청이 서비스될 수 있다. 이 데이터는 또한 새로운 소유자 내에서 캐싱 및 피닝된다(pinned). 따라서, 데이터는 구 소유자로부터 새로운 소유자로의 현 요구정도(on-demand)를 완화시킬 수 있으며, 이는 캐시 폴루션을 피하게 한다. 또한, 데이터를 구 소유자자로부터 페치하는 것은 데이터를 백엔드로부터 페치하는 것보다 신속할 수 있으며, 따라서, 톱니 성능 특성은 개선될 수 있다. 데이터가 수정되어서 구 소유자가 스테일 데이터를 갖게 될 수 있기 때문에, 데이터는 새로운 소유자 상에 피닝될 필요가 있다. 이는 원격-히트 기간 동안에 새롭게 획득된 슬라이스에 속하는 새로운 소유자 상의 데이터의 축출을 방지할 수 있다. 구 소유자가 해당 데이터를 그의 캐시 내에 가지고 있지 않다면, 이 데이터는 백엔드로부터 페치되고 새로운 소유자 내에 캐싱 및 피닝될 수 있다.
원격-히트 기간이 종료되면, 어떠한 캐시 미스에 대해서도 구 소유자는 더 이상 조회되지 않으며 데이터는 새로운 소유자 상에 언피닝될 수 있다(unpinned). 원격-히트 기간의 길이는 다양한 휴리스틱 사항을 사용하여서, 예를 들어서, 캐시를 워밍업하기 위한 이력적 시간에 기초하여서 결정될 수 있다.
본 기술 분야의 당업자는 본 명세서에서 기술된 명세서 및 도면들에서의 다양한 예시사항이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호호환가능성을 예시하기 위해서, 다양한 예시적 블록들, 모듈들, 요소들, 구성요소들, 방법들, 및 알고리즘들이 대체적으로 그들의 기능들의 측면에서 상술되었다. 이러한 기능들이 하드웨어, 소프트웨어, 또는 이들의 조합으로서 구현되는지는 특정 용도 및 전체 시스템 상에 부여된 설계 제약사항에 의존한다. 본 기술 분야의 당업자는 각 특정 용도에 대해서 상이한 방식들로 기술된 기능들을 구현할 수 있다. 다양한 구성요소들 및 블록들은 모두가 본 기술의 범위를 벗어나지 않으면서 상이하게 구성될 수 있다(예를 들어서, 상이한 순서로 배열되거나, 상이한 방식으로 파티셔닝될 수 있다).
또한, 통신 프로토콜의 구현은 일 컴퓨터 시스템에서는 중앙화된 방식으로 실현되거나, 상이한 요소들이 몇 개의 상호접속된 컴퓨터 시스템들에 걸쳐서 분산된 분산형 방식으로 실현될 수 있다. 본 명세서에서 기술된 방법들을 실행하도록 구성된 임의의 종류의 컴퓨터 시스템, 또는 다른 장치는 본 명세서에서 기술된 기능들을 수행하는데 적합하다.
하드웨어 및 소프트웨어의 통상적인 조합은 컴퓨터 프로그램을 갖는 범용 컴퓨터 시스템일 수 있으며, 상기 프로그램은 로딩 및 실행될 때에, 컴퓨터 시스템이 본 명세서에서 기술된 방법들을 수행하도록 컴퓨터 시스템을 제어할 수 있다. 통신 프로토콜을 위한 방법들이 또한 컴퓨터 프로그램 제품 내에 내장될 수 있으며, 이 제품은 본 명세서에서 기술된 방법들의 구현을 가능하게 하는 모든 특징부들을 포함하며 컴퓨터 시스템 내에서 로딩될 때에 이러한 방법들을 수행할 수 있다.
본 맥락에서 컴퓨터 프로그램 또는 애플리케이션은 정보 프로세싱 능력을 갖는 시스템으로 하여금, a) 다른 언어, 코드 또는 표기법으로의 변환; b) 상이한 자료 형태로의 재현 중 어느 하나 또는 양자 후에 또는 직접적으로 특정 기능을 수행하게 하도록 의도된 인스트럭션들의 세트의, 임의의 언어, 코드 또는 표기법로의 임의의 표현을 의미한다. 중요하게는, 이러한 통신 프로토콜은 그의 사상 또는 본질적 속성들을 벗어나지 않으면서 다른 특정 형태들로 실시될 수 있으며, 따라서, 본 발명의 범위를 말하는데 있어서, 전술한 명세서를 참조하기보다는, 다음의 청구항들이 참조되어야 한다.
통신 프로토콜이 이러한 예시된 실시예들을 특정하게 참조하여서 세부적으로 기술되었다. 하지만, 다양한 수정 및 변경들이 전술한 명세서에서 기술된 바와 같은 본 개시의 사상 및 범위 내에서 이루어질 수 있으며, 이러한 수정 및 변경들은 본 개시의 균등사항 및 일부로서 간주되어야 함은 명백할 것이다.

Claims (24)

  1. 네트워크에 의해서 상호접속된 복수의 컴퓨터 노드들을 포함하는 클러스터 내에서의 분산형 캐시의 적응적 파티셔닝을 위한 방법으로서, 상기 분산형 캐시는 복수의 캐시 슬라이스들로 파티셔닝되며, 상기 방법은,
    제1 라우팅 테이블에 기초하여서 상기 복수의 캐시 슬라이스들 중 복수의 제1 캐시 슬라이스들을 상기 복수의 컴퓨터 노드들 중 제1 컴퓨터 노드에 할당하는 단계;
    제1 시간 간격 이후에, 상기 복수의 컴퓨터 노드들의 상기 복수의 캐시 슬라이스들에 대한 액세스 통계치들에 기초하여서, 상기 복수의 캐시 슬라이스들 중 복수의 제2 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 재할당하고, 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트를 상기 제1 컴퓨터 노드가 아닌 상기 복수의 컴퓨터 노드들 중 적어도 하나의 컴퓨터 노드에 재할당하는 단계; 및
    상기 제1 시간 간격 이후에, 상기 복수의 캐시 슬라이스들의 상기 복수의 컴퓨터 노드들로의 할당사항들에 따라서, 제2 라우팅 테이블을 제공하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 액세스 통계치들은 각 캐시 슬라이스에 대한 액세스 크기 및 시간 간격에 기초한 상기 복수의 캐시 슬라이스들에 대한 전송률을 포함하는, 방법.
  3. 제1항에 있어서,
    상기 복수의 제2 캐시 슬라이스들 및 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트를 재할당하는 단계는 네트워크 사용률이 저감되게 하는, 방법.
  4. 제1항에 있어서,
    상기 제1 라우팅 테이블 및 상기 제2 라우팅 테이블을 비교하여서 상기 복수의 제2 캐시 슬라이스들 및 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트를 결정하는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서,
    (a) 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트로부터 더티 데이터(dirty data)를 플러시하는(flushing) 단계;
    (b) 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트가 라이트-스루 캐시 슬라이스들(write-through cache slices)이 되게 하는 단계; 및
    (c) 사전에 존재하는 데이터를 상기 복수의 제2 캐시 슬라이스들로부터 삭제하는 단계를 더 포함하는, 방법.
  6. 제5항에 있어서,
    상기 (a), (b), 및 (c) 단계들 중 적어도 하나 동안에 제1 에러가 발생했는지를 결정하는 단계를 더 포함하는, 방법.
  7. 제6항에 있어서,
    상기 제1 에러가 발생했다면, 상기 제1 라우팅 테이블에 기초하여서 상기 복수의 제1 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 재할당하는 단계를 더 포함하는, 방법.
  8. 제6항에 있어서,
    상기 제1 에러가 발생하지 않았다면, 상기 제1 컴퓨터 노드에서, 데이터 요청들을 서비스하는 것을 중지하는 단계를 더 포함하는, 방법.
  9. 제8항에 있어서,
    상기 제1 컴퓨터 노드에서, 상기 제2 라우팅 테이블에 기초하여서 데이터 요청들의 수신지들을 결정하는 단계를 더 포함하는, 방법.
  10. 제9항에 있어서,
    상기 제2 라우팅 테이블에 기초하여서 상기 데이터 요청들의 수신지들을 결정하는 동안에 제2 에러가 발생했는지를 결정하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서,
    상기 제2 에러가 발생했다면, 상기 제1 라우팅 테이블에 기초하여서 상기 복수의 제1 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 재할당하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서,
    상기 제2 에러가 발생하지 않았다면, 상기 제1 컴퓨터 노드에서, 데이터 요청들을 서비스하는 것을 재개하는 단계를 더 포함하는, 방법.
  13. 네트워크에 의해서 상호접속된 복수의 컴퓨터 노드들을 포함하는 클러스터 내에서의 분산형 캐시의 적응적 파티셔닝을 위한 시스템으로서, 상기 시스템은,
    복수의 캐시 슬라이스들로 파티셔닝된 상기 분산형 캐시; 및
    상기 복수의 컴퓨터 노드들 중 제1 컴퓨터 노드를 포함하며, 상기 제1 컴퓨터 노드는,
    제1 라우팅 테이블에 기초하여서 상기 복수의 캐시 슬라이스들 중 복수의 제1 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 할당하고,
    제1 시간 간격 이후에, 상기 복수의 컴퓨터 노드들의 상기 복수의 캐시 슬라이스들에 대한 액세스 통계치들에 기초하여서, 상기 복수의 캐시 슬라이스들 중 복수의 제2 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 재할당하고, 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트를 상기 제1 컴퓨터 노드가 아닌 상기 복수의 컴퓨터 노드들 중 적어도 하나의 컴퓨터 노드에 재할당하며,
    상기 제1 시간 간격 이후에, 상기 복수의 캐시 슬라이스들의 상기 복수의 컴퓨터 노드들로의 할당사항들에 따라서, 제2 라우팅 테이블을 제공하도록 구성되는, 시스템.
  14. 제13항에 있어서,
    상기 액세스 통계치들은 각 캐시 슬라이스에 대한 액세스 크기 및 시간 간격에 기초한 상기 복수의 캐시 슬라이스들에 대한 전송률을 포함하는, 시스템.
  15. 제13항에 있어서,
    상기 복수의 제2 캐시 슬라이스들 및 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트를 재할당하는 동작은 네트워크 사용률이 저감되게 하는, 시스템.
  16. 제13항에 있어서,
    상기 제1 컴퓨터 노드는, 상기 제1 라우팅 테이블 및 상기 제2 라우팅 테이블을 비교하여서 상기 복수의 제2 캐시 슬라이스들 및 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트를 결정하도록 더 구성되는, 시스템.
  17. 제16항에 있어서,
    상기 제1 컴퓨터 노드는,
    (a) 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트로부터 더티 데이터를 플러시하고,
    (b) 상기 복수의 제1 캐시 슬라이스들의 제1 서브세트가 라이트-스루 캐시 슬라이스들이 되게 하며,
    (c) 사전에 존재하는 데이터를 상기 복수의 제2 캐시 슬라이스들로부터 삭제하도록 더 구성되는, 시스템.
  18. 제17항에 있어서,
    상기 제1 컴퓨터 노드는, 상기 (a), (b), 및 (c) 동작들 중 적어도 하나 동안에 제1 에러가 발생했는지를 결정하도록 더 구성되는, 시스템.
  19. 제18항에 있어서,
    상기 제1 컴퓨터 노드는, 상기 제1 에러가 발생했다면, 상기 제1 라우팅 테이블에 기초하여서 상기 복수의 제1 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 재할당하도록 더 구성되는, 시스템.
  20. 제18항에 있어서,
    상기 제1 컴퓨터 노드는, 상기 제1 에러가 발생하지 않았다면, 데이터 요청들을 서비스하는 것을 중지하도록 더 구성되는, 시스템.
  21. 제20항에 있어서,
    상기 제1 컴퓨터 노드는 상기 제2 라우팅 테이블에 기초하여서 데이터 요청들의 수신지들을 결정하도록 더 구성되는, 시스템.
  22. 제21항에 있어서,
    상기 제1 컴퓨터 노드는 상기 제2 라우팅 테이블에 기초하여서 상기 데이터 요청들의 수신지들을 결정하는 동안에 제2 에러가 발생했는지를 결정하도록 더 구성되는, 시스템.
  23. 제22항에 있어서,
    상기 제1 컴퓨터 노드는, 상기 제2 에러가 발생했다면, 상기 제1 라우팅 테이블에 기초하여서 상기 복수의 제1 캐시 슬라이스들을 상기 제1 컴퓨터 노드에 재할당하도록 더 구성되는, 시스템.
  24. 제23항에 있어서,
    상기 제1 컴퓨터 노드는, 상기 제2 에러가 발생하지 않았다면, 데이터 요청들을 서비스하는 것을 재개하도록 더 구성되는, 시스템.
KR1020160151208A 2015-11-13 2016-11-14 분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들 KR101960138B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/941,125 2015-11-13
US14/941,125 US9832277B2 (en) 2015-11-13 2015-11-13 Systems and methods for adaptive partitioning in distributed cache memories

Publications (2)

Publication Number Publication Date
KR20170058293A KR20170058293A (ko) 2017-05-26
KR101960138B1 true KR101960138B1 (ko) 2019-03-19

Family

ID=58640181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160151208A KR101960138B1 (ko) 2015-11-13 2016-11-14 분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들

Country Status (5)

Country Link
US (1) US9832277B2 (ko)
JP (1) JP6263596B2 (ko)
KR (1) KR101960138B1 (ko)
CN (1) CN107018172B (ko)
DE (1) DE102016013577B4 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160212198A1 (en) * 2015-01-16 2016-07-21 Netapp, Inc. System of host caches managed in a unified manner
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10467195B2 (en) * 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
CN109842636A (zh) * 2017-11-24 2019-06-04 阿里巴巴集团控股有限公司 云服务迁移方法、装置以及电子设备
CN112748867B (zh) * 2019-10-31 2024-04-19 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备以及计算机程序产品
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11507516B2 (en) 2020-08-19 2022-11-22 Micron Technology, Inc. Adaptive cache partitioning
US11372761B1 (en) 2020-12-11 2022-06-28 International Business Machines Corporation Dynamically adjusting partitioned SCM cache memory to maximize performance
US11379369B1 (en) * 2021-01-15 2022-07-05 Coupang Corp. Systems and methods for dynamic in-memory caching of mappings into partitions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140362A (ja) 2008-12-12 2010-06-24 Nec Corp 分散キャッシュシステム、方法、プログラム、及び計算ノード
JP2012018607A (ja) 2010-07-09 2012-01-26 Nomura Research Institute Ltd 分散キャッシュシステム

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321238B1 (en) 1998-12-28 2001-11-20 Oracle Corporation Hybrid shared nothing/shared disk database system
US6754220B1 (en) 1999-05-31 2004-06-22 International Business Machines Corporation System and method for dynamically assigning routers to hosts through a mediator
US7069324B1 (en) * 2000-06-30 2006-06-27 Cisco Technology, Inc. Methods and apparatus slow-starting a web cache system
US6792509B2 (en) 2001-04-19 2004-09-14 International Business Machines Corporation Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria
US6961821B2 (en) * 2002-10-16 2005-11-01 International Business Machines Corporation Reconfigurable cache controller for nonuniform memory access computer systems
JP2004139366A (ja) * 2002-10-18 2004-05-13 Hitachi Ltd キャッシュ配置方法
US7461146B2 (en) 2003-01-20 2008-12-02 Equallogic, Inc. Adaptive storage block data distribution
US7827353B2 (en) * 2003-07-15 2010-11-02 International Business Machines Corporation Self healing memory
US7277897B2 (en) 2003-08-01 2007-10-02 Oracle International Corporation Dynamic reassignment of data ownership
US7120651B2 (en) * 2003-08-01 2006-10-10 Oracle International Corporation Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping
US8145870B2 (en) * 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
US7437510B2 (en) * 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
US8433851B2 (en) * 2007-08-16 2013-04-30 International Business Machines Corporation Reducing wiring congestion in a cache subsystem utilizing sectored caches with discontiguous addressing
US8645965B2 (en) * 2007-12-31 2014-02-04 Intel Corporation Supporting metered clients with manycore through time-limited partitioning
US8069322B2 (en) * 2008-08-15 2011-11-29 International Business Machines Corporation Active-active remote configuration of a storage system
US8769049B2 (en) * 2009-04-24 2014-07-01 Microsoft Corporation Intelligent tiers of backup data
US8477597B2 (en) 2009-05-27 2013-07-02 Yin Zhang Method and system for resilient routing reconfiguration
JP5381336B2 (ja) 2009-05-28 2014-01-08 富士通株式会社 管理プログラム、管理装置および管理方法
US8429346B1 (en) 2009-12-28 2013-04-23 Emc Corporation Automated data relocation among storage tiers based on storage load
US8954790B2 (en) * 2010-07-05 2015-02-10 Intel Corporation Fault tolerance of multi-processor system with distributed cache
CN101980192B (zh) * 2010-10-15 2014-03-12 中兴通讯股份有限公司南京分公司 一种基于对象的集群文件系统管理方法及集群文件系统
CN101989999B (zh) * 2010-11-12 2012-09-26 华中科技大学 一种分布式环境中的分级存储系统
US9336060B2 (en) * 2011-06-17 2016-05-10 Microsoft Technology Licensing, Llc Middleware services framework for on-premises and cloud deployment
US11178244B2 (en) * 2011-08-09 2021-11-16 Comcast Cable Communications, Llc Content delivery network routing using border gateway protocol
US8984162B1 (en) * 2011-11-02 2015-03-17 Amazon Technologies, Inc. Optimizing performance for routing operations
JP5920105B2 (ja) * 2012-08-16 2016-05-18 富士通株式会社 演算処理装置および演算処理装置の制御方法
US9906436B2 (en) * 2013-08-05 2018-02-27 Futurewei Technologies, Inc. Scalable name-based centralized content routing
CN103616944B (zh) * 2013-10-18 2016-05-11 杭州电子科技大学 云存储系统中基于预判性绿色数据分类策略的降耗方法
US20150293699A1 (en) * 2014-04-11 2015-10-15 Graham Bromley Network-attached storage enhancement appliance
US9690706B2 (en) * 2015-03-25 2017-06-27 Intel Corporation Changing cache ownership in clustered multiprocessor
US9734070B2 (en) * 2015-10-23 2017-08-15 Qualcomm Incorporated System and method for a shared cache with adaptive partitioning
US9824030B2 (en) * 2015-10-30 2017-11-21 International Business Machines Corporation Adjusting active cache size based on cache usage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140362A (ja) 2008-12-12 2010-06-24 Nec Corp 分散キャッシュシステム、方法、プログラム、及び計算ノード
JP2012018607A (ja) 2010-07-09 2012-01-26 Nomura Research Institute Ltd 分散キャッシュシステム

Also Published As

Publication number Publication date
DE102016013577B4 (de) 2020-10-29
CN107018172B (zh) 2020-04-21
KR20170058293A (ko) 2017-05-26
DE102016013577A1 (de) 2017-05-18
JP6263596B2 (ja) 2018-01-17
US20170142217A1 (en) 2017-05-18
JP2017134817A (ja) 2017-08-03
CN107018172A (zh) 2017-08-04
US9832277B2 (en) 2017-11-28

Similar Documents

Publication Publication Date Title
KR101960138B1 (ko) 분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들
JP6613375B2 (ja) プロファイリングキャッシュ置換
US10649890B2 (en) Information processing system, storage control apparatus, storage control method, and storage control program
EP2519883B1 (en) Efficient use of hybrid media in cache architectures
US9529724B2 (en) Layered architecture for hybrid controller
KR101038963B1 (ko) 캐쉬 할당을 위한 장치, 시스템, 방법 및 기계 액세스가능 매체
US10572150B2 (en) Memory network with memory nodes controlling memory accesses in the memory network
US8464009B2 (en) Method for memory interleave support with a ceiling mask
US11169927B2 (en) Efficient cache management
US8656119B2 (en) Storage system, control program and storage system control method
US20160210232A1 (en) Cache coherence protocol
CN109117088B (zh) 一种数据处理方法及系统
US10359945B2 (en) System and method for managing a non-volatile storage resource as a shared resource in a distributed system
KR102220468B1 (ko) 트랜잭션 지원을 가진 선점형 캐시 후기록
JP5293611B2 (ja) メモリ再配置システム
WO2021079535A1 (ja) 情報処理装置
US11983117B2 (en) Fine-grained multi-tenant cache management
JP6273678B2 (ja) ストレージ装置
CN117311638A (zh) 缓存管理方法、缓存管理装置、处理器
JP2022509735A (ja) 記憶されたデータの変更装置及び変更方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant