我正在探索/基准测试各种IPC机制,以便在同一个系统中的两个进程之间进行低延迟通信。我使用RHEL 6系统进行基准测试。
我目前正在通过环回查看基于套接字的通信。因为它是回送设备,所以数据包甚至没有击中网卡。相反,环回linux驱动程序将数据包回滚到目的地。
但是,看看netstat -i的结果,我看到了一个为环回定义的MTU。它的作用和对带宽的潜在影响是什么?
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lo0 16384 localhost ::1 1738 - 1738 - -发布于 2018-09-30 18:50:21
回送不是物理接口,但tcp/ip堆栈仍然在其上运行许多操作。
为了提高本地传输的性能,内核开发人员将mtu从16 Kb提高到64 Kb。
参见Linux内核中的此承诺及其基本原理:
16436字节的回环当前mtu允许每个帧不超过3个MSS段,或48 K字节。将mtu更改为64K允许TCP堆栈构建大帧,并显著减少堆栈开销。 大容量TCP传输的性能提升可高达30 %,部分原因是我们现在有一个ACK消息,用于两个64 of段,而且命中/proc/sys/net/ipv4 4/tcp_reordering默认限制的概率较低。
--- a/drivers/net/loopback.c
+++ b/drivers/net/loopback.c
static void loopback_setup(struct net_device *dev)
{
- dev->mtu = (16 * 1024) + 20 + 20 + 12;
+ dev->mtu = 64 * 1024;https://stackoverflow.com/questions/27431984
复制相似问题