KernelShark在ubuntu24.04.01的编译

KernelShark在ubuntu24.04.01的编译

  • 写在前面
  • 具体过程
    • 装ubuntu24.04.01
    • 安装depends
    • 下载代码
    • 如何编译
      • cmake 输出
      • make 输出
    • 如何安装
  • 初步启动
    • Add the User to the perf Group
  • 简单的使用
    • trace-cmd抓包

来看我的文章,必有所得。
平凡中,总有我帮您踩过的坑。

写在前面

调研了TrackCompass后,感觉并不理想。
另一个工具是KernelShark。在接连搞坏ubuntu 20.04和22.04两个虚拟机后,我痛下决心,下载了新的ubuntu24.04.01,来编译kernelshark。
也不清楚我是不是这样做太过于执着。聪明人有时确会执着,但蠢人也会。现在还不清楚。。。是哪个。

具体过程

装ubuntu24.04.01

下载:

https://mirrors.xjtu.edu.cn/ubuntu-releases/24.04.1/ubuntu-24.04.1-desktop-amd64.iso

处理完一些其它工作后,装了新的ubuntu24.04.01这个不累述。
这个版本,并没有什么特别的,是因为qt6。
20.04装不了qt6,22.04装好,也可能不行。当然,也可能是我操作有误。
一会再说这个可能的错误。
不过,不管怎么说,我还是建议您重装一个干净的ubuntu来做这件事,因为我已经因为这事搞坏了我的两个虚拟机。而且没有事先做snap~

安装depends

然后,参见这个页面:
https://github.com/yordan-karadzhov/kernel-shark

1. In order to install the packages on Ubuntu do the following:sudo apt-get install build-essential git cmake libjson-c-dev -ysudo apt-get install freeglut3-dev libxmu-dev libxi-dev -ysudo apt-get install flex bison -ysudo apt-get install fonts-freefont-ttf -ysudo apt-get install qt6-base-dev qt6-scxml-dev -ysudo apt-get install libtraceevent-dev libtracefs-dev libtracecmd-dev trace-cmd -y1.1 If you want to be able to generate Doxygen documentation:sudo apt-get install graphviz doxygen-gui -y

要注意,上面这段文字,是这个页面唯一可信的东西。
而且我还装了一些其它的东西,也不清楚有没有用:
不建议操作。

sudo apt-get install build-essential git cmake libjson-c-dev -y
sudo apt-get install graphviz doxygen-gui -y
sudo dnf install gcc gcc-c++ git cmake json-c-devel -y
sudo apt install -y libzstd-dev
sudo apt install libdwarf-dev
sudo apt install build-essential cmake ninja-build git libqt6serialport6-dev 
sudo apt install libqt6serialport6-dev
sudo apt install -y build-essential cmake git libgtk-3-dev libtraceevent-dev libbabeltrace-dev   libglib2.0-dev libssl-dev pkg-config python3-mako libxml2-dev libncurses5-dev

其中一部分来自于这里:
https://forum.qt.io/topic/142233/cannot-build-qtcreator-from-source/7

下载代码

git clone git@github.com:yordan-karadzhov/kernel-shark.git
或者
https://github.com/yordan-karadzhov/kernel-shark.git
为什么,这段,要单写,是因为一定要用这套代码。
现在的head commit 是

commit 59aeaca7afd6cc415bd7127bee528603535ddae5 (HEAD -> kernelshark, origin/kernelshark, origin/HEAD)
Author: Yordan Karadzhov <y.karadz@gmail.com>
Date:   Thu Sep 12 19:53:12 2024 +0300kernel-shark: In CI switch to v4 of the artefact actionsThis change is not relevant for KernelShark itself but only forthe Github action CI. With the introduction of v4,  Githubdeprecates v1 and v2 of upload-artefact/download-artefact actions.Signed-off-by: Yordan Karadzhov <y.karadz@gmail.com>

那么来还有别的代码吗?
是的。如下图,而且,这套代码,就是主页说明里!
在这里插入图片描述我不好说什么,如果你像我一样,认为official更有权威,那么,很可能,你要走弯路了。
那套代码,我想可能也是能编出来的,我是说也,就是我没有成功。因为需要依赖一些其它的需要手工编的代码:

 project: Kernel Shark: (version: 2.3.1)CMake Error at /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):Could NOT find TraceEvent (missing: TraceEvent_INCLUDE_DIR)
