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

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

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

나는 이 서버를 고주파 거래에 사용하기 때문에 네트워크 지연을 포함하여 지연이 걱정됩니다.

이제 Windows와 Linux에서 동일한 호스트를 ping하면 Linux가 약간 더 좋아질 것으로 기대합니다. 놀랍게도 전혀 나아지지 않았습니다. 실제로 동일한 호스트에 대해 ping을 실행하면 Windows보다 5~10마이크로초 더 나쁩니다.

  • hrpingWindows와 Linux ping에서 사용합니다 .
  • Windows에서는 그룹화를 위해 HP 유틸리티를 사용하고 RHEL 7에서는 기본 제공 "그룹화"(바인딩 아님)를 사용합니다.

나는 다음과 같은 이유로 Linux가 더 좋아질 것으로 기대합니다.

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

내 질문:

  1. 그러한 숫자가 존재하는 경우: RHEL 7의 핑은 Windows Server 2008 R2보다 몇 마이크로초 더 빠릅니까?
  2. Linux가 5~10마이크로초 느려지는 잠재적인 문제를 나타내는 경우 ping, 아니면 이 사실을 무시해야 합니까?
  3. Linux 핑을 Windows보다 빠르게 만들기 위해 수행/진단/문제 해결 방법은 무엇입니까?

물론 실생활에서는 TCP/UDP 등 실제 트래픽의 레이턴시가 더 걱정되겠지만, 이를 ping첫 번째 단계로 다루겠습니다. ping"단순"하기 때문에 동일한 숫자가 표시 될 수 있지만 Linux가 실제 TCP/UDP 트래픽에서 더 빠를까요?

답변1

많은 요인이 있습니다. 첫 번째는 실행 중인 머신입니다. Windows와 Linux가 다른 하드웨어에 있으면 측정이 의미가 없습니다.

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

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

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

Linux 커널의 네트워크 처리량이 한계에 도달했다는 것은 비밀이 아닙니다.10기가비트 수준. 따라서... 마이크로초 속도에서는 큰 차이가 없어야 합니다. 이는 일정, 운영 체제 대기 시간 등과 관련된 문제일 수 있습니다. 그리고 핑 대기 시간은 로드 시 실제 성능을 나타내지 않습니다. 이 조치는 귀하가 어떤 결정을 내릴 때 하나의 요소가 되어서는 안 됩니다. 특히 실제 로드 시에는 다른 많은 벤치마크가 필요합니다.

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

관련 정보