기가비트 링크에서 기가비트를 얻지 못합니까?

기가비트 링크에서 기가비트를 얻지 못합니까?

방금 LAN을 기가비트로 업그레이드했습니다. 이것이 netperf가 사물에 대해 말하는 것입니다.

전에:

marcus@lt:~$ netperf -H 192.168.1.1
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.1 (192.168.1.1) 
port 0 AF_INET : demo
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    10.02      94.13   

후에:

marcus@lt:~$ netperf -H 192.168.1.1
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.1 (192.168.1.1) port 0 AF_INET : demo
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    10.01     339.15   

340Mbps만? 그게 무슨 일이야?

배경 정보: 기가비트 스위치를 통해 sheevaplug에 연결하고 있습니다. 벽에 Cat5e 배선이 있고 길이는 약 30피트 정도입니다. netperf에 익숙하지 않은 경우 매우 안정적인 결과를 제공하고 절대 거짓말을 하지 않는 경향이 있습니다.

답변1

확인해 보세요이 스레드. 기여자 중 한 명(Frennzy)이 이에 대해 매우 훌륭하게 설명했습니다. 나는 인용하겠습니다 :

기가비트 이더넷의 "실제" 속도는...

1Gbps.

즉, 초당 10억 비트의 속도로 비트를 전송하게 됩니다.

얻는 데이터 처리량은 다양하고 다양한 요인과 관련이 있습니다.

시스템에 대한 NIC 연결(PCI, PCIe, Northbridge 등)

HDD 처리량.

버스 경합.

레이어 3/4 프로토콜 및 관련 오버헤드.

애플리케이션 효율성(FTP 대 SMB/CIFS 등)

프레임 크기.

패킷 크기 분포(총 처리량 효율성과 관련)

압축(하드웨어 및 소프트웨어).

버퍼 경합, 윈도우잉 등

네트워크 인프라 용량 및 아키텍처(포트 수, 백플레인 용량, 경합 등)

간단히 말해서, 테스트해 보기 전까지는 실제로 알 수 없습니다. NetCPS는 다른 많은 도구와 마찬가지로 이를 위한 좋은 도구입니다.

그리고 이것은 스레드 뒷부분에 나와 있습니다(강조 표시).

이런 생각은 그만하세요. 당장 그만 둬. 여러분.

초당 전송량을 킬로 또는 메가 바이트로 계산하려는 만큼, 네트워크 속도가 일정하게 유지되는 경우에도 이는 가변적이라는 사실입니다. 네트워크 "속도"(초당 비트 수)는 절대적입니다. 네트워크 처리량(초당 실제 페이로드 데이터)은 그렇지 않습니다.

OP: 일반적으로 100Mbps에서 1000Mbps로 전환하면 데이터 전송 속도가 빨라지나요? 거의 확실합니다.이론적 최대치에 가까운 곳이 있을까요? 아니요.그만한 가치가 있을까요? 그건 당신이 결정하는 것입니다.

네트워크 속도에 대해 이야기하려면 네트워크 속도에 대해 이야기하십시오. 데이터 처리량에 대해 이야기하려면 데이터 처리량에 대해 이야기하십시오. 둘은 1-1 방식으로 묶여있지 않습니다.

답변2

'이론적 최대값'이라는 용어가 널리 사용되지만 이는 이더넷 기술과 함께 실제로 적용됩니다. 이더넷과 같은 CSMA/CD 시스템에서는 회선이 보유하는 트래픽 대역폭의 약 절반만 전송할 수 있으며, 그보다 약간 적은 경우가 많습니다. 그 이유는 일단 '최대'를 넘어서려고 하면 트랜시버가 패킷을 전송하는 것보다 더 많은 충돌을 감지하기 시작하기 때문입니다. 그런 다음 지수 백오프가 작동하고 패킷 전송 성능이 더욱 저하됩니다. 토큰링은 이 문제를 해결했지만 그 자체로 많은 문제가 있었고 실제로는 더 이상 많이 사용되지 않는다고 생각합니다. 이더넷/IP는 사실상의 표준이 되었습니다.

T3와 같은 업링크 기술은 각 회선에서 전체 처리량을 허용하는 비동기식 쌍을 사용하지만 이더넷 기반 프로토콜도 아닙니다.

기본, 표준 이더넷 장치를 사용하는 동안에는 항상 '이론적 최대값'이 있습니다.

답변3

GbE의 맥락에서 CSMA/CD에 대해 이야기하는 것은 완전히 가짜입니다. 기가비트 이더넷 또는 "전이중" 이더넷은 CSMA/CD를 사용하지 않습니다. GbE는 여전히 반이중 작동에 대한 이론적 가능성을 유지했지만 반이중을 수행하는 실제 생산 GbE 키트가 있었는지 전혀 확신할 수 없습니다.

OP가 1000Gbit/s 링크에서 300-odd Mbit/s만 달성한 이유에 대해서는 각 netperf 실행 전후에서 TCP에 대한 netstat 통계를 수집하고 -c 및 -C 전역 명령줄 옵션을 포함하는 것이 좋습니다. 양쪽 끝의 CPU 사용률을 확인하세요. 아마도 패킷이 삭제되거나 한쪽 또는 다른 쪽의 CPU가 포화 상태일 수 있습니다. 양쪽 끝의 시스템이 멀티코어인 경우 외부 도구를 사용하거나 netperf 디버그 출력을 통해 코어당 사용률을 확인하세요.

다른 netperf 질문은 netperf.org 메일링 리스트의 netperf-talk에 문의하는 것이 가장 좋습니다.

관련 정보