赞
踩
一. 动机
1.1 本着生命不息,折腾不止的人生理念,最近迷上了系统性能优化;找了一本书<<Understanding Software Dynamics>>作为研究资料,看完前几章,作者对系统(从硬件到软件)的理解令人叹为观止,性能优化从硬件讲到软件,时间精确到纳秒,跟着作者的思路理解系统性能优化,颇有醍醐灌顶之感。
1.2 本文章对读者做了一些假设,技术上假设读者对操作系统有基本的概念,会基本的MobaXterm操作,会基本的vim操作,能够看懂英文文档。
二. KUtrace简介
2.1 kutrace是一款基于Linux的软件工具,可以记录每一次用户态与内核态之间转换、每一次系统调和返回,每一次系统中断到中断返回,每一次系统trap,每一次上下文切换的时间。每秒在cpu每个核上做200000次记录,CPU的额外开销保持在%0.5以下,因此速度大约是ftrace之类的工具的10倍。
三. 环境准备
3.1 宿主机:Windows11
3.2 虚拟机vmware workstation 17试用版
https://download3.vmware.com/software/WKST-1751-WIN/VMware-workstation-full-17.5.1-23298084.exe
3.3 系统:Ubuntu22.04服务器版
https://cn.ubuntu.com/download/server/thank-you?version=22.04.4&architecture=amd64
3.4 Linux内核5.10.66版
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.66.tar.xz
3.5 宿主机终端MobaXterm
MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Home Edition
3.6 kutrace
https://github.com/dicksites/KUtrace/archive/refs/heads/master.zip
四. 安装过程
4.1 ubuntu22.04服务器安装:随便找一篇vmware安装ubuntu系统的文章即可,在给ubuntu分配资源的时候最好分到50G以上(在安装完Ubuntu服务器,再编译完内核后空间占用达到31G.....)
切记要勾选虚拟化CPU性能计数器
磁盘的扩容参照Ubuntu 20.04.3-live-server 磁盘如何扩容_ubuntu 给vda2 扩容-CSDN博客。
安装完成后进入系统查看系统ip地址,使用MobaXterm连接上即可
4.2 linux-5.10.66内核安装
1. sudo apt-get install gcc; sudo apt-get install g++
2. sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
3. mkdir Download; cd Download; wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.66.tar.xz; tar xvf linux-5.10.66.tar.xz
3. wget https://github.com/dicksites/KUtrace/blob/master/linux/patches-linux-5.10.66-x86.tar.gz
4. tar xvf patches-linux-5.10.66-x86.tar.gz
5. cd linux-5.10.66; cp -v /boot/config-$(uname -r); mv config-$(uname -r) .config
6. make oldconfig,所有值都默认(一直按Enter键即可)
7. make menuconfig,直接退出即可
8. 打开.conf文件,定位到证书相关配置项
9. sudo make -j$(nproc),这一步的安装时间较长,在我电脑上装了2小时,如有其他事可以先做
10. sudo make modules_install
11. sudo make install
12. sudo reboot
13. cd Download/patches-linux-5.10.66-x86; cp -r ../linux-5.10.66
14. 将所有的xxx.patched结尾文件覆盖xxx文件
15. make menuconfig
16. sudo make -j$(nproc)
17. sudo make modules_install
18. sudo make install
19. sudo reboot
20. 进入module目录,在KUTRACE文件夹中寻找,切换至root用户make即可
21. 给kutrace_mod.ko签名
23. 执行sudo insmod kutrace_mod.ko tracemb=2后,kutrace加载入内核后即可参照
<<Understanding Software Dynamics>>中的示例使用
五. 报错及修复方案
5.1 证书问题
INSTALL arch/x86/crypto/aegis128-aesni.ko
At main.c:160:
- SSL error:FFFFFFFF80000002:system library::No such file or directory: ../crypto/bio/bss_file.c:67
- SSL error:10000080:BIO routines::no such file: ../crypto/bio/bss_file.c:75
sign-file: : No such file or directory
make[1]: *** [scripts/Makefile.modinst:33: arch/x86/crypto/aegis128-aesni.ko] Error 1
make: *** [Makefile:1445: _modinst_] Error 2
方案: 照图中操作后,回到上面步骤四-4.2-9继续操作即可
5.2 编译kutrace_mod模块,没有出现kutrace_mod.ko
方案:切换至root用户编译即可
原因: Makefile文件中$(PWD)在root用户下才获取当前目录
5.3 加载kutrace_mod.ko出现段错误
方案:
六. 参考资料
1. https://github.com/dicksites/KUtrace
2. https://www.kernel.org/doc/html/latest/kbuild/kconfig.html
3. https://blog.csdn.net/weixin_41182157/article/details/83312861
4. https://zhuanlan.zhihu.com/p/499173699
6. win11系统vmware虚拟机报错“不支持嵌套虚拟化”问题解决方案汇总-CSDN博客
7. <<Understanding Software Dynamics>>
8. <<linux_patches_installation_guide.pdf>>
9. <<kutrace_user_guide.pdf>>
10. <<Vim实用技巧.pdf>>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。