IDCC2018|Intel云计算基础架构 高级软件架构师周申:数据中心资源管理技术

中国IDC圈讯  12月11日-13日,由中国IDC产业年度大典组委会主办,中国IDC圈、CloudBest承办的以“赋能企业数字化转型”为主题的第十三届中国IDC产业年度大典(简称“IDCC2018”)在北京国家会议中心隆重召开。

13日上午,IDCC2018分论坛,数据中心技术创新论坛正式召开!本次论坛邀请了行业内知名大咖和技术专家为大家带来当今数据中心技术创新内容的分享。

IDCC2018|Intel云计算基础架构 高级软件架构师周申:数据中心资源管理技术_第1张图片

会上,Intel云计算基础架构 高级软件架构师周申为我们带来了《数据中心资源管理技术》的主题演讲,以下为采访实录:

我是来自Intel网络基础架构的架构师周申,很高兴在IDCC大会上和大家进行分享,我今天主要分享的内容是在数据中心里资源的管理怎么集中化,以及建设数据中心面临的一些问题是什么,如何进行更好的优化。在数据中心上跑业务,怎么把数据中心真正给用起来。不管是5G、云计算、人工智能还是大数据,各种各样的方兴未艾。整个云计算是一个引领的业务不断发展,对于数据中心来说,面临的根本问题,不管是在上面跑5G还是人工智能、大数据,核心的问题是我希望我的数据中心能够帮我完成业务,它的性能是一个核心的关键,我既然建了这么多的数据中心,投了这么多硬件资源,我的核心目的是我能够完成多少业务,能够提供多少服务,能够为我创造多少价值,这是核心关注的点,这是性能,这个Performance是贯穿在一代代CPU技术、网络技术,不断提高性能。另外是TCO,这是一个成本,衡量的是总的应用成本,我们把服务器、数据中心,不管是电力还是制冷,所有的加在一起是总的应用成本,这些成本是数据中心不断的投入。用户所追求的是我的性能和我所投入的成本之间的一致,我怎么才能最大优化这个问题。而这个问题是贯穿在数据中心、计算机发展的历程中,不断的在性能和成本之间不断优化,达到更好的优化效果。Performance、TCO在很多方面是衡量发展的关键。在业界,这样的Challenge有很大的问题,我的数据中心里怎么降低成本,性能是在不断的带来新的成本,怎么办?数据中心很大的问题是平均使用率还在一个相对比较低的水平,业界数据中心最先进的还是像美国的Google、微软、亚马逊,这些大的企业走在业界发展的最前沿,带动着整个数据中心。像国内的阿里、腾讯,都是引领业界发展的。哪怕是这些最领先的云计算或者大的互联网企业,数据中心平均的使用力也在降低,可能是2%、10%,有的可能优化到30%-40%,没有说这么多的设备是不是可以完全利用起来,实际上没有,这是一个很大的问题。回到比如我们自建的数据中心或者企业的数据中心的使用率会是相对更低的水平,也就是说我们看大量的数据中心并没有把投入的硬件资源都给利用起来,这是数据中心的一个问题。当我投入了一万块钱,响应四五个业务,变成我的硬件之后变成两万元,是不是可以响应10个业务或者响应12个业务,这是核心评价的问题。

整个业界发展的趋势,恢复十年前、十五年前是什么样的?买一台机器跑上自己的业务,这个业务去响应服务。当我新的业务来了,可能需要增加新的硬件的成本,这是过去十年、十五年最常见的使用模式。在2000年左右有虚拟化的技术,下一代走到了虚拟化的技术。我可以在我的一台服务器上通过虚拟化运行了多个操作系统,可以面向多个场景,带来一个问题,我能够让我的一个服务器跑更多的程序,提高了使用的效率。数据中心不断的扩建成本,虚拟化更新的技术会带来容器的技术,在整个服务器中心,架构进服务发展到平台进服务,或者现在最新的应用进服务。所有的发展,他们要做的,从底层来说就是我让我的服务器,让我的同一台设备能够运行更多的业务,归根到底是要解决这个。而运行更多业务的根本是因为我可以降低成本,我的设备性能不断地提高,我怎么才能把这些设备的性能利用起来,可以让我的服务器运行更多的业务。从我们看到的趋势来讲,从一个CPU的服务器、两个CPU的服务器、四个服务器或者到CPU里核数不断的增加,我们看到的是,只会在一个服务器上运行越来越多的程序,运行更多的应用在这上面,这样服务器的性能在不断的提高,会运行更多的应用。这样的过程从单机到虚拟化提高了服务器的效率使用,又到了云计算,又到了容器,这些技术还是有很大的空间来优化,尤其是数据中心资源使用的优化。

