FSR 복제성능의 최적화는 로컬 쓰기 I//O 지연시간과 복제 트래픽 처리량 두 가지 관점에서 설명합니다.
지연시간
FSR 은 시스템에 커널 필터 드라이버를 적재하여 로컬의 실시간 I/O 를 캡쳐 합니다. 이 점에서 로컬 쓰기 I/O 지연시간은 순수한 시스템의 성능지연에 따른 지연시간과 FSR 커널 엔진이 적재되어 동작함에 따라 발생하는 추가 지연시간 두 부분을 구별하여 생각해야 합니다.
- 순수 시스템 지연 시간
- FSR 커널 엔진 지연 시간
- 경로필터 탐색 시간
- 송신 버퍼를 위한 메모리 버퍼, 파일버퍼 크기
위 요소들에 의해 로컬 쓰기 I/O 의 총 지연시간은 시스템 지연시간과 FSR 커널엔진의 지연시간의 합으로 구해지며 그 중에서 FSR 커널엔진 지연은 경로필터 지연, 송신버퍼링 지연으로 분류됩니다. 이 지연요소들의 지연시간(Latency)을 최소화 할 때 최적의 성능을 도출할 수 있습니다.
먼저 FSR 엔진의 지연을 튜닝하기 전에 시스템 환경에서의 I/O 지연시간을 측정하여 환경적으로 성능 병목이 없는지 먼저 확인합니다. 이것은 일반적으로 사용하는 성능 측정 도구를 활용하여 측정하면 됩니다. 최근 성능이 좋은 스토리지 환경에서는 1회 쓰기 당 수 nano 초 수준의 응답성능으로 측정될 경우 병목이 없다고 보면 됩니다. 이것은 전적으로 하드디스크의 하드웨어 성능 명세에 좌우됩니다.
다음은 FSR 커널엔진 동작에 따른 지연입니다. 쓰기 I/O 가 FSR 커널 엔진으로 유입되면 해당 쓰기가 복제로 수행될 I/O 인지를 식별하기 위해 FSR 엔진 내부적으로 관리하는 경로필터에 대한 탐색을 수행합니다. 탐색 결과에 의해 복제로 수행될 I/O 로 판정되면 해당 I/O의 데이터를 타깃으로 전송하기 위해 메모리 버퍼로 복사합니다. 이 때 메모리 버퍼의 공간은 충분히 여유가 있어야 하며 혼잡하지 않아야 합니다. 만약 메모리 버퍼가 혼잡할 경우 I/O 는 메모리 버퍼를 건너뛰어 파일버퍼로 복사되며 파일버퍼 조차 넘치게 되면 복제가 중단되어 전체 재동기화 상태로 전환됩니다.
복제 I/O 를 판별하는 경로필터는 경로검색을 위해 최적의 알고리즘으로 구현되어 있으나 검색비용이 증가할 경우 Latency 의 저하는 불가피 합니다. 따라서 복제 대상 경로를 복잡하게 설정하거나 비 효율적으로 설정하는 것은 성능을 위해 바람직 하지 않습니다. 되도록 이면 제외필터를 활용하거나 경로필터의 요소 개수를 줄여서 설정하는 것이 바람직 합니다.
송신버퍼는 메모리버퍼와 파일버퍼 기능으로 제공됩니다. 파일버퍼는 하드디스크 공간을 버퍼로 활용할 수 있다는 점에서 장점이 있지만 디스크에 I/O를 해야 하는 만큼 성능의 저하를 감수해야 합니다. 파일버퍼링이 동작하게 되면 기존 디스크 I/O에 비해 2배의 I/O 가 발생하게 되므로 최상의 조건에서도 최소 2배의 성능저하가 있습니다. 만약 이러한 성능저하가 우려된다면 파일버퍼는 제외하고 메모리 버퍼만 사용해야 합니다. 그러나 시스템의 여유 메모리 공간은 한계가 있기 때문에 메모리 버퍼에만 의존하기 어려운 경우에는 메모리 버퍼와 파일버퍼를 적절히 혼합하여 사용할 것을 권장합니다.
처리량
FSR의 처리량에 영향을 주는 요소는 다음과 같습니다.
- FSR 엔진의 지연시간
- 네트워크 전송 대역
FSR 엔진의 지연시간이 낮을 수록 처리량은 좋아집니다. 윗 단락에서 얘기했듯이 FSR 엔진의 지연성능을 좋게하려면 기본적으로 좋은 서브시스템을 갖추어야 하며 FSR에 가능한 많은 메모리 자원을 할당하는 것이 좋습니다. 그러나 처리량이 아무리 높아져도 네트워크 전송대역에는 한계가 있기 때문에 복제 데이터 전송량은 네트워크 전송대역 내에서 처리됩니다.