草庐IT

从“一云多芯”支持,看多元算力的全栈云方案

华为云开发者社区 2023-03-28 原文
摘要:华为云Stack如何在不同CPU架构下,构建信创云平台多元算力的全栈解决方案?本文将为你具体阐释。

本文分享自华为云社区《从“一云多芯”支持,看多元算力的全栈云方案》,作者:徐安 华为云Stack资深架构师。

背景

华为云Stack作为华为云在政企市场的品牌,是政企客户智能升级的首选平台。随着政企客户数字化的不断深入,上云要求越来越多,给华为云Stack也带来了很多不一样的挑战和新问题。

分析来看,目前从宏观上看,中美技术对抗的大背景下,IT安全越来越引起国家重视,信创产业由此产生。通俗来讲,信创产业就是在核心芯片、基础硬件、操作系统、中间件、云等领域实现国产替代。发展预计将按照:党政等封闭市场、重点行业市场(如电信、轨交、电力等)、消费市场,三步进行。政企客户,即为目前的首要市场。

从微观上看,政企客户上云趋势是:会将协同办公OA系统、电子公文等非涉密系统部署在电子政务外网上,采用传统虚拟机、物理机部署方式,基础IaaS即可满足业务部署需求。未来,也会有大数据、数据库、容器、AI等高阶诉求,把信创云平台作为政务第二平面来构建。

因此在这个前提下,IaaS云平台向下需屏蔽不同CPU架构的硬件差异,向上需提供服务化的算力模型封装,把算力相关的存储、网络、操作系统、监控运维等以服务化的方式提供。所以IaaS云平台支持不同信创行业的CPU架构,解决“一云多芯”问题,是最基础的能力要求。

针对“一云多芯”的解决办法

一、不同CPU架构的特点分析

目前主流的新创CPU架构有以下几个:

考虑到各CPU架构的成熟度和性能,我们以鲲鹏、海光、飞腾作为华为云Stack支持信创CPU的首选。这些CPU架构又有各自的技术特点:

1、鲲鹏

CPU核心通过环形架构互联,通过扩展计算单元数量来支持众核架构,采用7nm工艺,Die内均等内存和IO访问能力。

2、海光

CPU核心通过Die之间互联架构来连接,采用12nm工艺,一个CPU有4个Die或者2个Die,一个Die固定有2个计算单元,一个计算单元内有4个海光核。

3、飞腾

Die之间通过2D Mesh方式互联,一个CPU支持8个Die,一个Die与两个或者三个Die以2D Mesh方式互联。

二、华为云Stack技术方案特点

根据上述不同CPU架构特点,华为云Stack采用:CPU架构混合部署、亲和性部署方案,来应对“一云多芯”现象;同时,华为云Stack还有全栈可控的软硬件,为政企客户提供的坚实的云底座基础。

1、不同CPU架构混合部署

面对不同CPU架构的不同特点,华为云Stack进行混合部署。可以理解为把数个杂乱无序的商品,整齐陈列到一个陈列整齐的便利店中,所有品类都能放到便利店中、同类商品统一陈列、特殊商品也有自己的位置。有算力需求时,就如同用户走入便利店,能快速、高效的找到想要的东西。

具体混合部署方式如下:

(1) 华为云Stack支持多个CPU架构在一朵云上共存。客户可以按照自己的业务诉求,管控硬件资源和业务环境,实现高效管理。

支持的CPU架构:Intel CPU服务器、海光CPU服务器、鲲鹏CPU服务器、飞腾CPU服务器在一朵云内共存,高效管理,用户按照自己的业务诉求管控硬件资源和业务环境

(2) 把相同CPU架构,放入对应的资源池中。比如把Intel CPU和海光CPU、鲲鹏CPU和飞腾CPU,分别放入x86和ARM资源池中。对于那些没有使用特殊指令的应用,可在不同厂商CPU之间流动,可高效管控资源池,提高资源池利用效率,减少资源碎片。

(3) 业务镜像仅按照操作系统区分,不区分CPU架构,如果操作系统可兼容不同的CPU架构,可在同资源池内复用。

(4) 对于有特殊指令诉求的业务负载,可通过规则中参数来指定业务放置在哪里。比如指定x86-虚拟机-规格,就会在Intel CPU服务器或者海光CPU服务器上选定一个地方放置。

