---
title: 配置SPE环境
description: "**表1 建议版本**"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/devkit_24/usermanual/kunpengoper_06_0010.html
sourcePath: /source/zh/kunpengdevkithistory/devkit_24/usermanual/kunpengoper_06_0010.html
indexId: ad4c9bc35d236d084564705d75552be487d981eed2b14eaadbef92415115cd0577
---
# 配置SPE环境


**表1 建议版本**

| OS | 版本 | 内核版本 |
| --- | --- | --- |
| openEuler | openEuler 20.03 LTS | 4.19.90\-2003.4.0.0036.oe1.aarch64 |
| openEuler | openEuler 22.03 LTS | 5.10.0\-60.18.0.50.oe2203.aarch64 |
| openEuler | openEuler 20.03 LTS\-SP2 | 4.19.90\-2106.3.0.0095.oe1.aarch64 |
| openEuler | openEuler 22.03 LTS\-SP1 | 5.10.0\-136.24.0.100.oe2203sp1.aarch64 |
| Kylin | Kylin V10 (SP3)/(Lance) | 4.19.90\-52.15.v2207.ky10.aarch64 |
| Kylin | Kylin 3.4\-5 | 4.19.90\-2112.8.0.0131.kb8.ky3.aarch64 |
| UOS | UOS 1020e | 4.19.90\-2201.4.0135.up1.uel20.aarch64 |


#### （适用于openEuler）配置SPE环境

鲲鹏服务器从V159版本BIOS开始支持SPE功能。


1. 检查BIOS配置项MISC Config-->SPE的状态，如果状态为Disabled需要更改为Enabled。
2. 使用SSH远程登录工具，以root用户登录Linux操作系统命令行界面。
3. 配置系统启动参数。

  a. 执行如下命令编辑配置文件。
    1 vim /etc/grub2-efi.cfg

  b. 定位到内核版本对应的开机启动项，在末尾增加“kpti=off”。

```
linux   /vmlinuz-4.19.90-2003.4.0.0036.oe1.aarch64 root=/dev/mapper/openeuler-root ro rd.lvm.lv=openeuler/root rd.lvm.lv=openeuler/swap video=VGA-1:640x480-32@60me rhgb quiet  smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15 crashkernel=1024M,high video=efifb:off video=VGA-1:640x480-32@60me
kpti=off
```


    若使用x86服务器，由于设置“kpti=off”后，系统安全性降低，不建议在生产环境设置。

  c. 按“ESC”，输入“:wq”，按“Enter”保存并退出。
  d. 执行reboot命令重启服务器。
4. 安装系统性能分析工具后，执行如下命令确认SPE是否开启成功。
  1 perf list | grep arm_spe

  显示如下内容说明SPE已成功开启。

```
arm_spe_0//                                        [Kernel PMU event]
```


#### （适用于CentOS 7.6）配置SPE环境

- 鲲鹏服务器从V159版本BIOS开始支持SPE功能
- 若要执行访存分析中的Miss事件分析，需先配置SPE环境，便于支持SPE采集。


1. 检查BIOS配置项MISC Config-->SPE的状态，如果为Disabled需要更改为Enabled状态。
2. 使用SSH远程登录工具，以系统用户root登录Linux操作系统命令行界面。
3. 配置系统启动参数。

  a. 执行如下命令编辑配置文件。
    1 vim /boot/efi/EFI/centos/grub.cfg

  b. 定位到内核版本对应的开机启动项，在末尾增加“kpti=off”。

```
linux   /vmlinuz-4.14.0-115.el7a.0.1.aarch64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
kpti=off
```


    若使用x86服务器，由于设置“kpti=off”后，系统安全性降低，不建议在生产环境设置。

  c. 按“ESC”，输入“:wq”，按“Enter”保存并退出。
  d. 执行reboot命令重启服务器。
  e. 执行如下命令获取内核启动参数，确认是否添加成功。
    1 cat /proc/cmdline

