---
title: 内存一致性检查
description: "内存一致性检查就是检查源码迁移在鲲鹏平台运行时可能存在的内存一致性问题，并提供插入内存屏障的建议。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/devkit_24_rc3/cliuserguide/KunpengDevKitCli_0027.html
sourcePath: /source/zh/kunpengdevkithistory/devkit_24_rc3/cliuserguide/KunpengDevKitCli_0027.html
indexId: f602a7adad1c2efbbb9a6ccf1a85c012832740d1f30042801eb15d7bf406d8c385
---
# 内存一致性检查

内存一致性检查就是检查源码迁移在鲲鹏平台运行时可能存在的内存一致性问题，并提供插入内存屏障的建议。

- 由于运行内存一致性检查时，生成的中间文件较大，如果用户想要使用该功能，请确保安装工具的所在磁盘空间足够大。根据经验数据，每10万行代码需要100G左右的可用内存。
- 源码规模过大可能会导致占用资源过多，建议代码量不超过10万行。
- 内存一致性功能仅支持在鲲鹏平台上运行。


#### 命令功能

检查源码中存在的内存一致性问题。


#### 命令格式

```
devkit advisor mm-check [-h | --help] {-i INPUT_PATH | --input  INPUT_PATH}{-f BC_PATH | --bc-file BC_PATH} [--autofix {true,false}]  [--autofix-dir AUTOFIX_OUTPUT_PATH] [-o OUTPUT_PATH | --output OUTPUT_PATH]  [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [-l  {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout  TIMEOUT]
```


#### 参数说明


**表1 参数说明**

| 参数 | 参数选项 | 参数说明 |
| --- | --- | --- |
| \-h/\-\-help | \- | 获取帮助信息。 |
| \-i/\-\-input | input\_path | 必选参数，BC文件对应的源码文件夹路径。 |
| \-f/\-\-bc\-file | path | 必选参数，BC文件夹路径，该路径下必须存在BC文件。 说明： 使用命令行工作方式生成BC文件请参见BC文件生成(https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/devkit\_24\_rc3/cliuserguide/KunpengDevKitCli\_0043.html)。 借助第三方工具gllvm生成BC文件、使用工程构建工具生成BC文件请参见生成BC文件(https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/devkit\_24\_rc3/Plugins\_UserGuide/DevKit\_Affinity\_0018.html\#ZH\-CN\_TOPIC\_0000001616019848\_\_section1516914513204)中的方法二、方法三。 |
| \-\-autofix | true/false | 是否生成编译器配置文件，默认为false。 |
| \-\-autofix\-dir | path | 编译器配置文件的存放地址。默认生成在工具目录下的源码文件夹下，使用\-\-autofix且参数必须为true时才能生效。 |
| \-o/\-\-output | output\_path | 扫描报告的存放路径，默认存放在当前执行路径下，报告名称为模块名称\_时间戳。 |
| \-\-set\-timeout | time | 任务超时时间，单位为分钟，若执行时间超过超时时间则退出执行。默认无超时时间，任务将持续执行直到结束。 |
| \-l/\-\-log\-level | 0/1/2/3 | 设置日志级别，默认为1。 0：日志级别为DEBUG。 1：日志级别为INFO。 2：日志级别为WARNING。 3：日志级别为ERROR。 |
| \-r/\-\-report\-type | all/json/html/csv | 扫描报告的格式，默认为all。 all：生成JSON、HTML、CSV三种格式报告。 json：生成JSON格式报告。 html：生成HTML格式报告。 csv：生成CSV格式报告。 |


#### 使用示例

此处以扫描“/opt/DevKit/testcase/affinity/weak_cons/test-mulbc_sort”路径下源码为例，请根据实际情况进行修改。

```
devkit advisor mm-check -i /opt/DevKit/testcase/affinity/weak_cons/test-mulbc_sort -f /opt/DevKit/testcase/affinity/weak_cons/bc_file -l 0
```

返回信息如下，并输出报告。

```
Scanned time: 20240229061648
Configuration:
Scan bc files path: /opt/DevKit/testcase/affinity/weak_cons/bc_file
Scan source code path: /opt/DevKit/testcase/affinity/weak_cons/test-mulbc_sort
Autofix: false
Generate report path: /home/DevKit_Software
Generate report type: all
Task Timeout Interval: The timeout period is not set.
Log level: debug
Summary:
Scanned 2 bc files, there are 6 recommended modifications.
For the details information, please check:
/home/DevKit_Software/mem-check_20240229061648_7905.json
/home/DevKit_Software/mem-check_20240229061648_7905.html
/home/DevKit_Software/mem-check_20240229061648_7905.csv
```


#### 输出报告说明


**表2 内存一致性检查输出报告参数说明**

| 参数 | 说明 |
| --- | --- |
| 配置信息 | 显示软件源码文件及BC文件存放路径。 |
| 需要修改的源码文件 | 显示需要存在内存一致性问题需要进行修改的源码文件路径等相关信息。 |