Call Stack (most recent call first):/usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)build/FindTraceEvent.cmake:57 (find_package_handle_standard_args)CMakeLists.txt:48 (find_package)
-- Configuring incomplete, errors occurred!

如何编译

cd build
cmake ..
make

cmake 输出

CMake Deprecation Warning at CMakeLists.txt:2 (cmake_minimum_required):Compatibility with CMake < 3.5 will be removed from a future version ofCMake.Update the VERSION argument <min> value or use a ...<max> suffix to tellCMake that the project does not need compatibility with older versions.-- The C compiler identification is GNU 13.2.0
-- The CXX compiler identification is GNU 13.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - doneproject: Kernel Shark: (version: 2.3.1)-- Found TraceEvent: /usr/lib/x86_64-linux-gnu/libtraceevent.so
-- Found TraceFS: /usr/lib/x86_64-linux-gnu/libtracefs.so
-- Found TraceCmd: /usr/lib/x86_64-linux-gnu/libtracecmd.so
-- Found JSONC: /usr/lib/x86_64-linux-gnu/libjson-c.so
-- Found Doxygen: /usr/bin/doxygen (found version "1.9.8") found components: doxygen dot
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so
-- Found GLUT: /usr/lib/x86_64-linux-gnu/libglut.so
-- Found font: /usr/share/fonts/truetype/freefont/FreeSans.ttf
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Performing Test HAVE_STDATOMIC
-- Performing Test HAVE_STDATOMIC - Success
-- Found WrapAtomic: TRUE
-- Found WrapOpenGL: TRUE
-- Found XKB: /usr/lib/x86_64-linux-gnu/libxkbcommon.so (found suitable version "1.6.0", minimum required is "0.5.0")
-- Found WrapVulkanHeaders: /usr/include
-- Could NOT find Boost (missing: Boost_INCLUDE_DIR unit_test_framework)Build type: RelWithDebInfo-- C flags      :  -Wall -Wextra -pthread -fPIC -fno-common
-- CXX flags    :  -Wall -Wextra -pthread -fPIC -fno-common
-- Linker flags :src ...
-- libkshark
-- libkshark-plot
-- libkshark-gui
-- kernelshark
-- kshark-recordsrc/plugins ...
-- sched_events
-- event_field_plot
-- latency_plot
-- kvm_combo
-- missed_eventsexamples ...
-- dataload
-- datafilter
-- multibufferload
-- datahisto
-- confogio
-- dataplot
-- widgetdemo
-- cmd_split-- Configuring done (0.9s)
-- Generating done (0.0s)
-- Build files have been written to: /data/shark/github/kernel-shark/build

make 输出

在这里插入图片描述

如何安装

sudo make install

初步启动

kernelshark

在这里插入图片描述

Add the User to the perf Group

KernelShark requires access to trace data, which typically requires root permissions. To avoid running KernelShark as root, you can add your user to the perf group:

sudo usermod -aG perf $USER

Then log out and log back in for the changes to take effect.

简单的使用

这里有篇文章,入门很好。
先说一下我后面的计划,尽管与本文无关。
其实我们本质的计划是将用户面的事件与 kernel的事件联合显示。
并且,我需要在界面上,画上时隙线。在5G通信中,每种子载波间隔对应的采样频率的不同,对应着不同的时隙值。
我们需要将这些间隔画出来。
所以,选了我比较熟的C++和QT.

所以,后面一方面,需要了解日志的格式,如何将google nanolog这类log转化为 ctf格式,或其它的格式,另一方面,由基于kernelshark或其它的工具,或它们的插件,来绘制我们某个专业的 并行计算的流程分析的 二维图。
这些是需要投入的部分。

在这之前,需要先学习一下kernelshark如何使用。
这里有篇文章。
https://blog.csdn.net/21cnbao/article/details/108414081

trace-cmd抓包

新建一个目录,cd 之后

