KR20140082639A - 보조 캐시의 이주량을 위한 동적으로 조정된 스레시홀드 - Google Patents

보조 캐시의 이주량을 위한 동적으로 조정된 스레시홀드 Download PDF

Info

Publication number
KR20140082639A
KR20140082639A KR1020147002940A KR20147002940A KR20140082639A KR 20140082639 A KR20140082639 A KR 20140082639A KR 1020147002940 A KR1020147002940 A KR 1020147002940A KR 20147002940 A KR20147002940 A KR 20147002940A KR 20140082639 A KR20140082639 A KR 20140082639A
Authority
KR
South Korea
Prior art keywords
data
metric
data storage
recently
cache
Prior art date
Application number
KR1020147002940A
Other languages
English (en)
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 KR20140082639A publication Critical patent/KR20140082639A/ko

Links

Images

Classifications

    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

보조 데이터 스토리지 캐시로 삽입될 데이터의 이주량 (population)은 후보 데이터의 히트 메트릭을 결정하는 단계; 히트 메트릭 스레시홀드를 조정하는 단계; 히트 메트릭이 스레시홀드보다 적은 보조 데이터 스토리지 캐시에 제공된 후보 데이터를 거절하는 단계; 그리고 히트 메트릭이 상기 히트 메트릭 스레시홀드와 같거나 큰 후보 데이터를 허가하는 단계에 의해서 제어된다. 상기 히트 메트릭 스레시홀드의 조정은 보조 데이터 스토리지 캐시에 가장 최근에 삽입된 데이터의 히트들과 관련된 참조 메트릭을 보조 데이터 스토리지 캐시로부터 가장 최근에 퇴출된 데이터의 히트들과 관련된 참조 메트릭과 비교하는 단계; 만약 가장 최근에 삽입된 참조 메트릭이 가장 최근에 퇴출된 참조 메트릭보다 크면, 스레시홀드를 감소시키는 단계; 그리고 만약 가장 최근에 삽입된 참조 메트릭이 가장 최근에 퇴출된 참조 메트릭보다 작으면, 스레시홀드를 증가시키는 단계에 의해서 결정된다.

Description

