10G 랜카드를 쓰고 있는데 속도가 너무 느리네요. 뭐가 문제일까요?

최규동   
   조회 20926   추천 0    

안녕하세요 추운날씨에 감기조심하세요. 
조금만 참으면 따뜻한 봄날이 오겠죠 ^^

다름이 아니라 10G 광랜카드로 패킷을 보내는데 속도가 너무 느린것 같아서 몇글자 여쭙니다.

시스템은 제온5130 2.0G 2개
OS = 윈도우 2003 서버
메모리 DDR2 5300 8G

패킷크기 371바이트
패킷갯수 1000개

1000개의 패킷을 TCP/IP 로 보내는데 약 100ms 가 걸리네요
속도를 계산해보니   371 * 1000 * 8 bit  / 100 ms = 29.68  메가 bit/sec 가 나오네요

와이어샤크로 패킷을 떠보니 패킷간의 간격은 일정합니다. 

패킷은 메모리상에 이미 만들어 놓고 for 문을 이용해서 쉬지 않고 보냅니다. 

저희쪽 랜카드 설정은 디폴트(?) 로 되어 있습니다.
상대 서버의 네트워크 설정에 따라서 이렇게 느려질 수 도 있나요?

어디부터 체크해 봐야 할까요?
많은 조언 부탁드립니다.





짧은글 일수록 신중하게.
강희환 2015-01
제가 스위치끼리 연결 이외에 단말에서10G망을 사용해보지는 못했지만,
패킷 사이즈를 크게 하면 전송률이 올라갈 것 같은데,  전송률이 100Mbps 도 안되네요.
일단은 상대 서버와 연결된 네트웍 각 구간의 연결속도를 모두 확인해보셔야 할 것 같습니다.
최규동 2015-01
답글 감사합니다  네트웍 구간이랄 것도 없이 바로 옆에 있습니다.  컴 -> 스위치 -> 서버 입니다.
박문형 2015-01
10G는 씨피유 부하가 많습니다.

씨피유가 딸리던지 , OS가 너무 구형이 아닌가 하는 생각이 듭니다.
네트웍 카드가 뭘까요?
최규동 2015-01
답글 감사합니다.
박스에 HP NC522SFP+ Dual Port 10G Svr Adptr 이라고 써있네요
     
설영수 2015-01
NC522SFP+ 면 Qlogic OEM으로 생각됩니다. (아마 qle3142 모델)

기본적으로 TOE 미지원 모델이라 cpu부하가 상당하며 성능이 별로 입니다. (TOE기능을 사용할려면 라이센스를 추가해야 가능했던걸로 기억합니다..)

서버간 iperf로 테스트 해보시고 jumbo frame 설정 및 windows 2003 tcp/ip 튜닝 한번 해보세요
카피콘 2015-01
다른 네트워크 간의 테스트는 아니시죠?
같은 네트워크 내에서 테스트 한다는 전제로 의견 드립니다.

혹시 전송 오버헤드는 없나요?
만약 테스트 장비가 동일한 스위치에 물려 있다면,
각 장비 NIC 의 MTU 값과, 스위치 포트의 MTU 값이 같도록 설정해 보세요.
여러 스위치를 경유 하는 경우에도 마찬가지로, 각 스위치의 포트 MTU 도 같도록 맞춰서 테스트 해보세요.
강희환 2015-01
서버-스위치, 스위치-PC 구간이 모두 10Gps이라는 말씀이시죠?
100Mbps구간이라고 하더라도 최대 전송율이 29.68Mbps 이라면 비정상입니다.
전송율이 적게 나온 이유는, 제 추측에는 비효율적인 방법으로 데이터를 보냈기 때문이라고 봅니다.

371byte 패킷 1000개를 for루프로 보내서 측정하셨다고 하였는데요,
직접 프로그램을 만드신거고, 패킷 전송 코드 앞뒤로 시스템의 시간을 구해서 그 차이를 합산하셨겠죠?

371KB를 1000번 나눠서 보냈다면, 전체적으로 굉장히 적은 양을 전송하신 것이고, 그것도 나눠서 보내신거에요.
그럼 network system call 횟수가 데이터 사이즈에 비해서 많기 때문에 그 부분을 처리하는 시간이 전체 수행시간에서 큰 비중을 차지하게 됩니다.

한번에 데이터를 보내실 때 1MB 정도로 전송을 해보세요.
아마 패킷사이즈를 증가시킴에 따라서 전송율이 크게 오를 것입니다.

더 좋은 방법은 위엣분이 제시하신 것처럼 iperf 등의 측정툴을 사용하시는 것입니다.
iperf에서도 MTU나 Window size 값을 변경해서 측정 가능합니다. 그값에 따라서 전송률 차이가 많이 나죠.

일단은 iperf로 MTU와 Window size를 충분히 크게 잡은 상태에서 측정보시고 판단하시는게 좋겠네요.
iperf로 전송을 하고 있는 상황에서 PC와 서버의 CPU 사용률 및 Network IO wait 상태를 보셔야 할 것 같습니다.
그러면서 라인 문제인지, PC의 CPU문제인지 서버의 CPU문제인지, PC의 NIC 문제인지, 서버의 NIC문제인지 찾아봐야 겠죠.
최규동 2015-01
많은 조언에 감사드립니다.
서버쪽으로 많은 데이타를 보낼 수 없는 상황이구요.
100개를 보내나 1000개를 보내나 뭉쳐서 보내나 별 차이는 없는것 같습니다.
1ms에 10개 패킷쯤 보내는것 같습니다.
XP 컴 + 리얼텍 1G 랜카드(G31 내장 랜카드)  + 100M 공유기로 연결해서 보내도 15개 / 1ms  정도 보내는데 10G 에서 10개/ms 라서  ... 이해가 안되네요. 
iperf 는 서버에 접근할 수 없어서 사용할 수 없을것 같네요.
감사합니다. ..
10GbE는 OS 자체의 network stack을 거치는 것 자체가 상당한 부담이 됩니다. 그래서.. 10GbE를 만드는 업체들 중에서 OS의 network stack을 bypass 할 수 있는 나름의 방법을 제공하는 경우가 있습니다. 제가 알아볼 때만 해도.. 3~4가지 정도는 됐었습니다. 서로 호환은 안되고 제작사에서 제공한 방법만 사용 가능한데.. 확실히 performance(throughput 위주냐 latency 위주냐를 선택 가능)가 올라갑니다. 그래서 OS의 선택도 제한적입니다. 여기서 몇 발짝 더 나아간 형태도 있더군요. 하여튼.. 10GbE는 완전히 다른 세계더군요. 이런 종류의 NIC를 사용하셔야 제대로 활용이 가능합니다.


QnA
제목Page 1332/5727
2015-12   1776111   백메가
2014-05   5251041   정은준1
2020-07   3469   GPGPU
2023-08   2516   GPGPU
2013-05   28136   akfalles
2023-08   1861   미수맨
2017-01   5730   시그니아
2010-05   9032   우편물
2020-08   5087   라온제나
2016-02   5236   행복하세
2019-05   2974   홀릭0o0
2014-11   4089   handan
2017-01   6234   차평석
2018-04   4020   이광용o용인
2022-01   1513   공백기
2013-06   5124   서정욱
2022-02   2615   L2스위치
2013-07   8224   조명수
2023-09   3594   일리케
2017-02   8367   캔위드
2017-02   4806   메이
2023-09   1700   네이스터