卸载(Offloading)vs. 加载(Onloading):谁是CPU利用率之王?

如今网络领域的主要争议话题之一是,是将网络功能加载到 CPU 上更合适,还是将这些功能卸载到互连硬件上更为理想。

Mellanox公司市场部副总裁Gilad Shainer

加载(Onloading)互连技术更易于实现,但问题在于对 CPU 利用率的影响由于CPU必须管理和执行网络操作,因此采用加载互连技术会降低其对应用程序的可用性——而这却是 CPU 的主要用途。

另一方面,卸载(Offloading)技术寻求克服 CPU
的性能瓶颈,主要方式是对在群集内移动的数据执行各种网络功能以及复杂的通信操作,如协同操作和数据聚集操作。当今数据分布范围广,在等待数据到达
CPU 处进行分析时就会产生性能瓶颈。相反,使用从 CPU
卸载这些功能的智能网络设备,就可在网络中的数据所在的位置进行操作。这一技术还有附加的优势:增加 CPU
对于计算功能的可用性,从而提升系统的整体效率。

CPU 利用率的问题是这两种技术选项之间的争论焦点。然而,计算 CPU 利用率的方式以及用于测试的基准会带来误导性很强的结果。

例如,常见错误是使用公共延迟测试或消息速率测试确定 CPU 利用率;然而,这些测试通常需要 CPU
频繁查找数据(即轮询内存中的数据),这就使得CPU看起来像是处于 100% 利用率,而实际上它完全没有工作。使用此类测试确定 CPU
利用率会产生虚假的结果。因为现实中,CPU 并不会频繁检查数据。

那么,测量 CPU
利用率的正确方式究竟是什么?在理想条件下,可使用数据带宽测试或不借助数据轮询的其他测试确定CPU利用率。或者,如果使用消息速率测试,则必须将此测试配置为避免陷入数据轮询循环,这样才能产生真实的结果。最终,最佳的选择是将实际执行的CPU指令数与测试持续期间可能已执行的
CPU 指令数进行比较。这样会得出准确的 CPU利用率百分比。

我们需要考虑的另一个重要因素是正在测量的开销类型。例如,如果测试设计为测量网络协议对
CPU利用率的影响,则应该仅测试在两台服务器之间传输的数据,而不包括额外的开销,如位于软件层中的MPI。如果目标是测量软件框架的开销,如MPI,则应使用MPI测试,但在此案例中,必须使用具备适当卸载功能的正确MPI(如果存在的话)。并不是所有的
MPI 都支持各种基于硬件的卸载,因此知晓测试的条件非常重要。

现在我们已了解如何精确地测量CPU利用率,那么剩下的问题就是:“哪种技术更为合适,卸载还是加载?”

我们在多台服务器之间进行了多次数据吞吐量测试,这些服务器分别通过EDR InfiniBand 和专有的Omni-Path
连接在一起。这些测试包括在测量 CPU 利用率时以每个互连支持的最大数据速率(大约 100 Gb/s)发送/接收传输的数据(参见表
1)。在数据速率为100 Gb/s的情况下,InfiniBand的 CPU 利用率仅为 0.8%,而为了执行相同的任务,Omni-Path的
CPU 利用率需要达到 59%。因此,在使用InfiniBand 时,CPU 对于应用程序的可用性是 99.2%;而在使用Omni-Path
时,仅有 40.4%的 CPU 周期可提供给应用程序。此外,我们在每种情况下都测量了 CPU 频率,因为 CPU
在不需要全速执行时会降低其频率以实现节能。在使用InfiniBand 时,CPU 频率能够降到其正常频率的
59%以实现节能。而在使用Omni-Path 时,CPU 全速执行,因此无法实现节能。

表 1 —— CPU 利用率比较:InfiniBand vs. Omni-Path

我们采用Intel 的Performance Counter Monitor 工具集检查 CPU
状态。该工具提供一组更丰富的测量方式来确定详细的系统状态。利用此工具,我们发现Omni-Path 的速度实际上未达到 100
Gb/s,而是稍低,为 95 Gb/s。AFREQ 状态报告在测试期间动态设置的 CPU
频率。我们还能够查看每个不同互连协议使用的迭代次数和活动周期数(参见表 2)。

表 2 —— Intel Performance Counter Monitor 工具统计数据对比

此外,在协同设计架构内的智能设备上部署InfiniBand 时,该产品还可通过卸载 MPI 操作来进一步减少 CPU
的开销。当然,为完成此次计算,测试必须确定在基准中包括软件层,这样才能获得准确的现实结果。我们计划未来进一步在不同的应用程序层面上执行多种测试,以证明InfiniBand的重大优势。

InfiniBand采用卸载技术,以降低 CPU
的负载,而最终的测试结果也正如我们所预料。如果其他测试结果与此处所示不同,则有必要调查测试环境,以更好地理解如何获得正确的结果。这些结果很有可能产生误导,无法准确反映现实的情况。(文/Mellanox公司市场部副总裁Gilad
Shainer)

原文发布时间为:2016年7月5日

时间: 2024-08-31 18:20:50

卸载(Offloading)vs. 加载(Onloading):谁是CPU利用率之王?的相关文章

