本次课程主要从鲲鹏DevKit产生背景,鲲鹏DevKit整体介绍,鲲鹏DevKit主要功能介绍,鲲鹏DevKit亮点四个部分来说明,让我们对鲲鹏DevKit有一个基本认识。

1. 鲲鹏DevKit产生背景

大部分开发者一般用高级语言来开发软件。对于编程语言,例如C++,Python等来开发软件,由于采用了不同的指令集,在不同的体系架构平台上面是无法直接运行的,所以这些软件需要迁移。

不同的架构产生了不同的架构,在软件的迁移过程中,不同的平台会有不同的差异点。

我们通过一个C/C++的实际案例来看,例如我们需要使用64位来进行编译,编译指令在X86贺鲲鹏上是不一样的,内嵌函数,汇编代码也不同。

image-20220605214037953

原来的一些运行在X86上面的一些软件,我们迁移到鲲鹏平台上面。首先我们要评估这个软件是否可以迁移进行技术的可行性分析。这主要是为了提供是否需要做软件迁移的一个技术决策依据。我们要做具体的一个迁移工作。比如集成软件能够在鲲鹏平台上面正常的运行起来,保证功能是可用的。最后我们要做性能调优性能分析。保证迁移后的软件能够最大程度的亲和鲲鹏平台。

这些工作呢如果全部靠人工来做。那对于迁移和性能分析的人员来说,这种对技能和知识结构的要求是很高的。比如在迁移过程中,我们首先需要人工来检查道相关的的编译参数编写选项,例如函数汇编指令或者一些Java包,更有甚者可能还要进一步的识别。

由于平台差异性存在的这种内存不一致性。这个工作量是比较大的,那么对于工程师的门槛要求是比较高。

image-20220602193908660

基于鲲鹏的这种基于功能平台我们开发的一款新软件,或者说基于现有的软件,我们开发一款新功能或者增加新的功能。那这些新软件和新功能呢在开发的过程之中就能要能够自然的亲和鲲鹏架构,也就是说开发出来的代码经过编译后就能在鲲鹏平台上面正常的运行,同时这种代码也是把我们鲲鹏架构的性能发挥到最大的程度的。这就是我们所谓的鲲鹏原始开发。

基于鲲鹏平台的原始开发,一般都会有学习,代码coding,编译、调试,最后的测试和性能调优诊断这几个过程。若没有工具链的支持,我们在各个阶段可能都会遇到相应的一些困难,比如在学习的时候,我们可能缺乏这种相关的架构的学习指导或者介绍的书籍。不知道鲲鹏和其他的平台有哪些差异性。

在开发过程之中,如果没有相关的开发指导,或者说变动开发框架,或者没有相应的开发SDK实践,开发人员也是很难做到的。

在测试的情况下,特别是对于我们很多广大开发者来说,如果没有本地物理机的这种实际环境情况下面,我们开发了一套代码来测试我们的工作是否可用,是否兼容公共服务器。这都是有很大的问题的,那么我们可能需要是不是能够提供一套免费的评测环境,大家可以在上面既可以开发。也可以在上面做相应的监控测试,还有安全性测试。

目前Linux上面有很多这种零散的性能分析采集工具,比如pref这种工具都是表面上的,也是没有系统性的。如果没有相关的工具,大家做性能分析的时,都是比较零散琐碎的,并且需要很强的经验积累,这样对大家来说是很费事。

image-20220602193950812

工欲善其事,必先利其器。从前面的介绍大家已经知道了开发工具对提升开发者生产力是多么的重要。

因此华为始终非常重视鲲鹏开发套件的开发和投入,在过去的三年时间里投入了大量的研发的人力和资源来做这个事情。不断的提升鲲鹏迁移的能力。

从19年到22年,鲲鹏DevKit已经从1.0的应用迁移。逐步升级到2.0的原始开发阶段。

21年华为提供了一个技术版本的开发框架和品质服务,满足了最基本的原则开发和测试的需求。进入22年,华为我们将持续在原始开发上面发力,功能持续增强。在开发测试,调试,编译,还有诊断等各个环节,都将增加或完善功能,比如在后面开发框架上面。持续的完善我们的这一个基于鲲鹏的工程向导,都充分的提供给大家来使用。另外提供了产品化的SDK。22年上半年会主要是提供安全计算,有高性能计算SDK,下半年提供一个统一计算SDK。基于这些产业化的SDK,还会相应的配套。大家根据不同的功能,不同的场景应用,就会可以快速的便捷的获取所需要的功能。