보조 캐시의 이주량을 위한 동적으로 조정된 스레시홀드{DYNAMICALLY ADJUSTED THRESHOLD FOR POPULATION OF SECONDARY CACHE}
본 발명은 컴퓨터-구현 데이터 스토리지 캐시들 (computer-implemented data storage caches), 좀 더 특별히, 멀티 레벨들을 가진 캐시들에 관련된 것이다.
컴퓨터-구현 데이터 스토리지 시스템들은 통상적으로 다양한 형태의 데이터 스토리지로 구성되는데 그 안에서 데이터는 호스트 컴퓨터 시스템들을 위하여 저장된다. 스토리지 컨트롤들 또는 컨트롤러들은 판독 및 기록 (read and write) 요청에 응신하여 데이터 스토리지 매체 및 메모리들에 대한 액세스를 제어한다. 상기 스토리지 컨트롤들은 데이터 스토리지 디바이스들, 예를 들어 다양한 리던던시, 액세스 속도 및 보안 수준들로 구성된 (arranged) 캐시, 비-휘발성 (non-volatile) 스토리지, RAID (독립 디스크들의 중복 배열: redundant array of independent disks), JBOD (디스크들의 다발: just a bunch of disks)에 따라서 데이터를 제어 (direct)할 수 있다.
일례로서, DS8000™과 같은 IBM Corp. (IBM®)의 ESS (기업형 스토리지 서버 (Enterprise Storage Server)) 데이터 스토리지 시스템은 컴퓨터 개체들, 캐시, 비휘발성 스토리지등의 리던던트 클러스터들 (redundant clusters)을 갖는데, 이를 “중앙 전자 종합장치” (“central electronics complexes”) 또는 "CECs"라 한다.
데이터 스토리지 시스템내에서, 캐시는 고속의 메모리 또는 스토리지 디바이스를 포함하는데 이것은 최근에 액세스되었거나, 빈번하게 액세스되거나, 또는 가까운 미래에 액세스될 가능성이 있는 데이터 또는 명령들을 저장하기 위하여 사용된다. 캐시내 저장된 데이터는 페치되거나 또는 재연산될 필요가 없이 신속히 액세스될 수 있는데 이 때문에 시간과 자원들을 절약할 수 있다.
캐시는 멀티 레벨들로 (in multiple levels) 제공될 수 있다. 예를 들어, 캐시 데이터 스토리지 시스템은 “제1 (first)” 또는 “주 (primary)” 캐시 그리고 “보조(secondary)” 캐시를 포함할 수 있다. 통상적으로, 제1 캐시는 보조 캐시보다 더 빠른 액세스를 갖고 있고 데이터 유닛당 비용이 더 비싸며 보조 캐시는 제1 캐시보다 더 큰 스토리지 용량을 갖는다. 예를 들어, 제1 캐시는 동적 랜덤 액세스 메모리 (dynamic random access memory (DRAM))를 포함하는 반면, 보조 캐시는 “플래시_캐시” ("Flash_Cache", IBM Corp.의 상표)와 같은 플래시 메모리 솔리드-스테이트 드라이브들 (flash memory solid-state drives (SSD))을 포함한다. 데이터에 액세스할 때, 컴퓨터 시스템 또는 디바이스는 먼저 제1 캐시에서 데이터를 찾고, 만약 데이터가 거기 없으면, 보조 캐시에서 데이터를 찾는다. 데이터를 기록할 때, 컴퓨터 시스템 또는 디바이스는 제1 캐시에 데이터를 기록할 수 있다. 만약 제1 캐시의 데이터가 신속 또는 빈번히 액세스되지 않으면, 이 데이터는 보조 캐시로 강등될 (demoted) 수 있다. 만약 데이터가 보조 캐시로부터 즉각적으로 또는 빈번히 액세스되지 않으면, 그것은 RAID나 JBOD등과 같은 더 느린 액세스 속도 데이터 스토리지로 퇴출될 수 있다 (evicted).
통상적으로, LRU (least recently used : 최근 최소 사용) 알고리듬을 채용하여 어떤 데이터를 다음의 더 낮은 레벨 (the next lower level)로 강등시킬지를 선택한다.
방법들, 컴퓨터-구현 캐시 데이터 스토리지 시스템들 및 컴퓨터 프로그램 제품들이 보조 데이터 스토리지 캐시로 데이터 이주량 (population of data)를 제어하기 위하여 제공된다. 이 문맥에서 “보조”라는 말은 제1 레벨의 데이터 스토리지 캐시 및 기타 데이터 스토리지 사이 데이터 스토리지 캐시의 모든 레벨 (any level)을 말한다. 그러므로, 3-레벨 데이터 스토리지 캐시에서, “보조” 데이터 스토리지 캐시는 제2 레벨 또는 제3 레벨일 수 있다.
보조 데이터 스토리지 캐시를 포함하는 컴퓨터-구현 캐시 데이터 스토리지 시스템의 한 실시예에서, 다음이 수행된다: 보조 데이터 스토리지 캐시에 삽입될 후보 데이터의 히트 메트릭 (heat metric)을 결정하는 단계; 보조 데이터 스토리지 캐시의 현재 상태의 캐싱 효율에 따라서 히트 메트릭 스레시홀드를 조정하는 단계; 히트 메트릭이 스레시홀드보다 적은 상기 보조 데이터 스토리지 캐시에 제공된 후보 데이터를 거절하는 단계; 그리고 히트 메트릭이 상기 히트 메트릭 스레시홀드와 같거나 더 큰 상기 보조 데이터 스토리지 캐시에 제공된 후보 데이터를 허가하는 단계 (admitting),
다른 실시예에서, 캐싱 효율은 다음에 의하여 결정된다: 보조 데이터 스토리지 캐시에 가장 최근 삽입된 데이터의 히트들 (hits)과 관련된 참조 메트릭 (reference metric)을 유지하는 단계; 보조 데이터 스토리지 캐시로부터 가장 최근 퇴출된 데이터의 히트들과 관련된 참조 메트릭을 유지하는 단계; 그리고 상기 조정하는 단계는 가장 최근에 삽입된 데이터의 참조 메트릭 및 가장 최근에 퇴출된 데이터의 참조 메트릭에 따라서 상기 히트 메트릭 스레시홀드를 조정하는 단계를 포함한다.
또 다른 실시예에서, 상기 조정하는 단계는 다음을 포함한다. 가장 최근에 삽입된 데이터의 참조 메트릭을 가장 최근에 퇴출된 데이터의 참조 메트릭과 비교하는 단계; 만약 가장 최근에 삽입된 참조 메트릭이 가장 최근에 퇴출된 참조 메트릭보다 크면, 스레시홀드를 감소시키는 단계 (decrementing); 그리고 만약 가장 최근에 삽입된 참조 메트릭이 가장 최근에 퇴출된 참조 메트릭보다 작으면, 스레시홀드를 증가시키는 단계 (incrementing).
캐시 데이터 스토리지 시스템이 제1 데이터 스토리지 캐시를 추가적으로 포함하는 다른 실시예에서, 상기 히트 메트릭은 상기 데이터가 상기 캐시 데이터 스토리지 시스템의 제1 데이터 스토리지 캐시내에 저장된 동안 상기 데이터의 히트에 기초한다.
다른 실시예에서, 보조 데이터 스토리지 캐시에 제공된 데이터는 제1 데이터 스토리지 캐시로부터 강등된 데이터를 포함한다.
다른 실시예에서, 가장 최근에 삽입된 데이터는 MRI 목록에 나열되고 가장 최근에 퇴출된 데이터는 MRE 목록에 나열되며, 참조 메트릭은 데이터가 보조 데이터 스토리지 캐시내에 있는 동안 MRI내 나열된 데이터에 대한 보조 데이터 스토리지 캐시내의 히트들 및 데이터가 보조 데이터 스토리지 캐시로부터 퇴출된 이후 MRE내 데이터에 대한 히트들을 카운트하는 단계를 포함한다.
데이터가 데이터의 페이지를 포함하는, 다른 실시예에서, 상기 히트 메트릭에 대한 히트들을 카운트하는 단계는 한 페이지당 기준으로 (on a per page basis) 결정되고, 가장 최근에 삽입되고 가장 최근에 퇴출된 참조 메트릭스들은 MRI 및 MRE내 각각 나열된 모든 페이지들에 대해 결정된다.
다른 실시예에서, 상기 조정하는 단계는, 만약 가장 최근에 삽입된 참조 메트릭과 가장 최근에 퇴출된 참조 메트릭이 실질적으로 동일한 경우, 상기 히트 메트릭 스레시홀드는 변화되지 않고 남겨지는 것을 추가적으로 포함한다.
다른 실시예에서, 제1 데이터 스토리지 캐시는 보조 데이터 스토리지 캐시에 데이터를 제공하는 DRAM 제1 캐시를 포함하고, 보조 데이터 스토리지 캐시는 플래시 메모리를 포함한다.
본 발명을 좀 더 완전히 이해하기 위하여, 다음 도면들과 관련하여 취해진 상세한 설명을 참조한다.
도 1은 본 발명이 실시되는 예시적 네트워크 및 컴퓨터-구현 스토리지 서버 시스템의 블록 다이어그램이다;
도 2는 도 1의 컴퓨터-구현 캐시 데이터 스토리지 시스템의 다이어그램 도시이다;
도 3은 도 1 및 도 2의 다양한 시스템 상태의 다이어그램 도시이다; 그리고
도 4는 도 1 및 도 2의 시스템을 운영하는 예시적인 방법을 설명한 흐름도이다.
본 발명은 도면들을 참조하여 다음의 상세한 설명에서 바람직한 실시예들로 설명되며, 도면들에서 동일 (like) 번호들은 같거나 또는 비슷한 요소들을 나타낸다. 본 발명은 본 발명의 목적을 성취하기 위한 최선의 방식 (best mode)이라는 관점에서 설명될 것이지만, 본 발명의 범위를 벗어나지 않고서 본 발명들 (teachings)과 관련한 변형들이 이루어질 수 있음을 당업자는 이해할 것이다.
도 1을 참조하면, 컴퓨터-기반 네트워크 아키텍처 (100)의 사례가 컴퓨터-구현 데이터 스토리지 시스템 (110)과 함께 도시되는데, 이것은 이하 설명된 컴퓨터-구현 캐시 데이터 스토리지 시스템 및 방법들을 실시한다. 상기 아키텍처 (100)은 오직 사례로서만 제시될 뿐 제한할 목적으로 의도되지는 않는다. 이하 설명된 컴퓨터-구현 캐시 데이터 스토리지 시스템 및 방법들은 아주 다양한 다른 컴퓨터들, 서버들, 데이터 스토리지 시스템들 및 네트워크 아키텍처들에 적용가능하다.
예시적인 네트워크 아키텍처 (100)은 하나 또는 그 이상의 호스트 컴퓨터 시스템들 (102)를 포함하는데 이들은 스토리지 영역 네트워크 (storage area network (SAN)) (108)과 같은 네트워크에 접속된다. 상기 네트워크 (108)은 적절한 프로토콜을 사용하는 모든 적절한 사적인 또는 공공의 상호접속 (any suitable private or public interconnection)을 포함할 수 있다.
상기 스토리지 시스템 (110)은 데이터를 양방향으로 (to and from) 전송하고 스위치들 (202)의 동작을 제어하도록 구성된 스토리지 컨트롤 (200) 및 데이터 스토리지 (203) 그리고 (204)를 포함한다. 상기 데이터 스토리지는, 예를 들어, 스위치들 (202)를 통해 접근 가능한 솔리드-스테이트 드라이브들 (SSDs) 및 하드 디스크 드라이브들의 어레이들 (arrays)을 포함할 수 있다. 그렇지 않으면 (Alternatively) 또는 추가적으로, 상기 데이터 스토리지 (203) 및 (204)는 개별 디바이스들을 포함하거나 또는 많은 디바이스들을 갖는 데이터 스토리지 라이브러리들 (libraries)을 포함할 수 있다. 호스트 시스템들 (102) 전부 또는 일부는 스토리지 시스템 (110)을 사용할 수 있고 또한 스토리지 컨트롤 (200) 및 여기서 설명하는 데이터 캐싱 시스템을 사용할 수 있다.
상기 캐싱 시스템은 스토리지 컨트롤 (200)내에서 구현될 수 있고 다른 스토리지 시스템들에도 또한 적용가능하다. 도시한 바와 같이, 스토리지 컨트롤 (200)은 하나 또는 그 이상의 서버들 (206)을 포함한다. 상기 컨트롤 (200)은 또한 호스트 어댑터들 (208) 및 디바이스 어댑터들 (210)을 포함할 수 있는데 이들은 컨트롤 (200)을 호스트 시스템들 (102) 및 데이터 스토리지 (203) 및 (204)에 각각 접속하도록 하는 인터페이스들을 제공한다. 멀티 서버들 (206a), (206b)는 데이터가 접속된 호스트들 (102)에 항상 이용가능하게 보장하도록 리던던시 (redundancy)를 제공한다. 그러므로, 한 서버 (206a)가 고장나면 (fail), 다른 한 서버 (206b)가 데이터 전송이 호스트 시스템들 (102) 그리고 데이터 스토리지 (203) 및 (204)사이에서 계속될 수 있도록 하는 기능을 유지할 수 있다 (remain functional). 이러한 프로세스를 “시스템 대체 작동” (failover)이라 한다.
도 1에서 도시된 것과 유사한 아키텍처를 가진 스토리지 시스템 (110)의 한 사례는 DS8000™ IBM Corp. (IBM®)의 기업형 스토리지 서버 (Enterprise Storage Server)이다. DS8000™은 계속적인 동작들 (continuous operations)을 지원하고 데이터 스토리지의 가상화 (virtualization)를 구현하도록 설계된 데이터 스토리지를 제공하는 고성능, 대용량 스토리지 컨트롤이며 여기서 오직 실시예의 예들로서만 제시되며, 발명의 범위를 제한하려는 의도는 없다. 그러므로, 여기서 논의되는 캐싱 시스템은 DS8000™에 한정되지 않고, 시스템 (110)과 관련된 제조업자, 제품명, 또는 컴포넌트들 또는 컴포넌트명에 관계없이, 캐싱을 갖는 모든 비교가능 스토리지 컨트롤 (200)에서 구현될 수 있다.
도 1의 사례에서, 각 서버 (206)은 하나 또는 그 이상의 컴퓨터 프로세서들 (212) 및 메모리 (214)를 포함할 수 있다. 컴퓨터 프로세서들 (212)는 내부 처리 및 스토리지 능력을 포함할 수 있는데, 이는 상기 프로세서들상에서 운영되는, 그 중에서도 (inter alia), 데이터 스토리지 (203) 및 (204)내 데이터에 액세스하는데 사용되는 소프트웨어 모듈들을 저장하기 위해서이다.
한 실시예에서, 메모리 (214)는 캐시 (218)을 포함할 수 있다. 호스트 (102)가 스토리지 시스템 (110)으로부터, 예를 들어, 판독 동작에서, 데이터를 액세스할 때마다, 그 동작, 예를 들어 스토리지 (204)로부터 데이터를 판독하는 동작을 수행하는 서버 (206)는 상기 데이터가 다시 필요한 경우에 그 데이터를 자신의 캐시 (218)에 세이브 (save)할 수 있다. 만약 데이터가 호스트 (102)에 의하여 다시 액세스되면, 서버 (206)은 스토리지 (204)로부터 데이터를 가져오는 (fetch) 대신에 캐시 (218)로부터 데이터를 가져올 수 있어, 시간 및 자원들을 절약할 수 있다. 유사하게, 호스트 시스템 (102)가 기록 (write)을 수행할 때는, 서버 (206)이 데이터를 캐시에 저장하거나 또는 호스트 시스템 (102)가 데이터를 캐시(218)에 저장되도록 할 수 있고 그렇게 해서 그 데이터는 나중에 스토리지 (204)로 반출된다 (destaged). 기록이 캐시 (218)에 저장될 때, 그 기록은 또한 반대편 서버 (206)의 비휘발성 스토리지 (non-volatile storage (NVS)) (220)에 저장되어 제1 서버 (206)이 고장날 경우 반대편 서버 (206)에 의하여 복구되게 할 수 있다.
도 1과 2를 참조하면, 스토리지 시스템 (110)은 하드 디스크 드라이브들과 같은 데이터 스토리지 (204) 및 플래시 메모리와 같은 비휘발성 메모리에 기반을 둔 SSD들과 같은 데이터 스토리지 (203)을 포함할 수 있다. SSD 드라이브들 및 기타 형태들의 솔리드 스테이트 메모리의 입출력 (input/output (I/O)) 성능은 통상적으로 하드 디스크 드라이브들의 I/O 성능보다 매우 빠르다. 고도의 I/O 성능으로 인하여, SSD들 (203)은 어떤 실시예들에서, 제1 캐시로서 기능하는 캐시 (218)과 상기 하드 디스크 드라이브들 (204)사이에서 대용량의 보조 캐시 (300)을 제공하는데 사용된다. 대용량의 보조 캐시 (300)을 사용함으로써 스토리지 시스템 (110)의 I/O 성능을 현저히 (significantly) 개선할 수 있게 된다.
판독 요청이 서버 (206)에 의하여 수신되면 보조 캐시 (300)을 사용하여, 서버는 처음에는 제1 캐시 (218)에서 데이터를 찾고, 만약 데이터가 존재하지 않으면, SSDs (203)내 상주하는 보조 캐시 (300)에서 데이터를 찾을 수 있다. 어느 쪽 캐시에서도 데이터가 이용가능하지 않으면, 서버 (206)은 하드 디스크 드라이브들 (204)로부터 데이터를 검색한다. 유사하게, 데이터를 기록 또는 수정할 때, 서버 (206)은 처음에는 데이터 또는 수정된 데이터를 제1 캐시 (218)에 기록한다. 데이터는 궁극적으로 (eventually) 보조 캐시 (300)으로 반출되어 제1 캐시 (218)에 공간 (room)을 만든다. 이 데이터는 궁극적으로 (ultimately) 디스크 드라이브들 (204)로 반출되어 보조 캐시 (300)에 이용가능한 공간 (space)을 만든다.
하드 디스크 드라이브들 (204)로부터 데이터가 판독될 때, 그것이 다시 액세스될 경우 제1 캐시 (218)에 또한 저장될 수 있다.
하나의 사례로서, 보조 캐시 (300)은 스토리지 시스템 (110)의 전체 데이터 스토리지 용량의 1에서 20% 정도를 제공하도록 크기가 맞춰진다 (sized). 그러므로, (하드 디스크 드라이브들 (204) 및 SSDs (203) 양쪽 모두로부터) 약 40 테라바이트 (terabytes (TB)) 정도의 데이터 스토리지를 포함하는 스토리지 시스템 (110)에 있어서, 이 스토리지 공간의 약 2TB 정도가 보조 캐시 (300)으로서 사용된다. 제1 캐시 (218)은 통상적으로 보조 캐시 (300) 크기보다 더 작은 비율 (percentage)이다. 하나의 예시적인 사례로서, 제1 캐시 (218) 및 보조 캐시 (300) 양쪽 모두를 위한 스토리지 공간은 처리를 쉽게 하기 위하여 (to provide ease of handling) 페이지들로 구성될 수 있다.
도 2, 3 및 4를 참조하면, 한 실시예에서, 동적으로 조정된 스레시홀드가 보조 캐시 (300)의 선택적인 이주량 (selective population)을 제공하기 위하여 적용된다.
제1 캐시 (218)로부터 강등된 데이터를 걸러내기 위하여 스레시홀드가 채용된 하나의 실시예에서, 스레시홀드의 조정은 오직 제1 캐시 (218) 및 보조 캐시 (300)의 작은 부분에 캐시된 페이지들에 관한 통계 자료 (statistics)를 유지함에 의해서 달성된다.
컨트롤 (200)에 의하여 유지되는 통계 자료는 제1 캐시 (218)내 페이지들의 히트 메트릭들 (heat metrics) (310)을 포함하는데 이들은 보조 캐시 (300)으로 옮겨질 후보들이다.
히트 메트릭의 한 예는 데이터의 페이지가 제1 캐시 (218)내 위치하였기 때문에 액세스된 ("hit") 횟수의 카운트 (a count of the number of times)이다. 대부분의 캐시들은 LRU (최근에 가장 덜 사용된) 알고리듬 (이에 관해서는 많은 형태들이 당업자에 공지됨)을 기초로 하여 어떤 데이터를 강등시킬지 결정하므로, 통계 자료를 수집하는 효율적인 방법은 제1 캐시 (218)내 모든 페이지들의 히트 메트릭을 추적 (track) 및 유지하는 것이다. 히트들의 수는, 예를 들어, 제1 캐시 (218)내 각 페이지를 위한 메타데이터 엔트리 (metadata entry)내 카운터의 형태로 구현될 수 있다.
히트 메트릭들의 다른 예들은 상기 페이지가 제1 캐시 (218)내 위치하는 동안의 제한된 시간동안 페이지의 “히트들”의 수와, 제1 캐시 (218)내 모든 페이지들에 대한 “히트들”의 평균에 비교된 한 페이지에 대한 “히트들”의 비율을 포함한다.
한 실시예에서, 히트 메트릭 및 후보 데이터는, 예를 들어, 판독 동작에서, 오직 스토리지 (204)로부터 복사된 데이터이다.
도 3에서, 조정가능한 스레시홀드 T는 히트 메트릭의 형태이다. 상기 히트 메트릭 스레시홀드 T는 보조 데이터 스토리지 캐시 (300)의 현재 상태의 캐싱 효율에 따라서 조정된다. 도 1의 컨트롤 (200)은 강등될 (320) 후보 페이지의 도 2의 히트 메트릭 (310)을 히트 메트릭 스레시홀드 T와 비교한다. 만일 후보 데이터의 히트 메트릭 (310)이 스레시홀드 T보다 적다면 상기 컨트롤은 보조 데이터 스토리지 캐시에 제공된 후보 데이터를 거절한다 (330). 한 예에서, 상기 거절된 데이터 (330)은 폐기된다 (340). 폐기된다는 것은 만일 그 데이터가 도 1의 스토리지 (204)로부터 복사되었다면, 그 데이터에 대한 참조가 스토리지 (218) 및 제1 스토리지 (218)의 메타데이터 (인덱스와 같은)로부터 제거되고, 원본 (the original copy)은 스토리지 (204)에 유지되는 것을 의미한다.
대신에, 만일 후보 데이터 (320)이 제1 캐시 (218)에 초기에 기록된 데이터를 포함한다면, 폐기된다는 것은 그 데이터가 도 1의 데이터 스토리지 (204)에 기록된다는 것을 의미한다.
여전히 도 3을 참조하면, 도 1의 컨트롤 (200)은 보조 데이터 스토리지 캐시 (300)에 제공된 후보 데이터 (320)을 보조 데이터 스토리지 캐시 (300)에 허가하는데 (admit), 도 2의 히트 메트릭 (310)이 상기 히트 메트릭 스레시홀드 T와 같거나 더 큰 후보 데이터 (320)를 허가한다 (350).
도 2 및 3을 참조하면, 한 실시예에서, 도 1의 컨트롤 (200)에 의하여 유지되는 히트 메트릭 스레시홀드 T에 대한 캐싱 효율 조정은 보조 데이터 스토리지 캐시 (300)에 가장 최근 삽입된 (most recently inserted (MRI)) 데이터의 히트들과 관련된 참조 메트릭 (360)을 유지하는 것과 보조 데이터 스토리지 캐시 (300)로부터 가장 최근 퇴출된 (most recently evicted (MRE)) 데이터의 히트들과 관련된 참조 메트릭 (370)을 유지하는 것에 기초한다. 한 실시예에서, 상기 MRI 및 MRE 참조 메트릭들에서 채용된 데이터 페이지들의 수는 같다 (equal). 한 예로서, 가장 최근 삽입된 데이터 (365)는 MRI 목록 (380)에 나열되고 가장 최근 퇴출된 데이터는 MRE 목록 (390)에 나열되며, 참조 메트릭은 데이터가 보조 데이터 스토리지 캐시 (300)내에 있는 동안 MRI내 나열된 데이터에 대한 보조 데이터 스토리지 캐시내의 히트들과 데이터가 보조 데이터 스토리지 캐시로부터 퇴출된 이후 MRE내 나열된 데이터에 대한 히트들을 카운트하는 단계를 포함한다. 상기 목록들 (380), (390)은 선입 선출 교체 기법 (first-in first-out replacement policy)을 사용하는 작은 유령 캐시 (small ghost cashe)의 형태일 수 있다. 그렇지 않으면, 상기 목록들은 각 페이지가 보조 캐시내로, 내에 그리고 외부로 이동될 때 각 페이지의 식별 (each page identification)을 추가 그리고 삭제함에 의해서 결정될 수 있다. 각 페이지 참조에서 컨트롤은 MRI 목록 "r(MRI)" 및 MRE 목록 "r(MRE)"에서 발생되는 히트들의 수를 기록하면서 두 목록을 업데이트한다.
데이터가 데이터의 페이지를 포함하는, 다른 실시예에서, 히트 메트릭 (310)을 위해 히트들을 카운트하는 것은 한 페이지당 기준으로 결정되는데, 한 예에서 페이지가 제1 캐시 (218)에 존재하는 동안 그 페이지를 위한 히트들의 수에 기초하여 결정된다. 한편, 가장 최근에 삽입 및 퇴출된 참조 메트릭스 (360), (370)은 MRI (365) 및 MRE (375)내 각각 나열된 모든 페이지들을 위해서 결정된다.
한 실시예에서, 도 1의 컨트롤 (200)은 가장 최근에 삽입된 데이터의 참조 메트릭 (360)을 가장 최근에 퇴출된 데이터의 참조 메트릭 (370)과 비교하여; 만약 가장 최근에 삽입된 참조 메트릭 (360)이 가장 최근에 퇴출된 참조 메트릭 (370)보다 더 크면, 스레시홀드 T를 감소시키고; 그리고 만약 가장 최근에 삽입된 참조 메트릭 (360)이 가장 최근에 퇴출된 참조 메트릭 (370)보다 더 작으면, 스레시홀드를 감소시킨다.
도 2, 3 및 4를 참조하면, 한 실시예에서, 도 1의 컨트롤 (200)은 단계 (400)에서, 제1 캐시 (218)로부터 페이지 p를 강등한다. 단계 (400)과 무관한 시간 프레임에서 발생할 수 있는 단계 (410)에서, 보조 캐시 (300)의 가장 최근에 삽입된 데이터 (365)의 참조 메트릭 (360)을 가장 최근에 퇴출된 데이터 (375)의 참조 메트릭 (370)과 비교한다.
한 실시예에서, 정상 상태에서 (at the steady state), 보조 캐시 (300)으로 허가된 각 페이지를 위해, 한 페이지는 퇴출되어야 한다. 말하자면, 각 허가 (each admission)는 한 페이지의 교체를 의미한다. 그러므로, 각각의 제1 캐시 강등에서, 컨트롤은 n개의 최근 보조 캐시 허가 결정들을 평가할 것이다: 만일 이것들이 옳다면 (즉, 히트 비율이 증가되는 결과가 얻어졌다면), 스레시홀드 T는 감소될 것이다. 구체적으로, 만약 가장 최근에 삽입된 참조 메트릭 (360)이 가장 최근에 퇴출된 참조 메트릭 (370)보다 더 크면 (415), 스레시홀드 T는 감소될 것이다 (420). 말하자면, 이전의 스레시홀드 T0는 한 유닛 크기만큼 감소되어 새로운 스레시홀드 T1이 된다. 한 예에서, T1을 위한 조정은 하나 적은 히트를 갖는 페이지가 캐시에 허가될 수 있게 한다. 더 낮은 스레시홀드는 보조 캐시에 더 많은 데이터 이주량 (more aggressive secondary cache population)을 가져올 것이다.
한편, 만일 n개의 최근 보조 캐시 허가 결정들이 틀렸다면 (즉, 히트 비율이 감소하는 결과가 나왔다면), 스레시홀드 T는 증가될 것이다. 구체적으로, 만약 가장 최근에 삽입된 참조 메트릭 (360)이 가장 최근에 퇴출된 참조 메트릭 (370)보다 적으면 (425), 스레시홀드 T는 증가될 것이다 (430). 말하자면, 이전의 스레시홀드 T0는 한 유닛 크기만큼 증가되어 새로운 스레시홀드 T1이 된다. 한 예에서, T1에 대한 조정은 히트들의 하나 더 많은 수를 갖는 페이지만을 상기 캐시에 허가될 수 있게 한다. 더 높은 스레시홀드로 인하여 더 유입되는 페이지들을 더 많이 폐기하는 (340) 결과를 가져올 것이다.
한 실시예에서, 대체 정상 상태 (alternative steady state)는 유지될 수 있는데, 이 대체 정상 상태에서는 만약 가장 최근에 삽입된 참조 메트릭 (360)과 가장 최근에 퇴출된 참조 메트릭 (370)이 실질적으로 동일하면 (440), 히트 메트릭 스레시홀드 T는 변화없이 남겨진다 (450).
하나의 대안으로서, 스레시홀드 T의 조정은 특정 시간대에 수행될 수 있다.
결과적으로, 만약 r(MRI)가 r(MRE)보다 크면, 새롭게 허가된 페이지들은 퇴출된 것들보다 더 뜨겁다 (hotter)는 것을 의미하고 스레시홀드 T는 더 낮아져야 함을 의미한다. 한편, 만약 r(MRI)가 r(MRE)보다 작으면, 퇴출된 페이지들이 새롭게 허가된 것들보다 호스트 시스템 (102)에 더 가치있다는 것을 의미하고 새로운 것들에 의하여 교체되지 않아야 함을 의미한다; 그러므로, 이주량 비율 (the population rate)은 더 낮아져야 하고 허가 스레시홀드 T는 더 높아져야 한다.
한 실시예에서, 강등된 페이지 (320)의 히트 (310) "h(p)"는, 단계 (460)에서, 새로운 스레시홀드 T1과 비교된다. 만일 후보 데이터의 히트 메트릭 (310)이 스레시홀드 T보다 더 적다면 상기 컨트롤은 보조 데이터 스토리지 캐시에 제공된 후보 데이터 (310)을 거절하는데 (465) (330), 예를 들어 상기 거절된 데이터를 폐기한다 (340). 도 1의 컨트롤 (200)은 히트 메트릭 (310)이 상기 히트 메트릭 스레시홀드 T와 같거나 또는 큰 상기 보조 데이터 스토리지 캐시 (300)에 제공되는 후보 데이터 (320)를 보조 데이터 스토리지 캐시 (300)에 허가한다 (470), (350).
스레시홀드 T에 대한 조정의 예들로서, 만일 마지막 (1000) 액세스들동안, MRE 목록에서 (그것의 페이지들 중 임의의 페이지상에서) 50번 그리고 MRI 목록에서 (그것의 페이지들 중 임의의 페이지상에서) 고작 10번의 히트들만 있었다고 하면, 더 많은 캐싱 가치를 갖는 페이지들이 보조 캐시로부터 퇴출되고 더 적은 캐싱 가치를 갖는 새로운 것들이 삽입되는 것을 의미하므로, 상기 컨트롤은 보조 캐시 (300)에 대한 허가 비율 (the admission rate)을 줄여야 (스레시홀드 T를 높여야) 한다. 역으로, 만일 마지막 (1000) 액세스들 동안, MRI 목록에서 (그것의 페이지들 중 임의의 페이지상에서) 50번 그리고 MRE 목록에서 (그것의 페이지들 중 임의의 페이지상에서) 고작 10번의 히트들만 있었다고 하면, 더 많은 캐싱 가치를 갖는 페이지들이 보조 캐시로 삽입되고 더 적은 캐싱 가치를 갖는 새로운 것들이 퇴출됨을 의미하므로, 상기 컨트롤은 보조 캐시 (300)에 대한 허가 비율을 높여 (스레시홀드 T를 낮추어야) 더 많은 캐싱 가치를 갖는 페이지들을 더 많이 허가하도록 해야 한다.
당업자는, 여기서 개시된, 도 1 및 도 2 시스템 (100)의 보조 캐시 (300)의 이주량 (population)을 제어하기 위한 컴퓨터-구현 컨트롤 (200)과 이를 위해 제공된 기능성 (functionality)을 포함하는, 본 발명의 실시예들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있음을 이해할 것이다. 따라서, 본 발명의 실시예들은 전체로서 하드웨어 실시예, 전체로서 소프트웨어 실시예 (펌웨어, 상주 소프트웨어, 마이크로-코드,등을 포함), 또는 소프트웨어와 일반적으로 “회로”, “모듈”, 또는 “시스템”으로 일컫는 하드웨어를 조합하는 실시예와 같은 조합의 형태를 취할 수 있다. 더 나아가서, 본 발명의 실시 예들은 컴퓨터 프로그램 제품의 형태를 취할 수 있는데, 이는 컴퓨터 판독가능 프로그램 코드가 그 위에 구현된 하나 또는 그 이상의 비-일시적인 (non-transient) 컴퓨터 판독가능 매체(들)내에 구현된다.
하나 또는 그 이상의 비-일시적인 컴퓨터 판독가능 매체(들)의 모든 조합이 이용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 스토리지 매체일 수 있다. 스토리지 매체는, 예를 들어, 전자, 자기, 광, 전자기, 적외선 또는 반도체 시스템, 장치, 또는 디바이스, 또는 이들의 모든 적절한 조합이 포함될 수 있으나, 이에 한정되지 않는다. 컴퓨터 판독가능 스토리지 매체의 더 구체적인 예들 (비-포괄적 리스트)에는 다음의 것들이 포함된다: 하나 또는 그 이상의 배선들을 갖는 전자적 커넥션, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 억세스 메모리 (RAM), 판독-전용 메모리 (ROM), 지울 수 있는 프로그램가능 판독-전용 메모리 (EPROM 또는 플래시 메모리), 광섬유 (an optical fiber), 휴대용 컴팩트 디스크 판독-전용 메모리 (CD-ROM), 광 스토리지 디바이스, 자기 스토리지 디바이스, 또는 이들의 모든 적절한 조합. 이 문서의 맥락에서, 컴퓨터 판독가능 스토리지 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해서 또는 연결하여 사용할 프로그램을 포함 또는 저장할 수 있는 모든 유형의 매체가 될 수 있다.
컴퓨터 판독가능 매체상에 구현된 프로그램 코드는 어떠한 적절한 매체를 사용하여 전송될 수 있는데, 이 매체에는 무선, 유선, 광섬유 케이블, RF 등 또는 이들의 모든 적절한 조합이 포함될 수 있으나, 이에 한정되지 않는다.
본 발명의 실시예들을 수행하기 위한 컴퓨터 프로그램 코드는 하나 또는 그 이상의 프로그래밍 언어들의 모든 조합으로 작성될 수 있으며, 이들 언어들은 Java, Smalltalk, C++ 또는 이와 유사한 언어들 같은 객체지향 프로그래밍 언어와, “C” 프로그래밍 언어 또는 이와 유사한 프로그래밍 언어들과 같은 종래의 절차적인 프로그래밍 언어들을 포함한다. 프로그램 코드는 독립 소프트웨어 패키지로서, 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서 실행될 수 있고, 부분적으로 사용자의 컴퓨터상에서, 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터 또는 서버상에서 실행될 수 있다. 후자의 경우에, 원격 컴퓨터는 모든 타입의 네트워크를 통해서 사용자 컴퓨터에 연결될 수 있는데, 그러한 네트워크는 근거리 네트워크 (LAN) 또는 광역 네트워크 (WAN)를 포함하며, 또는 그러한 연결이 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대해 이루어질 수 있다.
본 발명의 실시 예들이 지금까지 발명의 실시예들에 따른 방법들, 장치 (시스템들) 및 컴퓨터 프로그램 제품들에 관한 흐름도 예시들 및/또는 블록 다이어그램들을 참조하여 위에 기술되었다. 흐름도 예시들의 각 블록 및/또는 블록 다이어그램들 그리고 흐름도 예시들의 블록들 및/또는 블록 다이어그램들내 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해서 구현될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 명령들은 범용 컴퓨터, 특수 목적 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공될 수 있는데, 이는 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되는, 명령들이 흐름도 및/또는 블록 다이어그램의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성하도록 기계를 만들기 위함이다.
이들 컴퓨터 프로그램 명령들은 또한 컴퓨터 판독가능 매체에 저장되어 컴퓨터, 기타 프로그램가능 데이터 처리 장치 또는 기타 디바이스들을 지시하여 상기 컴퓨터 판독가능 매체에 저장된 명령들이 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작을 구현하는 명령들을 포함하는 제품을 생성하도록, 특별한 방식으로, 기능하게 할 수 있다.
상기 컴퓨터 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치 또는 기타 디바이스들에 로드되어 일련의 동작 단계들이 컴퓨터, 기타 프로그램가능 데이터 처리 장치 또는 기타 디바이스들상에서 수행되도록 하여, 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치상에서 실행되는 상기 명령들이 상기 흐름도 및/또는 블록 다이어그램의 블록 또는 블록들에 명시된 기능들/동작들을 구현하는 프로세스들을 제공하도록 컴퓨터 구현 프로세스를 생성할 수 있다.
당업자는 단계의 순서를 변경하는 것을 포함하여 위에서 설명된 방법들과 관련하여 변화들이 이루어질 수 있다는 것을 이해할 수 있을 것이다. 나아가서, 당업자는 특정한 컴포넌트 구성들을 여기서 도시된 것들과 다르게 할 수 있음도 이해할 수 있을 것이다.
본 발명의 바람직한 실시예들이 자세히 설명되었지만, 본 실시예들에 대한 수정들 및 적용들이 본 발명의 범위를 벗어나지 않고서 일어날 수 있음은 당업자에게 자명할 것이다.

