DRX의 최적화는 DRX가 제공하는 버퍼링과 압축 기능이 최적의 성능을 낼 수 있도록 DRX 내부 파라미터를 조절하거나 또는 시스템의 설정을 변경하는 것으로 수행합니다.
DRX가 낼 수 있는 버퍼링 성능은 10Gbps 네트워크에서 최대 6~7 Gbps 수준이며 압축 시 이 수치의 최소 1.5배 이상의 처리량을 보일 때 적절한 성능을 낸다고 볼 수 있습니다. 이러한 고성능 수치는 네트워크 대역이 충분할 때 측정 가능하며 보통의 WAN 구간에선 TX 네트워크 대역이 상당히 낮기 때문에 I/O 부하가 커지는 즉시 혼잡에 이르게 됩니다. 실제 운영 I/O 를 통해 최적화를 수행하기는 쉽지 않은 것 입니다. 이러한 상황을 감안하여 DRX에선 복제 I/O에 대한 적정한 수준의 시뮬레이션을 수행하는 drxsim을 별도 도구로 제공하고 있으며 drxsim 을 통해 복제 대역 상황을 미리 파악할 수 있게 합니다.
일반적으로 네트워크 대역은 iperf 와 같은 도구로 측정할 수 있으며 iperf 는 네트워크가 낼 수 있는 최대 대역을 산출합니다. drxsim은 로컬 drxsim에서 DRX로 I/O 부하를 주입시키고 WAN 구간으로 릴레이된 데이터를 원격 drxsim에서 수신하여 DRX가 네트워크에서 처리할 수 있는 순수한 처리량을 산출 합니다. drxsim에서 산출한 처리량이 iperf 의 수치와 비슷하거나 또는 drxsim 수치가 그 이상일 때(압축을 할 경우) DRX가 적절한 성능을 발휘한다고 할 수 있습니다. 반대로 drxsim의 수치가 iperf 수치에 비해 낮다면 DRX 설정에 조정이 필요하다고 판단할 수 있습니다.
이런 방식으로 WAN 구간의 대역 상황을 미리 파악함과 더불어 DRX의 기본 버퍼링 성능을 점검하고 그에 따라 DRX 버퍼의 적정한 크기를 산정하거나 압축 기능 도입 여부를 판단할 수 있습니다. drxsim의 자세한 사용방법은 drxsim 사용 가이드 의 내용을 참고하세요.
이상의 내용을 토대로 최적화의 요소는 다음으로 요약됩니다.
로컬 I/O 측면의 지연(latency), 처리량(throughput) 최적화는 복제 측면의 최적화로 다루어져야 합니다. 이에 대해선 BSR 최적화의 내용을 참고하십시요 |
DRX의 성능지표는 CLI 명령들을 통해 확인 할 수 있습니다.
버퍼의 사용량과 지연을 확인하는 명령어 입니다.
2.4 물리 메모리 사양 항목에서 계산으로 설정한 버퍼 사용량을 확인할 수 있습니다.
출력 예시
< 일반 모드 > [root@c73-p1 drx]# drx-ctl mem all -------------------------------------------------------------------------------------- Name Capacity Use (Size) Full Counts -------------------------------------------------------------------------------------- DR-1-3-c73-p2-c73-p1 716800 [>>>>>>>.....................] 23% (163277) 0 10240 [............................] 0% (0) - -------------------------------------------------------------------------------------- DR-2-3-c73-p2-c73-p1 512000 [............................] 0% (0) 0 10240 [............................] 0% (0) - -------------------------------------------------------------------------------------- Active bab counts : 2 <상세 모드> [root@c73-p1 drx]# drx-ctl mem all -v ---------------------------------------------------------------------------------------------------------- Name Capacity Begin End Use (Size) Full Counts ---------------------------------------------------------------------------------------------------------- DR-1-3-c73-p2-c73-p1 716800 340236152 504137496 [>>>>>>>.....................] 22% (160060) 0 10240 0 0 [............................] 0% (0) - ---------------------------------------------------------------------------------------------------------- DR-2-3-c73-p2-c73-p1 512000 64273922 64273922 [............................] 0% (0) 0 10240 0 0 [............................] 0% (0) - ---------------------------------------------------------------------------------------------------------- Active bab counts : 2 ---------------------------------------------------------------------------------------------------------- name Latency cur avg max min ---------------------------------------------------------------------------------------------------------- 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 Compress 00:00:00.000088 00:00:00.000087 00:00:00.001439 00:00:00.000001 Decompress 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 ---------------------------------------------------------------------------------------------------------- DR-2-3-c73-p2-c73-p1 TX BAB 00:00:00.000000 00:00:00.001627 00:00:00.004173 00:00:00.000261 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.000113 00:00:00.001440 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 drx]# |
DRX의 통계 정보를 확인하는 명령어입니다.
사용한 명령어
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 |
압축 ratio는 (압축전 사이즈 / 압축후 사이즈)로 계산되기 때문에 가독성을 위해서 소수점 둘째 자리까지 출력됩니다.
< 상세 모드 > [root@c69-1 bsr.d]# drx-ctl st all -v ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ name type tx rx t-raw t-net r-raw r-net ratio cur best worst cp-avg cp-cur cp-min cp-max ec-avg ec-cur ec-min ec-max dc-avg dc-cur dc-min dc-max de-avg de-cur de-min de-max ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ r0-c69-2-c69-1 data 184 0 13660 6821 0 1 1.93 0.00 18.07 1.00 0.000098 0 0.000001 0.013818 0 0 0 0 0 0 0 0 0.000189 0 0.000001 0.002338 r0-c69-2-c69-1 meta 0 0 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ All connections : 2, Established : 2 [root@c69-1 bsr.d]# < 사용자 출력 모드로 압축 항목만 출력 > [root@c69-1 bsr.d]# 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 ----------------------------------------------------------------------------------------------------------- name 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 bsr.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-net | RX-Network 전송 사이즈 | cp | compress | ||
r-raw | RX RAW 사이즈 | de | decompress |
최적화는 DRX의 BAB를 적절한 크기로 조정하고 압축을 위한 압축 인자를 조절하는 과정입니다.
bsr 구성파일 내의 "proxy" 섹션에서 "memlimit"의 값으로 BAB의 크기를 설정합니다.
proxy { memlimit 1G; } |
DRX에서 제공하는 압축 플러그인은 아래와 같습니다.
압축 종류 | 방식 | 압축률 설정 범위 | ETC |
---|---|---|---|
ZLIB | SW | 1~9 | - |
LZ4 | SW | 1~9 | - |
NONE | - | - | OFF |
압축 플러그인을 설정하는 명령어는 아래와 같습니다.
압축 타입 | 명령 | 출력 예시 | |
---|---|---|---|
ZLIB | drx-ctl set compress zlib [level] [connect name] |
| |
LZ4 | drx-ctl set compress lz4 [level] [connect name] |
| |
NONE | drx-ctl set compress none 0 [connect name] |
|
패킷 처리를 담당하는 Thread의 개수를 변경할 수 있습니다.
Thread 개수는 설정 파일의 "process-thread-count"값으로 설정됩니다. 설정하지 않거나 "-1"로 설정하면 "auto"모드로 동작하며 CPU core개수의 1/2로 계산되어 입력됩니다.
< 설정 > [root@c73-1 bsr.d]# drx-ctl set process-thread-count 10 Result: done. [root@c73-1 bsr.d]# < 설정 확인 > [root@c73-1 bsr.d]# drx-ctl show all ...(생략)... ip-verification=on process-thread-count=10 [root@c73-1 bsr.d]# |
DRX 전용 어플라이언스의 경우 BSR과 연결되는 로컬 복제 I/O 수신 구간에 대해 최적화를 수행할 수 있습니다. DRX는 기본적으로 응용주소 공간에서 버퍼링을 수행하도록 되어 있어서 BSR과 직접 연결되는 네트워크에서 구간의 수신성능에 따라 버퍼링 성능 차이가 있을 수 있습니다. 이 수신 성능은 OS 커널 소켓의 수신버퍼를 조절하여 RX 성능이 더욱 상향되도록 조절할 수 있습니다. OS 커널의 수신버퍼를 충분히 확보할 수 있도록 아래와 같은 방법으로 적용할 수 있습니다. 아래의 max 2 MB 적용은 하나의 예시로, 사용자 환경에 맞게 적용할 것을 권장합니다.
sysctl을 이용해서 시스템 설정값을 변경하는 것에는 주의가 필요합니다. 설정이 지나치면 시스템 동작에 문제를 일으킬 수 있으므로 충분한 테스트를 거친 후 적용해야 합니다. |
[root@c73-1 bsr.d]# sysctl -a | grep net.core.[rw]mem net.core.rmem_default = 212992 net.core.rmem_max = 212992 net.core.wmem_default = 212992 net.core.wmem_max = 212992 [root@c73-1 bsr.d]# |
sysctl -w net.core.rmem_max="2097152" sysctl -w net.core.wmem_max="2097152" |