CPU 负载、USB 连接与 NIC

CPU 负载、USB 连接与 NIC

总体而言,答案可能因制造商和型号(以及驱动程序等)而异,在配备集成 NIC 的消费级工作站中,NIC 是否依赖 CPU 提供大量帮助(例如,USB 控制器通常如此),还是它本身就相当智能和强大(例如,典型的 Firewire 控制器)?或者这个问题太笼统而无法回答?(如果这很重要,您可以假设是 Linux。)

背景:我正在考虑将一个设备(数字电视捕获)连接到一个功率不足的工作站,该设备将以约 20-50 Mbit/秒的速度传输数据。我可以获得一个 USB 2 高速设备或一个网络连接设备,并且希望尽可能避免影响 CPU。显然,如果它是 100Mbit NIC,则大约是其理论入站带宽的一半,而它只是 USB 2“高速”接口 480 Mbit/秒的十分之一。但如果后者需要大量 CPU 支持而前者不需要...


编辑Andy 的问题让我想再详细说一下:这台机器将是一台 PVR 和客厅电脑。这些设备是数字地面电视接收器 (DVB-T),数据是来自数字流的编码视频(可能同时有多达两个流,每个流估计为 ~20Mbit/sec)。由于它是预编码的,CPU 不必在收到时对其进行编码,只需将其写入磁盘 (SATA-300)。不过,CPU 可能正忙于做与传入数据无关的其他事情,比如(比如)解码和显示其他视频或音频,或者进行病毒扫描,或者视频通话……操作系统将是 Ubuntu 10.04 LTS 或 Windows 7。但这个问题更像是一个关于 NIC、USB 控制器和 Firewire 控制器性质的好奇问题。

答案1

CPU 使用率的确切数量将因网络适配器而异(例如,英特尔销售台式机千兆网卡“提高了性能,同时显著降低了 CPU 的使用率”。

但是,根据传闻,我可以向您保证,与其他耗费 CPU 的任务(例如视频编码/解码)相比,千兆网卡的开销可以忽略不计。通过千兆链路复制多 GB 的文件几乎不会影响我的 CPU 计量器,即使以大约 400 Mbit/秒的速度复制也是如此。还值得注意的是,您的数据可能通过的任何加密隧道也会比您的网卡消耗更多的 CPU——我注意到,与 NFS 或 Samba 相比,通过 SCP 复制的速度要慢 10 倍左右,并且 CPU 利用率明显更高。

我不确定你的“性能不足”的工作站有多快,但我的 Athlon X2 4000+ 搭配 GeForce 6600 GT 有时在解码 H.264 视频时会遇到问题,即使是在 480p 的适度分辨率下。也就是说,如果你受到类似限制的影响,你也许可以通过安装具有硬件 H.264 解码功能的显卡来解决这个问题。

答案2

一台配备 200MHz 处理器的 20 世纪 90 年代机器可以占用 100mbps 以太网。我认为你无需担心。事实上,我认为你只需要担心两个数量级。

答案3

在我拥有的任何系统上,我从未见过将整张皮从一台机器复制到另一台机器时 CPU 使用率超过 5%,除了我以前拥有的旧 P200。我不能说我曾经注意到从 USB 设备复制特别慢或占用过多的 CPU 时间,我唯一注意到的情况是当出现类似McAfee SystemCrippler已安装并导致系统研磨的量超过设置为超速运转的面粉磨的量。

附注:您选择的病毒防护可能会严重影响您的难的 驾驶 表现并推断任何存储设备的性能。

如果你真的想让 NIC 完成所有的工作,那么你需要一个KillerNIC但我确实不认为与网络相关的轻微 CPU 占用值得付出这样的代价。

正如 rob 所说,我在我的消息中进行了扩展,您可以将许多任务(如视频解码)卸载到板外组件。您还可以购买软件,将 h264 编码卸载到 nVidia 卡,以及使用Badaboom 媒体转换器

答案4

据我所知,NIC 通常只处理最低层,即物理和数据链路(在 OSI 术语中)。TCP/IP 堆栈的其余部分是用软件实现的。例外情况是带有 TCP 卸载引擎 (TOE) 的卡,其中整个堆栈由卡本身处理。我听到过关于这是否好或坏的不同意见,最大的缺点是与一般机器相比,卡本身的资源要有限得多。但问题是关于 m/board NIC 的,我认为 TOE 在服务器级独立 NIC 中更常见。我也知道软件中堆栈的不良实现可能会对高速通信造成问题,但我完全猜测 Linux 的堆栈是好的和高效的!

Tanenbaum 第四版《计算机网络》中有一段有趣的引言:

CPU 速度比网络速度更重要

长期的经验表明,在几乎所有的网络中,操作系统和协议开销决定了实际的网络时间。

我确信,使用现代处理器,速度只有 ~50Mb/s,没有编码,您不太可能遇到任何 CPU 问题。也许如果您同时做其他事情,这最终会破坏 HD,您可能会溢出缓冲区……

相关内容