导航菜单

微软亚洲研究院:数据中心软硬协同创新让硬件价值最大化

  浪潮圈2天前我要分享

  OCP是全球最大的开放硬件社区,2011年由Facebook发起成立,其宗旨是以开源开放的方式,重构当前的数据中心硬件,发展面向下一代数据中心的服务器、存储、网络、基础设施等创新硬件。目前,OCP核心会员超过200家。微软于2014年加入了OCP开放计算项目,是该组织交换抽象接口(SAI)项目的创始成员和贡献者。

  在浪潮与OCP开放计算社区联合主办的首届OCP China Day(开放计算中国日)上,微软亚洲研究院首席研究员张霖涛发表《数据中心硬件与系统软件共同演进》主题演讲,对当下数据中心软硬件面临的变革、发展趋势以及微软在这方面的研究实例做了详细汇报。现将演讲实录分享如下。

  OCP开放计算项目小科普

  今天跟大家谈一谈系统和硬件,我在软件方面比较专长,研究比较多,今天是我个人第一次参与到OCP大会中,非常激动。大家都知道我们需要很多系统软件,才能更好地应用数据中心里面各种各样的硬件,我们做软件很长时间了,并且有很多非常经典的运行软件、数据中心软件和存储软件等。很多系统软件都是上世纪70年代做的,所以很多那时候做软件设计的概念和原则性的设想还在影响着当今的软件设计,比如CPU是中心的处理单元、比如在内存层面把内存分级、比如缓存磁盘分验等等。但是在数据中心领域,特别是数据中心的硬件,面临很多变革,新出现的技术与我们之前的系统运行软件设计做的假设完全不同。在今天的数据中心里,很多先前的假设已经不完全正确了,比如原来的假设说I/O是慢的,现在I/O很快。包括400Gb的以太网未来都会很快出来了,还有内存这一块,现在它的变化也非常大。我们现在可以承受几十Gb每秒的数据处理。

  

  还有一个趋势,专用领域的硬件设计和一些相关的计算资源发展非常快。大家知道CPU的性能增加现在是比较稳定的,摩尔定律失效。而有专用目的的计算资源,增长更加符合原来的摩尔定律。现在越来越多工程师的工作精力放在有专用领域的计算资源,CPU和加速器的角色不一样了,我们的原则也有一些改变。

  

  之前百度发言人也提到,数据中心我们会用智能网卡,那么为什么大家会用到智能网卡?左边是传统概念,大家觉得CPU在中心,所有计算都要经过CPU,CPU来分配计算资源;现在智能网卡变为整个计算池中的核心,所以我们就变成了智能网卡,上面是FPGA,智能网卡可以做分配和加速器等计算资源。另外大家还在考虑,要绕过Kernel,很多时候我们愿意开发一个OS操作系统,用OS是为了保护硬件的安全,包括绕过硬件相应的短板,往往所有的文件系统访问和Network的I/O都是通过运行软件的Kernel内核,导致很多资源耗费。以上是我对现在趋势的一些背景介绍,接下来我想跟大家分享几个我们现在所做的研究项目,或者是一些例子,和大家交流下怎么解决硬件软件的问题。 第一,Key-Value Store。在数据中心里Key-Value Store是重要的组成部分,传统是用云里面的缓存,比如把一个网页或者访问结果做缓存,但是现在Key-Value Store已经成为数据中心的关键设施了,因为它用来传输不同的图形处理器和其他相关计算资源之间的沟通,所以现在Key-Value Store有一些其他的特性要求,比如我们要求它要有更大的通量。所以缓存对于现在的数据架构是必要的,另外我们还需要其他的运营系统,可以作为非常好的数据架构使用。传统的方式是使用Kernel TCP,后来又做了Kernel ByPass的方式,当然我还需要使用CPU,因为CPU是计算的主要引擎,但是CPU负载可以降低,内存负载可以优化,这样可以提高系统的绩效。

  

  最后我们绕过CPU,直接在客户端运算,很显然我们有各种不同的客户,我们把他们放在同样的线上进行协调,我们要使用SmartNIC,SmartNIC把CPU的工作负载放在NIC上面,在微软上面用NIC进行加速,在这样一个方式中可以使用新的硬件,实际上完成的还是老的任务。我们看一下关于KV-Direct的架构,它是通过CPU绕过的方式实现的,我们所做的是要把整个堆栈放在上面,CPU仅仅是处理了一个非常小的工作负载,所以它的绩效非常棒,它已经实现了硬件的最高值,能到这个图中的基本上中间值已经达到最佳,而且可以扩展,它的扩展是线性的,我们可以做非常好的部署。

  

  我们来看一下它和之前方式的对比,如果你看一下绩效,可以看到Key-Value Store要比现在的解决方案好得多。我们经常开玩笑说仅仅用了这么小的工作包就可以支持整个网上的浏览。KV-Direct到底有什么样的好处,他是利用了SmartNIC的硬件执行KV,CPU仅仅是运维控制,并且硬件的绩效已经到了顶峰,两年之前已经可以做到这样了。很多工作负载可以以这个方式进行改变,比如DIN、媒介、存储、运维等,是经过数据中心的工作负载处理的方式,我们用了SmartNIC作为主要指标。

  

  Socket是一个老概念,大约50年前就有了,它比较复杂,支持安全以及语义等等。Socket的麻烦在于在Linux上运行,它的绩效比较低,大约是占了80%到90%的CPU空间,而且还浪费了很多网络空间,把自己的硬件空间也浪费了,因此我们要做的是能够有一个非常本地的Socket,它和硬件RDMA以及多核有更好的融合,同时我们还能够让Socket分离,来保证它的安全性。

  

  我们所做的事情是多核的,在用户那里,这个核可以协调工作,如果我们两个Kernel之间想进入通话会提出相关要求,要求被发出去后会出现一个事件,最后事件的原数据就拿到了Kernel 2中。这听起来非常简单,为什么大家之前没有这么做,其中一个主要原因就是,在计算机语义学方面Socket的复杂性,对于其他的线程而言比较容易分享,但是可能会危及到安全。所以我们看到Socket能够支持关于数据传输的各样需求,让RDMA的绩效表现更好。如果在同一个主机中分享一个内存,这就和我们现在数据中心的样子非常切合,因为现在大家有特别多的容器,它们彼此之间需要交流。关于SocksDirect的绩效我不多说了,可以看到图中绩效提升非常大,如同我们看到的,它仅仅受到了硬件的限制,几乎可以将硬件的潜质发挥到最大,我们的系统对于硬件能做到的事情非常核心,而且也可以在计算机语义学上得到支持,传统的应用都可以在Socket上跑。现在的数据中心硬件和50年前非常不一样,对于微软而言,尽管我们是软件公司,但是我们在硬件方面也贡献良多,包括在硬件的可行性方面也做了非常多的工作,我们特别希望整个社区一起共同合作,以便在软件层的设计达成标准方面取得成效。最后我想说硬件和软件系统必须一起演进,才能更好地利用新的硬件方面的科技。

  收藏举报投诉

  OCP是全球最大的开放硬件社区,2011年由Facebook发起成立,其宗旨是以开源开放的方式,重构当前的数据中心硬件,发展面向下一代数据中心的服务器、存储、网络、基础设施等创新硬件。目前,OCP核心会员超过200家。微软于2014年加入了OCP开放计算项目,是该组织交换抽象接口(SAI)项目的创始成员和贡献者。

  在浪潮与OCP开放计算社区联合主办的首届OCP China Day(开放计算中国日)上,微软亚洲研究院首席研究员张霖涛发表《数据中心硬件与系统软件共同演进》主题演讲,对当下数据中心软硬件面临的变革、发展趋势以及微软在这方面的研究实例做了详细汇报。现将演讲实录分享如下。

  OCP开放计算项目小科普

  今天跟大家谈一谈系统和硬件,我在软件方面比较专长,研究比较多,今天是我个人第一次参与到OCP大会中,非常激动。大家都知道我们需要很多系统软件,才能更好地应用数据中心里面各种各样的硬件,我们做软件很长时间了,并且有很多非常经典的运行软件、数据中心软件和存储软件等。很多系统软件都是上世纪70年代做的,所以很多那时候做软件设计的概念和原则性的设想还在影响着当今的软件设计,比如CPU是中心的处理单元、比如在内存层面把内存分级、比如缓存磁盘分验等等。但是在数据中心领域,特别是数据中心的硬件,面临很多变革,新出现的技术与我们之前的系统运行软件设计做的假设完全不同。在今天的数据中心里,很多先前的假设已经不完全正确了,比如原来的假设说I/O是慢的,现在I/O很快。包括400Gb的以太网未来都会很快出来了,还有内存这一块,现在它的变化也非常大。我们现在可以承受几十Gb每秒的数据处理。

  

  还有一个趋势,专用领域的硬件设计和一些相关的计算资源发展非常快。大家知道CPU的性能增加现在是比较稳定的,摩尔定律失效。而有专用目的的计算资源,增长更加符合原来的摩尔定律。现在越来越多工程师的工作精力放在有专用领域的计算资源,CPU和加速器的角色不一样了,我们的原则也有一些改变。

  

  之前百度发言人也提到,数据中心我们会用智能网卡,那么为什么大家会用到智能网卡?左边是传统概念,大家觉得CPU在中心,所有计算都要经过CPU,CPU来分配计算资源;现在智能网卡变为整个计算池中的核心,所以我们就变成了智能网卡,上面是FPGA,智能网卡可以做分配和加速器等计算资源。另外大家还在考虑,要绕过Kernel,很多时候我们愿意开发一个OS操作系统,用OS是为了保护硬件的安全,包括绕过硬件相应的短板,往往所有的文件系统访问和Network的I/O都是通过运行软件的Kernel内核,导致很多资源耗费。以上是我对现在趋势的一些背景介绍,接下来我想跟大家分享几个我们现在所做的研究项目,或者是一些例子,和大家交流下怎么解决硬件软件的问题。 第一,Key-Value Store。在数据中心里Key-Value Store是重要的组成部分,传统是用云里面的缓存,比如把一个网页或者访问结果做缓存,但是现在Key-Value Store已经成为数据中心的关键设施了,因为它用来传输不同的图形处理器和其他相关计算资源之间的沟通,所以现在Key-Value Store有一些其他的特性要求,比如我们要求它要有更大的通量。所以缓存对于现在的数据架构是必要的,另外我们还需要其他的运营系统,可以作为非常好的数据架构使用。传统的方式是使用Kernel TCP,后来又做了Kernel ByPass的方式,当然我还需要使用CPU,因为CPU是计算的主要引擎,但是CPU负载可以降低,内存负载可以优化,这样可以提高系统的绩效。

  

  最后我们绕过CPU,直接在客户端运算,很显然我们有各种不同的客户,我们把他们放在同样的线上进行协调,我们要使用SmartNIC,SmartNIC把CPU的工作负载放在NIC上面,在微软上面用NIC进行加速,在这样一个方式中可以使用新的硬件,实际上完成的还是老的任务。我们看一下关于KV-Direct的架构,它是通过CPU绕过的方式实现的,我们所做的是要把整个堆栈放在上面,CPU仅仅是处理了一个非常小的工作负载,所以它的绩效非常棒,它已经实现了硬件的最高值,能到这个图中的基本上中间值已经达到最佳,而且可以扩展,它的扩展是线性的,我们可以做非常好的部署。

  

  我们来看一下它和之前方式的对比,如果你看一下绩效,可以看到Key-Value Store要比现在的解决方案好得多。我们经常开玩笑说仅仅用了这么小的工作包就可以支持整个网上的浏览。KV-Direct到底有什么样的好处,他是利用了SmartNIC的硬件执行KV,CPU仅仅是运维控制,并且硬件的绩效已经到了顶峰,两年之前已经可以做到这样了。很多工作负载可以以这个方式进行改变,比如DIN、媒介、存储、运维等,是经过数据中心的工作负载处理的方式,我们用了SmartNIC作为主要指标。

  

  Socket是一个老概念,大约50年前就有了,它比较复杂,支持安全以及语义等等。Socket的麻烦在于在Linux上运行,它的绩效比较低,大约是占了80%到90%的CPU空间,而且还浪费了很多网络空间,把自己的硬件空间也浪费了,因此我们要做的是能够有一个非常本地的Socket,它和硬件RDMA以及多核有更好的融合,同时我们还能够让Socket分离,来保证它的安全性。

  

  我们所做的事情是多核的,在用户那里,这个核可以协调工作,如果我们两个Kernel之间想进入通话会提出相关要求,要求被发出去后会出现一个事件,最后事件的原数据就拿到了Kernel 2中。这听起来非常简单,为什么大家之前没有这么做,其中一个主要原因就是,在计算机语义学方面Socket的复杂性,对于其他的线程而言比较容易分享,但是可能会危及到安全。所以我们看到Socket能够支持关于数据传输的各样需求,让RDMA的绩效表现更好。如果在同一个主机中分享一个内存,这就和我们现在数据中心的样子非常切合,因为现在大家有特别多的容器,它们彼此之间需要交流。关于SocksDirect的绩效我不多说了,可以看到图中绩效提升非常大,如同我们看到的,它仅仅受到了硬件的限制,几乎可以将硬件的潜质发挥到最大,我们的系统对于硬件能做到的事情非常核心,而且也可以在计算机语义学上得到支持,传统的应用都可以在Socket上跑。现在的数据中心硬件和50年前非常不一样,对于微软而言,尽管我们是软件公司,但是我们在硬件方面也贡献良多,包括在硬件的可行性方面也做了非常多的工作,我们特别希望整个社区一起共同合作,以便在软件层的设计达成标准方面取得成效。最后我想说硬件和软件系统必须一起演进,才能更好地利用新的硬件方面的科技。

达到当天最大量