首页 > 编程语言 >在 kubernets pod 里使用 perf 直接调试 rust 程序

在 kubernets pod 里使用 perf 直接调试 rust 程序

时间:2023-07-07 18:33:29浏览次数:36  
标签:kernel perf kubernets rust pod 调试 out

 

我们想要了解我们程序在运行时候的真实情况,但是感觉 rust 性能方面的调试真的比 go 麻烦非常多。

首先在 rust cargo.toml 中添加

[profile.release]
debug = true

 

直接在 pod 里面进行调试限制比较多,首先我们可能需要安装一些必要的东西比如 perf 本体

在 ubuntu 的环境下

apt-get update
apt install linux-perf

执行

perf record -g -p 1

会得到一些内核的报错信息,默认配置下指向我们的权限不足我们需要调整 node 上的一些内核参数

/proc/sys/kernel/perf_event_paranoid=1
/proc/sys/kernel/perf_event_mlock_kb 8192
cat /proc/sys/kernel/kptr_restrict 0

 

执行

perf record -g -p 1
过于会儿之后手动停掉采样使用

perf report 
查看报告

然后我们会看到这样一个报告

但是 symbol 的部分居然都是一些内存地址,看得人一头雾水。我们需要获得一些跟代码相关的信息

当然我们可能会觉得火焰图更好看一些,我们可以尝试使用 FlameGraph,我在测试环境将这个工具打包进 pod

然后在数据生成之后使用可以将已经生成好的 

perf.data => out.perf
perf script > out.perf

然后直接使用打包进去的 FlameGragh 工具生成 SVG 烈焰图即可

./FlameGraph/stackcollapse-perf.pl out.perf > out.folded
./FlameGraph/flamegraph.pl out.folded > flamegraph.svg

 

其实我感觉在生成了 data 之后,想办法从 pod 里面讲将数据拿出来分析会比较方便。pod 里面什么工具都没有还是比较麻烦的。

 

标签:kernel,perf,kubernets,rust,pod,调试,out
From: https://www.cnblogs.com/piperck/p/17535807.html

相关文章

  • centos 中,unable to download updates: could not do untrusted question as no klass
    这个问题可能是由于您的系统缺少Klass支持导致的。您可以尝试以下方法解决: 1.更新软件包列表:```sudoyumupdate``` 2.如果更新软件包列表后问题仍然存在,您可以尝试安装Klass支持:```sudoyuminstallklass-utils``` 3.安装完成后,再次尝试更新系统:```sudoyum......
  • 文盘Rust -- FFI 浅尝
    rustFFI是rust与其他语言互调的桥梁,通过FFIrust可以有效继承C语言的历史资产。本期通过几个例子来聊聊rust与C语言交互的具体步骤。场景一调用C代码创建工程cargonew--binffi_sampleCargo.toml配置[package]name="ffi_sample"version="0.1.0"edition......
  • Rust 笔记
    https://github.com/ACMClassCourse-2022/Summer-Ray-TracerRust这门语言真的是挺难的,主要在于编译器贼事儿逼,什么都要管。这篇文章主要内容是给C++的每一样东西一个Rust平替。I/O输出print!(),println!()。其中的感叹号代表宏。用法:leta=3;println!("a={a}");p......
  • [记]Rust闭包加动态分发
    pubtraitApp{fnrun(&mutself);}#[derive(Clone,Copy)]pubstructCda{d:i32,}implCda{fnnew(num:i32)->Self{Self{d:num}}fninc(&mutself)->Self{self.d+=1;*self}fnshow(......
  • rust入门(一)
    1、安装Rust无论使用何种系统,均可以根据Rust官方网站提供的rustup-init工具完成Rust的安装.rustup-init下载地址:  https://www.rust-lang.org/zh-CN/tools/install根据系统提示进行安装,安装完成后,验证是否安装成功rustc--version提示:如果你使用的是Linux......
  • Jmeter学习之五_跟踪被测试服务器的performance
    Jmeter学习之五_跟踪被测试服务器的performance背景这几天简单学习了一些基本的测试过程.可以实现一些简单基本的功能了.今天晚上继续进行了jmeter的一些学习.想着可以在测试人大金仓的同时可以查看一下本地的机器性能.用到的工具以及资料https://www.cnblogs.com/......
  • APP性能测试工具 - PerfDog
    介绍安装及运行重要提示软件性能数据采集iOS平台Android平台Web性能数据管理数据陷阱介绍移动全平台iOS/Android性能测试、分析工具平台。快速定位分析性能问题,提升APP应用及游戏性能和品质。手机无需ROOT/越狱,手机硬件、游戏及应用APP也无需做任何修改,极简化即插即用。......
  • Rust 入门
    0x01准备(1)安装Rust安装Rust:Windows系统在官网下载Rust版本检测:rustc--version查看文档:rustupdoc更新Rust:rustupupdate卸载Rust:rustupselfuninstall在Clion中使用Rust开发,环境配置指南链接(2)Hello,World!编写//filename:main.rsfnmain(){......
  • Rust async 关键字
    async观察代码:asyncfndd(a:i32)->i32{dbg!(a);2*a}异步方法内可以执行await,很显然上面的代码等价于下面两种形式:asyncfndd(a:i32)->i32{dbg!(a);async{2*a}.await}asyncfndd(a:i32)->i32{asyncmove{dbg!(a)......
  • 11.performance_schema_01
    1.Mysql的performance_schema是运行在较低级别的用于监控mysqlserver运行过程中资源消耗、资源等待的一个功能。2.查看当前是否支持root@mysqldb21:14:[performance_schema]>showengines;+--------------------+---------+--------------------------------------------......