---
title: 基本概念
description: "鲲鹏DevKit是一款提供涵盖应用迁移、系统迁移、开发、编译调试、测试、性能调优及系统诊断等各环节的开发使能工具集，包含迁移工具、亲和分析工具、应用开发工具、编译调试工具、系统性能工具、Java性能分析工具及系统诊断工具。既方便开发者快速开发出鲲鹏亲和的高性能软件，同时也能够帮助开发者加速应用迁移和算力升级，面向全研发作业流程，提升应用迁移、开发、调优效率，助力开发者高效创新。迁移、开发、调优全程无缝衔接。鲲鹏DevKit支持IDE插件（VS Code）、浏览器、命令行三种工作模式。分为客户端、服务器端两部分，需要安装鲲鹏DevKit及所需工具后使用。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengfaq/productfaq/devkitfaq/devkit_faq_0001.html
sourcePath: /source/zh/kunpengfaq/productfaq/devkitfaq/devkit_faq_0001.html
indexId: 7a8f5c8b03f6f01100f9835a2fd4b21bc6264543bf709641c200c0bd9efc7a9e63
---
# 基本概念

#### 什么是鲲鹏DevKit？

鲲鹏DevKit是一款提供涵盖应用迁移、系统迁移、开发、编译调试、测试、性能调优及系统诊断等各环节的开发使能工具集，包含迁移工具、亲和分析工具、应用开发工具、编译调试工具、系统性能工具、Java性能分析工具及系统诊断工具。既方便开发者快速开发出鲲鹏亲和的高性能软件，同时也能够帮助开发者加速应用迁移和算力升级，面向全研发作业流程，提升应用迁移、开发、调优效率，助力开发者高效创新。迁移、开发、调优全程无缝衔接。鲲鹏DevKit支持IDE插件（VS Code）、浏览器、命令行三种工作模式。分为客户端、服务器端两部分，需要安装鲲鹏DevKit及所需工具后使用。

