Table of Contents | ||
---|---|---|
|
개요
drxsim은 기본적으로 bsr 과의 네트워크 연결과 제한 없는 용량의 복제 데이터 전송을 시뮬레이션 하여 DRX가 drx가 가진 원천적인 복제 성능을 측정할 수 있는 환경을 제공하는 도구입니다. I/O를 시뮬레이션하므로 이를 위해 drxsim은 bsr 과의 네트워크 연결, 최대 성능 측정을 위한 무제한의 복제 데이터 전송을 시뮬레이션 합니다. 로컬/원격 drx 서비스만 구동해 놓으면 drxsim 자체적으로 처리하기 때문에 복제 리소스(디스크, 네트워크 연결)를 는 준비하지 않아도 됩니다.
주요 기능
- bsr 연결 시뮬레이션
- Acceptor/Connector 두 채널의 연결을 시뮬레이션
- 데이터 전송
- DRX의 성능 측정을 위해 하드디스크 액세스 없이 대량의 데이터를 전송
- 데이터 유형
- zero-fill: 0x00으로 채워진 데이터
- sequencial: 0x00 ~ 0xFF로 순차적으로 증가하는 데이터
- random: 랜덤 생성된 데이터
- 파일 지정: 지정된 파일의 내용을 순환하며 전송
- 데이터 무결성 검사
- 성능을 우선시하기 위해, 패킷 헤더와 데이터 시작/끝부분만 판단하는 저수준의 데이터 무결성 점검 기능이 포함됨 (CRC체크)
사용 방법
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
[root@proxy1 drxsim_demo]# ./drxsim Usage: .\drxsim.exe [options] command {command_arguments...} Global options: -h [ --help ] Help message. -l [ --stdout-log-level ] arg (=info) Standard output log level -f [ --file-log-level ] arg (=debug) File log level -o [ --output ] arg Output file --command arg Command to execute --subargs arg Arguments for command Commands: standby, control, wait, send-once, send Log levels: trace(T), debug(D), info(I), warning(W), error(E), critical(C), off(O) * last modified : Nov 19 2018, 17:41:41 |
...
- l / stdout-log-level: 화면에 출력되는 로그의 레벨 지정
- f / file-log-level: 파일로 출력되는 로그의 레벨 지정
- o / output: 로그를 저장할 파일명을 지정
단독 실행 모드
wait 모드
usage: drxsim [options] wait peer_ip peer_port
...
중간의 접속 오류는 원격 drxsim이 아직 가동중이 아니기 때문에 발생한 것이다.
send-once 모드
usage: drxsim [options] send-once peer_ip peer_port
...
데이터 전송이 이루어지면 B/W 측정 결과가 출력된다. B/W는 초당 한번 출력되고 총 4개의 과거 데이터를 합산하여 평균 값을 사용하므로, 한번의 데이터 전송으로 4초간의 B/W 측정 결과가 출력되었다.
send 모드
usage: drxsim [options] send peer_ip peer_port
...
Code Block | ||||
---|---|---|---|---|
| ||||
[root@proxy1 drxsim_demo]# ./drxsim send -p 5000 200.60.211.252 5000 -s 5 -b 6G -t s [08:46:23.997586] [t83947] [app:info] Start [08:46:23.998114] [t83947] [resource:info] Start (Listen 5000, Peer 200.60.211.252:5000) [08:46:23.998241] [t83947] [resource:info] [C] Connect to 200.60.211.252:5000 [08:46:23.998289] [t83947] [resource:info] [A] Listen 0.0.0.0:5000 [08:46:23.998292] [t83947] [resource:info] [A] Accept... [08:46:23.998488] [t83950] [resource:error] [C] Can't connect to 200.60.211.252:5000. 연결이 거부됨 [08:46:25.167158] [t83950] [resource:info] [A] Accepted 200.60.211.252:43890 [08:46:25.199745] [t83950] [resource:info] [C] Connected. Send magic packet [08:46:25.199780] [t83951] [resource:info] [C:meta] Start process [08:46:25.199793] [t83951] [resource:info] [A:data] Start process [08:46:25.199800] [t83951] [resource:info] [repl_test] Prepare test... [08:46:25.199888] [t83951] [resource:info] [repl_test] Start replication test (duration: 5s, limits: 6.00 Gbps, packet_type: sequencial) [08:46:26.199980] [t83950] [resource:info] [statistics] TX Bandwidth: 6.00 Gbps / 715.66 MB/s, RX Bandwitdh: 0.00 bps / 0.00 B/s [08:46:27.199975] [t83951] [resource:info] [statistics] TX Bandwidth: 6.00 Gbps / 715.50 MB/s, RX Bandwitdh: 0.00 bps / 0.00 B/s [08:46:28.199975] [t83950] [resource:info] [statistics] TX Bandwidth: 6.00 Gbps / 715.45 MB/s, RX Bandwitdh: 0.00 bps / 0.00 B/s [08:46:29.199977] [t83951] [resource:info] [statistics] TX Bandwidth: 6.00 Gbps / 715.42 MB/s, RX Bandwitdh: 0.00 bps / 0.00 B/s [08:46:30.199901] [t83951] [resource:info] [repl_test] Test finished [08:46:30.199974] [t83950] [resource:info] [statistics] TX Bandwidth: 6.00 Gbps / 715.31 MB/s, RX Bandwitdh: 0.00 bps / 0.00 B/s [08:46:31.199971] [t83951] [resource:info] [statistics] TX Bandwidth: 4.50 Gbps / 536.48 MB/s, RX Bandwitdh: 0.00 bps / 0.00 B/s [08:46:32.199997] [t83950] [resource:info] [statistics] TX Bandwidth: 3.00 Gbps / 357.64 MB/s, RX Bandwitdh: 0.00 bps / 0.00 B/s [08:46:33.200004] [t83951] [resource:info] [statistics] TX Bandwidth: 1.50 Gbps / 178.80 MB/s, RX Bandwitdh: 0.00 bps / 0.00 B/s |
대기/제어 모드
standby 모드
usage: drxsim.exe [options] standby
...
Code Block | ||||
---|---|---|---|---|
| ||||
[root@proxy1 drxsim_demo]# ./drxsim standby -p 9101 [08:51:56.413599] [t18932] [app:info] Start standby mode (port: 9101) |
control 모드
usage: drxsim.exe [options] control [actions...]
...
이 모드에서 동작의 결과를 얻기 위해서는 로그의 표준 출력을 비활성화해야 한다.
list - 리소스 목록 출력
추가된 리소스의 목록을 출력한다.
Code Block | ||||
---|---|---|---|---|
| ||||
[root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=1 list {"code": 0, "result": ["r0", "r1"]} [root@proxy1 drxsim_demo]# ./drxsim control -l=O list code: 0 result: r0 r1 [root@proxy1 drxsim_demo]# ./drxsim control -l=O -p 9102 list code: 0 result: empty |
add - 리소스 추가
add [resource_name] [listen_ip] [listen_port] [peer_ip] [peer_port]
Code Block | ||||
---|---|---|---|---|
| ||||
[root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=0 -p 9101 add r0 0.0.0.0 9000 127.0.0.1 9001 code: 0 result: ok [root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=1 -p 9102 add r0 0.0.0.0 9001 127.0.0.1 9000 {"code": 0, "result": "ok"} |
del - 리소스 제거
del [resource_name]
Code Block | ||||
---|---|---|---|---|
| ||||
[root@proxy1 drxsim_demo]# ./drxsim control -l=O del r0 code: 0 result: ok [root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=1 del r0 {"code": -3000, "error": "There is no resource 'r0'.", "result": "failed"} |
send - 데이터 전송
send [resource_name] [packet_type or filename] [total_length] [duration] [bps_limit]
...
Code Block | ||||
---|---|---|---|---|
| ||||
[root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=1 -p 9101 send r0 data.db 1G 0 100M {"code": 0, "result": "ok"} |
stop - 데이터 전송 중지
stop [resource_name]
Code Block | ||||
---|---|---|---|---|
| ||||
[root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=1 -p 9101 stop r0 {"code": 0, "result": "ok"} |
states - 리소스 상태 출력
states [resource_name or all]
...
Code Block | ||||
---|---|---|---|---|
| ||||
[root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=0 -p 9101 states r0 code: 0 result: rx_bps: 0 rx_bps_to_human: 0.00 bps state: connected testing: true tx_bps: 12501528 tx_bps_to_human: 100.01 Mbps [root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=1 -p 9102 states r0 {"code": 0, "result": {"rx_bps": 12501528, "rx_bps_to_human": "100.01 Mbps", "state": "connected", "testing": false, "tx_bps": 0, "tx_bps_to_human": "0.00 bps"}} [root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=0 -p 9101 states all code: 0 result: r0: rx_bps: 0 rx_bps_to_human: 0.00 bps state: connected testing: false tx_bps: 0 tx_bps_to_human: 0.00 bps [root@proxy1 drxsim_demo]# ./drxsim control -l=O --json=1 -p 9102 states all {"code": 0, "result": {"r0": {"rx_bps": 0, "rx_bps_to_human": "0.00 bps", "state": "connected", "testing": false, "tx_bps": 0, "tx_bps_to_human": "0.00 bps"}}} |
quit - 종료
대기모드인 drxsim을 종료한다. 성공시에는 별도의 출력이 없다.
...