2个Linux主机之间的延迟约为0.23ms。 他们由一个开关连接。 Ping&Wireshark确认延迟编号。 但是,我没有任何关于什么是造成这种延迟的可见性。 如何知道延迟是由于主机A或B上的NIC还是交换机或电缆?
更新:.23毫秒的延迟对我现有的应用程序来说是不好的,它以很高的频率发送消息,我正在试着看看它是否可以降低到.1ms
一般来说,您可以使用iperf实用程序的某些高级开关来查看系统之间的networking性能,特别是延迟和抖动。
这是一个UDP或基于TCP的消息stream?
我上面评论了需要更多关于你的设置的信息。 如果这是一个低延迟消息传递应用程序,那么整个世界的调优和优化技术将跨越硬件,驱动程序和操作系统的调整。 但是,真的,我们需要更多的信息。
编辑:
好的,这是TCP消息。 你有没有修改任何/etc/sysctl.conf参数? 你的发送/接收缓冲区是什么样的? 单独使用实时内核不会有太大的作用,但是如果移动到了将中断绑定到CPU的位置,则可以更改消息传递应用程序的实时优先级( chrt ),并可能修改系统的tuned-admconfiguration文件帮帮我…
这听起来是一个通用的EL6系统,因此设置性能调整基准的简单方法是将系统的性能configuration文件更改为调优框架中可用的另一个性能configuration文件。 然后从那里build立。
在你的情况下:
yum install tuned tuned-utils tuned-adm profile latency-performance
显示差异的快速matrix:

你能告诉我们关于硬件吗? CPU,网卡,内存的types?
所以,testing你的链接可能会很有趣…试试这个iperftesting…
在一个系统上,启动一个iperf UDP监听器。 另一方面,打开第一个连接…一个快速的线路质量testing。
# Server2 [root@server2 ~]# iperf -su # Server1 [root@server1 ~]# iperf -t 60 -u -c server2
在我的情况下,低抖动和低ping时间:
------------------------------------------------------------ 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
我会检查硬件和接口的错误。 如果你想要,消除系统之间的切换,看看直接连接看起来像什么。 你不想要高抖动(差异),所以检查。
但说实话,即使在平时,你已经接近目前的设置,这应该不足以杀死你的应用程序。 我会走下调整你的发送/接收缓冲区的path。 请参阅: 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