Claims (25)

  1. 컴퓨터-구현 캐시 데이터 스토리지 시스템 (a computer-implemented cache data storage system)의 보조 데이터 스토리지 캐시로 데이터를 이주시키는 (populating) 방법에 있어서, 상기 방법은:
    상기 보조 데이터 스토리지 캐시에 삽입될 후보 데이터의 히트 메트릭 (a heat metric)을 결정하는 단계 (determining);
    상기 보조 데이터 스토리지 캐시의 현재 상태의 캐싱 효율 (caching efficiency)에 따라서 히트 메트릭 스레시홀드를 조정하는 단계 (adjusting);
    히트 메트릭이 상기 스레시홀드보다 더 적은 상기 보조 데이터 스토리지 캐시에 제공된 후보 데이터를 거절하는 단계 (rejecting); 및
    히트 메트릭이 상기 히트 메트릭 스레시홀드와 같거나 큰 상기 보조 데이터 스토리지 캐시에 제공된 후보 데이터를, 상기 보조 데이터 스토리지 캐시에 허가하는 단계 (admitting)를 포함하는
    방법.
  2. 제 1항에 있어서, 상기 방법은:
    상기 보조 데이터 스토리지 캐시 (secondary data storage cache)에 가장 최근 삽입된 데이터의 히트들 (hits)과 관련된 참조 메트릭 (a reference metric)을 유지하는 단계 (maintaining);
    상기 보조 데이터 스토리지 캐시로부터 가장 최근 퇴출된 (evicted) 데이터의 히트들과 관련된 참조 메트릭을 유지하는 단계를 추가로 포함하고; 그리고
    상기 조정하는 단계는 상기 가장 최근에 삽입된 데이터의 참조 메트릭과 상기 가장 최근에 퇴출된 데이터의 참조 메트릭에 따라서 히트 메트릭 스레시홀드를 조정하는 단계를 포함하는
    방법.
  3. 제 2항에 있어서, 상기 조정하는 단계는:
    상기 가장 최근에 삽입된 데이터의 참조 메트릭을 상기 가장 최근에 퇴출된 데이터의 참조 메트릭과 비교하는 단계;
    만약 상기 가장 최근에 삽입된 참조 메트릭이 상기 가장 최근에 퇴출된 참조 메트릭보다 크면, 상기 스레시홀드를 감소시키는 단계 (decrementing); 및
    만약 상기 가장 최근에 삽입된 참조 메트릭이 상기 가장 최근에 퇴출된 참조 메트릭보다 작으면, 상기 스레시홀드를 증가시키는 단계 (incrementing)를 포함하는
    방법.
  4. 제 3항에 있어서, 상기 캐시 데이터 스토리지 시스템은 제1 데이터 스토리지 캐시를 추가적으로 포함하고, 상기 히트 메트릭은 상기 데이터가 상기 캐시 데이터 스토리지 시스템의 제1 데이터 스토리지 캐시내에 저장된 동안 상기 데이터의 히트에 기초하는
    방법.
  5. 제 4항에 있어서, 상기 보조 데이터 스토리지 캐시에 제공된 상기 데이터는 제1 데이터 스토리지 캐시로부터 강등된 데이터를 포함하는
    방법.
  6. 제 5항에 있어서, 상기 가장 최근에 삽입된 데이터는 MRI 목록에 나열되고 상기 가장 최근에 퇴출된 데이터는 MRE 목록에 나열되며, 상기 참조 메트릭은 상기 데이터가 상기 보조 데이터 스토리지 캐시내에 있는 동안 상기 MRI내 나열된 상기 데이터에 대한 상기 보조 데이터 스토리지 캐시내의 히트들과 상기 데이터가 상기 보조 데이터 스토리지 캐시로부터 퇴출된 이후 상기 MRE내 나열된 상기 데이터에 대한 히트들을 카운트하는 것을 포함하는
    방법.
  7. 제 6항에 있어서, 상기 데이터는 데이터의 페이지들을 포함하고, 상기 히트 메트릭에 대한 히트들을 카운트하는 것은 한 페이지당 기준으로 (on a per page basis) 결정되고, 상기 가장 최근에 삽입되고 상기 가장 최근에 퇴출된 참조 메트릭들은 상기 MRI 및 상기 MRE내 각각 나열된 모든 상기 페이지들에 대해 결정되는 것을 포함하는
    방법.
  8. 제 3항에 있어서, 상기 조정하는 단계는, 만약 상기 가장 최근에 삽입된 참조 메트릭과 상기 가장 최근에 퇴출된 참조 메트릭이 실질적으로 동일하면, 상기 히트 메트릭 스레시홀드가 변화되지 않고 남겨지는 것을 추가적으로 포함하는
    방법.
  9. 컴퓨터-구현 캐시 데이터 스토리지 시스템에 있어서, 상기 시스템은:
    보조 데이터 스토리지 캐시 (a secondary data storage cache); 및
    상기 보조 데이터 스토리지 캐시로 데이터를 이주시키는 (populating) 컨트롤을 포함하며, 상기 컨트롤은:
    상기 보조 데이터 스토리지 캐시에 삽입될 후보 데이터의 히트 메트릭 (a heat metric)을 결정하는 단계;
    상기 보조 데이터 스토리지 캐시의 현재 상태의 캐싱 효율에 따라서 히트 메트릭 스레시홀드를 조정하는 단계;
    히트 메트릭이 스레시홀드보다 적은 상기 보조 데이터 스토리지 캐시에 제공된 후보 데이터를 거절하는 단계; 및
    히트 메트릭이 상기 히트 메트릭 스레시홀드와 같거나 더 큰 상기 보조 데이터 스토리지 캐시에 제공된 후보 데이터를, 상기 보조 데이터 스토리지 캐시에 허가하는 단계 (admitting)를 포함하는
    시스템.
  10. 제 9항에 있어서, 상기 컨트롤은:
    상기 보조 데이터 스토리지 캐시에 가장 최근 삽입된 데이터의 히트들과 관련된 참조 메트릭을 유지하는 단계;
    상기 보조 데이터 스토리지 캐시로부터 가장 최근 퇴출된 데이터의 히트들과 관련된 참조 메트릭을 유지하는 단계를 더 포함하고; 그리고
    상기 조정하는 단계에서는, 상기 가장 최근에 삽입된 데이터의 참조 메트릭과 상기 가장 최근에 퇴출된 데이터의 상기 참조 메트릭에 따라서 상기 히트 메트릭 스레시홀드를 조정하는 단계를 추가적으로 포함하는
    시스템.
  11. 제 10항에 있어서, 상기 컨트롤은, 상기 조정하는 단계에서:
    상기 가장 최근에 삽입된 데이터의 참조 메트릭을 상기 가장 최근에 퇴출된 데이터의 참조 메트릭과 비교하는 단계;
    만약 상기 가장 최근에 삽입된 참조 메트릭이 상기 가장 최근에 퇴출된 참조 메트릭보다 크면, 상기 스레시홀드를 감소시키는 단계; 및
    만약 상기 가장 최근에 삽입된 참조 메트릭이 상기 가장 최근에 퇴출된 참조 메트릭보다 작으면, 상기 스레시홀드를 증가시키는 단계를 포함하는
    시스템.
  12. 제 11항에 있어서, 상기 시스템은 제1 데이터 스토리지 캐시를 추가로 포함하며; 그리고
    상기 히트 메트릭은 상기 데이터가 상기 캐시 데이터 스토리지 시스템의 제1 데이터 스토리지 캐시내에 저장된 동안 상기 데이터의 히트에 기초하는
    시스템.
  13. 제 12항에 있어서, 상기 보조 데이터 스토리지 캐시에 제공된 상기 데이터는 제1 데이터 스토리지 캐시로부터 강등된 데이터를 포함하는
    시스템.
  14. 제 13항에 있어서, 상기 컨트롤은, 상기 참조 단계들을 유지하는 단계에서:
    MRI 목록의 상기 가장 최근에 삽입된 데이터와 MRE 목록의 상기 가장 최근에 퇴출된 데이터를 나열하고 (list), 상기 참조 메트릭은 상기 데이터가 상기 보조 데이터 스토리지 캐시내에 있는 동안 상기 MRI내 나열된 상기 데이터에 대한 상기 보조 데이터 스토리지 캐시내의 히트들과 상기 데이터가 상기 보조 데이터 스토리지 캐시로부터 퇴출된 이후 상기 MRE내 나열된 상기 데이터에 대한 히트들을 카운트하는 것을 추가적으로 포함하는
    시스템.
  15. 제 14항에 있어서, 상기 데이터는 데이터의 페이지들을 포함하며 상기 컨트롤은 한 페이지당 기준으로 (on a per page basis) 상기 히트 메트릭에 대한 히트들의 상기 카운트들을 결정하고, 상기 MRI 및 MRE내 각각 나열된 상기 모든 페이지들에 대한 상기 가장 최근에 삽입되고 상기 가장 최근에 퇴출된 참조 메트릭들을 결정하는
    시스템.
  16. 제 11항에 있어서, 상기 컨트롤의 조정하는 단계는, 만약 상기 가장 최근에 삽입된 참조 메트릭과 상기 가장 최근에 퇴출된 참조 메트릭이 실질적으로 동일하면, 상기 히트 메트릭 스레시홀드는 변화되지 않고 남겨지는 것을 추가적으로 포함하는
    시스템.
  17. 제 11항에 있어서, 상기 제1 데이터 스토리지 캐시는 상기 보조 데이터 스토리지 캐시에 데이터를 제공하는 DRAM 제1 캐시 (a DRAM first cache)를 포함하고, 상기 보조 캐시는 플래시 메모리를 포함하는
    시스템.
  18. 컴퓨터-구현 캐시 데이터 스토리지 시스템의 보조 데이터 스토리지 캐시로 데이터를 이주시키는 (populating) 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 비-일시적인 (non-transient) 컴퓨터-사용가능 프로그램 코드가 그 위에 구현된 컴퓨터-사용가능 스토리지 매체를 포함하고, 상기 컴퓨터-사용가능 프로그램 코드는:
    상기 보조 데이터 스토리지 캐시에 삽입될 후보 데이터의 히트 메트릭을 결정하는 컴퓨터-사용가능 프로그램 코드;
    상기 보조 데이터 스토리지 캐시의 현재 상태의 캐싱 효율에 따라서 히트 메트릭 스레시홀드를 조정하는 컴퓨터-사용가능 프로그램 코드;
    히트 메트릭이 상기 스레시홀드보다 적은 상기 보조 데이터 스토리지 캐시에 제공된 후보 데이터를 거절하는 컴퓨터-사용가능 프로그램 코드; 및
    히트 메트릭이 상기 히트 메트릭 스레시홀드와 같거나 더 큰 상기 보조 데이터 스토리지 캐시에 제공된 후보 데이터를 상기 보조 데이터 스토리지 캐시에 허가하는 (admit) 컴퓨터-사용가능 프로그램 코드를 포함하는
    컴퓨터 프로그램 제품.
  19. 제 18항에 있어서, 상기 제품은 :
    상기 보조 데이터 스토리지 캐시에 가장 최근 삽입된 데이터의 히트들과 관련된 참조 메트릭을 유지하는 컴퓨터-사용가능 프로그램 코드:
    상기 보조 데이터 스토리지 캐시로부터 가장 최근 퇴출된 데이터의 히트들과 관련된 참조 메트릭을 유지하는 컴퓨터-사용가능 프로그램 코드를 추가로 포함하고: 그리고
    상기 조정하는 단계에 있어서, 상기 가장 최근에 삽입된 데이터의 참조 메트릭과 상기 가장 최근에 퇴출된 데이터의 참조 메트릭에 따라서 상기 히트 메트릭 스레시홀드를 조정하는 컴퓨터-사용가능 프로그램 코드를 추가적으로 포함하는
    컴퓨터 프로그램 제품.
  20. 제 19항의 컴퓨터 프로그램 제품에 있어서, 상기 제품은, 상기 조정하는 단계에서;
    상기 가장 최근에 삽입된 데이터의 참조 메트릭을 상기 가장 최근에 퇴출된 데이터의 참조 메트릭과 비교하는 컴퓨터-사용가능 프로그램 코드;
    만약 상기 가장 최근에 삽입된 참조 메트릭이 상기 가장 최근에 퇴출된 참조 메트릭보다 크면, 스레시홀드를 감소시키는 컴퓨터-사용가능 프로그램 코드; 및
    만약 상기 가장 최근에 삽입된 참조 메트릭이 상기 가장 최근에 퇴출된 참조 메트릭보다 작으면, 스레시홀드를 증가시키는 컴퓨터-사용가능 프로그램 코드를 추가적으로 포함하는
    컴퓨터 프로그램 제품.
  21. 제 20항에 있어서, 상기 캐시 데이터 스토리지 시스템은 제1 데이터 스토리지 캐시를 추가적으로 포함하고, 상기 히트 메트릭은 상기 데이터가 상기 캐시 데이터 스토리지 시스템의 제1 데이터 스토리지 캐시내에 저장된 동안 상기 데이터의 히트에 기초하는
    컴퓨터 프로그램 제품.
  22. 제 21항에 있어서, 상기 보조 데이터 스토리지 캐시에 제공된 상기 데이터는 제1 데이터 스토리지 캐시로부터 강등된 데이터를 포함하는
    컴퓨터 프로그램 제품.
  23. 제 22항의 컴퓨터 프로그램 제품에 있어서, 상기 가장 최근에 삽입된 데이터는 MRI 목록에 나열되고 상기 가장 최근에 퇴출된 데이터는 MRE 목록에 나열되며, 상기 참조 메트릭은 상기 데이터가 상기 보조 데이터 스토리지 캐시내에 있는 동안 상기 MRI내 나열된 상기 데이터에 대한 상기 보조 데이터 스토리지 캐시 내의 히트들과 상기 데이터가 상기 보조 데이터 스토리지 캐시로부터 퇴출된 이후 상기 MRE내 나열된 상기 데이터에 대한 히트들을 카운트하는 것을 포함하는
    컴퓨터 프로그램 제품.
  24. 제 23항에 있어서, 상기 데이터는 데이터의 페이지들을 포함하고, 상기 히트 메트릭에 대한 히트들을 카운트하는 것은 한 페이지당 기준으로 (on a per page basis) 결정되고, 상기 가장 최근에 삽입되고 상기 가장 최근에 퇴출된 참조 메트릭들은 상기 MRI 및 상기 MRE내 각각 나열된 모든 상기 페이지들에 대해 결정되는 것을 포함하는
    컴퓨터 프로그램 제품.
  25. 제 20항에 있어서, 상기 컴퓨터-사용가능 프로그램 코드는, 상기 조정하는 단계에서, 만약 상기 가장 최근에 삽입된 참조 메트릭과 상기 가장 최근에 퇴출된 참조 메트릭이 실질적으로 동일하면, 상기 히트 메트릭 스레시홀드는 변화되지 않고 남겨지게 하는
    컴퓨터 프로그램 제품.
