为什么我看到如此低的SMB传输吞吐量?
好的,故事的内容比标题所暗示的要多。 背景和环境:我正在通过SMB将数个TB从较旧的Ubuntu服务器复制到较新的Windows 2012服务器。(从技术上讲,这是商用硬件,但它们是这里的服务器。)每个人都在千兆位LAN上,较旧的Ubuntu机顶盒具有绑定的接口。我相信Ubuntu服务器有两个Rosewill PCI-e 1x以太网卡,Windows服务器有一个相当不错的PCI Intel以太网卡。 目标计算机(Windows服务器)正在运行奇偶校验超过4个2TB驱动器的存储池。它正在运行Microsoft的新ReFS。源计算机(Ubuntu服务器)正在运行软件RAID镜像。EXT4运行良好。 两台服务器通过单个千兆交换机运行。我已经尝试过在源计算机(Ubuntu)上断开绑定,而没有进行任何改进。 问题:我可以以合理的速度从其他计算机传输到Windows服务器。其他计算机可以毫不费力地保持50-80MB / s的速度,但是从该Ubuntu服务器进行传输的最大速度不超过20MB / s。以20MB / s的速度传输4TB以上的数据需要花费很长时间(大约2.3天),我想知道我该怎么做才能找出瓶颈所在。 症状:两台计算机上的CPU都非常小,并且肯定不会异常繁忙。两台计算机上的硬盘驱动器均处于活动状态,但没有被淹没,至少在Ubuntu服务器上,CPU IOwait几乎为0%。 我进行了35秒钟的Wireshark跟踪(大概足够长,以确保所有ACK都用于新数据包),并注意到有很多我没想到的事情。(1)从Windows到Ubuntu,没有任何ACK(和某些SMB数据包)的校验和。但是,Wireshark声称这可能是由于“ IP校验和卸载”。好的,我那里有一张漂亮的卡片。我想网卡可能会执行校验和计算。精细。继续...(2)“ TCP ACK看不见的段。” 我有这个问题。ACK数在我所能告知的范围内,并且通常有大量的这些消息块。也许Wireshark太慢了? 摘要:传输速度很慢(通过千兆以太网的速度为20MB / s),我不知道为什么。Wireshark声称Windows正在确认Ubuntu从未发送过的东西。 猜猜:我最初的猜测是,更便宜的Rosewill卡正在被淹没。我的第二个猜测是,在一端或另一端的类似RAID的软件正在被很多事情淹没。