2、考虑不同CPU架构之间的差异,支持亲和性部署

想象下你有几个编制不同、演奏方式不同的乐队,为了每次收到新的曲子,都能最快的编排出来,你需要提前收集这几个乐队的架构、声部、主要领队人等等,把这些信息登记在册。之后再收到新的曲子,只需查阅之前的记录,就可以实现人员的精准分工了。

亲和性部署,就是把不同的CPU架构差异,记录在数据库表中,收到新的算力需求时,实现调度匹配。

华为云Stack部署业务的步骤如下:

(1) 获取CPU topo,包括Socket、Die架构、计算单元、核心、超线程的关系。支持鲲鹏,intel,海光,飞腾CPU

(2) 获取的CPU topo在系统中保存

(3) 按照调度算法放置不同的业务负载

(4) 用户可按照CPU topo的形态呈现现有CPU架构,剩余CPU资源,已经使用的CPU资源

华为云Stack部署业务的算法基本原则是:

(1) 按照numa距离总量最小的组合,选择Die

(2) 在die内先填满一个计算单元,再填满另一个计算单元

(3) 使用局部最优悲观算法来考虑碎片问题

  • 如果要使用的资源可被一个计算单元整除,优先以计算单元为单位填满碎片,如若还有剩余,用碎片填满
  • 如果要使用的资源不可被一个计算单元整除,优先用碎片填满

3、全栈可控:覆盖芯片、服务器、存储、数据库、操作系统、云平台全栈可控

华为云Stack软硬件均自主可控,包括鲲鹏920高性能CPU、还包括昇腾310/910、AI芯片、Hi181x存储控制器芯片、Hi182x网络控制器芯片、Hi171x服务器管理芯片。也包括上面的服务器、集中式和分布式存储、交换机、路由器、防火墙等设备。华为掌握鲲鹏ARM、openEuler(开源)、openGauss(开源)等三大根技术,可为有全栈云信创诉求的政企客户提供安全可靠的云底座平台。

写在最后

随着政企客户信创产业的发展,政企客户对上云的诉求的增多,华为云Stack也面临着不同的挑战越来越多。我们华为云Stack充分考虑到客户目前拥有不同CPU架构的现实,通过分析主流CPU架构的技术特点,一方面全面支持一云多芯的设备能力;另一方面,通过硬件到软件的全栈可控云信创方案,为政务客户提供可信场景下,智能升级首选方案。为政企客户的全面云化打造了一个坚实有力的底座。

 

点击关注,第一时间了解华为云新鲜技术~

