2 개의 Linux 호스트 간의 대기 시간 문제를 해결하는 방법


16

2 개의 리눅스 호스트 간의 대기 시간은 약 .23ms입니다. 그들은 하나의 스위치로 연결됩니다. Ping & Wireshark는 대기 시간 번호를 확인합니다. 그러나이 대기 시간을 일으키는 원인에 대한 가시성이 없습니다. 대기 시간이 호스트 A 또는 B의 NIC 또는 스위치 또는 케이블로 인한 것인지 어떻게 알 수 있습니까?

업데이트 : .23ms의 대기 시간은 기존 응용 프로그램에 좋지 않습니다.이 응용 프로그램은 매우 높은 빈도로 메시지를 보내고 0.1ms로 줄일 수 있는지 확인하려고합니다.


2
.23ms가 지연 시간이 나쁜 것으로 생각하는 이유는 무엇입니까? 대단한 대기 시간입니다.
SpacemanSpiff

6
크로스 오버 케이블로 직접 연결하십시오. 대기 시간이 동일하면 원인이 호스트 중 하나입니다. 대기 시간이 동일하지 않으면 스위치 또는 케이블 연결이 원인입니다.
joeqwerty

1
동의, 무슨 일이야? 0.23ms 대기 시간은 두 대의 컴퓨터가 서로 옆에 앉아있는 것보다 적습니다.
Michael Hampton

@joeqwerty 두 시스템이 크로스 오버 케이블을 통해 연결된 경우 어떻게 서로를 찾습니까? ARP가 여전히 작동합니까? TCP가 여전히 작동합니까?
Jimm

1
둘 다 동일한 스위치에 연결된 것처럼 동일하게 작동합니다. 케이블은 단순히 통신 할 물리적 매체입니다. OSI 모델의 7 개 계층 (또는 원하는 경우 DARPA 모델의 4 계층)은 모두 현재와 동일하게 작동합니다.
joeqwerty

답변:


15

일반적으로 iperf 유틸리티 에 대한 일부 고급 스위치를 사용하여 시스템 간 네트워크 성능, 특히 대기 시간 및 지터를 볼 수 있습니다.

이것이 UDP 또는 TCP 기반 메시지 스트림입니까?

설정에 대한 자세한 정보가 필요하다고 위에서 언급했습니다. 대기 시간이 짧은 메시징 응용 프로그램 인 경우 하드웨어, 드라이버 및 OS 조정에 걸친 전 세계 튜닝 및 최적화 기술 이 있습니다. 그러나 실제로 더 많은 정보가 필요합니다.

편집하다:

자, 이것은 TCP 메시징입니다. /etc/sysctl.conf매개 변수 를 수정 했습니까 ? 송신 / 수신 버퍼는 어떻게 생겼습니까? 실시간 커널 만 사용하는 것은별로 도움이되지 않지만 인터럽트를 CPU에 바인딩하는 지점으로 이동하면 메시징 앱의 실시간 우선 순위 ( chrt)를 변경 tuned-adm하고 시스템 프로필을 수정하는 것이 도움이 될 수 있습니다 ...

이는 일반적인 EL6 시스템 인 것처럼 들리므로 성능 조정 기준을 설정하는 쉬운 방법은 시스템의 성능 프로파일을 조정 된 프레임 워크 내에서 사용 가능한 다른 프로파일로 변경하는 것 입니다. 그런 다음 거기에서 빌드하십시오.

귀하의 경우 :

yum install tuned tuned-utils
tuned-adm profile latency-performance

차이점을 보여주는 빠른 매트릭스 :

하드웨어에 대해 말씀해 주시겠습니까? CPU, NIC, 메모리의 종류?

링크를 테스트하는 것이 흥미로울 수 있습니다 ... iperf 테스트를 사용해보십시오 ...

한 시스템에서 iperf UDP 리스너를 시작하십시오. 다른 한편으로, 첫 번째 연결을여십시오. 빠른 라인 품질 테스트.

# Server2
[root@server2 ~]# iperf -su   

# Server1
[root@server1 ~]# iperf -t 60 -u -c server2

필자의 경우 낮은 지터와 낮은 핑 시간 :

------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  224 KByte (default)
------------------------------------------------------------
[  3] local 192.168.15.3 port 5001 connected with 172.16.2.152 port 36312
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0-20.0 sec  2.50 MBytes  1.05 Mbits/sec   0.012 ms    0/ 1785 (0%)

PING server1 (172.16.2.152) 56(84) bytes of data.
64 bytes from server1 (172.16.2.152): icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from server1 (172.16.2.152): icmp_seq=2 ttl=63 time=0.144 ms

하드웨어와 인터페이스에 오류가 있는지 확인했습니다. 원하는 경우 시스템 간 전환을 제거하고 직접 연결이 어떻게 보이는지 확인하십시오. 높은 지터 (분산)를 원하지 않으므로 확인하십시오.

그러나 솔직히 말하면 현재 설정을 수행하는 핑 시간이 있어도 응용 프로그램을 종료하기에는 충분하지 않습니다. 보내기 / 받기 버퍼 조정 경로를 따라 가겠습니다. 참조 : net.core.rmem_max, net.core.wmem_max및 기본값 ...

다음과 같은 것 /etc/sysctl.conf(맛을 조정하십시오) :

net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

대기 시간에 민감한 메시징 응용 프로그램입니다. 일반적인 OS는 kernel-2.6.32-279.11.1.el6.x86_64이지만 커널 3.2.23-rt37.56.el6rt.x86_64로 호스트를로드하여 차이가 있는지 확인하십시오. 그러나 거의 동일했습니다. 메시지 크기는 1KB-3KB입니다. 모든 통신은 TCP를 통해 이루어집니다.
Jimm

OS Red Hat MRG입니까?
ewwhite

현재는 일반 Redhat 6.3이지만 MRG도 가능합니다. 위에서 언급했듯이 두 가지를 모두 시도했지만 대기 시간은 동일했습니다. 어떤 종류의 튜너 블에 관심을 가져야합니까?
Jimm

하드웨어 및 NIC 설정을 알고 싶습니다. 스위치 모델이 도움이됩니다. 튜너 블의 경우 6.3에서 살펴볼 분명한 영역은 tuned-adm프로필입니다.
ewwhite

듀얼 이더넷 컨트롤러 : Emulex Corporation OneConnect 10Gb NIC (rev 02) 및 16 코어 AMD 제품군 10h 프로세서 (각 2400MHz).
Jimm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.