일반적으로 Linux "ping"은 Windows "hrping"보다 빨라야 합니까?

일반적으로 Linux "ping"은 Windows "hrping"보다 빨라야 합니까?

저는 HP DL360p Gen8을 사용하고 있습니다. 이중 부팅 Windows Server 2008 R2 및 RHEL7을 설치했습니다. 두 시스템 모두에서 LACP와 VLAN을 구성했습니다. 따라서 이것은 동일한 서버, 동일한 하드웨어, 동일한 네트워크, 동일한 라우팅 테이블 등입니다.

이 서버를 HFT 거래에 사용하고 있기 때문에 네트워크 지연을 포함한 지연이 걱정됩니다.

이제 Windows와 Linux에서 동일한 호스트를 ping하면 Linux가 약간 더 좋아질 것으로 예상했습니다. 놀랍게도 전혀 나아지지 않습니다. 실제로 동일한 호스트를 ping할 때 Windows보다 5~10마이크로초 정도 더 나쁩니다.

  • 저는 hrpingWindows와 pingLinux에서 사용하고 있어요
  • Windows에서는 팀 구성을 위해 HP 유틸리티를 사용했고, RHEL 7에서는 내장된 "팀 구성"(결합 아님)을 사용했습니다.

저는 Linux가 더 좋아질 것이라고 기대했습니다. 그 이유는 다음과 같습니다.

  • RHEL 7 네트워크 구현이 Windows Server 2008 R2보다 빠르다고 가정합니다.
  • RHEL 7 팀 구성/LACP/VLAN 구현이 Windows Server 2008 R2/HP 구현보다 빠르다고 가정합니다.

내 질문:

  1. 그러한 숫자가 존재하는 경우: Windows Server 2008 R2보다 RHEL 7에서 ping이 얼마나 더 빠른가요?
  2. Linux가 5-10 마이크로초 더 느리다는 잠재적인 문제를 나타내는 경우 ping아니면 이 사실을 무시해야 합니까?
  3. Linux 핑을 Windows보다 빠르게 만들기 위해 무엇을 할 수/진단/문제를 해결할 수 있습니까?

물론 실생활에서는 TCP/UDP와 같은 실제 트래픽의 대기 시간에 더 관심이 있지만 ping첫 번째 단계로 사용하고 있습니다. "단순"하기 때문에 동일한 숫자가 표시 될 수 있지만 ping실제 TCP/UDP 트래픽에서는 Linux가 훨씬 더 빠를까요?

답변1

여러 가지 요인이 있습니다. 첫 번째는 실행 중인 머신입니다. Windows와 Linux가 서로 다른 하드웨어에 있는 경우 측정은 의미가 없습니다.

물론 여러 번 시도한 후 평균 핑을 측정해야 합니다. 처음 몇 번의 핑에는 다른 지연이 포함될 수 있습니다.

패킷은 커널(IP 스택 및 네트워크 장치 드라이버)을 통과해야 하며, 응답이 수신되면 다시 들어와야 합니다. 이 단계에서는 차이에 영향을 미치는 많은 요소가 있을 수 있습니다.

  1. 실제로 시간이 측정되는 것: ping의 두 가지 다른 구현은 타이머를 시작하고 실제로 물건을 보내는 것 사이에서 어느 정도 상용구 작업을 수행할 수 있습니다(수신 경로에서도 동일).
  2. o 필터 존재: 방화벽 등은 추가 단계를 도입할 수 있음
  3. 시계 세분성: 프로세스가 커널에 의해 얼마나 세밀하게 다중화됩니까? 다른 Linux 레벨에서도 틱 길이는 크게 다를 수 있으며 커널은 다소 틱이 없을 수 있습니다(프로세스가 하나만 실행 중인 경우 중단 없이 실행됨).
  4. 프로세스 관리: 패킷이 돌아올 때 프로세스가 얼마나 빨리, 어떤 방식으로 깨어나는가? Windows와 Linux는 완전히 다른 방식으로 이를 수행합니다.
  5. 나머지 시스템은 무엇을 하고 있나요? 커널을 바쁘게 만드는 과도한 IO가 동시에 발생합니까? nice더 높은 우선순위로 핑을 보내면 변화가 있나요 ?
  6. 주파수 스케일링: CPU 주파수 관리는 크게 다를 수 있습니다. Linux에는 작업을 다르게 수행하는 "거버너"가 많이 있습니다. 따라서 Linux가 유휴 상태일 때 더 낮은 클럭 속도로 실행될 가능성이 있습니다. 또한 주파수 전환 순간에 추가 대기 시간이 발생합니다.
  7. 유틸리티 의 구현 및 컴파일 ping에도 약간의 영향이 있을 수 있습니다(비록 커널 내 대기 시간이 주요 원인일 수 있음).

Linux 커널은 네트워크 처리량의 한계에 도달한 것으로 알려져 있습니다.10기가비트급. 따라서... 마이크로초 속도에서는 큰 차이가 없어야 합니다. 일정, OS 대기 시간 등의 문제일 가능성이 높습니다. 그리고 핑 대기 시간은 로드 시 실제 성능을 나타내지 않습니다. 무엇이든 결정할 때 이 측정값을 요인으로 삼아서는 안 됩니다. 특히 실제 부하에서는 다른 많은 벤치마크가 필요합니다.

마지막으로 Linux 커널 설정은 성능에 큰 영향을 미칠 수 있습니다. 실시간 프로젝트는 최적의 수준에서 수행하기 위해 전용 커널이 필요합니다. 이 두 가지 시도에서 찾은 것보다 두 플랫폼 모두에서 다양한 구성 간의 더 많은 변형을 찾을 수 있습니다.

관련 정보