7.1. 최적화 요소
DRX의 최적화는 DRX가 제공하는 버퍼링과 압축 기능이 최적의 성능을 낼 수 있도록 DRX 내부 파라미터를 조절하거나 또는 시스템의 설정을 변경하는 것으로 수행합니다. DRX가 낼 수 있는 버퍼링의 성능은 10Gbps 네트워크에서 최대 6~7 Gbps 수준이며 압축 수행 시 이 수치에 1.5배 이상의 처리량을 보일 때 적절한 성능을 낸다고 볼 수 있습니다. 그러나 이러한 고성능의 수치는 TX 측면의 네트워크 대역이 충분하다는 전제하의 수치이며, 보통 WAN 구간 상에선 TX 네트워크 대역이 상당히 낮기 때문에 I/O 부하가 커지는 즉시 DRX 버퍼가 채워지면서 결국 혼잡상태에 이르게 되어 최적화를 수행하기 위한 여건을 만들기 어렵습니다. 이러한 상황을 감안하여 DRX에선 복제 I/O에 대한 적정한 수준의 시뮬레이션을 수행하는 drbdsim을 별도 도구로 제공하고 drbdsim 을 통해 DRX 운영환경의 여건들을 미리 파악할 수 있습니다.
일반적으로 네트워크 대역은 iperf 와 같은 도구로 확인할 수 있으며 iperf 는 네트워크가 낼 수 있는 최대 대역을 산출합니다. drbdsim은 로컬 drbdsim에서 DRX로 I/O 부하를 주입시키고 WAN 구간으로 릴레이된 데이터를 원격 drbdsim에서 수신하여 DRX가 네트워크에서 처리할 수 있는 순수한 처리량을 산출 합니다. 따라서 drbdsim에서 산출한 처리량이 iperf 의 수치와 비슷하거나 또는 drbdsim 수치가 그 이상일 때(압축을 할 경우) DRX가 적절한 성능을 발휘한다고 할 수 있습니다. 반대로 drbdsim의 수치가 iperf 수치에 비해 상당히 낮다면 DRX 설정에 일부 조정이 필요하다고 판단할 수 있습니다.
이런 방식으로 WAN 구간의 대역 상황을 미리 파악함과 더불어 DRX의 기본 버퍼링 성능을 점검하고 그에 따라 DRX 버퍼의 적정한 크기를 산정하거나 압축 기능 도입 여부를 판단할 수 있습니다.
이상의 내용을 토대로 했을 때 최적화의 요소는 다음으로 요약됩니다.
- 복제 I/O 부하
- 네트워크 대역
- DRX 버퍼링
- 압축
Info |
---|
로컬 I/O 측면의 지연(latency), 처리량(throughput) 최적화는 복제 측면의 최적화로 다루어져야 합니다. 이에 대해선 다음의 내용을 참고하십시요 |
7.2. 성능지표
DRX의 성능지표는 DRX에서 제공하는 CLI 명령들을 통해 확인 할 수 있습니다.
...
출력 예시
...
theme | DJango |
---|
title | memusage |
---|
collapse | true |
---|
...
7.1. 최적화 요소
DRX의 최적화는 DRX가 제공하는 버퍼링과 압축 기능이 최적의 성능을 낼 수 있도록 DRX 내부 파라미터를 조절하거나 또는 시스템의 설정을 변경하는 것으로 수행합니다. DRX가 낼 수 있는 버퍼링의 성능은 10Gbps 네트워크에서 최대 6~7 Gbps 수준이며 압축 수행 시 이 수치에 1.5배 이상의 처리량을 보일 때 적절한 성능을 낸다고 볼 수 있습니다. 그러나 이러한 고성능의 수치는 TX 측면의 네트워크 대역이 충분하다는 전제하의 수치이며, 보통 WAN 구간 상에선 TX 네트워크 대역이 상당히 낮기 때문에 I/O 부하가 커지는 즉시 DRX 버퍼가 채워지면서 결국 혼잡상태에 이르게 되어 최적화를 수행하기 위한 여건을 만들기 어렵습니다. 이러한 상황을 감안하여 DRX에선 복제 I/O에 대한 적정한 수준의 시뮬레이션을 수행하는 drbdsim을 별도 도구로 제공하고 drbdsim 을 통해 DRX 운영환경의 여건들을 미리 파악할 수 있습니다.
일반적으로 네트워크 대역은 iperf 와 같은 도구로 확인할 수 있으며 iperf 는 네트워크가 낼 수 있는 최대 대역을 산출합니다. drbdsim은 로컬 drbdsim에서 DRX로 I/O 부하를 주입시키고 WAN 구간으로 릴레이된 데이터를 원격 drbdsim에서 수신하여 DRX가 네트워크에서 처리할 수 있는 순수한 처리량을 산출 합니다. 따라서 drbdsim에서 산출한 처리량이 iperf 의 수치와 비슷하거나 또는 drbdsim 수치가 그 이상일 때(압축을 할 경우) DRX가 적절한 성능을 발휘한다고 할 수 있습니다. 반대로 drbdsim의 수치가 iperf 수치에 비해 상당히 낮다면 DRX 설정에 일부 조정이 필요하다고 판단할 수 있습니다.
이런 방식으로 WAN 구간의 대역 상황을 미리 파악함과 더불어 DRX의 기본 버퍼링 성능을 점검하고 그에 따라 DRX 버퍼의 적정한 크기를 산정하거나 압축 기능 도입 여부를 판단할 수 있습니다.
이상의 내용을 토대로 했을 때 최적화의 요소는 다음으로 요약됩니다.
- 복제 I/O 부하
- 네트워크 대역
- DRX 버퍼링
- 압축
Info |
---|
로컬 I/O 측면의 지연(latency), 처리량(throughput) 최적화는 복제 측면의 최적화로 다루어져야 합니다. 이에 대해선 다음의 내용을 참고하십시요 |
7.2. 성능지표
DRX의 성능지표는 DRX에서 제공하는 CLI 명령들을 통해 확인 할 수 있습니다.
7.2.1 BAB 성능지표 확인 : memusage
BAB의 사용률과 Latency를 확인하는 명령어 입니다.
- BAB의 사용량과 Latency를 통해서 BAB의 성능을 확인합니다.
출력 예시
- Capacity : 리소스에 설정한 BAB 사이즈이며 단위는 Kilobytes입니다.
- Use (Size) 항목 : BAB 사용률과 Size입니다. Size의 단위는 Kilobytes입니다.
- BAB Latency는 TX, RX, Compress, Decompress 항목에 대한 현재(cur), 평균(avg), 최대(max), 최소(min)값을 microseconds 단위로 출력합니다.
Code Block |
---|
theme | DJango |
---|
title | memusage |
---|
collapse | true |
---|
|
< 일반 모드 >
[root@c73-p1 dgkim]# drx-ctl mem all
--------------------------------------------------------------------------------------
|
DR-1-3-c73-p2-c73-p1 716800 [>>>>>>>.....................] 23% (163277) 010240 [............................] 0% (0) -
Counts
-------------------------------------------------------------------------------------- |
----------2512000.....>>>>>>>..................... |
..0% 00
10240 [............................] 0% (0) -
--------------------------------------------------------------------------------------
DR-2-3-c73-p2-c73-p1 512000 |
Activebab counts : 2
<상세 모드>
[root@c73-p1 dgkim]# drx-ctl mem all -v
------------------------------------- [............................] 0% (0) 0
10240 [............................] 0% (0) -
--------------------------------------------------------------------- |
Name Capacity Begin End Use (Size) Full Counts
-----------------
Active bab counts : 2
<상세 모드>
[root@c73-p1 dgkim]# drx-ctl mem all -v
---------------------------------------------------------------------------------------------------------- |
-----------------------------
DR-1-3-c73-p2-c73-p1 716800 340236152 504137496 [>>>>>>>.....................] 22% (160060) 0
Name Capacity Begin End Use (Size) |
1024000 [............................] 0% (0) -
Counts
---------------------------------------------------------------------------------------------------------- |
-------------251200064273922 64273922 [>>>>>>>..................... |
.......] 0% (0) ] 22% (160060) 0
10240 0 0 [............................] 0% (0) -
----------------------------------------------------------------------------------------------------------
DR-2-3-c73-p2-c73-p1 512000 |
Activebabcounts:2
----------------------------------------------------------------------------------------------------------
name [............................] 0% (0) 0
|
Latencycuravgmax min [............................] 0% (0) -
----------------------------------------------------------------------------------------------------------
|
DR-1-3-c73-p2-c73-p1 TX BAB 00:00:00.000000 00:00:00.443516 00:00:06.765142 00:00:00.000101
RX BAB 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 Active bab counts : 2
----------------------------------------------------------------------------------------------------------
name Latency cur |
Compress00:00:00.000088 00:00:00.000087 00:00:00.001439 00:00:00.000001Decompress 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000min
----------------------------------------------------------------------------------------------------------
DR- |
21-3-c73-p2-c73-p1 TX BAB 00:00:00.000000 00:00:00. |
00162700004173000261000101
RX BAB 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000
Compress 00:00:00. |
000000000113001440001439 00:00:00.000001
Decompress 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000
----------------------------------------------------------------------------------------------------------
|
Active bab counts : 2
[root@c73-p1 dgkim]#
압축 성능지표 확인: statistics
7.2.2 압축 성능지표 확인: statistics
DRX의 통계 정보를 확인하는 명령어입니다.
...
- 사용자 출력 모드인 filter옵션을 사용해서 압축 통계 정보를 확인합니다.
- 압축률의 평균(ratio)값으로 복제가 이루어지는 데이터의 압축 효율을 확인할 수 있습니다.
- 압축시 평균시간(cp-avg)과 압축 해제시 평균시간(dc-avg)으로 압축 성능을 확인할 수 있습니다.
사용한 명령어
Code Block |
---|
drx-ctl st all -v --filter=name,type,ratio,cur,best,worst,cp-avg,cp-cur,cp-min,cp-max,dc-avg,dc-cur,dc-min,dc-max |
- 출력 예시
7.3. 최적화 절차
최적화는 DRX의 버퍼를 적절한 크기로 조정하고 압축을 위한 압축 인자를 조절하는 과정입니다.
7.3.1 버퍼 크기
7.3.2 압축
7.4. 기타
DRX 전용 어플라이언스의 경우 DRBD와 연동되는 로컬 복제 I/O 수신 구간에 대해 최적화를 수행할 수 있습니다. DRX는 기본적으로 응용주소 공간에서 버퍼링을 수행하도록 되어 있어서 DRBD와 직접적으로 연동되는 어플라이언스의 OS 커널의 수신성능에 따라 버퍼링 성능 차이가 있을 수 있습니다. 따라서 이 OS 커널 소켓의 수신버퍼를 조절하여 RX 수신 성능이 더욱 향상되도록 조절할 수 있습니다. OS 커널의 수신버퍼를 충분히 확보할 수 있도록 다음과 같은 내용을 OS 커널에 적용할 필요가 있습니다.
type ratio cur best worst cp-avg cp-cur cp-min cp-max dc-avg dc-cur dc-min dc-max
-----------------------------------------------------------------------------------------------------------
r0-c69-2-c69-1 data 1.91 1.94 18.07 1.00 0.000088 0.000139 0.000001 0.013818 0 0 0 0
r0-c69-2-c69-1 meta
-----------------------------------------------------------------------------------------------------------
All connections : 2, Established : 2
[root@c69-1 drbd.d]#
|
축약어 설명
축약어 | 설명 | 축약어 | 설명 | 축약어 | 설명 |
---|
tx | TX speed | ratio | compress average ratio | ec | encrypto |
rx | RX speed | cur | compress current ratio | dc | decrypto |
t-net | TX-Network 전송 사이즈 | worst | compress worst ratio |
|
|
t-raw | TX RAW 사이즈 | best | compress best ratio |
|
|
r-raw | RX-Network 전송 사이즈 | cp | compress |
|
|
r-net | RX RAW 사이즈 | de | decompress |
|
|
7.3. 최적화 절차
최적화는 DRX의 BAB를 적절한 크기로 조정하고 압축을 위한 압축 인자를 조절하는 과정입니다.
7.3.1 버퍼(BAB) 크기
DRBD 구성파일 내의 "proxy" 섹션에서 "memlimit"의 값으로 BAB의 크기를 설정합니다.
Code Block |
---|
proxy {
memlimit 1G;
} |
7.3.2 압축
DRX에서 제공하는 압축 플러그인은 아래와 같습니다.
압축 플러그인을 설정하는 명령어는 아래와 같습니다.
압축 타입 | 명령 | 출력 예시 |
---|
IQA | drx-ctl set compress iqa [level] [connect name] |
Code Block |
---|
theme | DJango |
---|
title | set compress |
---|
collapse | true |
---|
| < 압축 플러그인을 IQA로 설정 >
[root@c73-qat-1 drbd.d]# drx-ctl set compress iqa 1 r0-c73-qat-2-c73-qat-1
r0-c73-qat-2-c73-qat-1: updated.
Result: 1 resource(s) updated.
[root@c73-qat-1 drbd.d]#
|
|
ZLIB | drx-ctl set compress zlib [level] [connect name] |
Code Block |
---|
theme | DJango |
---|
title | set compress |
---|
collapse | true |
---|
| < 압축 플러그인을 ZLIB로 설정 >
[root@c73-qat-1 drbd.d]# drx-ctl set compress zlib 1 r0-c73-qat-2-c73-qat-1
r0-c73-qat-2-c73-qat-1: updated.
Result: 1 resource(s) updated.
[root@c73-qat-1 drbd.d]#
|
|
LZ4 | drx-ctl set compress lz4 [level] [connect name] |
Code Block |
---|
theme | DJango |
---|
title | set compress |
---|
collapse | true |
---|
| < 압축 플러그인을 LZ4로 설정 >
[root@c73-qat-1 drbd.d]# drx-ctl set compress lz4 1 r0-c73-qat-2-c73-qat-1
r0-c73-qat-2-c73-qat-1: updated.
Result: 1 resource(s) updated.
[root@c73-qat-1 drbd.d]#
|
|
NONE | drx-ctl set compress none 0 [connect name] |
Code Block |
---|
theme | DJango |
---|
title | set compress |
---|
collapse | true |
---|
| < 압축 플러그인을 OFF >
[root@c73-qat-1 drbd.d]# drx-ctl set compress none 0 r0-c73-qat-2-c73-qat-1
r0-c73-qat-2-c73-qat-1: updated.
Result: 1 resource(s) updated.
[root@c73-qat-1 drbd.d]#
|
|
7.4. 기타
DRX 전용 어플라이언스의 경우 DRBD와 연동되는 로컬 복제 I/O 수신 구간에 대해 최적화를 수행할 수 있습니다. DRX는 기본적으로 응용주소 공간에서 버퍼링을 수행하도록 되어 있어서 DRBD와 직접적으로 연동되는 어플라이언스의 OS 커널의 수신성능에 따라 버퍼링 성능 차이가 있을 수 있습니다. 따라서 이 OS 커널 소켓의 수신버퍼를 조절하여 RX 수신 성능이 더욱 향상되도록 조절할 수 있습니다. OS 커널의 수신버퍼를 충분히 확보할 수 있도록 다음과 같은 내용을 OS 커널에 적용할 필요가 있습니다.
7.4.1 Linux Kernel Network Parameter
Info |
---|
sysctl을 이용해서 값을 변경하는 것은 시스템이 crash될 위험 요소가 있다는 것을 인지해야 합니다. 시스템에 무리한 값을 설정했을 경우 그 즉시 시스템이 멈출 수도 있기 때문에 충분한 테스트 후에 진행되야 합니다. |
- TCP socket buffer size 변경