KernelShark在ubuntu24.04.01的编译

news2025/1/11 19:50:17

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 -y
    sudo apt-get install freeglut3-dev libxmu-dev libxi-dev -y
    sudo apt-get install flex bison -y
    sudo apt-get install fonts-freefont-ttf -y
    sudo apt-get install qt6-base-dev qt6-scxml-dev -y
    sudo apt-get install libtraceevent-dev libtracefs-dev libtracecmd-dev trace-cmd -y

1.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 +0300

    kernel-shark: In CI switch to v4 of the artefact actions

    This change is not relevant for KernelShark itself but only for
    the Github action CI. With the introduction of v4,  Github
    deprecates 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 of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake 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 - done

 project: 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-record

 src/plugins ...
-- sched_events
-- event_field_plot
-- latency_plot
-- kvm_combo
-- missed_events

 examples ...
-- 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.coloradmin.cn/o/2254753.html

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

相关文章

【48】Android通过libjpeg-turbo库实现图片压缩

&#xff08;1&#xff09;公司为节约图片占用服务器存储资源成本&#xff0c;需要对Android手机客户端所传递到云存储服务器中的图片进行压缩&#xff0c;在不影响图片失真程度的情况下&#xff0c;最大限度的压缩图片以节省图片所占用的存储空间。 &#xff08;2&#xff09;…

vue.js学习(day 18)

实例&#xff1a;面经基础版 (功能)组件缓存 keep-alive 小结 main.js import Vue from vue import App from ./App.vue import router from ./routerVue.config.productionTip falsenew Vue({ //注入,将路由对象注入到new Vue实例中&#xff0c;建立关联render: h > …

Android 使用 Canvas 和 Paint 实现圆形图片

