문제

동일한 호스트의 여러 연결이 다른 호스트의 여러 연결보다 더 나은 처리량을 달성하는 이유는 무엇입니까?

나는 커널 관련 (Linux)과 관련이 있다고 생각하지만 확인은 많은 도움이 될 것입니다.

자세한 내용은 1 개의 수신자 프로세스가 있습니다.

3 개의 발신자 프로세스 S1, S2, S3이 있습니다. 그들은 R에 연결하고 고정 속도, 즉 초당 200m 비율로 데이터를 보냅니다.

S1, S2 및 S3이 동일한 기계에 있으면 각기 다른 기계에 각각을 보유한 것보다 더 나은 결과를 얻습니다. (r은 다른 기계의 경우 두 경우 모두)

예 : r host0, s1, s2, s3 on host2, r은 600mbit/s에서 수신합니다.

r host0, s1에서 s1, host1, s2, host2, s3, host3, r은 480mbit/s에서 수신합니다.

이것은 나에게 반 직관적으로 보입니다. 두 번째 케이스에서 발신자가 네트워크 카드와 프로세서를 공유 할 필요가 없기 때문에 반대가 예상되었습니다 (프로세서 나 네트워크 카드가 병목 현상이 될 것으로 기대하지는 않습니다 ...).

위의 호스트는 전용 전이중 기가비트 스위치가있는 Linux 클러스터의 노드입니다. 그들은 2.6.24-24-Generic을 실행하고 있습니다 (최신 우분투 추측)

도움이 되었습니까?

해결책

아마도 발신자가 하나의 기계에있을 때, 나가는 패킷이 모두 멋지게 대기되어 있고 한 번에 한 번에 보냈기 때문일 것입니다 (모두 하나의 NIC를 겪고 있다는 사실 때문에).

다중 세인더 케이스에서는 두 개의 기계가 종종 패킷을 동시에 보내는 다음 네트워크 스위치까지 큐를 큐를 타게됩니다. 이렇게하면 전송 TCP로 자체적으로 표시됩니다. 때로는 패킷이 수신기로 바로 전환됩니다. 다른 경우에는 스위치 큐 내부의 다른 발신자로부터 하나 또는 두 개의 패킷이 기다려야합니다.

대기 시간 지터가 그 자체로 대역폭에서 벗어날 수있을 것으로 기대합니다. 표준 TCP 창으로 200Mbps를 유지하려면 최소 2.6ms의 왕복 시간이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top