tc 명령을 사용하여 설정된 매개변수를 어떻게 확인할 수 있습니까?

tc 명령을 사용하여 설정된 매개변수를 어떻게 확인할 수 있습니까?

내 애플리케이션의 성능 테스트를 위해 높은 대기 시간과 낮은 대역폭 연결을 시뮬레이션해야 합니다. 나는 이 명령을 설명하는 많은 페이지를 읽었습니다 tc. 그런데 내가 설정한 번호를 확인할 수가 없어요. 예를 들어:

다음 명령 값을 얻었습니다. https://www.excentis.com/blog/use-linux-traffic-control-impairment-node-test-environment-part-2

tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

이것을 (예를 들어 머신 A)에 적용할 때 페이지의 설명을 기반으로 출력 속도가 128kBps(적어도 약 128kBps)여야 한다고 가정합니다. 이를 테스트하기 위해 scp를 사용하여 A 머신에서 동일한 LAN에 있는 다른 머신 "B"로 2GB 파일을 전송하기 시작했습니다. 네트워크는 추가적인 손상 없이 최대 12MBps의 전송 속도를 달성할 수 있습니다. 그러나 전송이 시작되면 속도는 2MBps이며, 11kBps에서 24kBps 사이에서 흔들리고 멈출 때까지 멈추고 떨어집니다.

전송 중 양쪽의 네트워크 처리량을 모니터링하기 위해 nmon을 사용했지만 24kBps를 초과한 적이 없습니다(몇몇 54 및 62 판독값 제외).

또한 속도와 버킷 크기를 늘려 보았지만 scp 중 동작은 동일합니다. 버킷 크기와 속도를 늘리기 위해 다음 명령을 시도했습니다.

tc qdisc add dev eth0 root tbf rate 1024kbps burst 1024kb latency 500

scp는 여전히 멈춰 있고 동일한 속도(11-30kBps)로 변동하고 있습니다.

여기서 "이자율"이라는 단어를 추론하는 것이 잘못된 것입니까? tc의 매뉴얼 페이지를 확인했는데 내 설명이 올바른 것 같습니다. 매개변수 설정을 테스트하는 가장 좋은 방법이 무엇인지 설명해 줄 수 있는 사람이 있습니까(제가 올바르게 수행하고 있다고 가정)?

답변1

지연을 유발하려면 "netem" qdisc를 사용해야 합니다.

TBF qdisc의 "지연" 매개변수로 인해 주의가 산만해졌습니다. TBF qdiscs의 경우 이 매개변수는 대기열에 있는 패킷에 허용되는 최대 지연만 설정합니다. 예를 들어 단일 패킷의 대기 시간이 400밀리초일 정도로 대기열이 충분히 깊은 경우 해당 패킷은 테일 드롭됩니다. 이는 실제로 원하는 높은 대기 시간을 시뮬레이션하는 데 도움이 되지 않습니다.

다음과 같은 것을 사용하는 것이 좋습니다.

tc qdisc add dev eth0 root netem delay 400ms rate 1024kbps

참고: 킬로비트를 의미합니까?

tc 도구는 초당 킬로비트를 "kbit"로, 초당 킬로바이트를 "kbps"로 나타냅니다.

답변2

@user144844 답장을 보내주셔서 감사합니다. 참고로 netem금리 논쟁은 없습니다.

tbf매개 변수에 대한 나의 이해는 매우 명확합니다. 또한 latency토큰 버킷 필터와 일반 네트워크 대기 시간의 일부라는 것도 알고 있습니다 . 앞서 언급한 대로 rate2GB 파일로 테스트할 때 속도가 설정된 값으로 조절되는 것을 볼 수 없다는 것이 문제입니다 .scp

원래 질문으로 돌아가서: 저는 실제 시뮬레이션을 진행하기로 결정하고 256kbps 대역폭으로 설정한 서버를 통해 많은 가상 사용자가 일부 트랜잭션을 수행하도록 했습니다. 마지막으로 rate처리량이 968kbps(LAN 조건에서)에서 249kbps(적용 속도 사용)로 떨어졌기 때문에 tbf설정이 적용된 것이 분명해졌습니다 . 부하를 원본보다 2배, 3배로 늘려도 같은 상황이 지속되며 응답 시간에 영향을 미치는 것을 볼 수 있었습니다. 따라서 저는 매개변수 세트가 작동한다고 믿습니다. scp그것을 테스트하는 가장 좋은 방법은 아닙니다.

다음 명령을 사용하여 네트워크 조건을 설정합니다.

# tc qdisc add dev eth0 root handle 1: tbf rate 256kbit burst 256kbit latency 200ms
# tc qdisc add dev eth0 parent 1:1 handle 11: netem delay 50ms
# tc qdisc show
qdisc tbf 1: dev eth0 root refcnt 2 rate 256000bit burst 32Kb lat 200.0ms
qdisc netem 11: dev eth0 parent 1:1 limit 1000 delay 50.0ms

관련 정보