캐시는 전용 캐시 또는 글로벌 캐시로 구현할 수 있다. 전용 캐시는 별도의 메모리 공간을 읽기와 쓰기에 할당하는 것을 말한다. 글로벌 캐시는 읽기와 쓰기가 가능한 모든 메모리 주소를 사용할 수 있다. 글로벌 캐시에서는 글로벌 주소 집합만을 관리하면 되기 때문에 캐시를 효율적으로 관리할 수 있다.
글로벌 캐시는 사용자가 읽기와 쓰기에 사용 가능한 캐시 비율을 저장할 수 있다. 보통 읽기 캐시는 작게 설정하는데, 애플리케이션이 읽기 연산을 많이 수행하는 경우에는 늘려야 한다. 그 밖의 글로벌 캐시 구현에서는 읽기와 쓰기에 사용할 수 있는 캐시 비율이 워크로드에 따라 동적으로 변화한다.
캐시는 한정되고 비싼 리소스이기 때문에 잘 관리해야 한다. 최신 지능형 스토리지 시스템이 많은 캐시를 사용한다고 해도 모든 캐시 페이지를 사용한 후에는 새로운 데이터를 캐시에 저장하고 성능 저하를 막기 위해 캐시의 몇몇 페이지를 해제해야 한다. 지능형 스토리지 시스템에는 사용 가능한 페이지의 집합과 잠재적으로 필요시 해제할 수 있는 페이지의 목록을 관리하기 위한 여러 캐시 알고리즘이 구현돼 있다.
다음은 가장 많이 사용하는 알고리즘이다.
- 최소 최근 사용(LRU, Least Recently Used)
캐시 데이터 액세스를 계속 관찰하고 오랜 기간 사용되지 않은 페이지를 찾아내는 알고리즘이다. LRU는 이 페이지를 해제하거나 재사용할 수 있다고 마크한다. 이 알고리즘은 한동안 사용되지 않은 페이지는 앞으로도 호스트가 요청하지 않을 것이라는 가정에 기초한다. 그러나 커밋되지 않은 데이터를 가진 페이지는 재사용하기 전에 먼저 디스크에 기록해야 한다.
- 최대 최근 사용(MRU, Most Recently Used)
이 알고리즘은 LRU의 반대로 가장 최근에 사용한 페이지를 해제하거나 재사용하도록 마크한다. 최근에 액세스한 데이터는 한동안 사용하지 앟을 것이라는 가정에 기초한다.
캐시에 빈 공간이 없으면 더티 페이지(캐시에 기록된 후 디스크에 기록되지 않은 데이터)를 플러시해 사용 가능한 공간을 관리해야 한다. 플러시(flushing)는 캐시의 데이터를 디스크에 커밋하는 과정이다. I/O 액세스 속도나 패턴에 기초해 워터마크(watermark)라 불리는 상한/하한 레벨을 캐시에 설정해 플러시를 관리한다. 하이 워터마크 (HWM, high watermark)는 스토리지 시스템이 캐시 데이터를 빨리 플러시해야 하는 한도다. 로우 워터마크(LWM, log watermark)는 플러시를 멈추는 지점이다.
- 느린 플러시(idle flushing)
캐시 활용도가 하이 워터마크와 로우 워터마크 사이면 지속적으로 적당한 속도로 플러시한다.
- 하이 워터마크 플러시(high watemark flushig)
캐시 활용도가 하이 워터마크를 넘으면 발생한다. 스토리지 시스템은 플러시를 위한 추가 전용 리소스를 할당한다. 이 플러시는 I/O 처리에 영향을 끼친다.
- 강제 플러시(forced flushing)
갑자기 많은 I/O가 발생해 캐시를 100% 사용한 경우 실행한다. 강제 플러시는 좀 더 많은 리소스를 할당해 먼저 처리한다.
캐시는 휘발성 메모리이기 때문에 전력이 끊기거나 어떤 캐시 자애가 발생하면 디스크에 커밋하지 않은 데이터를 잃게 된다. 캐시에 저장된 데이터를 잃을 위험을 줄이기 위해 캐시 미러링이나 캐시 볼팅을 사용한다.
- 캐시 미러링(cache mirroring)
캐시 기록을 독립적인 2개의 메모리 주소에 저장한다. 캐시 장애가 발생하더라도 쓰기 데이터는 미러에 데이터가 보존돼 있어 디스크에 커밋할 수 있다. 읽기는 디스크에서 캐시로 이관된다. 따라서 캐시 장애가 발생해도 디스크에서 데이터를 읽을 수 있다. 쓰기만 미러링하기 때문에 이 방법은 사용 가능한 캐시의 활용도를 높일 수 있다.
캐시 미러링 방식에서는 캐시 일관성(cache coherency)을 유지해야 하는 문제가 발생한다. 캐시 일관성은 다른 두 캐시의 데이터가 항상 같아야 함을 말한다. 이를 보장하는 일은 어레이 운영 환경의 책임이다.
- 캐시 볼팅(cache vaulting)
전력 장애로 데이터를 잃을 수 있는 위험을 방지하는 여러 가지 방법이 있다. AC 전역이 복구될 때까지 배터리를 사용해 메모리에 전원을 공급하거나 캐시 컨텐츠를 디스크에 기록할 수 있다. 추가 전력도 끊긴 경우 배터리를 사용하는 것은 사용 가능한 옵션이 아니다. 이는 지능형 스토리지 시스템에서는 많은 양의 데이터를 여러 디스크에 기록해야 하기 때문에 배터리의 전력만으로는 부족하기 때문이다. 따라서 스토리지 벤더는 전력 장애 시 캐시의 컨텐츠를 덤프하기 위한 물리적 디스크를 사용한다. 이를 캐시 볼팅이라고 하며, 이 디스크를 볼트 드라이브(vault drive)라고 한다. 전력이 복구되면 이 디스크의 데이터를 다시 캐시에 기록하고 알맞은 디스크에 데이터를 기록한다.
서버 플래시-캐싱 기술은 지능형 소프트웨어와 호스트의 PCI 익스프레스(PCIe, PCI Express) 플래시 카드를 사용한다. 이는 지연 시간을 줄이고 처리량을 늘려 애플리케이션의 성능을 극적으로 향상시킨다. 서버 플래시-캐싱 기술은 물리적 환경과 가상 환경에서 모두 동작하며 읽기가 많은 워크로드에서 성능 향상을 제공한다. 이 기술은 플래시 관리를 PCIe 카드에 이관함으로써 서버의 CPU와 메모리의 부하를 최소화 한다.
서버의 PCIe 플래시에 어떤 데이터를 위치시켜 애플리케이션에 더 가깝게 함으로써 이득을 얻을 수 있늕 지능적으로 결정한다. 스토리지 어레이에 액세스하기 위한 네트워크 I/O의 지연 시간을 피할 수 있다. 이를 사용해 애플리케이션이 가장 최근에 사용한 데이터를 찾기 위한 프로세싱을 백엔드 스토리지에서 PCIe 카드로 이관할 수 있다. 따라서 스토리지 어레이는 좀 더 많은 프로세싱 파워를 다른 애플리케이션에 할당할 수 있다.
'IT > Storage' 카테고리의 다른 글
클라우드 컴퓨팅 (0) | 2022.09.03 |
---|---|
스토리지 프로비저닝 (0) | 2022.09.03 |
지능형 스토리지 시스템의 컴포넌트 (0) | 2022.08.09 |
디스크 드라이브 성능 (0) | 2022.06.30 |
디스크 드라이브 컴포넌트 (0) | 2022.06.29 |