学习笔记 效果展示: 全部代码: public class YuanActivity extends AppCompatActivity {private ActivityYuanBinding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 通过 DataBinding 获取布局文件binding …

鸿蒙DevEco Profiler无法识别设备

一、问题 DevEco Studio运行项目处可以识别到设备信息&#xff0c;但是Profiler工具无法识别 二、背景知识 注意 DevEco Profiler工具不支持模拟器进行调优。macOS 12及以上系统版本支持使用DevEco Profiler工具。 知识来源&#xff1a;文档中心 三、解决方案 重启DevEco …

微信小程序版小米商城的搭建流程详解!

很多初学微信小程序语法的同学&#xff0c;可能不知道如何布局和搭建一个项目&#xff0c;下面我将讲解初学者如何搭建项目和注意事项。 目录 一、 app.json的配置 二、引入vant 三、主页banner携带参数跳转 四、点击商品项跳转详情页 一、 app.json的配置 {"pages&q…

第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0

时间轴&#xff1a; 演示案例&#xff1a; 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF 题目&源码审计 开发指南-NodeJS-安全 SecGuide 项目、 环境搭建-NodeJ…

LongVU:用于长视频语言理解的空间时间自适应压缩

晚上闲暇时间看到一种用于长视频语言理解的空间时间自适应压缩机制的研究工作LongVU&#xff0c;主要内容包括&#xff1a; 背景与挑战&#xff1a;多模态大语言模型&#xff08;MLLMs&#xff09;在视频理解和分析方面取得了进展&#xff0c;但处理长视频仍受限于LLM的上下文长…

Observability:用 OpenTelemetry 自动检测 Python 应用程序

作者&#xff1a;来自 Elastic Bahubali Shetti 了解如何使用 OpenTelemetry 自动检测 Python 应用程序。使用 Docker 文件中的标准命令&#xff0c;可以快速检测应用程序&#xff0c;而无需在多个位置编写代码&#xff0c;从而实现快速更改、扩展和更轻松的管理。 更多阅读&a…

JVM, JRE 和 JDK

JRE: Java Runtime Environment, Java 运行环境. JDK: Java Development Kit, Java 开发工具包. JRE JVM 核心类库 运行工具 JDK JVM 核心类库 开发工具 JVM: Java Virtual Machine, Java 虚拟机. 核心类库: Java 已经写好的东西, 直接拿来用即可. 开发工具: 包括 …

Ubuntu 22.04.5 + kubeadm:Kubernetes v1.28.2集群部署企业实战

文章目录 Ubuntu 22.04.5 kubeadm&#xff1a;Kubernetes v1.28.2集群部署企业实战一、环境准备1.1 机器规划1.2 环境配置1.2.1 设置主机名1.2.2 安装依赖工具1.2.3 配置时间同步1.2.4 关闭swap分区1.2.5 停止和禁用防火墙1.2.6 配置内核转发及网桥过滤1.2.7 安装配置ipset及i…

Mac环境下brew安装LNMP

安装不同版本PHP 在Mac环境下同时运行多个版本的PHP&#xff0c;同Linux环境一样&#xff0c;都是将后台运行的php-fpm设置为不同的端口号&#xff0c;下面将已php7.2 和 php7.4为例 添加 tap 目的&#xff1a;homebrew仅保留最近的php版本&#xff0c;可能没有你需要的版本…

【Python网络爬虫笔记】8- (BeautifulSoup)抓取电影天堂2024年最新电影,并保存所有电影名称和链接

目录 一. BeautifulSoup的作用二. 核心方法介绍2.1 构造函数2.2 find()方法2.3 find_all()方法2.4 select()方法 三. 网络爬虫中使用BeautifulSoup四、案例爬取结果 一. BeautifulSoup的作用 解析HTML/XML文档&#xff1a;它可以将复杂的HTML或XML文本转换为易于操作的树形结构…

解决LED显示屏水波纹的方法

在拍摄LED显示屏时&#xff0c;水波纹和扫描线的出现常常让人误以为是显示屏质量问题&#xff0c;但实际上这些现象往往与拍摄角度和焦距有关。本文将探讨水波纹的成因&#xff0c;并提供一些有效的解决方法。 1. 水波纹与扫描线现象的区别 水波纹通常呈现无规则的弧形扩散状态…

【MySQL — 数据库基础】深入理解数据库服务与数据库关系、MySQL连接创建、客户端工具及架构解析

目录 1. 数据库服务&#xff06;数据库&#xff06;表之间的关系 1.1 复习 my.ini 1.2 MYSQL服务基于mysqld启动而启动 1.3 数据库服务的具体含义 1.4 数据库服务&数据库&表之间的关系 2. 客户端工具 2.1 客户端连接MySQL服务器 2.2 客…

记录关于阿里云智能媒体预览pdf文件的问题

pdf仅支持预览&#xff0c;不支持编辑&#xff0c;需要将权限设置成只读。 readonly参数一定要传&#xff0c;不能不传&#xff01;&#xff01;&#xff01;&#xff01; readonly的设置一定要用示例提供的方法&#xff01;&#xff01;&#xff01;&#xff01; 用WebofficeP…

FlyHttp 的设计思想:前端 API 自动化构建工具

FlyHttp的相关文章&#xff1a; FlyHttp 的诞生&#xff1a;从认识各种网络请求开始 FlyHttp 的设计思想&#xff1a;前端 API 自动化构建工具 FlyHttp 的使用&#xff1a;如何高效使用 FlyHttp&#xff0c;支持 JS、TS 项目 FlyHttp 的最佳实践&#xff1a;加速项目级 API…

WHLUG丨deepin、华中科技大学开放原子开源俱乐部、 RustSBI 和清华大学开源操作系统训练营共话开源新生代成长之路

2024年11月30日下午&#xff0c;由 deepin&#xff08;深度&#xff09;社区联合华中科技大学开放原子开源俱乐部、 RustSBI 开源社区和清华大学开源操作系统训练营共同举办的WHLUG&#xff08;武汉Linux用户组&#xff09;线下沙龙在华中科技大学成功举办。 本次活动聚集了50余…

K8S离线部署Nacos集群【Oracle作外部数据源】

一、前言 由于公司的要求下要使Nacos集群以Oracle作为外部数据源&#xff0c;前期咱们已经阐述了如何在本地搭建&#xff08;Nacos集群搭建【Oracle作外部数据源】&#xff09;&#xff0c;本次将带领大家在k8s上部署Nacos集群并以Oracle作为外部数据源。 二、软件包 nacos-f…

MperReduce学习笔记下

自定义InputFormat合并小文件 案例需求 无论hdfs还是mapreduce&#xff0c;对于小文件都有损效率&#xff0c;实践中&#xff0c;又难免面临处理大量小文件的场景&#xff0c;此时&#xff0c;就需要有相应解决方案。 案例分析 小文件的优化无非以下几种方式&#xff1a; …

Junit5 单元测试入门

基础知识 常用注解含义 Test&#xff1a;标记一个方法为测试方法BeforeEach&#xff1a;标记的方法会在每个测试方法执行前执行AfterEach&#xff1a;标记的方法会在每个测试方法执行后执行BeforeAll&#xff1a;标记的方法会在所有测试方法执行前执行一次AfterAll&#xff1…