对数据中心的运维人员或者使用者来说,有几个痛点。第一,现在很多的大型数据中心,像美国一些大的数据中心的互联网公司面对的问题是数据中心的成本压力,成本压力会跟什么对标?和云计算对标。也就是说,当我决定,不管是用IDC还是自建一个数据中心,我的衡量标准是满足这些业务和我用亚马逊的云服务、Google的云服务或者其他云服务的厂商进来,我的成本在哪里?是不是有足够的理由自建一个数据中心?是一个不衡量的压力在这边。也就是说,当数据中心运行的时候,我的对标是那些云计算,有一些业务一定是需要自己控制运行在数据中心里的,但是还有很多的业务可能并没有那么的关键,可以运行在云计算的平台上,这些云计算平台商所能提供的价格和他复建的数据中心是不一样的。怎么在这样的场景下,数据中心能够更高效的利用它的计算资源,这是一个问题。

第二,就现在的数据中心来说,有很多大型的应用在业务部,并不会只运行单业务,会在很多业务上并行跑在机组上。当数据中心建好,集群建好了,当我想引入一个新的业务时,对我原有的业务会不会性能上的冲击?会不会有影响?我想加入一个新的东西,是新建服务器还是把新的业务跑在已有的集群服务器上?像这样的问题没有一个很好的衡量指标能够告诉我们数据中心的运营人员,当加上一个新的业务到现有集群对原来已有集群有什么样的影响,没有一个衡量的指标。这对于越来越复杂的数据中心,越来越复杂的大数据、云计算、人工智能,当新的业务上来的时候,怎么做好一个数据中心的规划,这也是一个恒定的问题,是一个很大的压力,需要数据中心的运营人员、管理人员来回答。一个新的集群,比如今年新的人工智能的业务,是要做一个新的集群还是可以把业务放到已有的集群上?

第三,一些性能的直观分析。当我的一些集群跑业务时,业务跑到那儿,多个业务跑在这个集群上,性能之间是不是互相有影响?每一个业务是不是可以很好的充分利用硬件的资源?在目前的方案中也并没有一个很好的方案可以解决。

数据中心需要一些方案,能够帮助数据中心云计算真正的使用者回答这些问题,能够优化它的资源分配,这是一个解决的问题。当我想使用资源的时候,我希望在我的同一台机器上跑更多的业务,这就是我最根本的诉求,同样的机器跑更多的业务,当新的业务加上去了,不要对我已有的业务受影响,我可能就不需要新的业务了。这个问题并不是一个简单的问题,并不是说现在的集群满足我的大数据等现在的应用,明年我要上一个人工智能,就把人工智能部署到这个集群里,不是这样的,不是业务往同样的集群里部署就可以运行,这里面牵扯到很多底层的技术问题。用户的核心诉求是,已有的业务肯定要满足它的性能指标,性能的指标已有的在数据中心的业务,不会是一个长期恒定不变的业务标准,它可能是波动的,有高峰有低谷,当计算有资源、有空闲时,希望用空闲资源跑新的业务或者跑不太重要的业务,这是数据中心业务部署的核心诉求。在这里面有很多技术的壁垒,并不是那么简单就可以做到的。一方面,简单举例像CPU的资源,这是运行业务时数据中心中最核心的资源,但是数据中心的资源大量跑Linux,Linux运行的分配,哪怕有一些业务被运行起来,有一定的时间,比如200毫秒的时间在保持运行,这段时间没有办法响应其他的业务,整个资源的分配只是做到了毫秒级,但真正的业务响应可能要更迅速的CPU资源。另外一些资源,当我看到一个真正的集散时,哪怕一个服务器有两个CPU或者四个CPU,我分配了不同的核,但是在这个计算资源里,我们有大量的资源是共享的,比如CPU里缓存,它的缓存是L3的缓存是共享的,Memory到CPU之间的带宽是共享的,这些共享的资源从某种程度上,当把多个业务运行在一个计算平台上,有很多资源在不断的共享、发生竞争、不断切换,这些共享、切换之间的冲突阻碍了把很多不同的业务运行在一起。

举一个例子,(图)这只是示例性的场景,当一个业务跑到7.7核时把业务完全跑起来,满足响应时间,最大可承受的业务量可能就是跑到了7.7核。在这种情况下,比如说有10个核的服务器,是不是可以把剩下的2.3个核利用起来跑其他的业务?另外部署的业务可能只需要占2核的业务,这个情况下,原来7.7核的业务也会在同样满足响应时间的情况下,性能并不能跑到原有的资源占有。这就是底层很多Linux和OS操作系统在不同的性能切换、管理时有很多的资源消耗,并不是说可以把几个资源简单做一个加法叠加在一起,就能够把整个的服务器资源给利用起来,并不是这么简单的问题。

(图)右边是一个简单的示例图,在服务器里有共享的共存,当我在一个服务器上运行了多个业务时,可能在服务器上运行十个、二十个业务,同样用我的资源,这些业务之间是共享缓存的,在这些缓存之间是有共享竞争的,当一个核心业务使用缓存时,其他的业务也需要使用缓存,去抢占缓存,不同业务的组合,不同业务量的配比,它们对于缓存资源抢占的能力是不一样的,这也是一个非常复杂的优化问题。