4. 安装系统性能分析工具后，执行如下命令确认SPE是否开启成功。
  1 perf list | grep arm_spe

  显示如下内容说明SPE已成功开启。

```
arm_spe_0//                                        [Kernel PMU event]
```


#### （适用于CentOS 7.6）驱动安装

CentOS 7.6的Miss采集时，支持以下7个内核版本，内核驱动编译时请使用支持的版本。


**表2 支持内核版本**

| 操作系统 | 内核版本 |
| --- | --- |
| CentOS 7.6 | 4.14.0\-115.el7a.0.1 |
| CentOS 7.6 | 4.14.0\-115.2.2.el7a |
| CentOS 7.6 | 4.14.0\-115.5.1.el7a |
| CentOS 7.6 | 4.14.0\-115.6.1.el7a |
| CentOS 7.6 | 4.14.0\-115.7.1.el7a |
| CentOS 7.6 | 4.14.0\-115.8.2.el7a |
| CentOS 7.6 | 4.14.0\-115.10.1.el7a |


1. 下载内核驱动至/home/spe_ko目录。
  下载地址：https://github.com/kunpengcompute/devkitdriver/tree/main(https://github.com/kunpengcompute/devkitdriver/tree/main)。

  图1 下载页面

  将下载包中的devkitdriver-main/SPEdriver目录下的文件拷贝至/home/spe_ko目录下，以4.14.0-115.el7a.0.1版本为例，其他小版本需要先下载对应内核版本的rpm包，并将系统升级到该内核版本。

2. 编译驱动。
  1 2 3 4 cd /home/spe_ko/arm_spe_pmu make cd /home/spe_ko/spe_device make

3. 查看驱动文件。
  1 2 ls -l /home/spe_ko/arm_spe_pmu/arm_spe_pmu.ko ls -l /home/spe_ko/arm_spe_pmu/spe_device.ko

4. ko文件安装。
  1 2 insmod /home/spe_ko/arm_spe_pmu/arm_spe_pmu.ko insmod /home/spe_ko/arm_spe_pmu/spe_device.ko


#### （适用于CentOS）编译perf

1. 下载内核源码到/home/spe_perf/kernel-alt-4.14.0-115.el7a.0.1目录。
  内核源码地址：https://archive.kernel.org/centos-vault/7.6.1810/os/Source/SPackages/(https://archive.kernel.org/centos-vault/7.6.1810/os/Source/SPackages/)

  图2 rpm源码包

2. 检查flex和bison依赖包。
  1 2 rpm -qa |grep bison rpm -qa |grep flex

  如果没有相关依赖，则进行安装。

  1 2 yum install flex yum install bison

3. 解压rpm包。
  1 2 3 4 cd /home/spe_perf/kernel-alt-4.14.0-115.el7a.0.1 rpm2cpio kernel-alt-4.14.0-115.el7a.0.1.src.rpm | cpio -divm xz -d linux-4.14.0-115.el7a.tar.xz tar -xvf linux-4.14.0-115.el7a.tar -C ..

4. 合入补丁。
  下载patch，patch地址：https://github.com/kunpengcompute/devkitdriver/tree/main(https://github.com/kunpengcompute/devkitdriver/tree/main)。

  图3 下载页面

  将下载包中的perfpatch目录下的文件拷贝至/home/spe_perf目录下。

  1 2 3 cd /home/spe_perf chmod +x build_perf.sh ./build_perf.sh

5. 查询arm_spe事件。
  新生成的perf在“/home/spe_perf/linux-4.14.0-115.el7a/tools/perf”路径下，在perf路径执行perf list。

  1 2 cd /home/spe_perf/linux-4.14.0-115.el7a/tools/perf ./perf list | grep arm_spe

6. 复制编译后的perf并修改权限。
  1 2 3 mkdir -p /usr/bin/devkit/spe/4.14.0-115.el7a.0.1 cp perf /usr/bin/devkit/spe/4.14.0-115.el7a.0.1 chmod -R 500 /usr/bin/devkit/spe