sudo trace-cmd record -e 'sched_wakeup*' -e sched_switch -e 'sched_migrate*'

过一会,^+c退出。
然后键入
kernelshark
或者
sudo kernelshark
在这里插入图片描述这里稍解释一点:
trace.data是默认的文件名,kernleshark,也会默认加载这个文件。
或者这样写也可以:
kernelshark trace.dat

上面的脚本可以在MobaXterm ssh的shell中执行。刚装好的vmware的ubuntu24.04.01在vmware中,黑屏了。不能操作。所以,让它在后台运行了。都是通后ssh操作,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Unity编辑器Inspector视图中文注释乱码

1.问题介绍 新创建一个脚本&#xff0c;用VS打开编辑&#xff0c;增加一行中文注释保存&#xff0c;在Unity中找到该脚本并选中&#xff0c;Inspector视图中预览的显示内容&#xff0c;该中文注释显示为乱码&#xff0c;如下图所示&#xff1a; 2.图示解决步骤 按上述步骤操作…

【AIGC半月报】AIGC大模型启元:2024.12(上)

【AIGC半月报】AIGC大模型启元&#xff1a;2024.12&#xff08;上&#xff09; &#xff08;1&#xff09;OpenAI-12日发布会&#xff08;持续更新中........&#xff09;Day01-12.06&#xff1a;o1满血版上线&#xff08;已发布&#xff09;Day02-12.07&#xff1a;强化微调&a…

字节码

字节码 1、字节码文件概述 1.1、字节码文件是跨平台的吗&#xff1f; ​ Java 虚拟机不和包括 Java 在内的任何语言绑定&#xff0c;它只与“Class 文件”这种特定的二进制文件格式所关联。 ​ 无论使用何种语言进行软件开发&#xff0c;只要能将源文件编译为正确的Class文件…

排查bug的通用思路

⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后&#xff0c;响应较慢&#xff0c;通用的问题排查方法: 从多个角度来排查问题 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评…

AI 建站:Durable

网址&#xff1a;https://app.durable.co 步骤 1) 登录 2&#xff09;点击创建新业务 3&#xff09;填写信息后&#xff0c;点击创建 4&#xff09;进入业务 5&#xff09;生成网站 6&#xff09;生成完成后不满意的话可以自己调整 7&#xff09;点击保存 8&#xff09;发布 …

部署kafka并通过python操作

目录 一、安装JDK1.81、检查服务器是否已安装JDK2、若已安装JDK&#xff0c;进行卸载3、更新yum源4、搜索JDK1.8安装包5、安装JDK1.86、查看是否安装成功7、配置环境变量 二、安装Kafka1、下载并解压kafka部署包至/usr/local/目录2、修改server.properties3、修改/etc/profile4…

【Linux】 进程池 一主多从 管道通信

目录 1.代码介绍 2.channel 类 3.进程池类编写 4.主函数及其他 5. 源码 1.代码介绍 本文代码采用一主多从式&#xff08;一个主进程&#xff08;master&#xff09;多个子进程&#xff08;worker&#xff09;&#xff09;通过管道进行通信&#xff0c;实现主进程分发任务&…

Ubuntu环境安装RabbitMQ

1.安装Erlang RabbitMq需要Erlang语⾔的⽀持&#xff0c;在安装rabbitMq之前需要安装erlang # 更新软件包 sudo apt-get update # 安装 erlang sudo apt-get install erlang 查看erlang版本 : erl 退出命令:halt(). 2. 安装RabbitMQ # 更新软件包 sudo apt-get update # 安装 …

力扣--199.二叉树的右视图

