标称带宽不等于可用吞吐
一条 10G 链路实际能跑多少,取决于几件事:协议头与确认带来的少量开销、单条 TCP 流在特定往返时延下的窗口上限、路径上是否有丢包、以及交换机上行端口的收敛比。再加上客户端的磁盘与 CPU 能力,最终吞吐常低于链路速率的理论值。理解这些环节之后,「加带宽没效果」这类现象往往能找到明确的解释,例如瓶颈其实在客户端单核或交换机上行。
基本信息
| 适用平台 | SMB/NFS 文件服务与后端存储 |
|---|---|
| 单流上限 | 受带宽时延积约束:带宽乘以往返时延 |
| 协议开销 | 头部与确认占比通常为几个百分点 |
| 常见瓶颈 | 交换机上行、客户端磁盘或单核、丢包重传 |
| 观测工具 | sar、iftop、网卡与交换机计数器 |
瓶颈定位
| 瓶颈位置 | 典型现象 | 排查手段 |
|---|---|---|
| 链路速率 | 吞吐贴近端口速率后不再增长 | 看网卡与交换机端口速率及利用率 |
| 单流天花板 | 单客户端慢,多客户端并发时总带宽却接近上限 | 同时跑多流对照,观察总和 |
| 交换机上行 | 接入端口空闲但总吞吐上不去 | 核对上行口收敛比与队列丢弃 |
| 丢包重传 | 吞吐抖动、时延升高 | 看网卡与交换机错误计数 |
| 客户端资源 | 服务端与网络都空闲,客户端 CPU 单核满 | 看客户端 CPU 与中断分布 |
观测命令示例
观测命令示例
sar -n DEV 2 5 # 各网卡的收发速率
ethtool -S eth0 | grep -Ei 'err|drop|crc' # 网卡错误与丢弃计数
ss -ti | head -n 40 # 查看连接的拥塞窗口与重传
cat /proc/net/snmp | grep -A1 Tcp # TCP 层重传统计
nfsiostat 5 3 # NFS 客户端时延与吞吐跨机房的共享吞吐主要由带宽时延积决定:在往返时延较高的链路上,单条 TCP 流的窗口往往填不满链路,此时提高带宽对单流几乎没有帮助,需要增加并发流或改变访问位置。做容量规划时应当把这一约束写进假设。
加密与签名会增加每报文处理成本。带宽充足而吞吐仍不达标时,检查两端 CPU 是否在加解密路径上成为瓶颈,尤其是单核性能有限的存储设备。