Kod*_*ior 6 linux tcp ipc linux-kernel
我正在探索/基准测试用于同一系统中两个进程之间低延迟通信的各种 IPC 机制。我正在使用 RHEL 6 系统进行基准测试。
我目前正在研究通过环回的基于套接字的通信。由于它是环回设备,因此数据包甚至不会命中 NIC。相反,环回 linux 驱动程序将数据包环回到目的地。
但是查看 的结果netstat -i,我看到为环回定义了一个 MTU。这有什么作用以及对带宽的潜在影响是什么?
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lo0 16384 localhost ::1 1738 - 1738 - -
Run Code Online (Sandbox Code Playgroud)
环回不是物理接口,但 tcp/ip 堆栈仍然在其上运行大量操作。
为了提高本地传输的性能,内核开发人员将其 mtu 从 16 Kb 提高到 64 Kb。
请参阅Linux 内核中的此提交及其基本原理:
16436 字节的环回当前 mtu 允许每帧不超过 3 个 MSS TCP 段,或 48 KB。将 mtu 更改为 64K 允许 TCP 堆栈构建大帧并显着减少堆栈开销。
批量 TCP 传输的性能提升可高达 30%,部分原因是我们现在对两个 64KB 段有一个 ACK 消息,并且达到 /proc/sys/net/ipv4/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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4930 次 |
| 最近记录: |