KR1020147002940A 2011-10-31 2012-10-19 보조 캐시의 이주량을 위한 동적으로 조정된 스레시홀드 KR20140082639A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/285,740 2011-10-31
US13/285,740 US8972661B2 (en) 2011-10-31 2011-10-31 Dynamically adjusted threshold for population of secondary cache
PCT/IB2012/055730 WO2013064935A1 (en) 2011-10-31 2012-10-19 Dynamically adjusted threshold for population of secondary cache

Publications (1)

Publication Number Publication Date
KR20140082639A true KR20140082639A (ko) 2014-07-02

Family

ID=48173646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147002940A KR20140082639A (ko) 2011-10-31 2012-10-19 보조 캐시의 이주량을 위한 동적으로 조정된 스레시홀드

Country Status (7)

Country Link
US (2) US8972661B2 (ko)
JP (1) JP5908100B2 (ko)
KR (1) KR20140082639A (ko)
CN (1) CN103907100B (ko)
DE (1) DE112012004209T5 (ko)
GB (1) GB2513741B (ko)
WO (1) WO2013064935A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158706B2 (en) 2011-10-31 2015-10-13 International Business Machines Corporation Selective space reclamation of data storage memory employing heat and relocation metrics
US8972661B2 (en) * 2011-10-31 2015-03-03 International Business Machines Corporation Dynamically adjusted threshold for population of secondary cache
US10152423B2 (en) * 2011-10-31 2018-12-11 International Business Machines Corporation Selective population of secondary cache employing heat metrics
US9733991B2 (en) 2012-09-14 2017-08-15 International Business Machines Corporation Deferred re-MRU operations to reduce lock contention
US9547604B2 (en) 2012-09-14 2017-01-17 International Business Machines Corporation Deferred RE-MRU operations to reduce lock contention
GB2514571A (en) * 2013-05-29 2014-12-03 Ibm Cache allocation in a computerized system
US9501419B2 (en) * 2014-10-08 2016-11-22 HGST Netherlands B.V. Apparatus, systems, and methods for providing a memory efficient cache
CN105493024B (zh) * 2014-11-28 2019-03-08 华为技术有限公司 一种数据阈值预测方法与相关装置
CN104834609B (zh) * 2015-05-31 2017-12-22 上海交通大学 基于历史升降级频率的多级缓存方法
WO2017019129A1 (en) * 2015-07-24 2017-02-02 Hewlett Packard Enterprise Development Lp Computing system cache
US9952904B2 (en) 2015-08-21 2018-04-24 International Business Machines Corporation Distributing tracks to add to cache to processor cache lists based on counts of processor access requests to the cache
US10114753B2 (en) 2015-08-21 2018-10-30 International Business Machines Corporation Using cache lists for multiple processors to cache and demote tracks in a storage system
US10108552B2 (en) * 2015-08-21 2018-10-23 International Business Machines Corporation Using cache lists for processors to determine tracks to demote from a cache
US10067884B2 (en) 2015-08-21 2018-09-04 International Business Machines Corporation Distributing a plurality of tracks to add to cache to lists assigned to processors
US9824030B2 (en) 2015-10-30 2017-11-21 International Business Machines Corporation Adjusting active cache size based on cache usage
US9811474B2 (en) * 2015-10-30 2017-11-07 International Business Machines Corporation Determining cache performance using a ghost cache list indicating tracks demoted from a cache list of tracks in a cache
US10282304B2 (en) * 2016-04-27 2019-05-07 Vmware, Inc. Caching using an admission control cache layer
JP6711121B2 (ja) * 2016-05-10 2020-06-17 富士通株式会社 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム
US10552327B2 (en) 2016-08-23 2020-02-04 Apple Inc. Automatic cache partitioning
US10204045B2 (en) 2016-08-30 2019-02-12 International Business Machines Corporation Data file handling in a volatile memory
US10540295B2 (en) 2017-06-21 2020-01-21 International Business Machines Corporation Processing cache miss rates to determine memory space to add to an active cache to reduce a cache miss rate for the active cache
US11609858B2 (en) * 2018-12-26 2023-03-21 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
US11113207B2 (en) * 2018-12-26 2021-09-07 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
US11151053B2 (en) * 2019-08-07 2021-10-19 International Business Machines Corporation Increasing data read and/or write heat tracking resolution in storage devices having cache architecture
CN113766650B (zh) * 2021-08-26 2022-06-28 武汉天地同宽科技有限公司 基于动态平衡的互联网资源获取方法及系统

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293608A (en) 1991-04-19 1994-03-08 Legent Corporation System and method for optimizing cache memory utilization by selectively inhibiting loading of data
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6507893B2 (en) * 2001-01-26 2003-01-14 Dell Products, L.P. System and method for time window access frequency based caching for memory controllers
JP2004355365A (ja) 2003-05-29 2004-12-16 Fujitsu Ltd キャッシュ管理装置およびキャッシュメモリ管理方法
US7757045B2 (en) * 2006-03-13 2010-07-13 Intel Corporation Synchronizing recency information in an inclusive cache hierarchy
US7596662B2 (en) * 2006-08-31 2009-09-29 Intel Corporation Selective storage of data in levels of a cache memory
US7568068B2 (en) * 2006-11-13 2009-07-28 Hitachi Global Storage Technologies Netherlands B. V. Disk drive with cache having volatile and nonvolatile memory
US20080133844A1 (en) * 2006-12-01 2008-06-05 Srinivasan Ramani Method and apparatus for extending local caches in a multiprocessor system
US7725657B2 (en) * 2007-03-21 2010-05-25 Intel Corporation Dynamic quality of service (QoS) for a shared cache
US20080282059A1 (en) 2007-05-09 2008-11-13 Kattamuri Ekanadham Method and apparatus for determining membership in a set of items in a computer system
US8024513B2 (en) 2007-12-04 2011-09-20 International Business Machines Corporation Method and system for implementing dynamic refresh protocols for DRAM based cache
US8161242B2 (en) * 2008-08-01 2012-04-17 International Business Machines Corporation Adaptive spill-receive mechanism for lateral caches
US8397016B2 (en) 2008-12-31 2013-03-12 Violin Memory, Inc. Efficient use of hybrid media in cache architectures
US8195901B2 (en) 2009-02-05 2012-06-05 International Business Machines Corporation Firehose dump of SRAM write cache data to non-volatile memory using a supercap
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8176220B2 (en) 2009-10-01 2012-05-08 Oracle America, Inc. Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors
US8255627B2 (en) 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
WO2011074040A1 (en) * 2009-12-17 2011-06-23 Hitachi,Ltd. Storage apparatus and its control method
JP2011150684A (ja) 2009-12-21 2011-08-04 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
JP5434738B2 (ja) * 2010-03-26 2014-03-05 日本電気株式会社 ディスク装置
US20120124291A1 (en) * 2010-11-16 2012-05-17 International Business Machines Corporation Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data
US8972661B2 (en) * 2011-10-31 2015-03-03 International Business Machines Corporation Dynamically adjusted threshold for population of secondary cache
US10152423B2 (en) * 2011-10-31 2018-12-11 International Business Machines Corporation Selective population of secondary cache employing heat metrics

