首页 > > > 王恒老师分享:软硬件优化的设计思路
作者:
王恒,博客专家,背景介绍。之前从事了7年的数据库相关工作,在深入学习过程中,发现软硬件优化非常有意思,于是如挖到宝藏一样疯狂的痴迷于这个领域。为了更深入的学习软硬件优化的知识,并将其实际应用到实际的生产中,加入到云计算领域,并在3年时间里,接触到全球最牛的硬件产品,最先进的软件栈,非常有价值的软硬件优化方案,并在这个过程中,积累了丰富的实践经验。
关注内容
本次希望分享一些这方面的设计思路和实践经验,希望对以下受众有所帮助:
1. CTO:技术的本质是推动商业的发展,商业的可持续发展是基于技术上如何更高效的利用热动力转化的价值。换句话说,相同的产品,5块钱生产的商品相比10块钱生产的商品在商业发展中,更有竞争优势。而CTO关注的正是通过技术,为企业创造更有竞争力的商品和服务。那么软硬件优化将是一个重要的方向,值得你深入挖掘。
2. CFO:CFO主要是控制财务风险,提高资金效率,如果有软硬件优化的一些思路,可以让成本得到有效的控制,提高资金效率。
3. 运维总监:一般来说,公司里面负责硬件相关的工作,一般由运维总监来负责,从采购的资源到后期生产应用,都会一直跟踪。而选择什么样的硬件,提供什么样的软硬件方案,如何提高资源的有效性等方面,都需要基于对硬件以及软硬件优化的方案有所了解,才能有的放矢的进行推进。
4. 系统工程师:硬件的发展非常迅速,传统的技术栈和技术体系,不一定适合当前的硬件系统,通过软硬件结合,在技术上进行优化,提高效率降低成本,才是一条长期演进的道路,保持在这方面的意识,会让职业生涯更加长远。
另外,也许会有疑虑,随着云计算的发展,大多数互联网企业已经全部上云,那么软硬件优化对于企业来说,是否仍然还有价值呢?我认为仍然有价值,并且价值非常大。云计算提供的是一个产品,如何更好的用好云计算产品,这也是一个重大的课题。了解软硬件优化的方案,对于云计算IAAS产品是怎么设计会有更深入的了解,对各家的技术能力有所了解,无论是充分利用好云计算,还是跟云计算服务商进行成本优化,都是有效的武器。
软硬件优化的范围
软硬件优化其实没有明确的定义,之前从来没有过这个岗位,而在近几年云计算厂商中,这个岗位的人越来越多。
由于是工作过程中自然形成的职能,所以其工作内容主要包括:硬件的设计、硬件选型、系统软件栈的优化、软硬件结合的优化。原则上,硬件并不单单指数据中心的服务器,以及服务器相连接的一系列硬件集合,如:网络的架构设计,IDC的散热、供电、能效等设计,服务器的设计、部件选型。基于这些硬件,会有大量的软件栈,如何更好的将他们匹配起来,满足业务的需求,同时如果能够提供高性能、低成本、低延时的服务能力,就是最佳实践了。
因此,目前云计算厂商的软硬件优化工程师,将会成为非常核心的人才,决定了云计算效能的关键因素。
基础要求
看到以上的内容,估计大多数人已经打退堂鼓了。其实我也是从没有硬件背景条件下,慢慢走向了这条路,到如今自认为对硬件已经有深入了解。
其实并没有想象的那么困难,我的观点是:充分发挥你的优势,思考如何提高热动力的转化效率。也就是说:
1. 如果优势是对业务非常熟悉,那么就要依托对业务的认知,来假设硬件应该做成什么样子,提供什么样的能力。有了需求,就有探索解决方案的驱动力,深入了解你想知道的硬件知识。
2. 如果优势是对硬件非常了解,那么就要借助硬件的设计原理,来推导软件系统设计的方案,以及业务如何高效实用的思路。然后基于这个思路,深入了解业务的处理流程和逻辑,就能挖掘出软硬件优化的方案。
3. 如果优势是成本和效率,那么这个事情也不难,做同样的事情,让技术人员给出各种解决方案,做成本和效率的对比即可。如果要深入了解每一个方案,那就根据解决方案,深入了解业务需求和硬件基础即可。
想想那些生物、心理、医学专业都可以转型到互联网工程师,这些也就不算什么太难的事情了。而我一直认为大范围的涉猎知识,会让你有别人不具备的优势。同样是工程师,懂心理学的工程师做出来的产品,丢客户的体验会更具有同理心。千万不要放弃优势,从零开始学习新技能,那就得不偿失了。
软硬件优化设计思路
软硬件优化的设计思路,我会先从硬件来看一下发展趋势和行业情况,然后再来看看软件栈上的选择,最终给一些设计思路上的指引。为了让尽可能多的人理解,开篇我会用尽量简单的语言进行分享。而专业技术方面的探讨,如果有兴趣,我们可以深入交流。
硬件发展趋势
CPU的趋势
全球数据中心90%以上的CPU处理器都是Intel提供,Intel也保持这基本上18个月左右的频率发布新的CPU,以体现摩尔定律的有效性。随着发展,体现了几个趋势特点:
1. 核心数多:因为制程的因素,CPU的核心数一直都在增加,目前CascadeLake标准Roadmap CPU最大支持28核心,这就是现在大家将的计算力。单位面积的计算力一直在提高,是效能的提高。
2. 功耗高:功耗提高是必然的,现在CPU动不动都要破200瓦,散热是巨大的挑战。然而核算到单位CPU 核心上,功耗肯定是降低的。也就是说热动力学的能效是提高的。
3. 内存大:CPU核心多了,支持的内存通道就会增多,支持的总内存容量也会变大。这样才能匹配上提供的计算能力,否则会出现效能的短板。
4. PCIe Lan变多:PCIe Lan比较陌生,换句话说,处理器上可以支持挂载更多的设备了。比如SSD可以挂载更多,网卡可以升级更大带宽能力等。
然而近几年Intel在制程和提升效能方面遇到了很大的瓶颈,一方面与技术架构的方向有关,另一方面也与商业逻辑有关。而从去年开始,AMD东山再起,新的产品架构,给业界打开了一扇窗。因此,AMD的处理器,在核心数、功耗效能、内存容量、PCIe Lan上,都领先于Intel,这是非常难得的。所以从效能来说,AMD绝对值得尝试;而从实际的情况来看,软件适配和软硬件优化方面的工作道阻且长,还需要较长时间的打磨。
内存的趋势
内存的趋势一直以来都是受Intel CPU的内存控制器能力决定。内存在容量方面:常用的为16G、32G,也有一些大型的内存应用支持64G、128G。在速率方面:配合着Intel CPU内存控制器支持的最大内存频率,当前最新为为2667、2933MHZ。
服务器内存容量的关键因素是CPU支持的内存通道,也就是说一台服务器能插多少根内存条。目前CascadeLake支持6 channel,每颗处理器可以插12根dual rank的内存。所以总的内存容量,就是这样计算出来的。
除了通用内存之外,还有一些最新的内存形态,比如:非易失性内存、Intel推出的Apache Pass,这些都是非常新的东西,但是在某些场景下就非常有用了,这些也是内存上进行软硬件优化的核心原动力。因此,新的内存或类似内存的技术,将会逐步增加份额,成为一个重要的趋势。
存储的趋势
存储方面,从介质上分为HDD和SSD两种。纵观行业的选型中,大量企业主要还在使用的HDD,而从趋势上,HDD却在在线业务上被快速替代,这是必然的趋势。对于HDD和SSD来说,他们也表现出以下趋势特点:
1. 容量变大:HDD的容量变大,主要靠碟片的密度,来提高其容量,目前已经越来越有挑战,与Intel遇到的瓶颈有相似的遭遇;SSD的容量却在快速增长,这与3D NAND颗粒的应用有关,也与颗粒的架构有关。NAND颗粒从32-》48-》64-》96,这使得SSD容量倍数级的增长,而从MLC-》TLC-》QLC的演进,也是指数级的增长,因此SSD的容量增长近乎疯狂,最大容量已经超过HDD。
2. 性能分化:通用的HDD、SSD在容量变大,单位容量的性能在不断下降,这个是一个典型的问题,这也是容量趋势变化的必然结果。高性能、低延时的SSD产品应运而生,专门解决性能的问题,也成为必备的解决方案。
此外,还有一些智能SSD、OpenChannel的产品出现,这些都是在存储智能化上的一些优化,用于解决当前实际生产中遇到的问题。让存储更加智能化,尽可能的卸载一些存储软件中的资源,这个也是一个趋势。但控制的度,就是一个艺术了。过度的控制,会产生资源的分化,不具备规模化能力;过于保守,就很难有市场需求。
网络的趋势
当10G网络成为企业标准时,25G打破了40G的趋势,成为网络的行业标准。也是因为这一趋势的变化,Intel一下子从网络垄断地位上跌落,取而代之的是Mellanox和Broadcom。而对于下一代是50G还是100G网络?这与产业的规模化有关,也与平台有关,目前还没有定论。但是100G肯定是未来的一个状态,因此很多解决方案,可以应对未来。
除了标准的网络,在这里的优化最先进。从AWS的Nitro架构应用的自研智能网卡,到商业公司Mellanox、Broadcom、Huawei的智能网卡,都是针对网络的一个优化,而智能网卡也成为云计算时代的必备利器。智能网卡取代传统的网卡,已经成为趋势。而推动这个趋势的并非网络和网卡的限制,成本和效能才是演进的原动力。
异构计算的发展
如今异构计算随着AI如火如荼的开展,在数据中心中已经占据一定的地位。按照未来AI无所不在的应用到各个地方,异构计算的份额将会不断扩大,这也是为什么Intel的焦虑之处。
异构计算目前主要由NVIDIA GPU、Xillinx FPGA以及一些自研的芯片为主。而对于异构计算,我们能够做出的硬件优化有限,而更多的是如何利用这些资源,将业务中适合进行AI智能化的部分,充分应用这些能力。在这方面,目前还是一片蓝海,这也是为什么各家都开始自研芯片的一个原因。
目前应用场景跟AI的结合,主要集中在新兴的领域中,而在实际业务中起到作用的情况,除了智能客服,实际上带来本质改变的案例还非常少。
数据中心的发展
数据中心的发展,是效能转化的重要关注点。如何运用更有效的电力效能,如何解决日益挑战的散热问题。这些会成为一个重要的课题。
其中,CPU的能耗不断增大,对应的风力散热已经不能满足,且成本在不断变高。目前的液冷方案,是未来散热的趋势。蜡烛吹灭就好了,炉子里火就要靠其他方案了。所以,在能效转化上,液冷的散热效果更好,优秀的系统设计还可推动周边能量需求的建设,这是一个热力学循环系统。
单位空间面积提供的计算/存储能力,也是数据中心的另一个方向,这个与机架供电的能力有关,也是一个复杂的工程问题。不仅要看数据中心,还要看服务器的设计,还有运维效率的问题。因此这里也会有很多值得研究和优化的空间。
软硬件优化设计思路
针对以上的硬件发展趋势,我们希望有一些认识:如何提高热动力的效率,是技术革命不断发生的重要原因。因此,所有的软硬件优化,就是站在趋势之上,结合业务的场景和不同的阶段进行硬件选型以及一些新技术的软硬件优化。
选型案例
为了更容易让大家理解我们选型上的一些思考,通过一个最常见的案例,会让大家更有体感。
案例1:应用系统构建在Kubernetes的容器上(无论是云计算,还是自建数据中心,都是一个逻辑),大部分应用都是计算类型的服务。需要的CPU核心数为10000核心;20000G内存;应用的存储容量很小,主要是一些日志文件,基本忽略;不同应用对于网络的需求是不一定的,所以这里不做特殊说明,而是作为选型的一个思考。
除了应用系统之外,还需要数据库服务和大数据服务,这里我们将作为后续的一些扩展讨论。
硬件选型思路
根据以上应用需求的案例,我们进行如下的分析:
1. CPU之所以是这样的发展趋势,驱动力是云计算。大规模的计算能力需求,降成本的方式就是单位计算成本的不断降低。单位计算成本我们精简公式如下,忽略IDC、网络等逻辑(忽略的原因是服务器在单位计算中占用绝对的比重),就非常清晰了。提供计算能力的资源是CPU和内存,其他的如机箱、主板、电源等等都是辅助资源。那么降低单位计算成本的方法就非常简单了:
a. 降低服务器成本是一个方案,但按照老祖宗教育我们的“一分钱一分货”逻辑,降成本存在二种情况:服务器过度设计增加了成本,通过自研定制化进行裁剪;大规模化采购,降低服务器成本。而这两种方案无疑都是需要技术、人力成本,大多数企业已经被拦在门外了。
b. 提高计算能力的成本比重,这个是最简单的逻辑。如果采购的服务器,CPU和内存作为计算资源,可以在服务器整体的占比基本忽略辅助资源的成本。这是可行的选型思路。因此,选择更多的CPU核心和更大容量的内存,提高服务器成本结构中CPU和内存的成本比例,降低辅助资源在单位核心的成本比例。
c. 提高单位CPU的计算力,这里有两个情况:选择最新的CPU型号,Intel每一代新的CPU,相同主频下,都会有10%左右的性能提升,这是工艺和架构上的优化;选择更多的核心数,均摊CPU内部非计算单元所占的比例。
单位计算成本 = 服务器成本(CPU+内存+辅助资源)/ (CPU计算能力/CPU核心数)
2. 内存在应用系统中,并没有特殊的需求,所以基本可以忽略。
3. 网络上有很大的差异,主要有几个问题:
a. 应用系统中主机上针对不同容器的虚拟网络的通信,涉及到大量的计算工作,会直接占用服务器上的CPU和内存资源,那么这些昂贵的Intel CPU就是能效的一种损失,不能产生直接的应用价值。所以这里就是一个网络软硬件优化的点。
b. 网络的整体容量选择,不同的应用会有较大的差异,但是整机可以提供的能力是有限的,那么选择10G、25G还是100G?思路是:未来3年,应用是否会突破选型的瓶颈,如果可以,那就做一个3年规划。至于成本,网络成本在计算中占比相比较低,另外在3年的生命周期里,会不断降低成本。“要致富先修路”跟网络的建设非常类似。当前10G网络跟25G的网络的硬件成本越来越小,而至于说是否直接奔100G网络,反而我会更加保守。但也有对应的策略:网络架构上升级到100G网络的能力,接入交换机可以通过1分4接入25G网络,也可以通过25G的接入交换机,来应对未来。目的就是确保未来的100G建设改造更少的设备,节省成本。
4. 存储方面大多为应用日志,没有特殊之处,不做特殊说明。
网络软硬件优化
网络软硬件优化,有非常多的技术思路,这里我们讲几个典型的思路。
优化思路1:内核态转用户态
网络性能优化,在虚拟网络层,主要应用的是OpenVSwitch,大多数的网络处理是内核态的处理逻辑,占用大量的内核调用,CPU和内存的消耗非常多。针对这个问题,业界比较成熟的方案是DPDK用户态协议栈,一方面提高性能、降低延时,另一方面节省了服务器上的CPU资源。
优化思路2:硬件Offload
硬件Offload能力也要结合软件栈的优化,目前Mellanox和Broadcom的标准网卡,提供了很多固定的IP,可以有效的进行流的控制和转发处理,可以调用他们的接口,将本来软件栈做的工作,卸载到硬件上来做,这个厂商可以提供很多技术的支持。对于云计算或者大企业,这个方面的自研会成为趋势,正如现在云计算的巨头,各自都有独特的智能网卡解决方案。这是一个大课题,就不展开来讲,如果有兴趣探讨,可以进行深入交流。
优化思路3:智能网卡
智能网卡是硬件Offload的延伸,就是将虚拟网络的所有资源消耗,全部下沉到网卡上完成,由于仍然需要业务逻辑的开销,所以智能网卡往往需要一些CPU的处理器。之所以要从服务器上的Intel CPU下沉到智能网卡上的CPU来做,其核心思想就是:通过便宜的CPU核心,置换出昂贵的CPU核心,用于发挥到上层应用的计算力上。也就是说通过智能网卡中的ARM CPU核心来做虚拟网络的处理,节省下了Intel CPU核心来提供应用的计算力。
这个案例对于使用云计算会有什么价值呢?分析一下现在云计算服务商提供的ECS实例,你会清晰的看到,他选择的CPU型号,核心数是什么样子的;网络的优化是什么方案。这些方案,决定了我们购买ECS实例的成本情况,这有助于我们判断是否走在了争取的道路上。
基于这个应用的案例,从硬件选型,到软硬件的优化,大概就是这些。因为这个场景非常单一,在实际的生产中,会有非常复杂的场景。比如数据库、存储、大数据方面,还有非常多案例值得分析和讨论。我们可以在后续继续铺开来分享,一起挖掘这些宝藏。
软硬件设计思路从这里开始,但是不会是终结,后续还会有很多话题可以展开深入讨论,也欢迎志同道合的朋友一起讨论和交流。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949636/viewspace-3161639/ ,如需转载,请注明出处,否则将追究法律责任。