性能优化的过程中,执行perf stat命令有报错
failed to get cpuid string for PMU hisi_sccl7_ddrc0
failed to get cpuid string for PMU hisi_sccl7_l3c18
failed to get cpuid string for PMU hisi_sccl3_ddrc1
failed to get cpuid string for PMU hisi_sccl3_l3c5
failed to get cpuid string for PMU hisi_sccl7_l3c16
failed to get cpuid string for PMU hisi_sccl3_l3c3
failed to get cpuid string for PMU hisi_sccl1_hha3
failed to get cpuid string for PMU hisi_sccl7_hha5
failed to get cpuid string for PMU hisi_sccl1_l3c9
failed to get cpuid string for PMU hisi_sccl1_l3c12
failed to get cpuid string for PMU hisi_sccl5_ddrc2
failed to get cpuid string for PMU hisi_sccl3_l3c1
failed to get cpuid string for PMU hisi_sccl1_ddrc3
failed to get cpuid string for PMU hisi_sccl5_l3c28
failed to get cpuid string for PMU hisi_sccl1_l3c10
failed to get cpuid string for PMU hisi_sccl5_ddrc0
...............
查询了一下原因,是由于内核版本过低,需要升级更高的内核版本。
先查看目前的内核版本
[root@localhost ~]# uname -r
4.14.0-115.el7a.0.1.aarch64
一:安装依赖
# yum update
# yum upgrade
# yum groupinstall Development Tools
# yum install ncurses-devel qt-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel
二:下载源码
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz
选择适合的版本,我这边选择了5.4版本
三:编译升级
tar -zxvf linux-5.4.tar.gz
[root@localhost ~]# cd /boot/
[root@localhost boot]# ls
config-4.14.0-115.el7a.0.1.aarch64 symvers-4.14.0-115.el7a.0.1.aarch64.gz
config-4.18.0-193.28.1.el7.aarch64 symvers-4.18.0-193.28.1.el7.aarch64.gz
efi System.map
grub System.map-4.14.0-115.el7a.0.1.aarch64
grub2 System.map-4.18.0-193.28.1.el7.aarch64
initramfs-0-rescue-4533ce0aa216477cba4723f8e096873e.img System.map-5.4.0
initramfs-4.14.0-115.el7a.0.1.aarch64.img vmlinuz
initramfs-4.14.0-115.el7a.0.1.aarch64kdump.img vmlinuz-0-rescue-4533ce0aa216477cba4723f8e096873e
initramfs-4.18.0-193.28.1.el7.aarch64.img vmlinuz-4.14.0-115.el7a.0.1.aarch64
initramfs-4.18.0-193.28.1.el7.aarch64kdump.img vmlinuz-4.18.0-193.28.1.el7.aarch64
initramfs-5.4.0.img vmlinuz-5.4.0
选择当前内核的配置文件拷贝进编译目录
config-4.14.0-115.el7a.0.1.aarch64
cp config-4.14.0-115.el7a.0.1.aarch64 /root/linux-5.4/.config
cd linux-5.4
make menuconfig
在弹出界面中方向键移动光标,选择Save,回车,保存配置
完成后选择exit退出
make
make modules_install
make install
四:指定内核
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
重启后查看内核版本
uname -r
五:问题汇总
make后可能会遇到如下问题,参考解决
extract-cert.c:(.text.startup+0x25): undefined reference to `OPENSSL_init_crypto’
extract-cert.c:(.text.startup+0x31): undefined reference to `OPENSSL_init_crypto’
在linux-5.4目录下,执行
grep -sr extract-cert* .
找到对应的Makefile文件
在-lcrypto加上 -L /usr/local/bin 指定链接的静态库的路径,默认为/usr/bin,如果crypto库在其他目录下需要修改
HOSTLDLIBS_sign-file = -L /usr/local/bin -lcrypto
HOSTLDLIBS_extract-cert = -L /usr/local/bin -lcrypto
如果遇到如上问题,需要修改.config文件
vi .config
找到 CONFIG_SYSTEM_TRUSTED_KEYS,置空