基于这些平台的优化问题,有一个平台优化的资源管理的概念。在单机的计算平台上,需要能够通过底层的资源信息,我知道我的不同的业务每个底层资源信息的使用情况,它跑的业务的负载,能够动态的再分配它所使用的资源,达到的目的是,当我把新的业务加进去,能在保证核心业务运行的前提下,使数据中心的服务器能够跑更多的业务。有两大类型业务,一类是核心业务,核心业务就是一堆和用户响应、时间响应敏感的,比如我们去淘宝买东西或者双11购物,购物的时候需要马上反馈,这些即使相应是一个核心业务,对于响应时间有很多明确的要求。另外做一些索引、数据处理等大量的离线业务,这些离线业务并不是直接对响应时间有要求,但是需要完成,去处理图片、处理数据,但对时间并不是敏感的。怎么在这两类业务之间,在满足核心业务响应时间的前提下,能够充分使用资源跑更多离线的业务。

(图)在OS这样的模块里能够动态监控到响应的情况,同时能够动态的资源调动。

如果能够使业务稳固,要解决两个问题:

第一,冲突分析。当有不同的业务混在一个服务器上,可以想象是十种、二十种不同的业务在一个服务器上,每一种业务都在并发使用着计算资源、网络资源、内存资源,它们之间有没有资源的竞争?有些一两个业务把整个的缓存全抢光了,剩下的业务都拿不到缓存,性能就会受到影响。这样的资源是冲突分析,通过底层资源不断地使用情况,对每一个业务资源以机器学习的方式进行建模,建模之后再看每一个业务所使用的资源是怎么样的,看是不是发生了资源竞争。比如说这个机器同时部署了10个业务,也许都在使用不同的资源或者现有的资源能够满足,能够很好的并行运行。也可能某一些资源之间共同在某一个时间点抢CPU或者某一个时间点抢内存,这样在业务的建模基础上分析,当前跑到这些业务之间是否存在着底层资源的竞争发生,如果竞争发生了,是哪些业务之间互相有影响,是竞争了哪些资源,是内存资源还是带宽、CPU,只要分析了所有的结果,才能够做更好的处理。现在很多跑人工智能的情况,我们的一些客户可以利用现有的资源,现有的集群建好了跑所有的业务,能不能在不影响现有业务的基础上跑人工智能的业务?跑的所有的人工智能的业务都是在额外的硬件资源上运行的,在额外硬件资源上运行业务对现有的业务不影响提高了整个的使用效率。

第二,在我们对于每个业务不能建模分析的基础上,是一个动态的管理。分析不同的监控,每一个业务当前是不是有底层的竞争,如果有竞争,竞争的是哪些资源,是哪些业务竞争,从这个基础上可以知道不同业务的优先级,它是一些核心的用户需要及时响应的业务还是一些可以长持续处理的离线业务,通过不同的优先级动态的再重新分配它所使用的带宽资源、CPU资源或者内存资源,这样保证不影响核心业务基础上,仍然可以让这台机器运行我更多的离线业务,能够总体提高这个服务器的使用效率,这是我们需要提供的一套方式。

我们实验室做出来的一个简单数据,模拟了一个相对复杂的应用环境,可能运行了3-4个核心业务,每一个核心业务又跑了不同的核上,跑在12个核上,他们要完全满足我的响应时间,在这个基础上,我们又去跑绿色的离线业务,这里面有人工智能的TensorFlow各种人工智能的预测业务,我可以把它当作离线业务来共同运行。在这种情况下,通过底层资源有效的预测分析,能够在保证核心业务不受影响的前提下跑更多的离线业务,在这个例子上,是我们把一个机器的使用率从50%多提高到70%多,同样的服务器,同样的业务集群,在原有业务不受影响的基础上部署更多的业务。

(不同性能指标 图)当没有动态管控的情况下,如果简单把离线业务和核心业务进行稳固,因为底层资源的竞争,因为CPU、Linux、OS的分配机制,没有办法做到业务之间不受影响,会导致一些核心业务的响应时间受到影响。在加上实时监控和管理之后,在保证核心业务同样满足响应时间的前提下能够跑更多的离线业务,这样就加大了整个服务器的使用效率。

像这样的资源管理是有一个开源社区的项目,和一线的一些互联网厂商一起合作对这个开源项目做一些贡献,在这个开源项目的前提下,希望更多的合作伙伴、用户能够受益,能够更好的管理服务器的数据资源,降低使用成本。

我今天的分享就这些,谢谢大家!

你可能感兴趣的:(IDCC2018|Intel云计算基础架构 高级软件架构师周申:数据中心资源管理技术)