image-20220602194327374

2. 鲲鹏DevKit整体介绍

下面给大家来做对鲲鹏DevKit包括哪些内容做一下整体的介绍。

为了帮助开发者加速应用迁移和提升,华为提供了鲲鹏开发套件包括代码迁移,开发框架,调试服务、性能分析等一系列的工具。整个的这个性能损耗小于15%。

image-20220602194743262

下图是一个鲲鹏DevKit的实际案例,比如在Vs code。

我们能够直观的感受鲲鹏开发套件功能或者插件。第一个是代码迁移。扩大对应的相应的这种代码迁移工具。还有一个鲲鹏开发框架,这是对原始开发的,还有编译调试,这是对开发工程师编译调试的能力。

还有性能分析的一个插件,这是一个完整的套件。

在vs code上面输入kunpengdevkit的这几个字,那么可以从应用市场里面直接会找到一整套的开发插件,

这些插件,比如一个是这种迁移开发框架并且调试。还有分析的工具和诊断在一起。安装之后安装之后我们在右边就会看到4个功能对应的入口。

根据前端PC的客户端的UI进去之后。如果要用到我们的代码迁移或者开发框架,我们可以使用对应远端服务器相应的服务功能。还没有安装时,会自动提示安装,根据引导配置好服务器的IP地址会自动去下载。

安装。

安装完之后,进去就可以很方便的去操作。

image-20220602195034304

工具名称 描述
鲲鹏代码迁移工具 自动扫描并分析用户待迁移软件,提供专业迁移指导。代码迁移工具支持五个功能特性: 软件迁移评估:自动扫播并分祈软件包(非派码包)、己安装的软件,提供可迁移性评估报告。 ·源码迁移:能够门动检查并分析出用户源码,C/C++1ASMFortran/解释型语言I汇编软件构建工程文件、 C/C++/ASM/Fortranl解释型语言I汇编软件构建工程文件使用的链接岸、XB6汇编代码中需要修改的内容,并给出修改指导, 软件包重构。通过分析X86平台软件包《RPM格式、DEB格式》的软件构成关系及硬件依赖性,重构适用于鲲鹏平台的软件 包。 o 马项软件迁移:基于鲲鹏解决方案的软件迁移模板,进行自动化迁移修改、编译、构建软件包,帮助用户快速迁移软件, 鲲鹏亲和分析:支持软件代码质量的静态检查功能,如在64位环境中运行的兼容性检查、结构体字节对齐检查、锾存行对齐 检查、构建检在和内存一效性检查等亲和分析。
鲲鹏开发框架 基于鲲鹏场景化SDK和工程构建能力,对不同场景下的软件基础库进行深度性能优化,在应用开发过程中就能便捷地将鲲鹏架 购的优势充分应用上,降低管习和使用成本,
鲲鹏编译调试工具 提供一键式部署的鲲鹣编译器,包含毕昇编译器及GCc for openEuler、JDK在内的全套编译软件,发挥鲲鹏平台极致性能, 使能开发者高效创新
u删性能分析工月 由四个子工具组成,分别为:系统性能分析、Java性能分析、系统诊断和调优助手。 系统性能分析是针对基于鲲鹏的服务器的性能分析工其,该工真可以辅助用户快速定位和处理软件性能问题。 Java性能分析是针对基于鲲鹏的服务器上运行的Java序的性能分析和优化工其,能图形化显示JavaFH序的堆、线程、锁. 地圾回收等信息,收集热点函数、定位留序瓶颈点,帮助用户采取针对性优化. 系统诊断是针对基于能鹏的服务器的性能分析工具,提供内存泄漏诊断《包括内存未释放和异常释放)、内存越界诊断、内 存消耗伯息分断展示、OOM诊断能力,帮助用户识别出源代码中内存使用的问题点,提升程序的可靠性。 调优助手是针对基于鲲鹏的服务器的调优工具,能系统化组织性能指标,引导用户分析性能就颈,实现快速调优

3. 鲲鹏DevKit主要功能介绍

那么下面介绍一下各个主要的功能。

