KR101974491B1 - 축출 시스템, 축출 방법 및 컴퓨터 판독가능 매체 - Google Patents

축출 시스템, 축출 방법 및 컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR101974491B1
KR101974491B1 KR1020140062297A KR20140062297A KR101974491B1 KR 101974491 B1 KR101974491 B1 KR 101974491B1 KR 1020140062297 A KR1020140062297 A KR 1020140062297A KR 20140062297 A KR20140062297 A KR 20140062297A KR 101974491 B1 KR101974491 B1 KR 101974491B1
Authority
KR
South Korea
Prior art keywords
data
node
data node
eviction
queue
Prior art date
Application number
KR1020140062297A
Other languages
English (en)
Other versions
KR20150010574A (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 KR20150010574A publication Critical patent/KR20150010574A/ko
Application granted granted Critical
Publication of KR101974491B1 publication Critical patent/KR101974491B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

동적 크기 캐싱을 위한 축출 시스템이 개시된다. 본 축출 시스템은, 하나 이상의 데이터 노드들을 유지하기 위한 논-블록킹 데이터 구조로서, 각각의 데이터 노드는 캐시 내의 데이터 항목에 대응하고, 각각의 데이터 노드는 대응하는 데이터 항목에 관한 정보를 포함하는 논-블록킹 데이터 구조 및 데이터 구조로부터 데이터 노드를 제거하고, 데이터 노드에 포함된 정보에 기초하여 데이터 노드가 축출을 위한 후보인지를 결정하고, 데이터 노드가 축출을 위한 후보가 아니면, 데이터 노드를 다시 데이터 구조에 삽입하고, 데이터 노드가 축출을 위한 후보이면, 데이터 노드 및 대응하는 데이터 항목을 시스템 및 캐시로부터 각각 축출하도록 구성된 축출 모듈을 포함하며, 상기 데이터 구조의 데이터 노드들은 축출을 위한 후보가 결정될 때까지 상기 축출 모듈을 통해 순환한다.

Description

축출 시스템, 축출 방법 및 컴퓨터 판독가능 매체{EVICTION SYSTEM, EVICTION METHOD AND COMPUTER-READABLE MEDIUM}
본 발명은 축출 시스템, 축출 방법 및 컴퓨터 판독 가능 매체에 관한 것으로서, 보다 상세하게는 동적 크기 캐시들(dynamically-sized caches)을 위한 축출 시스템, 축출 방법 및 컴퓨터 판독 가능 매체에 관한 것이다.
웹 오브젝트 캐싱은 대역폭 사용(bandwidth usage), 서버 부하, 및 인지된 래그(perceived lag)를 감소시키기 위해 웹 오브젝트들, 예컨대 HTML 페이지들, 이미지 파일들, 오디오 파일들 및 비디오 파일들을 임시로 저장(즉, 캐싱)하기 위한 메커니즘이다. 웹 오브젝트 캐시들은 인터넷-기반 서비스 제공자들에 의해 다양한 시스템들(예컨대, 검색 엔진들, 컨텐트 웹 사이트들, 쇼핑 웹 사이트들 등)에서 사용될 수 있다.
본 발명의 목적은 동적 크기 캐시들을 위한 축출 시스템, 축출 방법 및 컴퓨터 판독 가능 매체를 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 축출 시스템은, 동적 크기 캐싱(dynamically-sized caching)을 위한 축출 시스템(eviction system)에 있어서, 하나 이상의 데이터 노드들을 유지하기 위한 논-블록킹 데이터 구조(non-blocking data structure)로서, 각각의 데이터 노드는 캐시 내의 데이터 항목(data item)에 대응하고, 각각의 데이터 노드는 대응하는 데이터 항목에 관한 정보를 포함하는 논-블록킹 데이터 구조 및 상기 데이터 구조로부터 데이터 노드를 제거하고, 상기 데이터 노드에 포함된 정보에 기초하여 상기 데이터 노드가 축출을 위한 후보인지를 결정하고, 상기 데이터 노드가 축출을 위한 후보가 아니면, 상기 데이터 노드를 다시 상기 데이터 구조에 삽입하고, 상기 데이터 노드가 축출을 위한 후보이면, 상기 데이터 노드 및 대응하는 데이터 항목을 상기 시스템 및 상기 캐시로부터 각각 축출하도록 구성된 축출 모듈(eviction module)을 포함하며, 상기 데이터 구조의 데이터 노드들은 축출을 위한 후보가 결정될 때까지 상기 축출 모듈을 통해 순환한다.
이 경우, 상기 데이터 항목에 관한 정보는 데이터 항목, 및 상기 데이터 항목에 대한 참조 중 하나를 포함할 수 있다.
이 경우, 상기 데이터 항목에 관한 정보는, 상기 데이터 항목에 대한 액세스 빈도를 추적하기 위한 참조 카운터, 상기 데이터 항목이 상기 캐시로부터 삭제를 위해 플래깅(flagged)되는지를 표시하는 삭제 마커 및 상기 데이터 구조 내의 다른 데이터 노드를 가리키도록 구성 가능한 참조 포인터를 더 포함할 수 있다.
이 경우, 상기 논-블록킹 데이터 구조는 큐(queue)를 포함할 수 있다.
이 경우, 상기 축출 모듈은, 상기 큐의 헤드(head)에서 데이터 노드를 팝핑(popping)하여 상기 데이터 구조로부터 데이터 노드를 제거하고, 상기 데이터 노드를 상기 큐의 테일(tail)에 푸싱(pushing)하여, 상기 데이터 노드를 다시 상기 데이터 구조에 삽입할 수 있다.
이 경우, 큐는, 상기 큐의 상기 헤드로부터 데이터 노드를 팝핑하기 위한 팝 모듈(pop module) 및 상기 큐의 상기 테일에 데이터 노드를 푸싱하기 위한 푸시 모듈(push module)을 더 포함하고, 상기 큐는 로크 충돌(lock contention) 없이 동시에, 다수의 스레드들이 데이터 노드들을 상기 큐에 푸싱하고, 데이터 노드들을 상기 큐로부터 팝핑하도록 허용할 수 있다.
한편, 캐싱하기 위한 데이터 항목을 수신하고, 상기 데이터 항목에 대한 데이터 노드를 발생시키고, 상기 데이터 노드를 상기 논-블록킹 데이터 구조에 삽입하도록 구성되는 삽입 모듈을 더 포함할 수 있다.
한편, 상기 데이터 노드가 발생 된 때에만 데이터 노드에 대한 메모리를 할당하는 메모리 할당 모듈 및 상기 데이터 노드가 상기 데이터 구조로부터 축출된 때에만 데이터 노드에 대한 메모리를 비할당(deallocating)하는 메모리 비할당 모듈을 더 포함할 수 있다.
한편, 상기 데이터 구조는 제한 없이(unbounded) 가변 수(variable number)의 상이한 크기들의 데이터 항목들의 캐싱을 허용할 수 있다.
한편, 상기 축출 모듈은 다음의 조건들, 즉 상기 데이터 노드에 포함된 참조 카운터가 미리 규정된 값을 나타내는 것, 및 상기 데이터 노드에 대한 삭제 마커가 설정되는 것 중 적어도 하나가 만족될 때 데이터 노드가 축출을 위한 후보라고 결정할 수 있다.
한편, 데이터 항목은 웹 오브젝트(web object)를 포함할 수 있다.
한편, 본 발명의 일 실시 예에 따른 축출 방법은, 동적 크기 캐싱(dynamically-sized caching)을 위한 축출 시스템(eviction system)에 있어서, 논-블록킹 데이터 구조에 하나 이상의 데이터 노드들을 유지하는 단계로서,각각의 데이터 노드는 캐시 내의 데이터 항목에 대응하고, 각각의 데이터 노드는 대응하는 데이터 항목에 관한 정보를 포함하는 데이터 노드를 유지하는 단계, 상기 데이터 구조로부터 데이터 노드를 제거하는 단계, 상기 데이터 노드가 상기 데이터 노드에 포함된 정보에 기초한 축출을 위한 후보인지를 결정하는 단계 및 상기 데이터 노드가 축출을 위한 후보가 아니면, 상기 데이터 노드를 다시 상기 데이터 구조에 삽입하고, 상기 데이터 노드가 축출을 위한 후보이면, 상기 시스템 및 상기 캐시로부터 상기 데이터 노드 및 대응하는 데이터 항목을 각각 축출하는 단계를 포함하고, 데이터 노드들은 축출을 위한 후보가 결정될 때까지 상기 데이터 구조를 통해 순환한다.
이 경우, 상기 데이터 항목에 관한 정보는 상기 데이터 항목, 및 상기 데이터 항목에 대한 참조 중 하나를 포함할 수 있다.
이 경우, 데이터 항목에 관한 정보는, 상기 데이터 항목에 대한 액세스 빈도(access frequency)를 추적하기 위한 참조 카운터, 상기 데이터 항목이 상기 캐시로부터 삭제를 위해 플래깅되는지를 표시하는 삭제 마커 및 상기 데이터 구조 내의 다른 데이터 노드를 가리키도록 구성 가능한 참조 포인터를 더 포함하고, 데이터 노드는 다음의 조건들, 즉 상기 데이터 노드에 포함된 참조 카운터가 미리 규정된 값을 나타내는 것 및 상기 데이터 노드에 대한 삭제 마커가 설정되는 것 중 적어도 하나가 만족될 때 축출을 위한 후보일 수 있다.
한편, 상기 데이터 구조는 제한 없이 가변 수의 상이한 크기들의 데이터 항목들의 캐싱을 허용할 수 있다.
한편, 상기 논-블록킹 데이터 구조는 큐를 포함하고, 상기 데이터 구조로부터 데이터 노드를 제거하는 단계는 상기 큐의 헤드에서 데이터 노드를 팝핑하는 것을 포함하고, 데이터 노드를 상기 데이터 구조에 삽입하는 단계는 상기 데이터 노드를 상기 큐의 테일에 푸싱하는 것을 포함할 수 있다.
이 경우, 상기 큐는 로크 충돌 없이 동시에, 다수의 스레드들이 데이터 노드들을 상기 큐에 푸싱하고, 데이터 노드들을 상기 큐로부터 팝핑하도록 허용할 수 있다.
한편, 캐싱을 위한 데이터 항목을 수신하는 단계, 상기 데이터 항목에 대한 데이터 노드를 발생시키는 단계 및 상기 데이터 노드를 상기 논-블록킹 데이터 구조에 삽입하는 단계를 더 포함할 수 있다.
이 경우, 상기 데이터 노드가 발생 된 때에만 메모리 노드에 대한 메모리를 할당하는 단계 및 상기 데이터 노드가 상기 데이터 구조로부터 축출된 때에만 메모리 노드에 대한 메모리를 비할당하는 단계를 더 포함할 수 있다.
한편, 데이터 항목은 웹 오브젝트를 포함할 수 있다.
한편, 한편, 본 발명의 일 실시 예에 따른 컴퓨터 판독 가능 매체는, 동적 크기 캐싱(dynamically-sized caching)을 위한 축출 시스템(eviction system)에 있어서, 컴퓨터 상에서 실행될 때, 논-블록킹 데이터 구조에 하나 이상의 데이터 노드들을 유지하는 단계로서, 각각의 데이터 노드는 캐시 내의 데이터 항목에 대응하고, 각각의 데이터 노드는 대응하는 데이터 항목에 관한 정보를 포함하는 데이터 노드를 유지하는 단계, 상기 데이터 구조로부터 데이터 노드를 제거하는 단계, 상기 데이터 노드가 상기 데이터 노드에 포함된 정보에 기초하여 축출을 위한 후보인지를 결정하는 단계 및 상기 데이터 노드가 축출을 위한 후보가 아니면, 상기 데이터 노드를 다시 상기 데이터 구조에 삽입하고, 상기 데이터 노드가 축출을 위한 후보이면, 상기 데이터 노드 및 대응하는 데이터 항목을 상기 시스템 및 상기 캐시로부터 각각 축출하는 단계를 포함하는 방법을 수행하는 명령들을 가지는 컴퓨터 판독 가능 매체로서, 데이터 노드들은 축출을 위한 후보가 결정될 때까지 상기 데이터 구조를 통해 순환한다.
이 경우, 데이터 항목에 관한 정보는 데이터 항목, 및 상기 데이터 항목에 대한 참조 중 하나를 포함할 수 있다.
이 경우, 데이터 항목에 관한 정보는, 상기 데이터 항목에 대한 액세스 빈도를 추적하기 위한 참조 카운터, 상기 데이터 항목이 상기 캐시로부터 삭제를 위해 플래깅되는지를 표시하는 삭제 마커 및 상기 데이터 구조 내의 다른 데이터 노드를 가리키도록 구성 가능한 참조 포인터를 더 포함하고, 데이터 노드는 다음의 조건들, 즉 상기 데이터 노드에 포함된 참조 카운터가 미리 규정된 값을 나타내는 것, 및 상기 데이터 노드에 대한 삭제 마커가 설정되는 것 중 하나가 만족될 때 축출을 위한 후보일 수 있다.
한편, 상기 데이터 구조는 제한 없이 가변 수의 상이한 크기들의 데이터 항목들의 캐싱을 허용할 수 있다.
한편, 상기 논-블록킹 데이터 구조는 큐를 포함하고, 상기 데이터 구조로부터 데이터 노드를 제거하는 단계는 상기 큐의 헤드에서 데이터 노드를 팝핑하는 것을 포함하고, 데이터 노드를 상기 데이터 구조에 삽입하는 단계는 상기 데이터 노드를 상기 큐의 테일에 푸싱하는 것을 포함할 수 있다.
이 경우, 상기 큐는 로크 충돌 없이 동시에, 다수의 스레드들이 데이터 노드들을 상기 큐에 푸싱하고, 데이터 노드들을 상기 큐로부터 팝핑하도록 허용할 수 있다.
한편, 캐싱을 위한 데이터 항목을 수신하고, 상기 데이터 항목에 대한 데이터 노드를 발생시키고, 상기 데이터 노드를 상기 논-블록킹 데이터 구조에 삽입하도록 구성되는 삽입 모듈을 더 포함할 수 있다.
이 경우, 상기 데이터 노드가 발생 된 때에만 메모리 노드에 대한 메모리를 할당하는 메모리 할당 모듈 및 상기 데이터 노드가 상기 데이터 구조로부터 축출된 때에만 메모리 노드에 대한 메모리를 비할당하는 메모리 비할당 모듈을 더 포함할 수 있다.
한편, 상기 데이터 항목은 웹 오브젝트를 포함할 수 있다.
도 1은 예시적인 네트워크 시스템의 블록도,
도 2는 CLOCK 대체 알고리즘의 예시적인 구현을 도시한 도면,
도 3a는 본 발명의 실시예에 따른, 일반화된 CLOCK 대체 알고리즘의 논-블록킹 큐-기반 변형을 구현하기 위한 예시적인 축출 시스템을 도시한 도면,
도 3b는 본 발명의 실시예에 따른, 축출 동작 동안의 예시적인 프로세스 흐름을 도시한 흐름도,
도 4는 본 발명의 실시예에 따른 예시적인 단일-링크 리스트를 도시한 도면,
도 5는 본 발명의 실시예에 따른 예시적인 큐 노드를 도시한 도면,
도 6은 실시예에 따른, 논-블록킹 큐를 이용한 축출 동작을 구현하기 위한 예시적인 흐름도,
도 7은 실시예에 따른, 논-블록킹 큐-기반 CLOCK 대체 알고리즘을 포함하는 상이한 대체 알고리즘에 대한 평균 레이턴시(latency)를 도시하는 그래프(700),
도 8은 실시예에 따른 논-블록킹 큐-기반 CLOCK 대체 알고리즘을 포함하는 상이한 대체 알고리즘들에 대한 스루풋(throughput)을 도시한 그래프(800),
도 9는 실시예에 따른, 논-블록킹 큐-기반 CLOCK 대체 알고리즘을 포함하는 상이한 대체 알고리즘들에 대한 캐시 히트 레이트(hit rate)들을 포함하는 테이블(900), 그리고,
도 10은 본 발명의 실시예를 구현하는데 유용한 컴퓨터 시스템을 포함하는 정보 처리 시스템을 나타낸 블록도이다.
이하에서, 첨부된 도면을 참조하여 본 발명에 대하여 자세하게 설명한다.
도 1은 예시적인 네트워크 시스템(10)의 블록도를 도시한다. 네트워크 시스템(10)은 적어도 하나의 클라이언트 디바이스(12)를 포함한다. 클라이언트 디바이스(12)는 사용자 클라이언트(11)의 전자 디바이스를 나타낸다. 전자 디바이스는 기기(예컨대, 텔레비전(TV) 예컨대 스마트 TV), 퍼스널 컴퓨터(PC), 서버, 또는 모바일 디바이스(예컨대, 모바일 전화 예컨대 스마트 폰, 랩톱 컴퓨터, 태블릿)일 수 있다.
사용자 클라이언트(11)는 인터넷-기반 서비스 제공자로부터 클라이언트 디바이스(12)를 통해 인터넷-기반 서비스(예컨대, 웹 서비스) 및/또는 컨텐트(예컨대, 웹 페이지, 이미지 파일, 오디오 파일, 비디오 파일 등)를 요청할 수 있다. 클라이언트 디바이스(12)는 접속(예컨대, 무선 접속, 유선 접속, 또는 이들 2개의 조합)을 통해 인터넷-기반 서비스 제공자의 프론트-엔드 웹 서버(13)에 인터넷-기반 서비스 및/또는 컨텐트에 대한 요청을 송신할 수 있다.
인터넷-기반 서비스들 및/또는 컨텐트에 대한 네트워크 트래픽 및 사용자 액세스 시간들을 감소시키기 위해, 인터넷-기반 서비스 제공자는 웹 오브젝트 캐싱을 이용할 수 있다. 예를 들어, 인터넷-기반 서비스 제공자는 그것의 사용자 클라이언트들(11)에 의해 빈번하게 액세스되는 캐싱 데이터 항목들(예컨대, 웹 오브젝트들)에 대한 하나 이상 인-메모리 키-값 스토어들(14)을 이용할 수 있다.
예시적인 인-메모리 키-값 스토어(14)는 멤캐시드(memcashed)이다. 멤캐시드는 전형적으로 더 느리고 큰 백킹 불휘발성 스토리지를 위한 캐시로서 기능한다. 멤캐시드는 단지 메모리 내에서 작동하고 캐싱 데이터 항목들에 대한, 대체 알고리즘과 결합된 해시 테이블로 구성된다. 멤캐시드는 인터넷-기반 서비스 제공자의 하나 이상의 로컬 서버들에 걸쳐 분포될 수 있다.
프론트-엔드(front-end) 웹 서버(13)가 클라이언트 디바이스(12)로부터 요청을 수신한 때, 프론트-엔드 웹 서버(13)는 먼저 하나 이상의 인-메모리 키-값(in-memory key-value) 스토어들(14), 예컨대 멤캐시드를 실행하는 로컬 서버들을 이용하여 요청을 분해하려고 시도한다. 단일 로컬 서버 상에 실행하는 멤캐시드 인스턴스는 해시 테이블 요청들, 에컨대 해시 테이블로부터 데이터 항목을 얻기 위한 GET 요청, 해시 테이블로부터 테이터 항목을 삭제하기 위한 DELETE 요청, 새로운 데이터 항목을 해시 테이블에 부가 및 캐싱하기 위한 ADD 요청, 및 해시 테이블에서 데이터 항목을 대체하기 위한 REPLACE 요청을 만족시키기 위해 다수의 워커 스레드들(multiple worker threads)을 포함할 수 있다.
캐시 미스는 요청된 데이터 항목이 요청을 분해하기 위해 사용되는 인-메모리 키-값 스토어(14)에 캐시되지 않을 때 일어난다. 캐시 미스가 일어나면, 프론트-엔드 웹 서버(13)는 요청을 분해하기 위해 백-엔드 서버(15)에 요청을 전송한다. 백-엔드 서버(15)로부터 요청에 대한 응답을 수신하면, 프론트-엔드 웹 서버(13)는 응답에 포함된 어떤 미싱 데이터 항목을 해시 테이블에 부가하여 인-메모리 키-값 스토어(14)를 업데이트한다. 프론트-엔드 웹 서버(13)는 이후 요청이 발생된 클라이언트 디바이스(12)에 최종 응답을 구성하여 송신할 수 있다.
ADD 요청 또는 REPLACE 요청이 가득 찬 인-메모리 키-값 스토어(14)와 부딪히면, 대체 알고리즘에 기초한 축출 동작이 인-메모리 키-값 스토어(14)로부터 적어도 하나의 데이터 항목을 축출하기 위해 트리거되어, 새로 인입하는 데이터 항목들의 캐싱을 허용한다. 예시적인 대체 알고리즘은 LRU(최소로 최근에 사용된) 알고리즘이다. LRU 알고리즘은 액세스 시간에 기초하여 정리된(ordered) 데이터 항목들의 리스트에 기초하여 최소의 최근에 액세스된 데이터 항목을 축출할 수 있다.
CLOCK는 LRU 알고리즘의 도함수인 예시적인 메모리-페이지 대체 알고리즘이다. 메모리 페이지는 일반적으로 메모리의 4KB 정렬 영역일 수 있다.
도 2는 CLOCK 대체 알고리즘의 예시적인 구현을 도시한다. CLOCK 대체 알고리즘은 통계적으로 할당된 원형 버퍼(200)를 유지한다. CLOCK 대체 알고리즘은 단지 캐시 엔트리 당 단일 비트를 필요로 한다. 구체적으로, 버퍼의 각각의 요소(210)는 대응하는 메모리 페이지에 대한 참조 비트를 포함할 수 있다.
대응하는 메모리 페이지에 대한 참조 비트는 메모리 페이지가 최근에 액세스되었는지를 표시하기 위해 이용된다. 논-제로 참조 비트(non-zero reference bit)는 대응하는 메모리 페이지가 최근에 액세스된 것을 표시하고, 한편, 제로 참조 비트는 대응하는 메모리 페이지가 최근에 액세스되지 않는 것을 표시한다. 대응하는 메모리 페이지에 대한 참조 비트는 메모리 페이지가 액세스될 때마다 설정될 수 있다.
CLOCK 대체 알고리즘은 버퍼 포인터("블록 밴드(Clock hand)")(220)를 유지한다. 축출 동작이 트리거되면, 버퍼(200)의 클록 스위프(clock sweep)가 개시된다. 구체적으로, 블록 밴드(220)는 제 1 방향(230)(예컨대, 시계 방향)을 따라 버퍼(200)를 통해 반복한다. 블록 밴드(220)가 버퍼(200)를 반복하기 때문에, 블록 밴드(220)가 만나는 각각의 논-제로 참조 비트는 제로 참조 비트로 설정된다. 블록 밴드(220)는 블록 밴드(220)가 제로 참조 비트와 만날때까지 버퍼(200)를 통해 반복한다. 제로 참조 비트에 대응하는 메모리 페이지가 이후 축출된다. CLOCK 대체 알고리즘만이 최종클록 스위프 구간에 걸쳐 메모리 페이지 사용 트랙을 유지할 수 있다.
CLOCK 대체 알고리즘만이 캐시 멘트리 당 단일 비트를 필요로 하기 때문에, CLOCK 대체 알고리즘은 더 낮은 액세스 빈도(예컨대, 단지 일회 액세스되는 데이터 항목)를 갖는 데이터 항목으로부터 더 높은 액세스 빈도(예컨대, 여러 번 액세스되는 데이터 항목)을 갖는 데이터 항목을 구분할 수 없다.
일반화된 CLOCK 대체 알고리즘은 참조 비트들의 버퍼를 유지하는 대신에 CLOCK 대체 알고리즘의 변형/유도체이고, 일반화된 CLOCK 대체 알고리즘은 참조 카운터들의 버퍼를 유지하고, 여기서 각각의 참조 카운터는 대응하는 메모리 페이지가 액세스된 횟수를 추적할 수 있다.
본 발명의 실시예들은 일반화된 CLOCK 대체 알고리즘의 논-블록킹(즉, 로크-프리) 큐-기반 변형예를 제공한다.
도 3a는 본 발명의 실시예에 따른, 일반화된 CLOCK 대체 알고리즘의 논-블록킹 큐-기반 변형을 구현하기 위한 예시적인 축출 시스템(300)을 도시한다. 축출 시스템(300)은 캐시(예컨대, 멤캐시드)를 작용시킨다. 축출 시스템(300)은 논-블록킹 데이터 구조(160), 삽입 모듈(330), 업데이트 모듈(340), 삭제 모듈(350), 축출 모듈(360), 메모리 비할당 모듈(390), 및 메모리 할당 모듈(395)을 포함할 수 있다.
일 실시예에 있어서, 논-블록킹 데이터 구조(160)는 데이터 항목들 또는 그것의 참조들의 트랙을 저장 및 유지하기 위한 큐(310)를 포함한다. 큐(310)는 동시 발생 및 로크-프리 큐이다. 일 실시예에 있어서, 큐(310)는 단일-링크 리스트(400)(도 4)를 포함한다. 큐(310)의 각각의 요소는 데이터 노드(420)이다(도 4).
캐시 내의 각각의 캐싱된 데이터 항목은 큐(310)에 대응하는 데이터 노드(420)를 가진다. 각각의 캐싱된 데이터 항목에 대한 각각의 데이터 노드(420)는 캐싱된 데이터 항목에 대한 참조 또는 캐싱된 데이터 항목 자체를 포함하는 데이터 세그먼트(450)(도 5)를 포함한다. 일 실시예에 있어서, 캐싱된 데이터 항목에 대한 참조는 캐싱된 데이터 항목에 대한 포인터(550)(도 5)이다. 각각의 캐싱된 데이터 항목에 대한 각각의 데이터 노드(420)는 캐싱된 데이터 항목에 관한 오버헤드 정보를 더 포함할 수 있다.
큐(310)는 한쌍의 대향 단부들, 즉 큐 헤드(410)(도 4)를 표현하는 제 1 단부, 및 큐 테일(430)(도 4)을 표현하는 제 2 단부를 가진다. 데이터 노드들(420)은 큐 헤드(410)에서 큐(310)로부터 제거된다. 데이터 노드들(420)은 큐 테일(430)에서 큐(310)에 부가된다. 이 명세서에서, 용어들 푸시(push) 및 푸싱(pushing)은 데이터 노드(420)를 큐(310)에 부가하는 것을 나타내는 것으로 하며, 여기서 데이터 노드(420)는 큐 테일(430)에 부가된다. 용어들 팝(pop) 및 팝핑(popping)은 데이터 노드(42)를 큐(310)로부터 제거하는 것을 나타내는 것으로 하며, 여기서 데이터 노드(420)는 큐 헤드(410)로부터 제거될 수 있다.
축출 시스템(300)은 각각의 데이터 노드(420) 내에 포함되어 있는 오버헤드 정보의 양을 최소화/감소시켜 메모리 사용을 유지한다(도 5). 일 실시예에 있어서, 캐싱된 데이터 항목에 관한 오버헤드 정보는 캐싱된 데이터 항목이 액세스되는 빈도를 식별하는 데이터("액세스 빈도 데이터"), 캐싱된 데이터 항목이 캐시로부터 삭제/제거를 위해 플래그되었는지를 식별하는 데이터("삭제 마커 데이터"), 및 다음 데이터 노드에 대한 포인터를 포함한다. 만약 데이터 노드(420)가 큐(310)의 최후 데이터 노드(420)이면, 다음 데이터 노드에 대한 그것의 포인터는 NULL로 설정된다. 만약 데이터 노드(420)가 큐(310)의 최후 데이터 노드(420)가 아니면, 다음 데이터 노드에 대한 그것의 포인터는 큐(310)의 다음 데이터 노드(420)를 가리키도록 설정될 수 있다.
도 2의 통계적으로 할당된 원형 버퍼(200)와는 달리, 큐(310)는 무한 큐이다(즉, 큐(310)는 고정된 수의 요소들/ 엔트리들을 유지하는 것으로 제한되지 않는다). 그와 같이, 축출 시스템(300)에 의해 서빙되는 캐시(예컨대, 멤캐시드)는 동적 크기 캐시(dynamically-sized cache)일 수 있다. 캐시는 상이한 크기들을 갖는 가변수의 데이터 항목들을 포함할 수 있다.
큐(310)는 INIT 모듈(320), 팝 모듈(370) 및 푸시 모듈(380)을 더 포함한다. 각각의 모듈(320, 370, 380)은 대응하는 큐 동작을 다룬다. 구체적으로, INIT 모듈(320)은 큐(310)를 초기화하는 INIT 동작을 수행하도록 구성된다. 팝 모듈(370)은 큐(310)로부터 데이터 노드(420)를 팝핑하는 POP 동작을 수행(즉, 큐(310)로부터 큐 헤드(410)에서 데이터 노드(420)를 제거하도록 구성된다. 푸시 모듈(380)은 데이터 노드(420)를 큐(310)에 푸시하는 PUSH 동작을 수행(즉, 큐 테일(430)에서 데이터 노드(420)를 큐(310)를 부가)하도록 구성될 수 있다.
축출 시스템(300)의 메모리 할당 모듈(395)은 캐싱된 데이터 항목에 대한 데이터 노드(420)에 대해 메모리를 할당한다. 캐싱된 데이터 항목 당 할당된 메모리는 대응하는 데이터 노드(420) 및 가능하게는 데이터 항목 자체를 위한 것이다. 축출 시스템(300)의 메모리 비할당 모듈(390)은 캐싱된 데이터 항목에 대한 데이터 노드(420)가 큐(310)로부터 영구적으로 제거된 때 메모리를 비할당/비어있게 한다(deallocates/frees).
이 명세서에서, 용어들 축출하다(evict), 축출하는 것(evicting) 및 축출은 캐시로부터 데이터 항목을 제거하는 것을 나타내는 것으로 한다. 본원에서 나중에 상세히 기재되는 것과 같이, 축출 모듈(360)은 데이터 노드(420)가 큐(310)로부터 축출되는 축출 동작을 수행하도록 구성될 수 있다.
메모리 할당 또는 메모리 비할당의 어느 것도 PUSH 동작, POP 동작, 또는 INIT 동작이 수행될 때는 일어나지 않는다. 메모리는 PUSH 동작 동안 데이터 노드(420)가 큐(310)에 푸시/부가될 때마다 할당되지는 않는다. 메모리는 데이터 노드(420)가 POP 동작 동안 큐(310)로부터 팝핑/제거될 때마다 비할당/비어있게 되지는 않는다. 메모리 할당 메모리 비할당은 어떠한 큐 동작 동안에도 일어나지 않기 때문에, 큐(310)는 어떠한 내부 동적 메모리 관리(internal dynamic memory management)도 필요로 하지 않는다. 이것은 큐 동작들을 더 단순하고, 더 빠르게 하고, 완전히 로크-프리(lock-free)하게 한다. 본원에 나중에 상세히 기재되는 것과 같이, 메모리는 데이터 노드(420)가 제 1 시간 동안 큐(310)에 삽입될 때(예컨대 대응하는 데이터 항목이 캐시에 부가될 때) 데이터 노드(420)에 대해 할당된다. 메모리는 데이터 노드(420)가 큐(310)로부터 영구적으로 축출 및/또는 제거될 때(예컨대, 대응하는 데이터 항목이 캐시로부터 삭제될 때) 데이터 노드(420)로부터 비할당/비어있게 될 수 있다.
엠. 엠. 마이클(M. M. Michael) 및 엠. 엘. 스캇(M. L. Scott)은 "Proceedings of the 15th Annual ACM Symposium on Principles of Distributed Computing"(1996)(페이지들 267-275)에 공개된, 간행물 "Simple, fast, and practical non-blocking and blocking concurrent queue algorithms"에 논-블록킹 큐 알고리즘들을 기재한다.
아래의 테이블 1은 INIT 동작을 실시하기 위한 예시적인 의사 코드(pseudo code)를 제공한다. 테이블 1에 제공된 예시적인 의사코드는 엠. 엠. 마이클(M. M. Michael) 및 엠. 엘. 스캇(M. L. Scott)에 의한 상기 간행물에 기재된 논-블록킹 큐 알고리즘들에 기초한다.
Figure 112014048772647-pat00001
아래의 테이블 2는 PUSH 동작을 실시하기 위한 예시적인 의사 코드를 제공한다. 테이블 2에 제공된 예시적인 의사코드는 엠. 엠. 마이클(M. M. Michael) 및 엠. 엘. 스캇(M. L. Scott)에 의한 상기 간행물에 기재된 논-블록킹 큐 알고리즘들에 기초한다.
Figure 112014048772647-pat00002
아래의 테이블 3은 POP 동작을 실시하기 위해 예시적인 의사 코드를 제공한다. 테이블 3에 제공된 예시적인 의사코드는 엠. 엠. 마이클(M. M. Michael) 및 엠. 엘. 스캇(M. L. Scott)에 의한 상기 간행물에 기재된 논-블록킹 큐 알고리즘들에 기초한다.
Figure 112014048772647-pat00003
엠. 엠. 마이클(M. M. Michael) 및 엠. 엘. 스캇(M. L. Scott)에 의한 상기 간행물에 기재된 논-블록킹 큐 알고리즘들과는 달리, 위의 테이블들 2-3에 제공된 예시적인 의사코드는 메모리 할당 또는 메모리 비할당을 위한 함수 호출들(function calls)을 포함하지 않는다. 또한, 위의 테이블들 2-3에 제공된 예시적인 의사코드를 이용하여 실시되는 PUSH 및 POP 동작들은 데이터 항목 대신에 큐 노드(즉, 데이터 노드(420))를 복귀시킬 수 있다.
위의 테이블들 2-3에 제공된 예시적인 의사 코드는 CAS(Compare-and-Swap)를 이용한다. CAS는 CPU 레지스터의 컨텐트들을 메모리 위치의 컨텐트들과 비교하고 만약 컨텐트들이 매치하면, 사용자-공급값(user-supplied value)으로 메모리 위치를 채우는 원자 조작(atomic operation)이다. 만약 스와프(swap)가 발생했다면, CAS는 참(true)을 복귀시키고, 그렇지 않으면, CAS는 거짓(false)을 복귀시킨다. CAS는 자동으로 동작하고; 메모리 위치의 컨텐트들은 다른 실행 스레드(executing thread)로 인해 동작 중 임의의 포인트에서 변할 수 없다.
테이블 2에 나타낸 것과 같이, CAS는 PUSH 동작 중 데이터 노드(420)를 큐(310)의 테일 엔드에 자동으로 첨부하고, 큐 테일(430)을 업데이트하여 그것이 첨부된 데이터 노드(420)를 가리키도록 하기 위해 이용된다. 테이블 3에 나타낸 것과 같이, CAS는 또한 POP 동작 중 큐 헤드(410)에서의 데이터 노드(420)가 팝핑된 후 큐 테일(430) 및 큐 헤드(410)를 업데이트하기 위해 사용된다. PUSH 동작 및 POP 동작은 만약 CAS의 복귀값(return value)이 폴스이면 CAS를 재시도할 것이고, 폴스 복귀값은 큐 테일(430) 또는 큐 헤드(410)의 현재의 스레드의 로컬 카피(Current thread's local copy)가 다른 스레드가 수정된 큐(310)를 가지기 때문에 안정하다고 표시할 수 있다.
큐(310)는 동시 발생 및 로크-프리 큐이기 때문에, 다수의 워커 스레드들은 로크 충돌 없이 리스트(400)로부터 노드들(420)을 푸시 및 팝핑할 수 있다. 그렇게 함으로써, 축출 시스템(300)은 요청들을 서빙할 때 유사성(parallelism) 및 동시 실행(concurrency)을 도모하고 스케일러블(scalable) 및 낮은-레이턴시 동작들을 가능하게 한다.
업데이트 모듈(340)은 대응하는 데이터 항목이 액세스될 때마다 데이터 노드(420)에서 액세스 빈도 데이터를 업데이트 할 수 있다.
축출 시스템(300)이 캐시로부터 데이터 항목을 삭제/제거하기 위한 요청을 수신하면, 삭제 모듈(350)은 데이터 항목에 대한 데이터 노드(420)에 삭제 마커 데이터(470)(도 5)를 설정한다. 그러나, 데이터 노드(420) 및 데이터 항목과 관련된 메모리는 즉시 비할당되고/비게 되지 않는다. 데이터 노드(420) 및 데이터 항목과 관련된 메모리는 축출 모듈(360)이 데이터 노드(420)를 큐(310)로부터 축출한 후에만 비할당되고/비게 된다. 그 때문에, 삭제 마커 데이터를 각각의 데이터 노드(420)에 부가하는 것은 임의의 데이터 항목 삭제들을 지원할 수 있다.
축출 시스템(300)이 캐시에 새로운 데이터 항목을 삽입하기 위한 요청을 수신하면, 삽입 모듈(330)은 데이터 항목에 대한 데이터 노드(420)를 발생시킨다. 구체적으로, 삽입 모듈(330)은 데이터 항목에 대한 데이터 노드(420)를 위한 메모리를 할당하기 위해 메모리 할당 모듈(395)을 이용한다. 데이터 노드(420)는 데이터 항목 자체 또는 데이터 항목에 대한 참조(예컨대, 데이터 항목에 대한 포인터)를 포함할 수 있다. 삽입 모듈(330)은 이후 PUSH 동작을 적용하여 데이터 노드(420)를 큐(310)에 푸시할 수 있다.
축출 모듈(360)은 일반화된 CLOCK 대체 알고리즘의 논-블록킹 큐-기반 변형인 대체 알고리즘에 기초한 축출 동작(170)을 수행하도록 구성될 수 있다.
3b는 본 발명의 실시예에 따른, 축출 동작 중 예시적인 프로세스 흐름을 도시한다. CLOCK 대체 알고리즘 및 참조 비트들/카운터들의 고정 리스트에 대해 반복하는 CLOCK 대체 알고리즘의 변형들(예컨대, 일반화된 CLOCK 대체 알고리즘)과는 달리, 축출 모듈(360)은 축출 로직을 통해 데이터 항목들에 대한 데이터 노드들(420)을 순환시키기 위한 축출 동작을 실시할 수 있다.
구체적으로, 축출 동작 동안, 축출 모듈(360)은 프로세스 510으로 나타낸 것과 같이, 큐(310)의 큐 헤드(410)에서 데이터 노드(420)를 팝핑하기 위해 POP 동작을 적용한다. 축출 모듈(360)은 이후 프로세스 520으로 나타낸 것과 같이, 팝핑된 데이터 노드(420)가 데이터 노드(420)에 포함된 액세스 빈도 데이터 및 삭제 마커 데이터에 기초하여 축출을 위한 후보인지를 결정한다. 일 실시예에 있어서, 데이터 노드(420) 내의 액세스 빈도 데이터는 대응하는 데이터 항목이 액세스된 횟수를 추적하는 참조 카운터(460)(도 5)를 포함한다. 데이터 노드(420) 내의 삭제 마커 데이터는 축출 시스템(300)이 캐시로부터 대응하는 데이터 항목을 삭제하기 위한 요청을 수신한 때 설정되는 삭제 마커(470)(도 5)를 포함한다. 데이터 노드(420)는 다음의 조건들: 1) 데이터 노드(420)의 참조 카운터(460)는 미리-규정된/미리 정해진 값(예컨대, 영(zero))과 같고, 또는 2) 데이터 노드(420)의 삭제 마커(470)가 설정된다는(예컨대, 삭제 모듈(350)에 의해 설정된) 조건들 중 하나가 만족될 때 축출을 위한 후보일 수 있다.
만약 데이터 노드(420)가 축출을 위한 후보이면, 축출 모듈(360)은 데이터 노드(420)를 큐(310)에 재삽입(즉, 푸시)하지 않는다. 대신, 축출 모듈(360)은 축출된 데이터 노드(420) 및 가능하게는 그것의 대응하는 데이터 항목과 관련된 메모리를 비할당/비어있게 하기 위해 메모리 비할당 모듈(390)을 사용한다. 만약 데이터 노드(420)가 축출을 위한 후보가 아니면, 축출 모듈(360)은 프로세스 530으로 나타낸 것과 같이, 데이터 노드(420)의 참조 카운터(460)를 감소시킨다. 프로세스 540으로 나타낸 것과 같이, 축출 모듈(360)은 이후 데이터 노드(420)를 다시 큐 테일(430)의 큐(310)에 푸시하기 위해 데이터 노드(420)를 큐(310)에 재삽입하여, 데이터 노드(420)를 큐(310)로 재순환시킨다. 축출 모듈(360)은 그것이 축출을 위한 후보인 데이터 노드(420)와 만날 때까지 노드들(420)을 팝핑 및 푸싱하는 프로세스를 재반복한다. 메모리 할당 및 메모리 비할당은 PUSH 동작 또는 POP 동작 중 일어나지 않기 때문에, 단지 단일 메모리 비할당은 축출 모듈(360)에 의해 수행되는 각각의 축출 동작 동안 초래될 수 있다(즉, 메모리는 축출 모듈(360)이 축출을 위한 후보인 데이터 노드(420)를 축출한 때에만 비할당된다).
캐싱된 아이템들을 통해 반복하는 대신에 캐싱된 데이터 항목들에 대한 데이터 노드들(420)을 순환시킴으로써, 축출 시스템(300)은 블록 밴드를 나타내는 변수를 명확하게 유지하지 않는다. 대신, 큐(310)의 큐 헤드(410)는 함축적으로 블록밴드를 나타낼 수 있다.
축출 동작은 선행하여(proactively)(예컨대, 주기적으로) 또는 반응적으로 실행될 수 있다. 선행 축출들은 반복 간격들로 일어날 수 있다. 반복 간격들은 축출 시스템(300)의 작업량(workload)에 기초하여 최소값까지 자동으로 조정될 수 있다. 반응적 축출들은 ADD 요청 또는 REPLACE 요청이 가득 찬 캐시(예컨대, 멤캐시드)에 대해 수신(즉, 캐시에 이용 가능한 모든 메모리가 다 사용)될 때 일어날 수 있다. 축출 시스템(300)은 선행 축출들 및 반응적 축출들 모두를 지원한다. 예를 들어, 축출 동작을 실행하는 스레드는 주기적으로 트리거될 수 있다. 다른 예로서, ADD 요청 또는 REPLACE 요청을 서비스하는 스레드는 캐시가 가득 찼을 때 축출 동작을 실행할 수 있다.
도 4는 본 발명의 실시예에 따른 예시적인 단일-링크 리스트(400)를 도시한다. 큐(310)는 데이터 노드들(420)의 단일-링크 리스트(400)를 포함한다.
도 5는 본 발명의 실시예에 따른 예시적인 데이터 노드(420)를 도시한다. 각각의 데이터 항목에 대한 각각의 데이터 노드(420)는 데이터 항목 자체 또는 데이터 항목에 대한 참조 포인터(550)를 포함하는 데이터 세그먼트(450)를 포함한다. 각각의 데이터 항목에 대한 각각의 데이터 노드(420)는 데이터 항목에 관한 오버헤드 정보를 더 포함한다. 일 실시예에 있어서, 오버헤드 데이터 항목에 관한 정보는 다음과 같은 것: 데이터 항목이 액세스된 횟수를 추적하는 참조 카운터(460), 데이터 항목을 삭제하라는 요청이 수신된 때 설정되는 2진 플래그(binary flag)를 나타내는 삭제 마커(470), 및 다음 데이터 노드(420)에 대한 포인터(480) 중 적어도 하나를 포함한다. 만약 데이터 노드(420)가 큐(310)의 최후 데이터 노드(420)가 아니면, 포인터(480)는 큐(310)의 다른 데이터 노드(420)를 가리키도록 설정된다. 만약 데이터 노드(420)가 큐(310)의 최후 데이터 노드(420)이면, 포인터(480)는 NULL로 설정될 수 있다.
업데이트 모듈(340)은 대응하는 데이터 항목이 액세스될 때마다 데이터 노드(420) 내의 참조 카운터(460)를 증분시킬 수 있다.
삭제 모듈(350)은 대응하는 데이터 항목을 삭제하라는 요청이 수신된 때 데이터 노드(420) 내의 삭제 마커(470)를 설정할 수 있다.
일 실시예에 있어서, 데이터 노드(420) 내에 포함된 오버헤드 정보는 10 바이트의 데이터만을 필요로 한다. 각각의 데이터 항목에 대한 작은 오버헤드 정보를 유지하는 것은 데이터 항목들(예컨대, 키/값 쌍들)을 저장하기 위한 더 많은 여유 공간을 허용하여, 더 높은 캐시 히트 레이트(GET 요청을 만족시키는 더 높은 가능성)에 기여할 수 있다.
큐(310)는 어떠한 내부 동적 메모리 관리도 필요로 하지 않는다. 이것은 큐(310)가 내부 동적 메모리 관리를 포함하는 다른 데이터 구조보다 훨씬 더 단순하게 하드웨어로 구현되게 할 수 있다.
도 6은 실시예에 따른, 논-블록킹을 이용하여 축출 동작을 실시하기 위한 예시적인 플로 차트(600)를 도시하였다. 프로세스 블록(601)에서, 큐의 큐 헤드에서 노드를 팝핑한다. 프로세스 블록(602)에서, 노드에 포함된 참조 카운터가 영과 같은지 또는 노드 내의 삭제 마커가 설정되었는지를 결정할 수 있다.
만약 양 참조 카운터가 영과 같거나 삭제 마커가 설정되면, 노드가 축출되는 프로세스 블록(604)으로 이행할 수 있다.
만약 참조 카운터가 영과 같지 않거나 삭제 마커가 설정되지 않으면, 참조 카운터가 감소되는 프로세스 블록(603)으로 이행한다. 프로세스 블록(605)에서, 노드가 큐의 큐 테일에서 큐에 다시 푸시된다. 프로세스 블록(605) 후, 큐의 큐 헤드에서의 다른 노드가 팝핑되는 프로세스 블록(601)으로 복귀할 수 있다.
도 7은 실시예에 따른, 논-블록킹 큐-기반 CLOCK 대체 알고리즘을 구비하는 상이한 대체 알고리즘들에 대한 평균 레이턴시(average latency)를 도시하는 그래프(700)이다. 제 1 그래프 플롯(710)은 멤캐시드(memcached)가 최소일 때 최근에 사용된 대체 알고리즘("멤캐시드 LRU") 하에서 캐싱된 데이터 항목에 대한 액세스 빈도 데이터를 업데이트할 때의 평균 레이턴시를 나타낸다. 제 2 그래프 플롯(720)은 정적 CLOCK 대체 알고리즘("정적 CLOCK") 하에서 캐싱된 데이터 항목에 대한 액세스 빈도 데이터를 업데이트할 때의 평균 레이턴시를 나타낸다. 제 3 그래프 플롯(730)은 백 최소로 최근에 사용된 대체 알고리즘("Bag-LRU") 하에서 캐싱된 데이터 항목에 대한 액세스 빈도 데이터를 업데이트할 때의 평균 레이턴시를 나타낸다. 제 4 그래프 플롯(740)은 논-블록킹 큐-기반 CLOCK 대체 알고리즘("NbQ-CLOCK") 하에서 캐싱된 데이터 항목에 대한 액세스 빈도 데이터를 업데이트할 때의 평균 레이턴시를 나타낸다. 논-블록킹 큐-기반 CLOCK 대체 알고리즘은 도 7에 나타낸 다른 대체 알고리즘들에 비해 더 양호하게 스케일(scale)할 수 있다.
도 8은 실시예에 따른 논-블록킹 큐-기반 CLOCK 대체 알고리즘을 포함하는 상이한 대체 알고리즘들에 대한 스루풋을 도시하는 그래프(800)이다. 이 명세서에서, 스루풋은 수신된 캐시 요청의 수로 나눈 대체 알고리즘 동작들에서 소비된 시간의 양으로서 규정된다. 제 1 그래프 플롯(810)은 논-블록킹 큐-기반 CLOCK 대체 알고리즘("NbQ-CLOCK")에 대한 스루풋을 나타낸다. 제 2 그래프 플롯(820)은 백 최소로 최근에 사용된 대체 알고리즘("Bag-LRU")에 대한 스루풋을 나타낸다. 제 3 그래프 플롯(830)은 정적 CLOCK 대체 알고리즘("정적 CLOCK")에 대한 스루풋을 나타낸다. 제 4 그래프 플롯(840)은 멤캐시드 최소로 최근에 사용된 대체 알고리즘("멤캐시드 LRU")에 대한 스루풋을 나타낸다. 논-블록킹 큐-기반 CLOCK 대체 알고리즘은 도 8에 나타낸 다른 대체 알고리즘들에 비해 더 양호하게 스케일한다.
도 9는 실시예에 따른, 논-블록킹 큐-기반 CLOCK 대체 알고리즘을 포함하는 상이한 대체 알고리즘들에 대한 캐시 히트 레이트들을 포함하는 테이블(900)이다. 테이블(900)은 구체적으로 논-블록킹 큐-기반 CLOCK 대체 알고리즘("NbQ-CLOCK"), 백 최소로 최근에 사용된 대체 알고리즘("Bag-LRU"), 정적 CLOCK 대체 알고리즘("정적 CLOCK"), 및 멤캐시드 최소로 최근에 사용된 대체 알고리즘("멤캐시드 LRU")에 대한 캐시 히트 레이트들을 포함한다. 테이블(900)에 나타낸 것과 같이, 논-블록킹 큐-기반 CLOCK 대체 알고리즘의 캐시 히트 레이트들은 적어도 다른 대체 알고리즘들의 것들만큼 양호하다.
10은 본 발명의 실시예를 실시하는데 유용한 컴퓨터 시스템(100)을 포함하는 정보 처리 시스템을 나타내는 하이 레벨 블록도이다. 컴퓨터 시스템(100)은 하나 이상의 프로세서들(111)을 구비하고, 전자 디스플레이 디바이스(112)(그래픽스, 텍스트, 및 다른 데이터를 디스플레이하기 위한), 주 메모리(113)(예컨대, 랜덤 액세스 메모리(RAM)), 저장 디바이스(114)(예컨대, 하드 디스크 드라이브), 착탈 가능 저장 디바이스(115)(예컨대, 착탈 가능 저장 드라이브, 착탈 가능 메모리 모듈, 자기 테이프 드라이브, 광학 디스크 드라이브, 컴퓨터 소프트웨어 및/또는 데이터가 저장되는 컴퓨터 판독 가능 매체), 사용자 인터페이스 디바이스(116)(예컨대, 키보드, 터치 스크린, 키패드, 포인팅 디바이스(pointing device)), 및 통신 인터페이스(117)(예컨대, 모뎀, 네트워크 인터페이스(예컨대 이더넷 카드), 통신 포트, 또는 PCMCIA 슬롯 및 카드)를 더 구비할 수 있다. 통신 인터페이스(117)는 소프트웨어 및 데이터가 컴퓨터 시스템과 외부 디바이스들 사이에서 전달되게 할 수 있다. 시스템(100)은 앞에서 언급한 디바이스들/모듈들(111 내지 117)이 접속되는 통신 기반구조(118)(예컨대, 통신 버스, 네트워크)를 더 구비할 수 있다.
통신 인터페이스(117)를 통해 전송되는 정보는 전자, 전자기, 광학의 신호들, 또는 통신 인터페이스(117)에 의해 수신될 수 있는 다른 신호들의 형태로 될 수 있고, 통신 링크를 통해 신호들을 반송하고, 와이어 또는 케이블, 광 섬유들(fiber optics), 전화선, 셀룰러 전화 링크(cellular phone link), 무선 주파수(RF) 링크, 및/또는 다른 통신 채널들을 이용하여 구현될 수 있다. 블록도 및/또는 플로차트들을 나타내는 컴퓨터 프로그램 명령들은 컴퓨터, 프로그램 가능 데이터 처리 장치, 또는 그 위에서 수행되는 일련의 동작들이 컴퓨터 실행 프로세스를 생성하게 하는 처리 장치들에 로딩(loading)될 수 있다.
이 기술분야에서 숙련된 사람에게 알려져 있는 것과 같이, 위에서 기재한 전술한 예시적인 아키텍쳐들은, 상기 아키텍쳐들에 따라, 많은 방식들, 예컨대 프로세서에 의해 실행하기 위한 프로그램 명령들, 소프트웨어 모듈들로서, 마이크로코드, 컴퓨터 판독 가능 매체 상의 컴퓨터 프로그램 제품으로서, 아날로그/로직 회로들로서, 특수 용도 집적 회로들, 펌웨어(firmware), 소비자 전자 디바이스들로서, AV 디바이스들, 무선/유선 전송기들, 무선/유선 수신기들, 네트워크들, 멀티-미디어 디바이스들, 웹 서버들 등으로 구현될 수 있다. 또한, 상기 아키텍처의 실시예들은 전부 하드웨어 실시예, 전부 소프트웨어 실시예 또는 하드웨어 및 소프트웨어 요소들을 포함하는 실시예의 형태를 취할 수 있다.
하나 이상의 실시예들은 하나 이상의 실시예들에 따라 컴퓨터 프로그램 제품들 및 방법들, 장치(시스템들)의 플로차트 도해들 및/또는 블록도들을 참조하여 기재되었다. 이와 같은 도해들/도면들, 또는 그것의 조합들의 각각의 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다. 프로세서에 제공되는 컴퓨터 프로그램 명령들은 머신(machine)을 생성하여, 프로세서를 통해 실행하는 명령들이 플로차트 및/또는 블록도에서 특정된 기능들/동작들을 시행하는 수단을 생성한다. 플로차트/블록도들의 각각의 블록은 하나 이상의 실시예들을 실시하는 하드웨어 및/또는 소프트웨어 모듈 또는 로직을 나타낼 수 있다. 대안의 구현예들에서, 블록들에 기재된 기능들은 도면들에 기재된 순서를 벗어나서, 동시에 일어날 수 있다.
용어들 "컴퓨터 프로그램 매체(computer program medium)", "컴퓨터 이용 가능 매체(computer usable medium)", "컴퓨터 판독 가능 매체(computer readable medium)", 및 "컴퓨터 프로그램 제품(computer program product)"은 예컨대 주 메모리, 2차 메모리, 착탈 가능 저장 드라이브, 하드 디스크 드라이브에 설치된 하드 디스크와 같은 매체를 일반적으로 가리키는 데 사용된다. 이들 컴퓨터 프로그램 제품들은 컴퓨터 시스템에 소프트웨어를 제공하는 수단이다. 컴퓨터 판독 가능 매체는 컴퓨터 시스템이 데이터, 명령들, 메시지들 또는 메시지 패킷들(message packets), 및 컴퓨터 판독 가능 매체로부터의 다른 컴퓨터 판독 가능 정보를 판독할 수 있게 허용한다. 컴퓨터 판독 가능 매체는, 예를 들어, 불휘발성 메모리, 예컨대 플로피 디스크, ROM, 플래쉬 메모리, 디스크 드라이브 메모리, CD-ROM, 및 다른 영구 스토리지를 포함할 수 있다. 그것은 예를 들어 데이터 및 컴퓨터 명령들과 같은 정보를 컴퓨터 시스템들 사이에서 전달하는데 유용하다. 컴퓨터 프로그램 명령들은 컴퓨터, 다른 프로그램 가능 데이터 처리 장치, 또는 다른 디바이스들이 특정한 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독 가능 매체에 저장될 수 있어, 컴퓨터 판독 가능 매체 저장되는 명령들이 플로차트 및/또는 블록도 블록 또는 블록들에 특정된 기능/작용을 실시하는 명령들을 포함하는 제조 물품을 제조한다.
본원에서 블록도 및/또는 플로차트들을 표현하는 컴퓨터 프로그램 명령들은 그것에 대해 수행되는 일련의 동작이 컴퓨터 실행 프로세스를 생성하게 하기 위해 컴퓨터, 프로그램 가능 데이터 처리 장치, 또는 처리 장치들에 로딩될 수 있다. 컴퓨터 프로그램들(즉, 컴퓨터 제어 로직)은 주 메모리 및/또는 2차 메모리에 저장된다. 컴퓨터 프로그램들은 또한 통신 인터페이스를 통해 수신될 수 있다. 이와 같은 컴퓨터 프로그램들은, 실행될 때, 컴퓨터 시스템이 본원에서 논의된 하나 이상의 실시예들의 특징들을 수행하게 할 수 있다. 특히, 컴퓨터 프로그램들은, 실행될 때, 프로세서 및/또는 멀티-코어 프로세서가 컴퓨터 시스템의 특징들을 수행하게 할 수 있다. 이와 같은 컴퓨터 프로그램들은 컴퓨터 시스템의 제어기들을 나타낸다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독 가능하고 하나 이상의 실시예들의 방법을 수행하기 위해 컴퓨터 시스템에 의해 실행하기 위한 명령들을 저장하는 유형의 저장 매체(tangible storage medium)를 포함한다.
이상에서는 본 발명의 바람직한 실시 예에 대해서 도시하고, 설명하였으나, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자라면 누구든지 다양한 변형 실시할 수 있는 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.

Claims (29)

  1. 동적 크기 캐싱(dynamically-sized caching)을 위한 축출 시스템(eviction system)에 있어서,
    하나 이상의 데이터 노드들을 유지하기 위한 논-블록킹 데이터 구조(non-blocking data structure)로서, 각각의 데이터 노드는 캐시 내의 데이터 항목(data item)에 대응하고, 각각의 데이터 노드는 대응하는 데이터 항목에 관한 정보를 포함하는 논-블록킹 데이터 구조; 및
    상기 데이터 구조로부터 데이터 노드를 제거하고,
    상기 데이터 노드에 포함된 정보에 기초하여 상기 데이터 노드가 축출을 위한 후보인지를 결정하고,
    상기 데이터 노드가 축출을 위한 후보가 아니면, 상기 데이터 노드를 다시 상기 데이터 구조에 삽입하고, 상기 데이터 노드가 축출을 위한 후보이면, 상기 데이터 노드 및 대응하는 데이터 항목을 상기 시스템 및 상기 캐시로부터 각각 축출하도록 구성된 축출 모듈(eviction module);을 포함하며,
    상기 데이터 구조의 데이터 노드들은 축출을 위한 후보가 결정될 때까지 상기 축출 모듈을 통해 순환하는 축출 시스템.
  2. 제 1 항에 있어서,
    상기 데이터 항목에 관한 정보는 데이터 항목, 및 상기 데이터 항목에 대한 참조 중 하나를 포함하는 것을 특징으로 하는 축출 시스템.
  3. 제 2 항에 있어서,
    상기 데이터 항목에 관한 정보는,
    상기 데이터 항목에 대한 액세스 빈도를 추적하기 위한 참조 카운터;
    상기 데이터 항목이 상기 캐시로부터 삭제를 위해 플래깅(flagged)되는지를 표시하는 삭제 마커; 및
    상기 데이터 구조 내의 다른 데이터 노드를 가리키도록 구성 가능한 참조 포인터;를 더 포함하는 것을 특징으로 하는 축출 시스템.
  4. 제 3 항에 있어서,
    상기 논-블록킹 데이터 구조는 큐(queue)를 포함하는 것을 특징으로 하는 축출 시스템.
  5. 제 4 항에 있어서,
    상기 축출 모듈은,
    상기 큐의 헤드(head)에서 데이터 노드를 팝핑(popping)하여 상기 데이터 구조로부터 데이터 노드를 제거하고,
    상기 데이터 노드를 상기 큐의 테일(tail)에 푸싱(pushing)하여, 상기 데이터 노드를 다시 상기 데이터 구조에 삽입하는 것을 특징으로 하는 축출 시스템.
  6. 제 5 항에 있어서,
    상기 큐는,
    상기 큐의 상기 헤드로부터 데이터 노드를 팝핑하기 위한 팝 모듈(pop module); 및
    상기 큐의 상기 테일에 데이터 노드를 푸싱하기 위한 푸시 모듈(push module);을 더 포함하고,
    상기 큐는 로크 충돌(lock contention) 없이 동시에, 다수의 스레드들이 데이터 노드들을 상기 큐에 푸싱하고, 데이터 노드들을 상기 큐로부터 팝핑하도록 허용하는 것을 특징으로 하는 축출 시스템.
  7. 제 4 항에 있어서,
    캐싱하기 위한 데이터 항목을 수신하고,
    상기 데이터 항목에 대한 데이터 노드를 발생시키고,
    상기 데이터 노드를 상기 논-블록킹 데이터 구조에 삽입하도록 구성되는 삽입 모듈;을 더 포함하는 것을 특징으로 하는 축출 시스템.
  8. 제 7 항에 있어서,
    상기 데이터 노드가 발생 된 때에만 데이터 노드에 대한 메모리를 할당하는 메모리 할당 모듈; 및
    상기 데이터 노드가 상기 데이터 구조로부터 축출된 때에만 데이터 노드에 대한 메모리를 비할당(deallocating)하는 메모리 비할당 모듈;을 더 포함하는 것을 특징으로 하는 축출 시스템.
  9. 제 3 항에 있어서,
    상기 데이터 구조는 제한 없이(unbounded) 가변 수(variable number)의 상이한 크기들의 데이터 항목들의 캐싱을 허용하는 것을 특징으로 하는 축출 시스템.
  10. 제 3 항에 있어서,
    상기 축출 모듈은 다음의 조건들, 즉 상기 데이터 노드에 포함된 참조 카운터가 미리 규정된 값을 나타내는 것, 및 상기 데이터 노드에 대한 삭제 마커가 설정되는 것 중 적어도 하나가 만족될 때 데이터 노드가 축출을 위한 후보라고 결정하는 것을 특징으로 하는 축출 시스템.
  11. 제 1 항에 있어서,
    데이터 항목은 웹 오브젝트(web object)를 포함하는 것을 특징으로 하는 축출 시스템.
  12. 동적 크기 캐싱을 위한 축출 시스템의 축출 방법에 있어서,
    논-블록킹 데이터 구조에 하나 이상의 데이터 노드들을 유지하는 단계로서,각각의 데이터 노드는 캐시 내의 데이터 항목에 대응하고, 각각의 데이터 노드는 대응하는 데이터 항목에 관한 정보를 포함하는 데이터 노드를 유지하는 단계;
    상기 데이터 구조로부터 데이터 노드를 제거하는 단계;
    상기 데이터 노드가 상기 데이터 노드에 포함된 정보에 기초한 축출을 위한 후보인지를 결정하는 단계; 및
    상기 데이터 노드가 축출을 위한 후보가 아니면, 상기 데이터 노드를 다시 상기 데이터 구조에 삽입하고, 상기 데이터 노드가 축출을 위한 후보이면, 상기 시스템 및 상기 캐시로부터 상기 데이터 노드 및 대응하는 데이터 항목을 각각 축출하는 단계;를 포함하고,
    데이터 노드들은 축출을 위한 후보가 결정될 때까지 상기 데이터 구조를 통해 순환하는 것을 특징으로 하는 축출 방법.
  13. 제 12 항에 있어서,
    상기 데이터 항목에 관한 정보는 데이터 항목, 및 상기 데이터 항목에 대한 참조 중 하나를 포함하는 것을 특징으로 하는 축출 방법.
  14. 제 13 항에 있어서,
    데이터 항목에 관한 정보는,
    상기 데이터 항목에 대한 액세스 빈도(access frequency)를 추적하기 위한 참조 카운터;
    상기 데이터 항목이 상기 캐시로부터 삭제를 위해 플래깅되는지를 표시하는 삭제 마커; 및
    상기 데이터 구조 내의 다른 데이터 노드를 가리키도록 구성 가능한 참조 포인터;를 더 포함하고,
    데이터 노드는 상기 데이터 노드에 포함된 참조 카운터가 미리 규정된 값을 나타내는 것 및 상기 데이터 노드에 대한 삭제 마커가 설정되는 것 중 적어도 하나가 만족될 때 축출을 위한 후보인 것을 특징으로 하는 축출 방법.
  15. 제 12 항에 있어서,
    상기 데이터 구조는 제한 없이 가변 수의 상이한 크기들의 데이터 항목들의 캐싱을 허용하는 것을 특징으로 하는 축출 방법.
  16. 제 14 항에 있어서,
    상기 논-블록킹 데이터 구조는 큐를 포함하고,
    상기 데이터 구조로부터 데이터 노드를 제거하는 단계는, 상기 큐의 헤드에서 데이터 노드를 팝핑하여 상기 데이터 구조로부터 데이터 노드를 제거하고,
    상기 데이터 노드를 상기 데이터 구조에 삽입하는 단계는, 상기 데이터 노드를 상기 큐의 테일에 푸싱하여 상기 데이터 노드를 상기 데이터 구조에 삽입하는 것을 특징으로 하는 축출 방법.
  17. 제 16 항에 있어서,
    상기 큐는 로크 충돌 없이 동시에, 다수의 스레드들이 데이터 노드들을 상기 큐에 푸싱하고, 데이터 노드들을 상기 큐로부터 팝핑하도록 허용하는 것을 특징으로 하는 축출 방법.
  18. 제 14 항에 있어서,
    캐싱을 위한 데이터 항목을 수신하는 단계;
    상기 데이터 항목에 대한 데이터 노드를 발생시키는 단계; 및
    상기 데이터 노드를 상기 논-블록킹 데이터 구조에 삽입하는 단계;를 더 포함하는 것을 특징으로 하는 축출 방법.
  19. 제 18 항에 있어서,
    상기 데이터 노드가 발생 된 때에만 메모리 노드에 대한 메모리를 할당하는 단계; 및
    상기 데이터 노드가 상기 데이터 구조로부터 축출된 때에만 메모리 노드에 대한 메모리를 비할당하는 단계;를 더 포함하는 것을 특징으로 하는 축출 방법.
  20. 제 12 항에 있어서,
    데이터 항목은 웹 오브젝트를 포함하는 것을 특징으로 하는 축출 방법.
  21. 동적 크기 캐싱을 위한 축출 시스템의 축출 방법을 실행하기 위한 프로그램을 저장한 컴퓨터 판독 가능 매체에 있어서,
    상기 축출 방법은,
    논-블록킹 데이터 구조에 하나 이상의 데이터 노드들을 유지하는 단계로서, 각각의 데이터 노드는 캐시 내의 데이터 항목에 대응하고, 각각의 데이터 노드는 대응하는 데이터 항목에 관한 정보를 포함하는 데이터 노드를 유지하는 단계;
    상기 데이터 구조로부터 데이터 노드를 제거하는 단계;
    상기 데이터 노드가 상기 데이터 노드에 포함된 정보에 기초하여 축출을 위한 후보인지를 결정하는 단계; 및
    상기 데이터 노드가 축출을 위한 후보가 아니면, 상기 데이터 노드를 다시 상기 데이터 구조에 삽입하고, 상기 데이터 노드가 축출을 위한 후보이면, 상기 데이터 노드 및 대응하는 데이터 항목을 상기 시스템 및 상기 캐시로부터 각각 축출하는 단계;를 포함하고,
    데이터 노드들은 축출을 위한 후보가 결정될 때까지 상기 데이터 구조를 통해 순환하는 컴퓨터 판독 가능 매체.
  22. 제 21 항에 있어서,
    데이터 항목에 관한 정보는 데이터 항목, 및 상기 데이터 항목에 대한 참조 중 하나를 포함하는, 컴퓨터 판독 가능 매체.
  23. 제 22 항에 있어서,
    데이터 항목에 관한 정보는,
    상기 데이터 항목에 대한 액세스 빈도를 추적하기 위한 참조 카운터;
    상기 데이터 항목이 상기 캐시로부터 삭제를 위해 플래깅되는지를 표시하는 삭제 마커; 및
    상기 데이터 구조 내의 다른 데이터 노드를 가리키도록 구성 가능한 참조 포인터;를 더 포함하고,
    데이터 노드는 상기 데이터 노드에 포함된 참조 카운터가 미리 규정된 값을 나타내는 것, 및 상기 데이터 노드에 대한 삭제 마커가 설정되는 것 중 하나가 만족될 때 축출을 위한 후보인, 컴퓨터 판독 가능 매체.
  24. 제 21 항에 있어서,
    상기 데이터 구조는 제한 없이 가변 수의 상이한 크기들의 데이터 항목들의 캐싱을 허용하는, 컴퓨터 판독 가능 매체.
  25. 제 23 항에 있어서,
    상기 논-블록킹 데이터 구조는 큐를 포함하고,
    상기 데이터 구조로부터 데이터 노드를 제거하는 단계는, 상기 큐의 헤드에서 데이터 노드를 팝핑하여 상기 데이터 구조로부터 데이터 노드를 제거하고,
    상기 데이터 노드를 상기 데이터 구조에 삽입하는 단계는, 상기 데이터 노드를 상기 큐의 테일에 푸싱하여 상기 데이터 노드를 상기 데이터 구조에 삽입하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  26. 제 25 항에 있어서,
    상기 큐는 로크 충돌 없이 동시에, 다수의 스레드들이 데이터 노드들을 상기 큐에 푸싱하고, 데이터 노드들을 상기 큐로부터 팝핑하도록 허용하는, 컴퓨터 판독 가능 매체.
  27. 제 23 항에 있어서,
    캐싱을 위한 데이터 항목을 수신하고,
    상기 데이터 항목에 대한 데이터 노드를 발생시키고,
    상기 데이터 노드를 상기 논-블록킹 데이터 구조에 삽입하도록 구성되는 삽입 모듈을 더 포함하는, 컴퓨터 판독 가능 매체.
  28. 제 27 항에 있어서,
    상기 데이터 노드가 발생 된 때에만 메모리 노드에 대한 메모리를 할당하는 메모리 할당 모듈; 및
    상기 데이터 노드가 상기 데이터 구조로부터 축출된 때에만 메모리 노드에 대한 메모리를 비할당하는 메모리 비할당 모듈;을 더 포함하는. 컴퓨터 판독 가능 매체.
  29. 제 21 항에 있어서,
    상기 데이터 항목은 웹 오브젝트를 포함하는, 컴퓨터 판독 가능 매체.
KR1020140062297A 2013-07-19 2014-05-23 축출 시스템, 축출 방법 및 컴퓨터 판독가능 매체 KR101974491B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361856620P 2013-07-19 2013-07-19
US61/856,620 2013-07-19
US14/144,358 2013-12-30
US14/144,358 US9665658B2 (en) 2013-07-19 2013-12-30 Non-blocking queue-based clock replacement algorithm

Publications (2)

Publication Number Publication Date
KR20150010574A KR20150010574A (ko) 2015-01-28
KR101974491B1 true KR101974491B1 (ko) 2019-05-02

Family

ID=52344570

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140062297A KR101974491B1 (ko) 2013-07-19 2014-05-23 축출 시스템, 축출 방법 및 컴퓨터 판독가능 매체

Country Status (2)

Country Link
US (1) US9665658B2 (ko)
KR (1) KR101974491B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2010823C2 (en) * 2013-05-17 2014-11-24 Insite Innovations And Properties B V System and method for processing web-browsing information.
US20150293752A1 (en) * 2014-04-11 2015-10-15 Pradeep Varma Unrestricted, Fully-Source-Preserving, Concurrent, Wait-Free, Synchronization-Free, Fully-Error-Handling Frontend With Inline Schedule Of Tasks And Constant-Space Buffers
US20160352832A1 (en) * 2015-06-01 2016-12-01 Alibaba Group Holding Limited Enhancing data consistency in cloud storage system by entrance data buffering
US9760493B1 (en) * 2016-03-14 2017-09-12 Vmware, Inc. System and methods of a CPU-efficient cache replacement algorithm
US10083127B2 (en) * 2016-08-22 2018-09-25 HGST Netherlands B.V. Self-ordering buffer
CN108052400A (zh) * 2017-12-21 2018-05-18 深圳Tcl新技术有限公司 消息快速处理方法、智能终端以及计算机可读存储介质
US10715499B2 (en) * 2017-12-27 2020-07-14 Toshiba Memory Corporation System and method for accessing and managing key-value data over networks
US10747594B1 (en) 2019-01-24 2020-08-18 Vmware, Inc. System and methods of zero-copy data path among user level processes
US11080189B2 (en) 2019-01-24 2021-08-03 Vmware, Inc. CPU-efficient cache replacment with two-phase eviction
EP3828704B1 (en) * 2019-11-29 2023-06-28 My Virtual Reality Software AS Real-time data acquisition and visualization for point-cloud recording
US11249660B2 (en) 2020-07-17 2022-02-15 Vmware, Inc. Low-latency shared memory channel across address spaces without system call overhead in a computing system
US11513832B2 (en) 2020-07-18 2022-11-29 Vmware, Inc. Low-latency shared memory channel across address spaces in a computing system
US11829302B2 (en) 2021-09-03 2023-11-28 Hewlett Packard Enterprise Development Lp Detecting sequential access patterns and proactive caching in a tree-based file system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184448A1 (en) 2001-05-29 2002-12-05 Ludmila Cherkasova Method for cache replacement of web documents
US20030081836A1 (en) 2001-10-31 2003-05-01 Infowrap, Inc. Automatic object extraction
US20100235581A1 (en) 2009-03-10 2010-09-16 Anderson Eric A Cooperative Caching Technique

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266742B1 (en) 1997-10-27 2001-07-24 International Business Machines Corporation Algorithm for cache replacement
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US20030099254A1 (en) 2000-03-03 2003-05-29 Richter Roger K. Systems and methods for interfacing asynchronous and non-asynchronous data media
US20020056025A1 (en) 2000-11-07 2002-05-09 Qiu Chaoxin C. Systems and methods for management of memory
US8218555B2 (en) 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
JP4042359B2 (ja) 2001-07-10 2008-02-06 日本電気株式会社 キャッシュ制御方法及びキャッシュ装置
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
WO2007068122A1 (en) 2005-12-16 2007-06-21 Univ Western Ontario System and method for cache management
US8312457B2 (en) 2009-12-14 2012-11-13 Microsoft Corporation Maintaining a count for lock-free linked list structures
US20130290643A1 (en) * 2012-04-30 2013-10-31 Kevin T. Lim Using a cache in a disaggregated memory architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184448A1 (en) 2001-05-29 2002-12-05 Ludmila Cherkasova Method for cache replacement of web documents
US20030081836A1 (en) 2001-10-31 2003-05-01 Infowrap, Inc. Automatic object extraction
US20100235581A1 (en) 2009-03-10 2010-09-16 Anderson Eric A Cooperative Caching Technique

Also Published As

Publication number Publication date
KR20150010574A (ko) 2015-01-28
US9665658B2 (en) 2017-05-30
US20150026412A1 (en) 2015-01-22

Similar Documents

Publication Publication Date Title
KR101974491B1 (ko) 축출 시스템, 축출 방법 및 컴퓨터 판독가능 매체
US10176057B2 (en) Multi-lock caches
US10963387B2 (en) Methods of cache preloading on a partition or a context switch
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
US9396030B2 (en) Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications
US8443149B2 (en) Evicting data from a cache via a batch file
US9229869B1 (en) Multi-lock caches
US9274963B2 (en) Cache replacement for shared memory caches
US20110066830A1 (en) Cache prefill on thread migration
US20080065809A1 (en) Optimized software cache lookup for simd architectures
JP2017509998A (ja) キャッシュ汚染を低減するために専用キャッシュセットにおける専用プリフェッチポリシーを競合させることに基づいた適応キャッシュプリフェッチング
US8799611B2 (en) Managing allocation of memory pages
US20120254548A1 (en) Allocating cache for use as a dedicated local storage
US20170103024A1 (en) Information processing apparatus and cache control method
CN111506604A (zh) 访问数据的方法、装置和计算机程序产品
US20080307169A1 (en) Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
CN111324556A (zh) 高速缓存预取
US20170068465A1 (en) Hybrid Heap Memory Management
CN106164874B (zh) 多核系统中数据访问者目录的访问方法及设备
US9639566B2 (en) Method, apparatus and computer program product for improved storage of key-value pairs
CN107748649B (zh) 一种缓存数据的方法和装置
CN113495854A (zh) 主机-设备系统中实现或管理缓存一致性的方法和系统
US10606795B2 (en) Methods for managing a buffer cache and devices thereof
US8447934B2 (en) Reducing cache probe traffic resulting from false data sharing
US20140068198A1 (en) Statistical cache promotion

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