7.1. 최적화 요소
DRX의 최적화는 DRX가 제공하는 버퍼링과 압축 기능이 최적의 성능을 낼 수 있도록 DRX 내부 파라미터를 조절하거나 또는 시스템의 설정을 변경하는 것으로 수행합니다. DRX가 낼 수 있는 버퍼링의 성능은 10Gbps 네트워크에서 최대 6~7 Gbps 수준이며 압축 수행 시 이 수치에 1.5배 이상의 처리량을 보일 때 적절한 성능을 낸다고 볼 수 있습니다. 그러나 이러한 고성능의 수치는 TX 측면의 네트워크 대역이 충분하다는 전제하의 수치이며, 보통 WAN 구간 상에선 TX 네트워크 대역이 상당히 낮기 때문에 I/O 부하가 커지는 즉시 DRX 버퍼가 채워지면서 결국 혼잡상태에 이르게 되어 최적화를 수행하기 위한 여건을 만들기 어렵습니다. 이러한 상황을 감안하여 DRX에선 복제 I/O에 대한 적정한 수준의 시뮬레이션을 수행하는 drbdsim 을 별도 도구로 제공합니다. 일반적으로 네트워크 대역은 iperf 와 같은 도구로 확인할 수 있으며 iperf 는 네트워크가 낼 수 있는 최대 대역을 산출합니다. drbdsim은 로컬 drbdsim에서 DRX로 I/O 부하를 주입시키고 WAN 구간으로 릴레이한 데이터를 원격 drbdsim에서 수신하여 DRX가 네트워크에서 처리할 수 있는 순수한 처리량을 산출 합니다. 따라서 drbdsim에서 산출한 처리량이 iperf 의 수치와 비슷하거나 또는 drbdsim 수치가 그 이상일 때(압축을 할 경우) DRX가 적절한 성능을 발휘한다고 할 수 있습니다. 반대로 drbdsim의 수치가 iperf 수치에 비해 상당히 낮다면 DRX 설정에 일부 조정이 필요하다고 생각될 수 있습니다.
이런 방식으로 drbdsim을 통해 WAN 구간의 대역 상황을 미리 파악하여 DRX의 기본 버퍼링 성능을 점검하고 그에 따라 DRX 버퍼의 적정한 크기를 산정하거나 압축 사용 여부를 판단합니다.
이상의 내용을 토대로 했을 때 최적화의 요소는 다음으로 요약됩니다.
- 복제 I/O 부하
- 네트워크 대역
- DRX 버퍼링
- 압축
로컬 I/O 측면의 지연(latency), 처리량(throughput) 최적화는 복제 측면의 최적화로 다루어져야 합니다. 이에 대해선 다음의 내용을 참고하십시요
7.2. 성능지표
DRX의 성능지표는 DRX에서 제공하는 CLI 명령들을 통해 확인 할 수 있습니다.
- 버퍼: memusage
- 압축: statistics
7.3. 최적화 절차
7.3.1 버퍼 크기 조절
7.3.2 압축 쓰레드 개수 조절
7.4. 기타
DRX 전용 어플라이언스의 경우 DRBD와 연동되는 로컬 복제 I/O 수신 구간에 대해 최적화를 수행할 수 있습니다. DRX는 기본적으로 응용주소 공간에서 버퍼링을 수행하도록 되어 있어서 DRBD와 직접적으로 연동되는 어플라이언스의 OS 커널의 수신성능에 따라 버퍼링 성능 차이가 있을 수 있습니다. 따라서 이 OS 커널 소켓의 수신버퍼를 조절하여 RX 수신 성능이 더욱 향상되도록 조절할 수 있습니다. OS 커널의 수신버퍼를 충분히 확보할 수 있도록 다음과 같은 내용을 OS 커널에 적용할 필요가 있습니다.
4. 성능 최적화
원격지로 복제 데이터를 전송할 때 DRX가 사용하는 버퍼링(이하 BAB) 사용률로 성능을 가늠할 수 있습니다.
4.1. BAB 최적화
복제가 진행중일 때도 BAB의 Full Counts값은 0이 유지되야하며 사용률(Use)은 지속적으로 증가하지 않고 균일한 사용량를 유지해야 합니다.
4.1.1 BAB 사이즈
운영 머신에서 측정한 I/O로 BAB 사이즈를 결정했으나 실운영에서 사용률(Use)이 높다면 BAB 사이즈를 조정해야 합니다.
- BAB 사이즈
- DRX Operation Guide의 "4. 버퍼 운영 정책"을 참조
BAB 사용률 확인 명령어
명령어
[root@c73-p1 logs]# drx-ctl show memusage
출력 결과
- 결과 확인
- 사용률 : 총 500MB를 BAB로 설정했으며 Full Counts 는 0이며 사용률(Use)도 0%입니다.
- 지연 시간 : TX BAB의 지연 시간 평균(avg)은 0.001136초(1.136 ms) 입니다.
4.1.2 BAB 사용률
대역폭보다 평균 I/O가 크면 압축 플러그인을 적용해서 원격지로 전송되는 데이터를 줄여서 BAB의 사용률(Use)을 줄일 수 있습니다.
- 플러그인 설정 방법
- 리소스 설정의 Proxy항목에 플러그인 항목을 추가합니다.
플러그인 항목
proxy { plugin { compressor iqa level 1; } }
- DRX를 재시작 합니다. (DRX 1.1 기준)
- 플러그인 사용 전
- 환경
- drbdsim을 이용해서 1Gbps의 대역폭으로 전송
- BAB 사용률(Use)
- 지속적으로 증가해서 Full Counts가 발생하고 있으며 TX BAB의 평균 Latency도 계속 증가하고 있습니다.
Command id (2) : show memusage ================================================================================================================================================ Name Capacity Begin End Size Full Counts Use ================================================================================================================================================ r0-74qat-p2-74qat-p1 524288000 (500.00 MB) 129088 482456776 482327688 (459.98 MB) 7690 91 % 10485760 (10.00 MB) 0 0 0 (0.00 B) - 0 % ------------------------------------------------------------------------------------------------------------------------------------------------ Active bab counts : 1 ------------------------------------------------------------------------------------------------------------- name Latency cur avg max min ============================================================================================================= r0-74qat-p2-74qat-p1 TX BAB 00:00:03.578904 00:00:03.069622 00:00:04.859810 00:00:00.000200 RX BAB 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 Compress 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 Decompress 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000
- 지속적으로 증가해서 Full Counts가 발생하고 있으며 TX BAB의 평균 Latency도 계속 증가하고 있습니다.
- 환경
- 플러그인 사용 후
- 환경
- drbdsim을 이용해서 1Gbps의 대역폭으로 전송
- 압축 플러그인 QAT Level 1으로 설정
- BAB 사용률(Use)
사용률(Use)의 증가는 미미한 수준을 유지하고 있습니다.
TX BAB의 평균 Latency는 0.33초로써 비압축보다 약 10배의 빠른 속도를 보이고 있습니다.
Command id (2) : show memusage ================================================================================================================================================ Name Capacity Begin End Size Full Counts Use ================================================================================================================================================ r0-74qat-p2-74qat-p1 524288000 (500.00 MB) 53524805 53524805 0 (0.00 B) 0 0 % 10485760 (10.00 MB) 0 0 0 (0.00 B) - 0 % ------------------------------------------------------------------------------------------------------------------------------------------------ Active bab counts : 1 ------------------------------------------------------------------------------------------------------------- name Latency cur avg max min ============================================================================================================= r0-74qat-p2-74qat-p1 TX BAB 00:00:00.685379 00:00:00.333085 00:00:00.703398 00:00:00.000978 RX BAB 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 Compress 00:00:00.000364 00:00:00.000365 00:00:00.011063 00:00:00.000039 Decompress 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 -------------------------------------------------------------------------------------------------------------
- 환경
4.2 압축 쓰레드 개수 조정 (작성중)
압축 쓰레드의 개수를 조정해서