题目 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 提示: 二叉树的节点个数的范围是 [0,100] -100 < Node.val < 100 代码 class Solution { public List rightSideV…

Ubuntu Server 22.04.5 LTS重启后IP被重置问题

Ubuntu Server 22.04.5 LTS重启后IP被重置问题 最近在使用Ubuntu Server 22.04做项目开发测试时发现每次重启和关机后&#xff0c;所设置的静态IP地址都会回复到安装系统时所设置的ip Ubuntu Server 22.04 官网下载地址&#xff1a;Ubuntu官方下载地址 对虚拟机下安装Ubuntu感…

kube-proxy的iptables工作模式分析

系列文章目录 iptables基础知识 文章目录 系列文章目录前言一、kube-proxy介绍1、kube-proxy三种工作模式2、iptables中k8s相关的链 二、kube-proxy的iptables模式剖析1.集群内部通过clusterIP访问到pod的流程1.1.流程分析 2.从外部访问内部service clusterIP后端pod的流程2.1…

华为网络设备配置文件备份与恢复(上传、下载、导出,导入)

在日常运维工作中&#xff0c;会经常存在网络割接的情况&#xff0c;为了保证网络割接失败时能重新回退至原有配置&#xff0c;从而不影响原有的办公环境&#xff0c;在网络割接前的备份工作就非常有必要了。 备份方式&#xff1a;FTP 备份技术&#xff1a;PC客户端<---&g…

清风数学建模学习笔记——Topsis法

数模评价类&#xff08;2&#xff09;——Topsis法 概述 Topsis:Technique for Order Preference by Similarity to Ideal Solution 也称优劣解距离法&#xff0c;该方法的基本思想是&#xff0c;通过计算每个备选方案与理想解和负理想解之间的距离&#xff0c;从而评估每个…

[软件工程]九.可依赖系统(Dependable Systems)

9.1什么是系统的可靠性&#xff08;reliability&#xff09; 系统的可靠性反映了用户对系统的信任程度。它反映了用户对其能够按照预期运行且正常使用中不会失效的信心程度。 9.2什么是可依赖性&#xff08;dependablity&#xff09;的目的 其目的是覆盖系统的可用性&#x…

减少30%人工处理时间,AI OCR与表格识别助力医疗化验单快速处理

在医疗行业&#xff0c;化验单作为重要的诊断依据和数据来源&#xff0c;涉及大量的文字和表格信息&#xff0c;传统的手工输入和数据处理方式不仅繁琐&#xff0c;而且容易出错&#xff0c;给医院的运营效率和数据准确性带来较大挑战。随着人工智能技术的快速发展&#xff0c;…

汽车一键启动开关 、一键启动按键 、一键启动按钮

‌汽车一键启动按钮是智能汽车的重要部分&#xff0c;通常用于启动和关闭引擎‌。 ‌具体功能‌&#xff1a; ‌启动引擎‌&#xff1a;在许多现代汽车中&#xff0c;一键启动按键取代了传统的钥匙启动方式。只需轻轻按下一键启动按钮&#xff0c;车辆电源即被接通&#xff0c…

.NET用C#导入Excel数据到数据库

将Excel文件中的数据导入到数据库中不仅能够提升数据处理的效率和准确性&#xff0c;还能极大地促进数据分析和决策制定的过程。尤其在企业级应用中&#xff0c;Excel作为数据输入和初步整理的工具非常普遍&#xff0c;但其功能对于复杂查询、大规模数据管理和跨部门的数据共享…

python中数组怎么转换为字符串

1、数组转字符串 #方法1 arr [a,b] str1 .join(arr)#方法2 arr [1,2,3] #str .join(str(i) for i in arr)#此处str命名与str函数冲突&#xff01; str2 .join(str(i) for i in arr) 2、字符串转数组 #方法一 str_x avfg st_list list(str_x) #使用list()#方法二 list_s…

国内管理咨询公司哪家落地辅导做的好?

在当今快速变化的市场环境中&#xff0c;企业面临着前所未有的竞争压力与转型挑战。为了在这场没有硝烟的战争中脱颖而出&#xff0c;许多企业开始寻求外部专业力量的帮助&#xff0c;以期通过科学的管理咨询实现战略升级和业绩突破。而在众多的管理咨询公司中&#xff0c;思博…

Cursor vs VSCode:主要区别与优势分析

Cursor - The AI Code Editor 1. AI 集成能力 Cursor的优势 原生AI集成&#xff1a; # Cursor可以直接通过快捷键调用AI # 例如&#xff1a;按下 Ctrl K 可以直接获取代码建议 def complex_function():# 在这里&#xff0c;你可以直接询问AI如何实现功能# AI会直接在编辑器中…