配置SPE环境
OS |
版本 |
内核版本 |
---|---|---|
openEuler |
openEuler 20.03 LTS |
4.19.90-2003.4.0.0036.oe1.aarch64 |
openEuler 20.03 LTS |
5.10.0-60.18.0.50.oe2203.aarch64 |
|
openEuler 20.03 LTS-SP2 |
4.19.90-2106.3.0.0095.oe1.aarch64 |
|
openEuler 20.03 LTS-SP1 |
5.10.0-136.24.0.100.oe2203sp1.aarch64 |
|
Kylin |
Kylin V10 (SP03)/(Lance) |
4.19.90-52.15.v2207.ky10.aarch64 |
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功能。
- 检查BIOS配置项 MISC Config--> SPE的状态,如果状态为Disabled需要更改为Enabled。
- 使用SSH远程登录工具,以root用户登录Linux操作系统命令行界面。
- 配置系统启动参数。
- 执行如下命令编辑配置文件。
1
vim /etc/grub2-efi.cfg
- 定位到内核版本对应的开机启动项,在末尾增加“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
由于设置“kpti=off”后,系统安全性降低,禁止在生产环境上运行。
- 按“ESC”,输入“:wq”,按“Enter”保存并退出。
- 执行reboot命令重启服务器。
- 执行如下命令编辑配置文件。
- 安装系统性能分析工具后,执行如下命令确认SPE是否开启成功。
1
perf list | grep arm_spe
显示如下内容说明SPE已成功开启。
arm_spe_0// [Kernel PMU event]
(适用于CentOS 7.6)配置SPE环境
- 鲲鹏服务器从V159版本BIOS开始支持SPE功能。
- 若要执行访存分析中的Miss事件分析,需先编译perf,便于支持SPE采集。
- 检查BIOS配置项 MISC Config--> SPE的状态,如果为Disable需要更改为Enable状态。
- 使用SSH远程登录工具,以系统用户root登录Linux操作系统命令行界面。
- 配置系统启动参数。
- 执行如下命令编辑配置文件。
1
vim /boot/efi/EFI/centos/grub.cfg
- 定位到内核版本对应的开机启动项,在末尾增加“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
由于设置“kpti=off”后,系统安全性降低,禁止在生产环境上运行。
- 按“ESC”,输入“:wq”,按“Enter”保存并退出。
- 执行reboot命令重启服务器。
- 执行如下命令获取内核启动参数,确认是否添加成功。
1
cat /proc/cmdline
- 执行如下命令编辑配置文件。
- 安装系统性能分析工具后,执行如下命令确认SPE是否开启成功。
1
perf list | grep arm_spe
显示如下内容说明SPE已成功开启。
arm_spe_0// [Kernel PMU event]
(适用于CentOS 7.6)驱动安装
CentOS 7.6的Miss采集时,支持以下7个内核版本,内核驱动编译时请使用支持的版本。
操作系统 |
内核版本 |
---|---|
CentOS 7.6 |
4.14.0-115.el7a.0.1 |
4.14.0-115.2.2.el7a |
|
4.14.0-115.5.1.el7a |
|
4.14.0-115.6.1.el7a |
|
4.14.0-115.7.1.el7a |
|
4.14.0-115.8.2.el7a |
|
4.14.0-115.10.1.el7a |
- 下载内核驱动至/home/spe_ko目录。
下载地址:https://github.com/kunpengcompute/devkitdriver/tree/main。
图1 下载页面
将下载包中的devkitdriver-main/SPEdriver目录下的文件拷贝至/home/spe_ko目录下,以4.14.0-115.el7a.0.1版本为例,其他小版本需要先下载对应内核版本的rpm包,并将系统升级到该内核版本。
- 编译驱动。
1 2 3 4
cd /home/spe_ko/arm_spe_pmu make cd /home/spe_ko/spe_device make
- 查看驱动文件。
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
- 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
- 下载内核源码到/home/spe_perf/kernel-alt-4.14.0-115.el7a.0.1目录。
内核源码地址:https://archive.kernel.org/centos-vault/7.6.1810/os/Source/SPackages/
图2 rpm源码包
- 检查flex和bison依赖包。
1 2
rpm -qa |grep bison rpm -qa |grep flex
如果没有相关依赖,则进行安装。
1 2
yum install flex yum install bison
- 解压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 ..
- 合入补丁。
下载patch,patch地址: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
- 查询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
- 复制编译后的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