这个概念很适合数据中心工作负载的不断变化的需求。许多人对用户级别的响应时间变得越来越敏感,因为用户越来越倾向于在几秒延迟后放弃搜索、在线购物或内容浏览。随着控制系统(特别是自动驾驶汽车)中开始包含机器学习或数据分析功能,实时限制得以产生,这使得延迟问题变得更加紧迫。
与此同时,真正庞大的数据集也被纳入了网络角色。英特尔® 高级总工程师 David Cohen 表示:“大数据分析能力使得冷数据得以回暖。新的分析方法正在深入探究庞大的历史数据集,包括事务日志、分类账、遥测或源源不断的物联网 (IoT) 网络流,这些数据集过去只是难以理解的档案。开发人员希望分析在几秒内完成,而无需耗费数天。
因此将所有数据放在主内存中是一个好方法,这将可以推动创建出一整代新应用和平台以及一个新的类别名称:内存计算。(请注意,内存计算是指数据完全存储在内存中的应用,而非嵌入到内存子系统中的处理单元。)但强大的技术也会有弊端。若要消除弊端,需要重新思考内存组织和数据中心网络架构(图 1)。这使得内存计算不仅仅是一个编程决策,更是一项工程挑战。
首先我们来了解一下它的演变。 更靠近内核
人们对内存计算的最初反应是纷纷上马此项技术,好方法通常都是如此。争抢挤入扩展的服务器 DRAM 的数据集很快就超出了机架式服务器卡的几百 MB 的 DRAM 容量。
这迫使架构师仔细观察工作负载中的数据访问模式。在 map-reduce 工作负载中,每个服务器都有自己的数据块并且服务器没有什么必要访问不在其本地 DRAM 中的数据,这没有什么大问题。这种情况下的内存计算仅仅是指划分数据集,以便每个数据块适合一个服务器卡的 DRAM 并且持久储存在此处。大多数情况下都需要访问存储在 DRAM 中的工作集的其他工作负载也是如此。然而当工作集无法存储在 DRAM 中时,挑战就来了。
下一个演进步骤是使固态盘发挥作用。通过 PCIe 连接到 CPU 的服务器卡上的固态盘可以向卡中添加 1 到数 TB 的本地存储(图 2)。固态盘通常拥有用于隐藏其固有延迟的 DRAM 高速缓存,因此可以每秒生成数十万个随机读取操作,可能是写入操作数量的四分之一。通常它们会使用 NVMe 命令协议替代 PCIe,该协议适用于读写命令,而非模拟内存。
这个概念很适合数据中心工作负载的不断变化的需求。许多人对用户级别的响应时间变得越来越敏感,因为用户越来越倾向于在几秒延迟后放弃搜索、在线购物或内容浏览。随着控制系统(特别是自动驾驶汽车)中开始包含机器学习或数据分析功能,实时限制得以产生,这使得延迟问题变得更加紧迫。
与此同时,真正庞大的数据集也被纳入了网络角色。英特尔® 高级总工程师 David Cohen 表示:“大数据分析能力使得冷数据得以回暖。新的分析方法正在深入探究庞大的历史数据集,包括事务日志、分类账、遥测或源源不断的物联网 (IoT) 网络流,这些数据集过去只是难以理解的档案。开发人员希望分析在几秒内完成,而无需耗费数天。
因此将所有数据放在主内存中是一个好方法,这将可以推动创建出一整代新应用和平台以及一个新的类别名称:内存计算。(请注意,内存计算是指数据完全存储在内存中的应用,而非嵌入到内存子系统中的处理单元。)但强大的技术也会有弊端。若要消除弊端,需要重新思考内存组织和数据中心网络架构(图 1)。这使得内存计算不仅仅是一个编程决策,更是一项工程挑战。
首先我们来了解一下它的演变。 更靠近内核
人们对内存计算的最初反应是纷纷上马此项技术,好方法通常都是如此。争抢挤入扩展的服务器 DRAM 的数据集很快就超出了机架式服务器卡的几百 MB 的 DRAM 容量。
这迫使架构师仔细观察工作负载中的数据访问模式。在 map-reduce 工作负载中,每个服务器都有自己的数据块并且服务器没有什么必要访问不在其本地 DRAM 中的数据,这没有什么大问题。这种情况下的内存计算仅仅是指划分数据集,以便每个数据块适合一个服务器卡的 DRAM 并且持久储存在此处。大多数情况下都需要访问存储在 DRAM 中的工作集的其他工作负载也是如此。然而当工作集无法存储在 DRAM 中时,挑战就来了。
下一个演进步骤是使固态盘发挥作用。通过 PCIe 连接到 CPU 的服务器卡上的固态盘可以向卡中添加 1 到数 TB 的本地存储(图 2)。固态盘通常拥有用于隐藏其固有延迟的 DRAM 高速缓存,因此可以每秒生成数十万个随机读取操作,可能是写入操作数量的四分之一。通常它们会使用 NVMe 命令协议替代 PCIe,该协议适用于读写命令,而非模拟内存。