鲲鹏 DevKit 工具基础知识
本文主要从鲲鹏 DevKit 产生背景,鲲鹏 DevKit 整体介绍,鲲鹏 DevKit 主要功能介绍,鲲鹏 DevKit 亮点四个部分来说明,让我们对鲲鹏 DevKit 有一个基本认识。
1. 鲲鹏 DevKit 产生背景
大部分开发者一般用高级语言来开发软件。对于编程语言,例如 C++,Python 等来开发软件,由于采用了不同的指令集,在不同的体系架构平台上面是无法直接运行的,所以这些软件需要迁移。
不同的架构产生了不同的架构,在软件的迁移过程中,不同的平台会有不同的差异点。
我们通过一个 C/C++的实际案例来看,例如我们需要使用 64 位来进行编译,编译指令在 X86 贺鲲鹏上是不一样的,内嵌函数,汇编代码也不同。
原来的一些运行在 X86 上面的一些软件,我们迁移到鲲鹏平台上面。首先我们要评估这个软件是否可以迁移进行技术的可行性分析。这主要是为了提供是否需要做软件迁移的一个技术决策依据。我们要做具体的一个迁移工作。比如集成软件能够在鲲鹏平台上面正常的运行起来,保证功能是可用的。最后我们要做性能调优性能分析。保证迁移后的软件能够最大程度的亲和鲲鹏平台。
这些工作呢如果全部靠人工来做。那对于迁移和性能分析的人员来说,这种对技能和知识结构的要求是很高的。比如在迁移过程中,我们首先需要人工来检查道相关的的编译参数编写选项,例如函数汇编指令或者一些 Java 包,更有甚者可能还要进一步的识别。
由于平台差异性存在的这种内存不一致性。这个工作量是比较大的,那么对于工程师的门槛要求是比较高。
基于鲲鹏的这种基于功能平台我们开发的一款新软件,或者说基于现有的软件,我们开发一款新功能或者增加新的功能。那这些新软件和新功能呢在开发的过程之中就能要能够自然的亲和鲲鹏架构,也就是说开发出来的代码经过编译后就能在鲲鹏平台上面正常的运行,同时这种代码也是把我们鲲鹏架构的性能发挥到最大的程度的。这就是我们所谓的鲲鹏原始开发。
基于鲲鹏平台的原始开发,一般都会有学习,代码 coding,编译、调试,最后的测试和性能调优诊断这几个过程。若没有工具链的支持,我们在各个阶段可能都会遇到相应的一些困难,比如在学习的时候,我们可能缺乏这种相关的架构的学习指导或者介绍的书籍。不知道鲲鹏和其他的平台有哪些差异性。
在开发过程之中,如果没有相关的开发指导,或者说变动开发框架,或者没有相应的开发 SDK 实践,开发人员也是很难做到的。
在测试的情况下,特别是对于我们很多广大开发者来说,如果没有本地物理机的这种实际环境情况下面,我们开发了一套代码来测试我们的工作是否可用,是否兼容公共服务器。这都是有很大的问题的,那么我们可能需要是不是能够提供一套免费的评测环境,大家可以在上面既可以开发。也可以在上面做相应的监控测试,还有安全性测试。
目前 Linux 上面有很多这种零散的性能分析采集工具,比如 pref 这种工具都是表面上的,也是没有系统性的。如果没有相关的工具,大家做性能分析的时,都是比较零散琐碎的,并且需要很强的经验积累,这样对大家来说是很费事。
工欲善其事,必先利其器。从前面的介绍大家已经知道了开发工具对提升开发者生产力是多么的重要。
因此华为始终非常重视鲲鹏开发套件的开发和投入,在过去的三年时间里投入了大量的研发的人力和资源来做这个事情。不断的提升鲲鹏迁移的能力。
从 19 年到 22 年,鲲鹏 DevKit 已经从 1.0 的应用迁移。逐步升级到 2.0 的原始开发阶段。
21 年华为提供了一个技术版本的开发框架和品质服务,满足了最基本的原则开发和测试的需求。进入 22 年,华为我们将持续在原始开发上面发力,功能持续增强。在开发测试,调试,编译,还有诊断等各个环节,都将增加或完善功能,比如在后面开发框架上面。持续的完善我们的这一个基于鲲鹏的工程向导,都充分的提供给大家来使用。另外提供了产品化的 SDK。22 年上半年会主要是提供安全计算,有高性能计算 SDK,下半年提供一个统一计算 SDK。基于这些产业化的 SDK,还会相应的配套。大家根据不同的功能,不同的场景应用,就会可以快速的便捷的获取所需要的功能。
2. 鲲鹏 DevKit 整体介绍
下面给大家来做对鲲鹏 DevKit 包括哪些内容做一下整体的介绍。
为了帮助开发者加速应用迁移和提升,华为提供了鲲鹏开发套件包括代码迁移,开发框架,调试服务、性能分析等一系列的工具。整个的这个性能损耗小于 15%。
下图是一个鲲鹏 DevKit 的实际案例,比如在 Vs code。
我们能够直观的感受鲲鹏开发套件功能或者插件。第一个是代码迁移。扩大对应的相应的这种代码迁移工具。还有一个鲲鹏开发框架,这是对原始开发的,还有编译调试,这是对开发工程师编译调试的能力。
还有性能分析的一个插件,这是一个完整的套件。
在 vs code 上面输入 kunpengdevkit 的这几个字,那么可以从应用市场里面直接会找到一整套的开发插件,
这些插件,比如一个是这种迁移开发框架并且调试。还有分析的工具和诊断在一起。安装之后安装之后我们在右边就会看到 4 个功能对应的入口。
根据前端 PC 的客户端的 UI 进去之后。如果要用到我们的代码迁移或者开发框架,我们可以使用对应远端服务器相应的服务功能。还没有安装时,会自动提示安装,根据引导配置好服务器的 IP 地址会自动去下载。
安装。
安装完之后,进去就可以很方便的去操作。
3. 鲲鹏 DevKit 主要功能介绍
那么下面介绍一下各个主要的功能。
首先第一个就是在鲲鹏产业项目的迁移。我们通过代码迁移工具可以完成相关的工作。代码迁移工具可以自动的分析出需要修改的代码内容,因此用户解决了用户代码兼容性人工排查的这种困难的痛点。还有经验欠缺反复依赖编痛点的问题。
代码迁移工具在解决有源码这种产生的情况下面,主要提供了 5 大功能。第一个是软件迁移评估。我们可以输入软件,并且通过快速的分析市场变化,分组开发,了解整个迁移过程的工作量代码量。需要修改的依赖库,可以通过这个方面来评估了整体的迁移时间,帮助开发者把握整个的过程。
第二个是源代码的迁移。通过对分析 C++或者 Python 等源码文件,还有包括他的构建文件,控件能够快速的迁移出需要迁移修改的点,也直接提供优化建议,不需要人工的修改。避免了人工查找耗时长。
第四个是某些专项软件,特别是在大数据数据库或者 web 或者这种早期的计算我们一些主流的一个软件。
我们可以在视觉上面把这些软件直接拿过来,然后一键迁移。得了一个 IPM 运营起来。
大家可以根据功迁移的步骤,修改。相关的一些配置文件,做相应编译。
第五个是亲和检查。整个检查我们提供 64 位运行模式,都能帮助我们大家更大的程度上面把鲲鹏架构的这种优势把它发挥出来。
二进制动态指令翻译软件 ExaGear,能够在运行时将 x86 应用的指令翻译成 ARM 指令,使得大部分 Linux x86-64 应用无需重新编译即可运行在 ARM64 服务器上,从而屏蔽底层平台差异,低成本解决应用的平滑迁移,释放鲲鹏平台澎湃算力。
鲲鹏开发框架充分利用鲲鹏平台各类型算力及性能更优的第三方组件,提供鲲鹏工程向导、启发式编程、代码亲和检查等能力,一键引入鲲鹏加速库、快速构建鲲鹏应用软件框架,帮助开发者更便捷地开发鲲鹏应用。
鲲鹏提供了一键式部署的毕昇编译器、GCC for openEuler 编译器及毕昇 JDK 在内的全套鲲鹏编译软件,发挥鲲鹏平台极致性能,使能开发者高效创新
性能分析工具提供了系统性能优化工具和 AVA 性能优化工具,分析出系统性能指标,定位到瓶颈点及热点函数,给出调优建议,从而达到软件和鲲鹏平台融合的最佳性能。场景化分析提供了大数据、数据库、分布式存储、HPC 的专项分析。
系统诊断是鲲鹏性能分析工具的子工具,提供内存泄漏诊断(包括内存未释放和异常释放),系统诊断工具通过分析系统运行指标,识别异常点,例如:内存泄漏、内存越界、网络丢包等,并给出优化建议。支持压测系统,如:网络 IO、存储 IO,评估系统最大性能。
两种形态任意选择:
IDE 插件模式:基于 VS Code/Intellij/MindStudio 插件形式,提供一站式开发套件,供重度开发者选用。
Web 浏览器模式,轻量化迁移与分析工具,简单快捷。
迁移内容自动识别,汇编代码自动翻译
可开发环境获取往往是开发者面临的一个最关键的一个问题。特别是大家没有本地物理环境情况。 鲲鹏开发套件提供了一套远程实验室。这是一站式。预装的开发套件处理,开发者可以领跑开发之路。
比如说远程实验室面向开发者提供了 100 套的这样的真实环境。 只要网络,开发者就可以随时的通过单开发套件在线申请。只要有华为账号就可以去在线申请资源。然后通过资源来介入到这个开发环境。且是免费的。
系统性能分析工具全场景可视化展示硬件、操作系统、进程/线程、函数等信息,标识瓶颈点及热点函数,给出优化建议,问题一目了然、调优尽在掌握。
我们通过图形化合理的组织企业数据。方便了用户更加容易发现问题,提高工具的一些应用性。也降低了人员的使用的门槛。全景分析上面我们可以。很直观的可以看到 CPU,memory,网络 io 的一个整体的一个布局和参数配置。我们可以看看整个的系统的配置。是不是合理,可以根据这个优化建议可以快速的完成。
我们相应的性能性的调优。
版权声明: 本文为 InfoQ 作者【乌龟哥哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/2dc2d0f727d5c6c32bc19c3e1】。文章转载请联系作者。
评论