word2007加载或卸载模板或加载项程序

  模板可以存储样式."自动图文集"词条."自动更正"词条.宏.工具栏.自定义菜单设置和快捷键.加载一个模板可以使其成为共用模板,这样,在使用基于任何其他模板的文档时,还可以使用这个共用模板. 加载项是一些补充程序,安装这些补充程序可以添加自定义命令和专用功能,从而扩展 Microsoft Office Word 的功能.例如,加载项程序可以是由公司 IT 部门设计并发布的一个程序,用来在计算机上打开的文档中突出显示公司名称. 您要做什么? ●加载模板或加载项 ●卸

windows8不能卸载Word稿纸加载项怎么办

    1.首先,咱们需要返回到win8系统的传统桌面位置,之后,咱们同时按下键盘上的win+R快捷键打开电脑的运行窗口,在打开的运行窗口中,咱们输入regedit并单击回车,这样就可以打开win8系统的注册表编辑器窗口了. 2.在打开的注册表窗口中,咱们依次点击展开左侧菜单中的HKEY_CURRENT_USERSoftwareMicrosoftInstallerProducts,之后,咱们将整个"0762812C5FEEC1B428F26679F2DFAE7C"文件夹全部删除掉.  

AppDomain与Assembly的动态加载与卸载简介

为了将问题描述清楚,我们先来看一个例子.在这个例子中,WinForm上有一个按钮,当用户点击这个按钮后,就会装载一个已经存在的Assembly,并且在界面的Label控件上显示出这个Assembly的FullName.对Reflection稍微熟悉一点的朋友都知道,这是非常简单的事情,只需要用Assembly.LoadFile方法获得Assembly,然后用FullName属性来显示即可,比如下面的代码: private void button1_Click(object sender, Eve

WF从入门到精通(第六章):加载和卸载实例

学习完本章,你将掌握: 1.理解工作流实例为什么要卸载和重新加载及其时机 2.理解工作流实例为什么要持久化及其时机 3.搭建SQL Server 2005,使其为WF和工作流持久化提供支持 4.使用SqlWorkflowPersistenceService服务 5.在你的工作流代码中进行实例的加载和卸载 6.使持久化服务能自动地加载工作流实例及卸载空闲中的工作流实例 假如你花点时间真正考虑该怎样使用WF和工作流在你的应用程序中进行处理的话,你或许想像的许多解决方案中都包含那些需长时间运行的处理过

Windows CE下流驱动的动态加载

    我想很多WinCE的开发人员,尤其是刚入门并且做驱动开发的工程师,都曾碰到这样一个问题,要编写一个外围设备的驱动,拿最简单的GPIO驱动来说,编写驱动本身可能只花了一会儿功夫,可要把编译生成的DLL打包到先前做好的操作系统映像当中,最简单也得MakeImg一下,还要修改BIB文件.注册表文件,以让系统启动的时候就加载该驱动,所有工作都做完了,还得花几分钟下载整个操作系统到内存去运行,这也得要个好几分钟.能力强的人一次成功,不走回头路也就算了.如果驱动编写得有问题,那又得改代码,重新编译,

Word稿纸加载项无法卸载的方法

  office工具是我们办公过程中最常遇到的工具,只要涉及到文字相关的都需要使用word,所以office软件对于上班族来说是很重要的.但是最近有用户来和小编反映说在win8系统中打开office2003的时候出现"无法访问"的提示,导致word文档打不开,这是怎么回事呢?遇到这样的问题很大的可能是稿纸的加载项出现了问题,最好的解决方法就是把它卸载掉然后重装,这样就能避免上述问题的再次发生了.最悲催的事情是什么?就是稿纸的加载项卸载不掉,这可怎么办呢?下面小编就为大家讲解,Win8

win8系统中Word稿纸加载项无法卸载怎么办

  word工具是我们在日常办公中经常会使用到的办公软件,它对我们的重要性不言而喻.但是,最近却有不少Win8系统用户反映自己在打开office2003的时候,系统提示"无法访问".经过分析后发现是稿纸加载项上出了问题,我们只有选择卸载才能解决,但是用户在卸载时又发现根本无法卸载.那么,遇到这种情况我们该怎么办呢?接下来,小编就向大家分享win8系统中Word稿纸加载项无法卸载的处理方法.   1.首先,咱们需要返回到win8系统的传统桌面位置,之后,咱们同时按下键盘上的win+R快捷

【AIX 命令学习】加载与卸载文件系统!

ufserver[/]#mount  --查看系统中已安装的文件系统   node       mounted        mounted over    vfs       date        options      -------- ---------------  ---------------  ------ ------------ ---------------          /dev/hd4         /                jfs2   Aug 18

C#如何卸载dll插件,将加载好的插件实现卸载,用什么方法,求大神指导给个示例

问题描述 C#如何卸载dll插件,将加载好的插件实现卸载,用什么方法,求大神指导给个示例 我现在只会用 assembly 反射加载插件,就不不知道卸载的方法,网上说的太深奥,求大神具体指导下,给个示例代码 解决方案 据我所知,插件没有办法卸载.如果你说的卸载只是为了使得用户可以删除插件文件的话,那么可以用assembly.loadfrom(filestream)的方式加载,而不是直接从文件加载. 这样插件dll可以在程序运行的时候被删除.但是这不是卸载,你的主程序还是可以继续调用这个插件. 你可