Also Published As

Publication number Publication date
GB201409211D0 (en) 2014-07-09
CN103907100A (zh) 2014-07-02
JP2014535106A (ja) 2014-12-25
GB2513741A (en) 2014-11-05
DE112012004209T5 (de) 2014-09-11
US20130111131A1 (en) 2013-05-02
GB2513741B (en) 2016-11-02
US8972662B2 (en) 2015-03-03
CN103907100B (zh) 2016-05-25
US8972661B2 (en) 2015-03-03
JP5908100B2 (ja) 2016-04-26
WO2013064935A1 (en) 2013-05-10
US20130111133A1 (en) 2013-05-02

Similar Documents

Publication Publication Date Title
KR20140082639A (ko) 보조 캐시의 이주량을 위한 동적으로 조정된 스레시홀드
US10482032B2 (en) Selective space reclamation of data storage memory employing heat and relocation metrics
US10152423B2 (en) Selective population of secondary cache employing heat metrics
US9495294B2 (en) Enhancing data processing performance by cache management of fingerprint index
US8095738B2 (en) Differential caching mechanism based on media I/O speed
US8443141B2 (en) Intelligent write caching for sequential tracks
US20150356019A1 (en) Dynamic cache allocation policy adaptation in a data processing apparatus
US20140208038A1 (en) Sectored cache replacement algorithm for reducing memory writebacks
US8549220B2 (en) Management of write cache using stride objects
US10552325B2 (en) Reducing write-backs to memory by controlling the age of cache lines in lower level cache
US20140195732A1 (en) METHOD AND SYSTEM TO MAINTAIN MAXIMUM PERFORMANCE LEVELS IN ALL DISK GROUPS BY USING CONTROLLER VDs FOR BACKGROUND TASKS

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application