Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 26 Next »


FSR 의 최적화는 로컬 I//O의 지연시간과 복제 트래픽 처리량 두 가지 측면에서 설명합니다.

지연시간

로컬 I/O 가 발행되어 디스크에 쓰여진 후 완료 되기 까지 소요된 시간을 응답시간 또는 지연시간(Latency)이라고 합니다. 지연시간이 낮을 수록 반대로 I/O 회수는 증가 하므로 성능이 좋아집니다. 이와 반대로 지연시간이 증가하면 시간 당 I/O 회수가 감소 하므로 성능이 떨어집니다. 즉 fsr 엔진의 성능을 최적화하려면 이 지연시간이 최소화 되도록 fsr 의 구성 조건들을 조정해서 동작시켜야 합니다.

다음에 설명하는 지연 요소들을 fsr 의 성능모니터를 사용하여 실시간 추적하고 병목이 발생하는 요인들을 확인한 후 그에 맞는 적절한 대응방안을 적용해야 합니다.

시스템 지연

fsr 엔진의 지연요소를 확인하기에 앞서 시스템 자체의 지연시간이 어느 정도인지 파악합니다. 이를 파악하려면 복제를 구성하지 않은 볼륨의 순수한 I/O 성능을 확인해야 합니다. 스토리지의 성능에 따라 다르지만 통상 4KB 단위 I/O를 수행했을 때의 지연시간은 수 nano sec 수준이면 적당한 수치의 성능이라고 보면 됩니다. 이 보다 높게 측정된다면 시스템 자체의 지연이 있는 상태이며  스토리지 자체의 성능을 점검해 볼 필요가 있습니다.

fsr 엔진 지연

다음의 요소들은 fsr 엔진에서 구현하는 구성요소들이며 성능 모니터를 통해 각 요소들 구간의 지연시간을 추적할 수 있습니다.

경로필터

fsr 로 I/O 가 유입되면 fsr 엔진은 경로필터 로직을 수행하여 I/O 의 경로가 리소스 내의 경로인지 즉 복제 대상 I/O 인지를 식별합니다. 이 과정에서 발생하는 지연시간은 fsr에 등록된 복제 대상 경로가 많아질 수록 증가합니다. 따라서 리소스의 복제 대상 경로의 수를 되도록 이면 적게 유지하는 게 바람직합니다. 예를 들어, 개별 파일로 복제 대상을 지정하기 보다는 복제 대상의 최상위 디렉터리 경로로 지정하는게 관리하기도 좋고 성능에도 좋습니다.

제외필터

경로필터와 더불어 사용하는 제외필터의 개수가 많아질 수록 성능에 좋지 않습니다. 되도록이면 제외필터의 개수가 적게 유지되도록 구성하십시오.

로컬 I/O

fsr은 복제 데이터를 버퍼링하기 전에 로컬 쓰기를 먼저 수행합니다. 이 때 로컬 쓰기 I/O 는 위에서 설명한 시스템 지연 시간과 이론적으로 동일한 성능 이어야 합니다. 만약 시스템 지연시간과 차이를 보인다면 이는 어딘가에 문제가 있다는 것을 의미 합니다. 이것은 대부분 fsr 엔진 내부의 병목 문제일 수 있습니다.

송신 버퍼링

로컬 쓰기 I/O 가 완료된 후 복제 데이터를 버퍼로 큐잉하고 원본 I/O를 완료합니다. 버퍼링이 빨리 되어서 원본 I/O 가 즉시 완료된다면 성능이 좋겠지만 버퍼링에 시간이 걸린다면 그 만큼 병목이 발생하고 I/O 가 지연됩니다.

이 때 사용하는 버퍼는 메모리 버퍼와 파일버퍼로 제공 되며 메모리 버퍼는 성능이 높기 때문에 별로 문제가 되지 않지만 파일버퍼는 실제 파일을 버퍼로 삼기 때문에 파일 I/O 가 기존에 비해 두 배로 발생하고 이 병목에 따른 성능저하가 발생합니다. 성능을 고려하면 메모리버퍼를 많이 사용하는게 좋지만 시스템의 자원 상황에 따라 파일버퍼를 같이 운영해야 할 경우라면 이러한 성능저하는 감안하고 사용해야 합니다.

전송 지연

로컬 I/O 는 버퍼링이 되는 시점에 완료가 되므로 버퍼링된 이후의 구간은 로컬 I/O 지연과는 무관합니다. 버퍼링된 데이터가 TX 로 빠져나가는 데 걸리는 데 드는 전송지연은 버퍼링 성능 측면의 지표입니다. 이 성능이 좋아야(전송지연이 낮아야) 복제가 원할하며 만약 버퍼링에 병목이 있다면 fsr 은 버퍼 넘침이 빈번하게 발생되면서 복제 상태를 유지하지 못하고 동기화를 반복하게 됩니다. 버퍼링 성능이 좋지 못한 경우는 fsr 내부 병목의 문제일 가능성이 높습니다.

물론 이것은 네트워크 전송대역이 감당할 수 있는 범위에 한정한 얘기입니다. 만약 로컬 I/O 대역에 비해 네트워크 전송대역이 많이 낮아서 전송대역이 받쳐주지 못하는 상황이라면 대역폭을 더 늘리거나 로컬 I/O 의 분배를 고려해야 합니다.


처리량

단위 시간 당 전송할 수 있는 데이터 양을 처리량으로 정의하며 실시간 복제를 유지하기 위해서는 적어도 로컬 I/O 부하보다 FSR 의 처리량 성능이 좋아야 합니다. 만약 로컬 I/O 부하에 비해 복제 처리량이 낮으면 버퍼 넘침이 유발되어 재동기화 상태가 반복되는 등 복제 상태가 유지되지 못할 수 있습니다. 이를 위해 다음의 내용들이 충족될 수 있도록 고려해야 합니다.

하드웨어

허드웨어의 사양이 높을 수록 처리량은 좋아집니다. 기본적으로 CPU, 메모리, 하드디스크 등 좋은 성능의 I/O 서브시스템을 갖추어야 하며 FSR에는 송신버퍼링을 위한 메모리 자원을 충분히 할당하는 것이 좋습니다.

네트워크 대역

네트워크 전송대역의 한계로 인해 처리량은 네트워크 전송대역 내에서 처리됩니다. 따라서 전송 대역을 최대한 크게 확보하는 게 유리하지만 적어도 로컬에서 발생하는 쓰기 I/O 의 부하량을 미리 파악하고 복제 대역을 미리 추산하여 네트워크 대역을 산정하는 것이 일반적 입니다. 복제 대역을 산정 하려면 로컬 시스템의 쓰기 I/O 에 대한 모니터링을 수행해야 합니다. 예를 들어 로컬 시스템의 평균 쓰기 I/O 가 200MB/s 라고 하면 복제를 위해서 적어도 10Gbps 네트워크 망이 구축되어야 합니다. 

압축

복제 데이터를 압축하여 전송하면 처리량을 개선할 수 있습니다. 데이터 크기를 압축하여 전송에 따르는 소요시간을 줄이는 것은 처리량을 개선하는 가장 고전적인 접근 방법입니다. 다만 소프트웨어적인 압축은 CPU 의 사용량을 점유하기 때문에 로컬에서의 압축은 시스템에 일정 수준의 부하가 발생할 수 있으므로 이를 감안해야 합니다. fsr의 압축 알고리즘은 가장 빠른 압축성능을 제공하는 LZ4 입니다.






  • No labels