关于鲲鹏DevKit的更多信息请参见：鲲鹏DevKit(https://www.hikunpeng.com/developer/devkit)

- 软件包下载地址：  鲲鹏DevKit下载(https://www.hikunpeng.com/zh/developer/devkit/downloadNew)

- 安装和使用指导：  文档中心(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/overview/index.html)


#### 什么是false sharing？

在SMP（Symmetric multiprocessing）架构中，每个CPU拥有一个cache，用来存储当前访问以及预测接下来会访问到的数据。Cache Line是一次加载到Cache中的数据单元。通常是64byte，但在鲲鹏920上的L3 Cache Line是128byte。多个CPU上的多个线程同时修改自己的变量，这些变量表面上是不同的变量，但实际上却存储在同一条Cache Line里。在这种情况下，由于Cache一致性协议，两个处理器都存储有相同的Cache Line拷贝的前提下，本地CPU变量的修改会导致本地Cache Line变成Modified状态，然后在其它共享此Cache Line的CPU上，引发Cache Line的Invalidate操作，导致Cache Line变为Invalidate状态，因此必须从memory加载，这种现象就叫做伪共享false sharing。解决伪共享的方式有很多，例如：

1. 使用编译器优化选项。
2. 通过对内存填充（padding），保证不同线程使用的变量在不同的Cache Line中。
3. 定义变量时，进行内存对齐。
4. 用thread local变量。将同一个Cache Line上的变量拷贝一份到本地，进行使用。


#### 鲲鹏DevKit Web模式和IDE模式有哪些差异？

DevKit Web模式需要您下载软件包至本地后安装使用，IDE模式支持在Visual Studio Code平台安装插件后即可使用。


#### 毕昇JDK是否支持Windows开发？

不支持，毕昇JDK目前只支持Linux平台开发。


#### 登录鲲鹏DevKit的IP地址是什么？

- IP地址：安装DevKit要求的服务器IP地址，是已准备好部署DevKit的Linux环境IP地址（一般是Linux系统可用网口IP地址）。
- 登录方法：根据流程安装完成后，填写已安装的IP地址作为服务的IP地址，单击“确定”后，会自动弹出登录窗口，首次登录需创建管理员devadmin账户密码，然后单击“登录”即可。


#### 应用从x86架构迁移到ARM架构的开发周期是多少？

需要区分编译型和解释型，推荐使用鲲鹏开发套件DevKit中迁移工具(https://www.hikunpeng.com/developer/devkit/)，可以快速分析给出修改建议。Java语言主要分析是否存在第三方SO依赖；C语言主要识别跨平台指令、汇编和链接库等分析，替换修改后验证。目前应用迁移工具开发周期为2人天/单应用。


#### 鲲鹏迁移工具是否支持在Windows上使用？

迁移工具不支持在Windows下部署。


#### 鲲鹏DevKit源码迁移是否支持统信UOS 1050a版本？

不支持，统信UOS 1050a版本目前未验证兼容性，若仍想在该系统中使用，可以尝试安装趋近的版本，但无法保证所有功能特性均正常可用。鲲鹏DevKit兼容性列表请参见DevKit兼容性查询助手(https://www.hikunpeng.com/zh/developer/developtool)。


#### 如何确认代码编译时已经做了向量化？

开发代码时，若用户不确定编译的时候是否已经自动完成了向量化，以及不知道怎么确认未向量化的原因，可以通过打印日志信息查看。

若使用的是LLVM，可以在编译时选择添加以下编译选项打印日志信息：

- -Rpass=loop-vectorize：打印成功向量化的循环。
- -Rpass-missed=loop-vectorize：打印不能向量化的循环。
- -Rpass-analysis=loop-vectorize：打印循环不能向量化的原因。
- -Rpass=slp-vectorizer：打印成功SLP（Superword-Level Parallelism）向量化的代码块。
- -Rpass-missed=slp-vectorizer：打印不能SLP向量化的代码块。
- -Rpass-analysis=slp-vectorizer：打印不能SLP向量化的原因。

若使用的是GCC，可以在编译时选择添加以下编译选项打印日志信息：

- -fopt-info-vec：打印成功向量化的代码位置。
- -fopt-info-vec-missed：打印向量化的错误信息。
- -fdump-tree-vect-details=stdout：打印向量化的过程信息到stdout。


#### DevKit OAuth2 SSO登录后，为什么刷新页面会跳转登录页，重新登录？

因为DevKit考虑的SSO不是作为独立系统，是作为子系统被集成，考虑双方系统token有效性尽可能一致，每次刷新操作，都会重新获取主系统的授权。主系统token在有效时间内，DevKit登录就会很快重新鉴权，如果验证通过即可登录。


#### 鲲鹏DevKit支持一个账号，多次登录么？

同一个账户只允许单点登录，不支持同时登录。如果需要多人使用，可以创建多个用户，相互之间业务隔离，DevKit用户详情请参见：工具维护-用户管理(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/Appendixes/Appendixes/KunpengDevKit_0014.html)。


#### 鲲鹏DevKit的HPC应用分析怎么对py文件分析？

HPC应用分析是面向OpenMP和MPI应用进行分析，以mpirun开头，Python文件不是HPC应用分析支持的分析对象。

使用命令行模式时的格式：

```
mpirun -n 4 devkit tuner hpc-perf -L summary <command> [<options>]
```


#### 为何源码迁移分析报告未提示x86架构的bin文件及位置？

因为安全要求，DevKit工具源码分析不会对可执行文件进行扫描分析，只有部分shell类的脚本会赋予执行权限。


#### 为何DevKit安装后在火狐浏览器上无法访问？

当前DevKit不支持火狐浏览器，DevKit支持的浏览器及版本详见：工具安装-登录鲲鹏DevKit(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/install/installguide/KunpengDevKit_0012.html)。


#### 为何鲲鹏平台下需要指定-fsigned-char编译选项？

char变量在不同CPU架构下默认符号不一致，在x86架构下为signed char，在AArch64平台为unsigned char，移植时需要指定char变量为signed char。因此需要在编译选项中加入“-fsigned-char”选项，指定AArch64平台下的char为有符号数。


#### CacheLine对齐编程方法和DevKit中的缓存行对齐方法优化效果是否一致？

不一致。《鲲鹏编程与调优指南》中的CacheLine对齐编程方法(https://www.hikunpeng.com/document/detail/zh/perftuning/progtuneg/kunpengprogramming_05_0014.html)，修改方法有两种，分别是使用动态申请内存和填充。DevKit中的缓存行对齐检查(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/development/affinityanalyzer/DevKit_Affinity_0006.html)是对C/C++源码中结构体变量进行128字节对齐检查。

两种对齐方式都可采用，主要是根据用户使用场景进行选择。比如若定义的结构体没有到128字节，建议采用填充方式，这样不会产生内存碎片；若定义的结构体为128字节，建议采用DevKit的缓存行对齐检查。


#### 为何华为云环境运行微架构分析任务会失败？

华为云环境资源存在配置限制，比如不支持PMU事件和SPE硬件配置等，不满足性能分析相关任务的前提条件，任务分析失败，也就无法满足最佳实践相应操作。


#### 使用DevKit时绑核运行有哪些性能问题？

- 多进程执行程序默认是随机分配使用空闲可用的CPU核。
- 任务给出的调优建议绑核运行，是基于综合考虑和实践文档的理论，实际运行并不一定更优，需结合实际查看。
- 绑核简单来说有两个好处，一是减少CPU调度引入的开销，二是在NUMA架构下提高硬件亲和性。
- 单进程多线程情况，指定与线程数相等的CPU核数是合理且有效的，也可以指定所有CPU核，但是多余线程数的核利用不上；若是单进程单线程，那使用所有CPU核是没有意义的。
- 启动和CPU核数一样数量的单进程单线程应用程序，CPU利用率只是性能程序判断的一部分，性能优劣还需要综合考虑其他因素，比如网络IO、硬盘读写等。


#### DevKit浏览器模式系统性能工具的分析报告如何导出/查看？

DevKit提供分析报告导出功能，若需要查看导出的分析报告，则需要通过DevKit导入该分析报告数据压缩包进行查看，关于任务的导入导出请参见任务管理(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/devkit-hypertuner-055.html)。


#### DevKit浏览器工作模式最多可以创建多少个用户？

创建的普通用户数量没有限制，但是最大支持20个普通用户同时在线，可在工具维护-系统设置(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/Appendixes/Appendixes/KunpengDevKit_0065.html)中配置。


#### DevKit是否支持Euler OS 2.10版本？

暂不支持，若仍想在该系统中使用，可以尝试安装趋近的版本，但无法保证所有功能特性均正常可用。鲲鹏DevKit兼容性列表请参见DevKit兼容性查询助手(https://www.hikunpeng.com/zh/developer/developtool)。


#### 软件迁移评估是否只支持x86架构？

不是。软件迁移评估支持分析软件包和分析已安装软件两种方式，其中分析已安装软件仅支持x86平台，若为ARM平台，分析已安装软件功能将会禁用。


#### 【源码迁移】make/cmake构建文件跨平台有哪些差异，如何识别？

迁移工具会识别跨平台不兼容的编译选项和编译宏，在编译文件中使用到的依赖库也会提供对应的提示建议。


#### 【源码迁移】C/C++文件跨平台需要修改的源码问题有哪些？

工具会针对源码中编译宏、builtin函数、内联汇编、SSE intrinsic函数提供提示建议。


#### 【源码迁移】依赖库跨平台如何处理？

对于构建文件构建过程中使用到的依赖库，工具会进行识别、分析、判断，并说明鲲鹏平台是否存在同名依赖库。若存在则提供下载源，若不存在则会给出明确的提示。


#### 【源码迁移】源码如何迁移，工作量如何评估？

- 工具能够定位迁移代码行，并提供一键替换或修改指导。
- 根据迁移代码总行数，进行迁移工作量评估。


#### 鲲鹏DevKit功能变更查看及是否支持HPC专项软件迁移？

不支持，HPC专项软件迁移工具能力与鲲鹏社区HPC兼容性软件仓能力重合，经评估该能力已在DevKit工具中下线。如果需要下载HPC相关鲲鹏版本软件，请前往鲲鹏社区“兼容性查询(https://www.hikunpeng.com/ecosystem/compatibility)> HPC专区”中搜索。

DevKit最新工具支持能力请查看《版本说明书(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/releasenotes/KunpengDevKitRelease_0002.html)》。


#### Java性能分析工具的JDBC功能支持哪些数据库？

在Java性能分析工具中完成在线分析后，可通过“数据库”页签查看JDBC信息。只要被分析的应用采用JDBC方式连接数据库，便能自动采集相关SQL信息，不限定数据库类型。


#### 系统迁移是否支持Redis分片集群迁移及其软件、数据、配置迁移？

不支持，当前工具仅支持Redis单节点及主从哨兵模式的自动迁移，软件、数据、配置均可一并迁移。集群模式可以参见Redis集群重建(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/systemmigration/DevKit_Porting_0054.html)进行手动迁移。


#### 鲲鹏DevKit套件是否收费？

不收费，鲲鹏DevKit套件是一款可免费使用的软件。
