플래시 캐시 관리

본 장에서는 Storage 노드의 플래시 디바이스를 이용하여 SSVR 인스턴스에 플래시 캐시를 설정하는 방법을 기술하고, 이를 효율적으로 사용하기 위한 설정들을 설명합니다.

개요

SSVR 인스턴스는 플래시 디바이스를 캐시로 지원합니다.

플래시 디바이스는 빠른 I/O 성능과 비휘발성 저장 공간을 제공합니다. 캐시는 데이터를 쓰는 방법에 있어서 아래 그림과 같이 write-through 방식과 write- back 방식이 존재합니다.

그림 1. write-through와 write-back

write-through 방식

디스크와 캐시 양쪽에 데이터를 저장해야 쓰기 동작이 완료되는 방식입니다.

write-back 방식

캐시에만 데이터를 저장하면 쓰기 동작이 완료되는 방식입니다.

write-back 방식은 디스크 쓰기를 하지 않기 때문에 I/O 속도가 빨라진다는 장점을 가집니다. 반면에 캐시의 내용을 추후에 디스크에 복사(flush)를 해야 한다는 단점을 가집니다. 이것을 체크포인트 과정이라고 합니다. ZetaData의 플래시 캐시는 쓰기 I/O속도 향상을 위해서 write-back 방식을 사용하고 있습니다.


플래시 캐시 체크포인트

write-back 캐싱 알고리즘을 사용하면 캐시의 내용과 디스크의 내용이 일치하지 않는 경우가 발생합니다.

데이터가 들어 있는 블록을 dirty 블록이라고 합니다. dirty 블록은 캐시 교환 알고리즘에 의해서 캐시가 부족 한 시점에 오래된 dirty 블록순으로 디스크와 동기화합니다. 이때 dirty 블록을 디스크에 동기화하는 작업을 체크포인트라고 합니다. 동기화된 dirty 블록은 clean 블록이 됩니다.

free 블록의 비율이 부족할 경우, clean 블록 중 오래된 블록을 선별하여 free 블록이 되어 새로운 I/O 요청을 캐싱할 수 있습니다. 평소에는 캐시 교체 정책에 의하여 자동으로 체크포인트가 수행됩니다. 또한, 관리자는 체크포인트를 수동으로 지시할 수 있습니다.

아래는 수동으로 플래시 캐시를 체크포인트하는 DDL입니다.

$ tbsql sys/tibero

tbSQL 7

TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. 

Connected to Tibero.

SQL> alter flashcache checkpoint;

altered.

SQL>


플래시 캐시 제거

플래시 캐시를 사용하고 싶지 않을 경우에는 플래시 캐시를 제거합니다.

플래시 캐시의 정합성을 유지하기 위해서는 dirty 블록이 없어야 합니다. 현재 플래시 캐시 제거를 명령하면 내부적으로 체크포인트를 수행합니다. 체크포인트 동작이 완료되면 플래시 캐시는 정상적으로 제거됩니다.

아래는 플래시 캐시를 제거하는 DDL입니다.

$ tbsql sys/tibero
tbSQL 7

TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. 
Connected to Tibero.

SQL> drop flashcache flash0;

dropped.

SQL>


플래시 캐시 초기화 파라미터

아래는 플래시 캐시 성능에 관련된 파라미터에 대한 설명입니다.

초기화 파라미터
설명

SSVR_FC_WS_CNT

Working set의 개수를 정의합니다. 별도로 설정하지 않은 경우 CPU 개수와 동일하게 지정되므로 설정하지 않아도 됩니다. Working set의개수는 CPU 개수와 동일하게 설정하는 것을 권장합니다.

SSVR_FC_FREE_BIN_RATIO

플래시 캐시는 오랫동안 접근되지 않은 캐시 블록을 free 블록으로 변경시켜 줍니다.

파라미터는 확보해야 할 free 블록의 비율을 정의합니다. 이 값이 크면 free 블록을 미리 확보하여 free 블록 얻는 대기시간을 줄일 수 있다 는 장점이 있지만, 반대로 캐싱되는 블록의 개수가 줄어들게 된다는단점이 있습니다. (기본값: 10%)

SSVR_FC_DIRTY_BIN_RA TIO_MAX

플래시 캐시에서 유지할 최대 dirty 블록의 비율(%)을 정의합니다.

만약 이 비율 이상 dirty 블록이 존재하게 되면, Background Thread에서 체크포인트를 수행하여 정의한 최대 dirty 블록의 비율을 유지합니다. (기본값: 80%)


플래시 캐시 생성 정보 확인

아래는 플래시 캐시의 생성 정보를 확인하는 방법입니다.

$ tbsql sys/tibero

tbSQL 7

TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.

Connected to Tibero.

SQL> select * from V$SSVR_FLASHCACHE;
FLASHCACHE_NUMBER NAME                    PATH                         OS_BYTES
----------------- ----------------------- -------------------------- -----------
                0 FLASH1                  /dev/zeta-flash1            5.3687E+10
                1 FLASH2                  /dev/zeta-flash2            5.3687E+10
                2 FLASH3                  /dev/zeta-flash3            5.3687E+10
                
3 rows selected.

SQL>

Last updated