【DTSE Tech Talk 精选问答】NO.69丨鲲鹏DevKit,助力开发者基于鲲鹏服务器实现一站式应用开发
【摘要】 想知道如何在鲲鹏平台上快速上手应用开发吗?鲲鹏DevKit告诉你答案!本期直播将聚焦鲲鹏DevKit,它集成了开发、编译、调试、调优、测试等软件开发的各个环节,帮助开发者完成基于鲲鹏服务器的一站式应用开发,提升应用开发效率,提升应用性能。
想知道如何在鲲鹏平台上快速上手应用开发吗?鲲鹏DevKit告诉你答案!本期直播将聚焦鲲鹏DevKit,它集成了开发、编译、调试、调优、测试等软件开发的各个环节,帮助开发者完成基于鲲鹏服务器的一站式应用开发,提升应用开发效率,提升应用性能。
直播链接:https://bbs.huaweicloud.com/live/DTT_live/202410231630.html
Q:鲲鹏DevKit 应用迁移工具支持哪些系统平台迁移?
A:目前主要支持CentOS迁移到麒麟Q:鲲鹏DevKit有哪些行业应用案例?
A:医疗、金融、运营商、基础科研、制造、电力、气象、交通、安平、互联网、政府、大企业Q:如何评估使用鲲鹏 DevKit 开发的应用的性能提升效果?
A:评估应用性能,可以从以下几个方便入手:1,选取相关的基准测试,测量响应时间、吞吐量等指标;2,使用devkit性能采集工具,可以采集应用的性能指标,分析性能的瓶颈和改进空间;3,评估资源的利用情况,包括CPU、内存、磁盘和网络等,使用合理的分析方法,如TMA、roofline等。Q:对于新手开发者来说,鲲鹏 DevKit 的学习曲线是怎样的? 7. 它是否提供了丰富的文档和教程资源来帮助开发者快速上手?
A:鲲鹏社区具有全套的DevKit学习流程和学习课程,可以根据课程顺序进行学习。地址为:https://www.hikunpeng.com/learn/courses?activeTab=1547169694099677185 文档可以参考鲲鹏社区的DevKit用户手册和最佳实践,地址为https://www.hikunpeng.com/document/detail/zh/kunpengdevps/overview/kunpengdevps.htmlQ:目标VM和Java程序在线分析的精度是如何确定的? 如何便捷存档数据便于后续相同业务对比分析?
A:精度提供采集频率1ms-1000ms动态配置,可以灵活选择。在线分析和采样分析的数据支持导入导出,以方便后续相同业务对比分析。Q:鲲鹏DevKit系统性能分析工具包括哪些功能?
A:性能分析工具目前包括:场景化ai调优分析、调优助手、全景分析、HPC分析、微架构分析、访存分析、进线程分析、热点函数、I/O分析、锁与等待分析、Roofline分析、资源调度分析等功能。Q:鲲鹏DevKit 系统性能分析工具中,HPC集群检查能检查哪些内容?
A:通过对用户指定的MPI集群进行硬件、软件配置检查,并给出集群中各节点软硬件配置的一致度报告。检查对象支持硬件领域的CPU、GPU、互联、内存、网卡、磁盘,软件领域中的OS、Kernel、环境变量、MPI、OpenMP、HPC常用依赖库等维度。对于不符合鲲鹏平台最佳实践的配置,工具会给出优化建议。Q:鲲鹏DevKit 源码迁移支持哪些开发语言?
A:ASM/C/C++/Fortran/Python/Java/Scala/GoQ:鲲鹏DevKit 系统迁移中支持哪些操作系统、中间件、数据库?
A:系统:CentOS->麒麟V10
中间件:Nginx,Redis,Tomcat,金蝶、东方通
数据库:达梦、人大金仓
Q:在线分析中如何保证系统额外开销小?采样分析的采样频率如何确定?
A:在线分析支持采集频率1ms-1000ms动态配置,以更精确地捕获方法的耗时,这使得对于耗时较小的方法调用也能进行有效统计,从而提高了分析的精度。Q:与其他类似的开发工具相比,鲲鹏 DevKit 的优势在哪里?
A:鲲鹏DevKit更加贴合鲲鹏平台底层,由于鲲鹏底层针对软件做了大量优化,DevKit能够更好地利用这些优化措施,完成开发调优。Q:鲲鹏DevKit Java性能分析工具主要用途是什么?
A:Java性能分析工具是针对基于鲲鹏的服务器上运行的Java程序的性能分析和优化工具,能图形化显示Java程序的堆、线程、锁、垃圾回收等信息,收集热点函数、定位程序瓶颈点,帮助用户采取针对性优化。Q:鲲鹏DevKit 系统性能分析工具中,全景分析有什么作用?
A:通过采集系统软硬件配置信息,以及系统CPU、内存、存储IO、网络IO资源的运行情况,获得对应的使用率、饱和度、错误次数等指标,以此识别系统性能瓶颈。针对部分系统指标项,根据当前已有的基准值和优化经验提供优化建议。Q:鲲鹏DevKit 亲和分析工具对平台有要求吗?
A:有的,亲和分析支持鲲鹏平台Q:鲲鹏DevKit 支持哪些工具?
A:目前DevKit支持VSCODE和网页端模式,囊括的开发工具包括迁移、开发、调试、亲和、调优、诊断等工具。Q:鲲鹏DevKit 是否有demo环境可以体验?
A:可以通过www.hikunpeng.cm官方网站中,开发者选项里的学习选项,体验在线实验功能,提供云实验环境供开发者体验。Q:目标VM和Java程序的在线分析,如何针对不同的VM进行适配?如何提高在线分析对大型Java程序的适用性?
A:java性能分析工具支持对jdk8-jdk17程序进行分析,支持的jdk包括Oracle JDK,毕昇Jdk。Q:AITunner调优是自动的吗
A:是的。AITuner使用自研高性能AI调优方案,通过用户自主选择测试用例,对数据库和大数据场景进行自动优化,自动调优后给予最优参数配置,提供复杂场景下参数配置的优化建议。Q:全面调优包含哪些层面的优化,是如何协调不同层面的? 软硬件融合释放最佳性能,硬件和软件之间是如何交互协作的?
A:全面调优包括:硬件、os和基础设施、应用层、数据和存储、网络等。一般协调不通层面的性能问题,可以通过分析性能瓶颈、逐层优化改进性能问题,确保每层改进都能带来整体的性能提升,监控系统性能,根据实时数据调整优化,确保各层面优化相互配合。常见的软硬件交互协作包括:硬件加速器、优化指令集、缓存优化、资源调度、反馈优化机制等。Q:是否有成功的应用迁移或开发案例供参考?
A:可以参考hikunpeng网站的最佳实践章节:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/handon_tutorials/bestpractice/kunpengDevKitPractice_0062.htmlQ:请问python+c+java可以同时进行性能调优吗?
A:明前提供python+c的热点函数分析能力,以及单独的java和c的分析能力,可以灵活使用。Q:进程和线程之间的优先级关系应该如何分析?如何解决死锁和锁竞争问题?
A:进线程的优先级需要考虑系统的调度策略、进程和线程的负载以及他们之间的依赖关系。避免死锁可以考虑:避免资源独占;确认线程申请资源时不持有其他资源;设计可抢占系统;减少循环等待链。编码时可以减少锁的粒度,使用读写锁或乐观锁提高锁的效率,设置超时机制等方式。Q:有具体的案例或者视频演示一下吗?关于性能调优方面的
A:可以参考hikunpeng网站的最佳实践章节:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/handon_tutorials/bestpractice/kunpengDevKitPractice_0062.htmlQ:鲲鹏DevKit 系统性能分析工具中,Agent管理有什么作用?
A:Agent是负责实际运行采集插件的组件。通过将采集组件分离,可以实现分布式采集能力,方便用户部署多机采集能力。Q:调优助手给出的调优建议是基于什么模型或算法?专项分析是针对哪些特殊问题或场景开展的?
A:调优助手是根据测试反馈和经验得到的优化建议。专项分析目前是对pc领域提供了独特的采集分析的方法和思路。Q:在调优过程中,如何平衡性能提升与资源消耗(如内存、CPU、网络带宽等)之间的关系?鲲鹏 DevKit 有哪些优化原则和方法?
A:性能提升的目标就是提高资源利用的能力,为了平衡资源和性能就是在调优过程中关注资源的利用效率的指标。在资源消耗一定的情况下,需要提高资源利用的效率,将浪费的资源用上,将用上的资源用好。DevKit有很多分析和优化的方法,如cpu分析的TMA分析法、numa内存分析、roofline分析等。Q:那鲲鹏的性能调优可以直接在鲲鹏平台上进行性能调优吗?
A:性能调优工具提供强大的采集能力,并基于采集结果和历史经验给出相关的调优建议;并且在一些场景提供了AI自动调优能力。Q:缺乏迁移经验的开发人员,应该关注哪些分析报告?
A:如果是Java系统进行迁移,可以关注系统迁移的迁移结果报告;如果是其他语言,可以考虑源码迁移的迁移结果报告。Q:那对于鲲鹏平台来说,迁移什么语言主导的软件更好迁移呢?
A:目前迁移Java系统更加方便迁移,因为我们针对Java系统场景做了系统迁移功能,能够端到端的实现鲲鹏迁移。Q:扫描软件安装包时,如何识别so依赖库兼容信息的准确性?有没有误判的可能?
A:目前是存在误判的可能,用户可以通过手动拆包验证,或者直接执行验证去判定是否兼容,如果不兼容可以关注报告中是否存在兼容so的下载链接进行替换。Q:对于大型复杂项目的代码扫描,鲲鹏DevKit应用迁移的资源占用情况如何?是否会影响其他系统进程?
A:这个取决于具体用户项目,更具用户反馈,暂时没有出现影响其他系统进程的场景。Q:扫描过程中如何确保对所有依赖库文件的扫描无遗漏?有没有特定的检查算法或者机制?
A:我们针对依赖库的白名单是有定期更新机制的,但如果要确保所有依赖文件均可正常运行,需要用户执行手动测试验证。Q:请问在企业级应用中,中间件通常与其他系统组件紧密集成,自动迁移部署中间件时,如何确保与其他组件的兼容性和协同工作能力?
A:自动迁移部署中间件时,我们主要确保了中间件能够正常启动,如果要确保应用和中间件的协同工作正常,需要参考迁移指导建议,针对配置文件等进行手动修改,修改完成后即可确保正确。Q:自动分析系统成分的准确性如何保证?是否存在误判或遗漏某些关键系统成分的可能性?如果出现这种情况,如何进行人工复核和修正?
A:目前确实存在误报等情况,对此我们提供了系统成分修正功能,可以在扫描完成后增删改查Q:系统迁移就是说整个迁移吗还是?
A:系统迁移指的是将整个Java应用程序系统进行搬迁,包括应用、中间件、数据库等。Q:迁移的目标系统,只能是openeuler,还是支持其他的linux?毕昇的make,支持c++哪些版本、java哪些版本?
A:迁移的目标系统包括openEuler系的系统,如麒麟统信等常用国产OS,以及一些常用OS,详细信息参见:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/userguide/usermanual/DevKit_Porting_0011.html 编译器支持版本也可参见:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/userguide/usermanual/DevKit_Porting_0011.htmlQ:如何确保编译过程中的依赖项兼容鲲鹏架构?
A:可以尝试使用应用迁移中的源码迁移,扫描makefile,查看是否存在不兼容编译选项。Q:如何确保在鲲鹏 DevKit 上迁移的软件与原软件在功能上完全一致?是否存在某些功能在迁移后无法正常使用的风险?
A:鲲鹏DevKit迁移后的软件与原软件保持一致,除了需要使用DevKit进行迁移,还依赖用户执行手动测试,针对已有应用的测试用例进行执行,根据测试结果确认迁移后是否一致。 软件某些功能无法使用只会出现在使用了与硬件架构有关的功能中,这在实际编码中非常少,比如intel的内联函数,而这部分鲲鹏已经有替换的兼容库。Q:是否提供了专门的性能分析工具来帮助开发者识别瓶颈?
A:是的。DevKit内置性能分析工具,可以帮助开发者识别性能瓶颈,达成快速调优的目标。Q:DevKit支持一站式应用开发吗?如何做好性能分析?
A:鲲鹏 DevKit 确实支持一站式应用开发,从代码编写到性能调优都可以在一个环境中完成。它提供了丰富的性能分析工具,帮助开发者在开发过程中进行全面的性能分析和优化。Q:如何确保现有的x86架构上的应用程序能够顺利迁移到鲲鹏平台上?
A:针对不同的语言和场景,我们有不同的解决方案,如果是Java系统,我们有系统迁移工具,确保X86的应用程序能够顺利迁移到鲲鹏平台,其他语言,我们可以使用源码迁移进行迁移工作。完成迁移后我们需要进行人工功能验证,保证应用功能正确性。Q:鲲鹏只能运行在鲲鹏CPU硬件上吗?如果我用麒麟的笔记本,比如L420,可以装IDE进行开发吗?
A:鲲鹏指鲲鹏服务器,相关插件都是部署在鲲鹏服务器上。用户可以通过笔记本按照IDE远程连接服务器进行开发。Q:鲲鹏只能运行在鲲鹏CPU硬件上吗?如果我用麒麟的笔记本,比如L420,可以装IDE进行开发吗?
A:鲲鹏指鲲鹏服务器,相关插件都是部署在鲲鹏服务器上。用户可以通过笔记本按照IDE远程连接服务器进行开发。Q:应用迁移过去有啥好处呢? 网络协议不一定兼容
A:迁移到鲲鹏上能够使用鲲鹏软硬件结合的优势,进一步提高应用的运行速率。Q:在遇到问题时,是否有官方支持渠道或社区可以帮助解决?
A:可以在www.hikungpeng.com官网社区反馈。想要了解更多鲲鹏 DevKit 相关知识,欢迎观看DTSE Tech Talk 系列技术直播
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)