首先第一个就是在鲲鹏产业项目的迁移。我们通过代码迁移工具可以完成相关的工作。代码迁移工具可以自动的分析出需要修改的代码内容,因此用户解决了用户代码兼容性人工排查的这种困难的痛点。还有经验欠缺反复依赖编痛点的问题。

代码迁移工具在解决有源码这种产生的情况下面,主要提供了5大功能。第一个是软件迁移评估。我们可以输入软件,并且通过快速的分析市场变化,分组开发,了解整个迁移过程的工作量代码量。需要修改的依赖库,可以通过这个方面来评估了整体的迁移时间,帮助开发者把握整个的过程。

第二个是源代码的迁移。通过对分析C++或者Python等源码文件,还有包括他的构建文件,控件能够快速的迁移出需要迁移修改的点,也直接提供优化建议,不需要人工的修改。避免了人工查找耗时长。

第四个是某些专项软件,特别是在大数据数据库或者web或者这种早期的计算我们一些主流的一个软件。

我们可以在视觉上面把这些软件直接拿过来,然后一键迁移。得了一个IPM运营起来。

大家可以根据功迁移的步骤,修改。相关的一些配置文件,做相应编译。

第五个是亲和检查。整个检查我们提供64位运行模式,都能帮助我们大家更大的程度上面把鲲鹏架构的这种优势把它发挥出来。

image-20220602195812875

二进制动态指令翻译软件ExaGear,能够在运行时将x86应用的指令翻译成ARM指令,使得大部分Linux x86-64应用无需重新编译即可运行在ARM64服务器上,从而屏蔽底层平台差异,低成本解决应用的平滑迁移,释放鲲鹏平台澎湃算力。

image-20220602200247876

鲲鹏开发框架充分利用鲲鹏平台各类型算力及性能更优的第三方组件,提供鲲鹏工程向导、启发式编程、代码亲和检查等能力,一键引入鲲鹏加速库、快速构建鲲鹏应用软件框架,帮助开发者更便捷地开发鲲鹏应用。

image-20220602200504224

鲲鹏提供了一键式部署的毕昇编译器、GCC for openEuler编译器及毕昇JDK在内的全套鲲鹏编译软件,发挥鲲鹏平台极致性能,使能开发者高效创新

image-20220602201021185

性能分析工具提供了系统性能优化工具和AVA性能优化工具,分析出系统性能指标,定位到瓶颈点及热点函数,给出调优建议,从而达到软件和鲲鹏平台融合的最佳性能。场景化分析提供了大数据、数据库、分布式存储、HPC的专项分析。

image-20220602201425371

系统诊断是鲲鹏性能分析工具的子工具,提供内存泄漏诊断(包括内存未释放和异常释放),系统诊断工具通过分析系统运行指标,识别异常点,例如:内存泄漏、内存越界、网络丢包等,并给出优化建议。支持压测系统,如:网络IO、存储IO,评估系统最大性能。

image-20220602202101145

image-20220602202241200

两种形态任意选择:

  • IDE插件模式:基于VS Code/Intellij/MindStudio插件形式,提供一站式开发套件,供重度开发者选用。

  • Web浏览器模式,轻量化迁移与分析工具,简单快捷。

image-20220602202537022

迁移内容自动识别,汇编代码自动翻译

image-20220602202622916

image-20220602202723663

可开发环境获取往往是开发者面临的一个最关键的一个问题。特别是大家没有本地物理环境情况。 鲲鹏开发套件提供了一套远程实验室。这是一站式。预装的开发套件处理,开发者可以领跑开发之路。

比如说远程实验室面向开发者提供了100套的这样的真实环境。 只要网络,开发者就可以随时的通过单开发套件在线申请。只要有华为账号就可以去在线申请资源。然后通过资源来介入到这个开发环境。且是免费的。

image-20220602202803343

系统性能分析工具全场景可视化展示硬件、操作系统、进程/线程、函数等信息,标识瓶颈点及热点函数,给出优化建议,问题一目了然、调优尽在掌握。

我们通过图形化合理的组织企业数据。方便了用户更加容易发现问题,提高工具的一些应用性。也降低了人员的使用的门槛。全景分析上面我们可以。很直观的可以看到 CPU,memory,网络io的一个整体的一个布局和参数配置。我们可以看看整个的系统的配置。是不是合理,可以根据这个优化建议可以快速的完成。

我们相应的性能性的调优。

image-20220602202952559

鲲鹏 DevKit 工具基础知识