我刚刚花了大约 2 天的时间调试并弄清楚如何解决一个问题,该问题似乎归结为在英特尔 NUC 中使用 linux 和英特尔以太网驱动程序/芯片组卸载有问题的 TCP。简单的谷歌搜索显示,仅在这个驱动程序 (e1000e) 中有 1000 多个报告可以追溯到 10 多年前,其中许多似乎未修复,但可以通过禁用将一个或另一个功能卸载到 NIC 来解决。(当然,其中一些是硬件问题,例如损坏的电缆或损坏的开关,但许多人已经排除了这一点,那里肯定存在大量实际问题-并且无法通过禁用卸载来修复损坏的电缆/损坏的开关.)
问题的表现很简单,大约一天一次,网卡会暂停 30 秒左右,并且一些(但不是全部)正在进行的 TCP 会话将因损坏的数据包而中止。在我经历过的许多大公司中,这属于“真的很烦人,但几乎不值得用户打电话给帮助台,而且任何人调查和找出原因的可能性都非常低”类别。
所以答案是现代网卡仍然很糟糕,我以前认为英特尔是“众所周知的好”以太网网卡供应商......
老实说,这让我非常困惑 - 为什么英特尔不解决这些问题,为什么即使是最前沿的 linux(我尝试过但没有解决问题)默认启用这个驱动程序/芯片组上的校验和卸载,当它已知是很多问题的根源?
在千兆以太网连接上的现代处理器上卸载校验和的好处微乎其微。
所以总的来说,我肯定会默认禁用卸载。在大多数非服务器情况下,好处充其量是最小的,缺点非常糟糕(想象一下 1,000 名桌面用户每天都损失 30 秒 - 即使采用最低工资工人的低端数字,忽略机会成本并假设他们可以立即恢复到 30 秒结束时的位置,您正在查看浪费的生产力 每天 100 美元或每年损失约 25,000 美元 - 实际上要高得多,因为这是一个最乐观的数字。