有关从“一云多芯”支持,看多元算力的全栈云方案的更多相关文章

  1. ruby - 如何使用 readline 支持重新安装 ruby​​? - 2

    我已经按照https://github.com/wayneeseguin/rvm#installation上的说明通过RVM安装了Ruby.有关信息,我有所有文件(readline-5.2.tar.gz、readline-6.2.tar.gz、ruby-1.9.3-p327.tar.bz2、rubygems-1.8.24.tgz、wayneeseguin-rvm-stable.tgz和yaml-0.1.4.tar.gz)在~/.rvm/archives目录中,我不想在任何目录中重新下载它们方式。当我这样做时:sudo/usr/bin/apt-getinstallbuild-essent

  2. ruby-on-rails - "undefined method ` stub_request '"访问 RSpec 支持文件中的方法时 - 2

    我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re

  3. ruby - Ruby 是否支持逐字字符串? - 2

    Ruby是否支持(找不到更好的词)非转义(逐字)字符串?就像在C#中一样:@"c:\ProgramFiles\"...或者在Tcl中:{c:\ProgramFiles\} 最佳答案 是的,您需要在字符串前加上%前缀,然后是描述其类型的单个字符。你想要的是%q{c:\programfiles\}。镐书很好地涵盖了这一点here,部分是通用分隔输入。 关于ruby-Ruby是否支持逐字字符串?,我们在StackOverflow上找到一个类似的问题: https:/

  4. ruby - 在 Ruby 1.8 中支持 Ruby 1.9 的哈希语法 - 2

    我正在编写一个Rubygem,在我的代码中使用{key:'value'}哈希语法。我的测试都在1.9.x中通过,但我(可以理解)在1.8.7中得到syntaxerror,unexpected':',expecting')'。是否有支持1.8.x的最佳实践?我是否需要使用我们的老friend=>重写代码,还是有更好的策略? 最佳答案 我认为你运气不好,如果你想支持1.8,那么你必须使用=>。像往常一样,我会提到在1.9的某些情况下您必须使用=>:如果键不是一个符号。请记住,任何对象(符号、字符串、类、float……)都可以是Ruby哈

  5. ruby-on-rails - Rails 是否支持监听 UDP 套接字的简洁方式? - 2

    在Rails中,什么是集成更新模型某些元素的UDP监听过程的最佳方式(特别是它将向其中一个表添加行)。简单的答案似乎是在同一个进程中使用UDP套接字对象启动一个线程,但我什至不清楚我应该在哪里做适合Rails方式的事情。有没有一种巧妙的方法来开始收听UDP?具体来说,我希望能够编写一个UDPController并在每个数据报消息上调用一个特定的方法。理想情况下,我希望避免在UDP上使用HTTP(因为它会浪费一些在这种情况下非常宝贵的空间),但我完全控制消息格式,因此我可以为Rails提供它需要的任何信息。 最佳答案 Rails是一个

  6. ruby - Watir-Webdriver 是否支持点击目标为 javascript 的链接? - 2

    我是Ruby和Watir-Webdriver的新手。我有一套用VBScript编写的站点自动化程序,我想将其转换为Ruby/Watir,因为我现在必须支持Firefox。我发现我真的很喜欢Ruby,而且我正在研究Watir,但我已经花了一周时间试图让Webdriver显示我的登录屏幕。该站点以带有“我同意”区域的“警告屏幕”开头。用户点击我同意并显示登录屏幕。我需要单击该区域以显示登录屏幕(这是同一页面,实际上是一个表单,只是隐藏了)。我整天都在用VBScript这样做:objExplorer.Document.GetElementsByTagName("area")(0).click

  7. Ruby - 不支持的密码算法 (AES-256-GCM) - 2

    我收到错误:unsupportedcipheralgorithm(AES-256-GCM)(RuntimeError)但我似乎具备所有要求:ruby版本:$ruby--versionruby2.1.2p95OpenSSL会列出gcm:$opensslenc-help2>&1|grepgcm-aes-128-ecb-aes-128-gcm-aes-128-ofb-aes-192-ecb-aes-192-gcm-aes-192-ofb-aes-256-ecb-aes-256-gcm-aes-256-ofbRuby解释器:$irb2.1.2:001>require'openssl';puts

  8. ruby - jekyll - 插件支持 - 它是如何工作的? - 2

    我刚找到thiscomment来自mojombo:ThelatestonmasternowhasPluginsupport.Lookatlib/jekyll/convertersforexamplesofhowthey'redone.Also,any*.rbfilesina_pluginsdirectorywillbeloadedsothatyoucancreatecustompluginsofyourown.我看过/lib/jekyll/converters但无法理解它们应该如何工作。谁能给我解释一下?非常感谢。 最佳答案 一个新

  9. ruby-on-rails - routes.rb - 不支持 Controller 名称 - 2

    我遇到了一个很奇怪的问题。这是与routes.rb相关的部分:resources:playersmatch'/players/:userid',:to=>'Players#show'当您访问localhost:3000/players/1234时出现此错误:'Players'isnotasupportedcontrollername.Thiscanleadtopotentialroutingproblems.Controller中的相关代码:defshowbeginifPlayer.find_by(:uid=>:userid)then@playerattributes=Player.f

  10. ruby - 具有 HTTPS、SSL 客户端证书和 Keep-Alive 支持的 Ruby HTTP 库? - 2

    我正在尝试用Ruby编写一个HTTPS客户端。它将使用HTTPS连接到服务器,传递身份验证token(通过单独的登录过程获得)和SSL客户端证书。我正在使用rest-client执行以下操作:client=RestClient::Resource.new(url,:ssl_client_cert=>OpenSSL::X509::Certificate.new(File.read('./certificate/client-2048.pem')),:ssl_client_key=>OpenSSL::PKey::RSA.new(File.read('./certificate/client

随机推荐