저는 HP DL360p Gen8을 사용하고 있습니다. 이중 부팅 Windows Server 2008 R2 및 RHEL7을 설치했습니다. 두 시스템 모두에서 LACP와 VLAN을 구성했습니다. 따라서 이것은 동일한 서버, 동일한 하드웨어, 동일한 네트워크, 동일한 라우팅 테이블 등입니다.
이 서버를 HFT 거래에 사용하고 있기 때문에 네트워크 지연을 포함한 지연이 걱정됩니다.
이제 Windows와 Linux에서 동일한 호스트를 ping하면 Linux가 약간 더 좋아질 것으로 예상했습니다. 놀랍게도 전혀 나아지지 않습니다. 실제로 동일한 호스트를 ping할 때 Windows보다 5~10마이크로초 정도 더 나쁩니다.
- 저는
hrping
Windows와ping
Linux에서 사용하고 있어요 - Windows에서는 팀 구성을 위해 HP 유틸리티를 사용했고, RHEL 7에서는 내장된 "팀 구성"(결합 아님)을 사용했습니다.
저는 Linux가 더 좋아질 것이라고 기대했습니다. 그 이유는 다음과 같습니다.
- RHEL 7 네트워크 구현이 Windows Server 2008 R2보다 빠르다고 가정합니다.
- RHEL 7 팀 구성/LACP/VLAN 구현이 Windows Server 2008 R2/HP 구현보다 빠르다고 가정합니다.
내 질문:
- 그러한 숫자가 존재하는 경우: Windows Server 2008 R2보다 RHEL 7에서 ping이 얼마나 더 빠른가요?
- Linux가 5-10 마이크로초 더 느리다는 잠재적인 문제를 나타내는 경우
ping
아니면 이 사실을 무시해야 합니까? - Linux 핑을 Windows보다 빠르게 만들기 위해 무엇을 할 수/진단/문제를 해결할 수 있습니까?
물론 실생활에서는 TCP/UDP와 같은 실제 트래픽의 대기 시간에 더 관심이 있지만 ping
첫 번째 단계로 사용하고 있습니다. "단순"하기 때문에 동일한 숫자가 표시 될 수 있지만 ping
실제 TCP/UDP 트래픽에서는 Linux가 훨씬 더 빠를까요?
답변1
여러 가지 요인이 있습니다. 첫 번째는 실행 중인 머신입니다. Windows와 Linux가 서로 다른 하드웨어에 있는 경우 측정은 의미가 없습니다.
물론 여러 번 시도한 후 평균 핑을 측정해야 합니다. 처음 몇 번의 핑에는 다른 지연이 포함될 수 있습니다.
패킷은 커널(IP 스택 및 네트워크 장치 드라이버)을 통과해야 하며, 응답이 수신되면 다시 들어와야 합니다. 이 단계에서는 차이에 영향을 미치는 많은 요소가 있을 수 있습니다.
- 실제로 시간이 측정되는 것: ping의 두 가지 다른 구현은 타이머를 시작하고 실제로 물건을 보내는 것 사이에서 어느 정도 상용구 작업을 수행할 수 있습니다(수신 경로에서도 동일).
- o 필터 존재: 방화벽 등은 추가 단계를 도입할 수 있음
- 시계 세분성: 프로세스가 커널에 의해 얼마나 세밀하게 다중화됩니까? 다른 Linux 레벨에서도 틱 길이는 크게 다를 수 있으며 커널은 다소 틱이 없을 수 있습니다(프로세스가 하나만 실행 중인 경우 중단 없이 실행됨).
- 프로세스 관리: 패킷이 돌아올 때 프로세스가 얼마나 빨리, 어떤 방식으로 깨어나는가? Windows와 Linux는 완전히 다른 방식으로 이를 수행합니다.
- 나머지 시스템은 무엇을 하고 있나요? 커널을 바쁘게 만드는 과도한 IO가 동시에 발생합니까?
nice
더 높은 우선순위로 핑을 보내면 변화가 있나요 ? - 주파수 스케일링: CPU 주파수 관리는 크게 다를 수 있습니다. Linux에는 작업을 다르게 수행하는 "거버너"가 많이 있습니다. 따라서 Linux가 유휴 상태일 때 더 낮은 클럭 속도로 실행될 가능성이 있습니다. 또한 주파수 전환 순간에 추가 대기 시간이 발생합니다.
- 유틸리티 의 구현 및 컴파일
ping
에도 약간의 영향이 있을 수 있습니다(비록 커널 내 대기 시간이 주요 원인일 수 있음).
Linux 커널은 네트워크 처리량의 한계에 도달한 것으로 알려져 있습니다.10기가비트급. 따라서... 마이크로초 속도에서는 큰 차이가 없어야 합니다. 일정, OS 대기 시간 등의 문제일 가능성이 높습니다. 그리고 핑 대기 시간은 로드 시 실제 성능을 나타내지 않습니다. 무엇이든 결정할 때 이 측정값을 요인으로 삼아서는 안 됩니다. 특히 실제 부하에서는 다른 많은 벤치마크가 필요합니다.
마지막으로 Linux 커널 설정은 성능에 큰 영향을 미칠 수 있습니다. 실시간 프로젝트는 최적의 수준에서 수행하기 위해 전용 커널이 필요합니다. 이 두 가지 시도에서 찾은 것보다 두 플랫폼 모두에서 다양한 구성 간의 더 많은 변형을 찾을 수 있습니다.