LIRS 캐싱 알고리즘
LIRS caching algorithmLIRS(Low Inter-Reference Recency Set)는 페이지 치환 알고리즘으로 LRU(Last Recently Used) 및 기타 많은 새로운 [1]치환 알고리즘보다 성능이 향상되었습니다.이것은, 액세스 된 페이지의 순위를 동적으로 매겨 치환을 결정하기 위한 인접성 메트릭으로서 「재사용 거리」[2]를 사용하는 것으로 실현됩니다.
요약
지역 수량화
모든 페이지 치환 알고리즘이 기능하기 위해서는 참조 로컬리티의 유무에 의존하지만, 다른 치환 알고리즘의 큰 차이는 이 로컬리티를 수량화하는 방법에 있습니다.LIRS는 페이지의 재사용 거리 또는 페이지의 2개의 연속된 참조 간에 액세스되는 개별 페이지 수를 사용하여 로컬리티를 정량화합니다.특히 LIRS는 이 목적으로 마지막 및 두 번째에서 마지막까지의 참조(존재하는 경우)를 사용합니다.처음 페이지에 액세스하는 경우 해당 페이지의 재사용 거리는 무한합니다.이와는 대조적으로 LRU는 페이지의 참조 후 액세스되는 고유 페이지 수인 페이지의 반복성을 사용하여 로컬리티를 정량화합니다.LIRS 실장에서는, 최신의 액세스 이력을 고려해, 실제로는, 페이지의 재이용 거리와 빈도가 큰 것을 메트릭으로서 사용해, 그 인접성을 정량화합니다(RD-R).캐시의 캐퍼시티가 C페이지라고 가정하면 LIRS 알고리즘은 최근에 액세스한 페이지의 RD-R 값에 따라 순위를 매겨 캐시 내에서 가장 순위가 높은 C페이지를 유지합니다.
재사용 거리와 반복성의 개념은 다음과 같이 시각화할 수 있습니다. 여기서 T1과 T2는 각각 페이지 B의 두 번째에서 마지막까지 및 마지막 참조 시간이고 T3은 현재 시간입니다.
. . B . . . B . . . . B . . . . ^ -- -- -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
교체 대상자 선택
LIRS는 캐시된 페이지와 캐시되지 않은 페이지의 메타데이터를 정리하고 다음과 같이 치환 작업을 수행합니다.이것도 그래프에 예시되어 있습니다.
- 캐시는 Low Inter-Reference Recency(LIR) 파티션과 High Inter-Reference Recency(HIR) 파티션으로 나뉩니다.LIR 파티션은 최상위 페이지(LIR 페이지)를 저장하고 HIR 파티션은 기타 페이지(HIR 페이지)를 저장합니다.
- LIR 파티션은 캐시의 대부분을 차지하며 모든 LIR 페이지는 캐시에 상주합니다.
- 최근에 액세스한 모든 페이지는 LIRS 스택(그래프에서는 스택S)라고 불리는 FIFO 큐에 배치되며 모든 상주 HIR 페이지도 다른 FIFO 큐(그래프에서는 스택Q)에 배치됩니다.
- 액세스 된 페이지는 스택S 의 상부로 이동해, 스택의 하부에 있는 HIR 페이지는 삭제됩니다.예를 들어 그래프(a)의 페이지 B에 접속한 후 그래프(b)를 생성한다.
- 스택 S 의 HIR 페이지에 액세스 하면, LIR 페이지가 되고, 따라서 스택S 의 하부에 있는 LIR 페이지가 HIR 페이지로 바뀌어 스택Q 의 상부로 이동합니다.예를 들어 그래프(c)는 그래프(a)의 페이지 E에 액세스한 후에 작성된다.
- 누락되어 상주 페이지를 교체해야 할 경우 스택Q 하단의 상주 HIR 페이지가 교체 대상으로 선택됩니다.예를 들어 그래프(d)와 (e)는 각각 그래프(a)에서 페이지 D와 페이지 C에 접속한 후에 작성된다.
도입
LIRS는 버전 5.[4]1부터 MySQL에 도입되어 있습니다.Infinispan 데이터 그리드 [5]플랫폼에도 채택되어 있습니다.NetBSD [7]에서는, LIRS 의 근사 CLOCK-Pro [6]가 채용되고 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Jiang, Song; Zhang, Xiaodong (June 2002). "LIRS: an efficient low inter-reference recency set replacement policy to improve buffer cache performance". ACM SIGMETRICS Performance Evaluation Review. 30 (1): 31–42. doi:10.1145/511399.511340.
- ^ Mattson, R.L.; Gecsei, J.; Slutz, D. R.; Traiger, I. L. (1970). "Evaluation techniques for storage hierarchies". IBM Systems Journal. 9 (2): 78–117. doi:10.1147/sj.92.0078.
- ^ Song Jiang; Xiaodong Zhang (2005). "Making LRU Friendly to Weak Locality Workloads: A Novel Replacement Algorithm to Improve Buffer Cache Performance". IEEE Transactions on Computers. 54 (8): 939–952. doi:10.1109/TC.2005.130. S2CID 11539061.
- ^ svn commit - mysqldoc@subrva : r6768 - trunk / ndbapi
- ^ Infinispan 제거, 배치 업데이트 및 LIRS
- ^ Song Jiang, Feng Chen 및 Xiaodong Zhang은 2005 USENIX 연차 기술 회의(USENIX'05)에서 CLOCK-Pro: A Effective Revalment of the CLOCK Replacement of the CLOCK Replacement)를 발표했습니다.
- ^ FreeBSD/Linux 커널 상호 참조 sys/uvm/uvm_pdpolicy_clockpro.c
외부 링크
- Rik van Riel의 O(1) VM에 대해 Linux에서 캐시와 프로그램 메모리의 균형을 맞추기 위해 LIRS를 사용할 수 있는 가능성에 대해 설명합니다.
- CLOCK-Pro 페이지 치환 구현에 관한 보고서.
- Linux 메모리 관리 개발 팀에 의해 확립된 고도의 페이지 교환 프로젝트.
- Rik van Riel이 개발한 CLOCK-Pro 패치.
- Peter Zijlstra가 개발한 CLOCK-Pro 패치.
- CLOCK-Pro는 Wolfgan Mauerer의 Book Professional Linux 커널 아키텍처의 Linux 및 Academy 섹션의 한 예입니다.
- Ali R의 LIRS 및 기타 알고리즘의 퍼포먼스 차이를 상술한 논문.엉덩이, 크리스 그니아디, 그리고 Y.찰리 후
