性能分析与调优: Linux 文件系统观测工具

目录

一、实验

1.环境

2.mount

3.free

4.top

5.vmstat

6.sar

7.slabtop

8.strace

9.opensnoop

10.filetop

11.cachestat

二、问题

1.Ftrace实例如何实现

2.Function trace 如何跟踪实例

3.function_graph Trace 如何跟踪实例

4.trace event 如何跟踪实例

5.未找到命令

6. fatrace有何功能


一、实验

1.环境

(1)主机

表1-1 主机

主机架构组件IP备注
prometheus

监测

系统

prometheus、node_exporter 192.168.204.18
grafana监测GUIgrafana192.168.204.19
agent 

监测

主机

node_exporter192.168.204.20

(2)文件系统观测工具

表1-2 文件系统观测工具

序号工具描述
1mount列出文件系统和它们的挂载选项
2free缓存容量统计信息
3top包括内存使用概要
4vmstat虚拟内存统计信息
5sar多种统计信息,包括历史信息
6slabtop内核slab分配器统计信息
7strace系统调用跟踪
8opensnoop跟踪打开的文件
9filetop使用中的最高IOPS和字节数的文件
10cachestat页缓存统计信息

2.mount

(1) 列出挂载的文件系统与挂载选择

[root@agent ~]# mount

3.free

(1) 显示内存和交换区的统计信息

①显示正常输出,单位为MB(-m)

[root@agent ~]# free -m

② 显示宽(-w)的输出,单位为MB(-m)。

[root@agent ~]# free -mw

输出包含一个buffers列,表示缓冲区高速缓存大小,以及一个cache列,表示页缓存大小。

4.top

(1) 输出包含文件系统缓存的详细信息

[root@agent ~]# top

输出了buff/cache和avail Mem统计信息

5.vmstat

(1) 输出包含文件系统缓存的详细信息

每秒1次,共5次输出

[root@agent ~]# vmstat 1 5

输出包含一个buffer列,表示缓冲区高速缓存大小,以及一个cache列,表示页缓存大小。

6.sar

(1) 报告当前文件系统的统计信息

每秒1次,共5次输出

[root@agent ~]# sar -v 1 5

(2)-r 选项

每秒1次,共5次输出

[root@agent ~]# sar -r 1 5

输出了分别代表缓冲区高速缓存大小以及页缓存大小的kbbuffers 和 kbcached

7.slabtop

(1) 打印有关内核slab缓存的信息,有些用于文件系统缓存

[root@agent ~]# slabtop -o

8.strace

(1) 文件系统延时,测量系统操作事件

选项-tt在左侧打印出相对时间戳,而选项-T在右侧打印出系统调用事件

[root@agent ~]# strace -ttT -p 755

9.opensnoop

(1) 跟踪文件打开

①   -T选项包含时间戳

[root@agent ~]# opensnoop -T 

②  -x 选项只显示失败的打开事件

[root@agent ~]# opensnoop -x

10.filetop

(1) 显示最频繁读或者写的文件名

-a显示所有文件,每秒1次,共2次输出

[root@agent ~]# filetop -a 1 2

11.cachestat

(1) 展示页缓存命中和未命中的统计信息

每秒1次,共5次输出

[root@agent ~]# cachestat -T 1 5

二、问题

1.Ftrace实例如何实现

(1)Ftrace 三板斧

1)设置 tracer 类型2)设置 tracer 参数3)使能 tracer

2.Function trace 如何跟踪实例

(1)查看

1)进入 ftrace 工作目录
cd /sys/kernel/debug/tracing2)查看系统支持的 tracer 类型
cat available_tracers3)Disable tracer
echo 0 > tracing_on4)设置 tracer 类型为 function
echo function > current_tracer5)设置 tracer 类型为 function
echo function > current_tracer6)set_ftrace_filter 表示要跟踪的函数,这里我们只跟踪 dev_attr_show 函数echo dev_attr_show > set_ftrace_filter7)Enable tracer
echo 1 > tracing_on8)提取 trace 结果
cat trace

(2)检查当前所设置的跟踪器

cat current_tracer

(3)开始跟踪

1)初始化跟踪
echo 1 > tracing_on 2)将跟踪文件保存到一个临时文件
cat trace > /tmp/trace.txt 3)禁用跟踪功能
echo 0 > tracing_on4) 查看trace文件的输出。
cat /tmp/trace.txt   | head -25


 

3.function_graph Trace 如何跟踪实例

(1) 查看

1)进入 ftrace 工作目录
cd /sys/kernel/debug/tracing2)查看系统支持的 tracer 类型
cat available_tracers

(2)设置跟踪器

 ①设置 tracer 类型为 function_graph 

 echo function_graph > current_tracer

(3)检查当前所设置的跟踪器

cat current_tracer

(4)开始跟踪

1)初始化跟踪
echo 1 > tracing_on 2)将跟踪文件保存到一个临时文件
cat trace > /tmp/grapgtrace.txt3)禁用跟踪功能
echo 0 > tracing_on4) 查看trace文件的输出。
cat /tmp/grapgtrace.txt   | head -25

4.trace event 如何跟踪实例

(1) 查看

1)进入 ftrace 工作目录
cd /sys/kernel/debug/tracing2)查看系统支持的 tracer 类型
cat available_tracers

(2)打开 sched_switch event (监控系统内进程切换事件)

1)切换目录cd /sys/kernel/debug/tracing/events/sched/sched_switch2)查看
ls3)写入
echo 1 > enable

(3)设置跟踪器

 ①设置 tracer 类型为 function_graph 

echo nop > current_tracer

(4)检查当前所设置的跟踪器

cat current_tracer

(5)开始跟踪

1)初始化跟踪
echo 1 > tracing_on 2)将跟踪文件保存到一个临时文件
cat trace > /tmp/traceevent.txt3)禁用跟踪功能
echo 0 > tracing_on4) 查看trace文件的输出。
cat /tmp/traceevent.txt   | head -25

(6)过滤信息

1)切换目录
cd /sys/kernel/debug/tracing/events/sched/sched_switch2)查看
cat format

(7)分析

format 信息可以看出 sched_switch 打印的信息格式,基于上面提供的关键字可以实现信息过滤

print fmt: "prev_comm=%s prev_pid=%d prev_prio=%d prev_state=%s%s ==> next_comm=%s next_pid=%d next_prio=%d", REC->prev_comm, REC->prev_pid, REC->prev_prio, (REC->prev_state & ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1) - 1)) ? __print_flags(REC->prev_state & ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1) - 1), "|", { 0x0001, "S" }, { 0x0002, "D" }, { 0x0004, "T" }, { 0x0008, "t" }, { 0x0010, "X" }, { 0x0020, "Z" }, { 0x0040, "P" }, { 0x0080, "I" }) : "R", REC->prev_state & (((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1) ? "+" : "", REC->next_comm, REC->next_pid, REC->next_prio

查看目录

比如下面的过滤命令可以只显示 chrome 进程的切换信息

echo "prev_comm == 'chrome' || next_comm == 'chrome'" > filter

5.未找到命令

(1)报错

(2)原因分析

未申明环境变量

(3)解决方法

① 临时申明环境变量

[root@agent sched_switch]# export PATH=$PATH:/usr/share/bcc/tools

② 永久申明环境变量

1)修改配置文件
[root@agent ~]# vim /etc/profile
export PATH=$PATH:/usr/share/bcc/tools2)更新
[root@agent ~]# source /etc/profile 

③ 成功

6. fatrace有何功能

(1)功能

特殊的跟踪器,使用Linux的fanotify API

(2)命令

 fatrace

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

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

相关文章

ESP32-S3 使用内置USB下载程序、调试、LOG相关问题总结

目录 Preface&#xff1a; &#xff08;一&#xff09;为电脑安装USB驱动 &#xff08;二&#xff09;Platformio工程 &#xff08;三&#xff09;相关文章 &#xff08;四&#xff09;总结 Preface&#xff1a; esp32-s3有一个built-in的usb-jtag&#xff0c;可以用来下载…

Linux环境vscode clang-format格式化:vscode clang format command is not available亲测有效!

问题现象 vscode安装了clang-format插件&#xff0c;但是使用就报错 问题原因 设置中配置的clang-format插件工具路径不正确。 解决方案-亲测有效&#xff01; 确认本地安装了clang-format工具&#xff1a;终端输入clang-format&#xff08;也可能是clang-format-13等版本…

软件测试|MySQL CROSS JOIN:交叉连接的详细解析

简介 在 MySQL 数据库中&#xff0c;CROSS JOIN 是一种用于生成两个或多个表的笛卡尔积的连接方法。CROSS JOIN 不需要任何连接条件&#xff0c;它将左表的每一行与右表的每一行进行组合&#xff0c;从而生成一个包含所有可能组合的结果集。本文将详细介绍 MySQL 中的 CROSS J…

Kotlin中的集合操作

Kotlin 在集合操作上提供了一系列的扩展函数&#xff0c;使其变得非常强大且易于使用。以下是一些在Kotlin中常用的集合操作API&#xff0c;以及如何使用它们的示例&#xff1a; 1. Filtering (过滤) ​ 使用 filter 函数来过滤集合中符合条件的元素。 val numbers listOf(…

故事生成动漫解说视频,用Artflow AI做英语口语故事

大家好我是在看&#xff0c;记录普通人学习探索AI之路。 今天&#xff0c;我将再次为大家精心策划一个使用Artflow AI制作动漫解说视频的详尽教程&#xff0c;这个教程专为初学者设计。通过这款强大的Artflow AI工具&#xff0c;用户能够一键自动化完成从图像生成、视频剪辑到配…

MySQL连接查询深度解析:内连接、左连接、右连接、全连接

在数据库设计和查询中&#xff0c;连接&#xff08;JOIN&#xff09;是一个核心概念&#xff0c;它允许我们将不同表中的数据组合在一起&#xff0c;形成一个有意义的结果集。在MySQL中&#xff0c;我们通常会使用四种类型的连接&#xff1a;内连接&#xff08;INNER JOIN&…

性能测试LoadRunner解决动态验证码问题

对于这个问题&#xff0c;通常我们可以采取以下三个途径来解决该问题&#xff1a; 1、第一种方法&#xff0c;也是最容易想到的&#xff0c;在被测系统中暂时屏蔽验证功能&#xff0c;也就是说&#xff0c;临时修改应用&#xff0c;无论用户输入的是什么验证码&#xff0c;都…

【hcie-cloud】【21】容器详解【容器网络说明、容器存储说明、容器镜像说明、dockerfile详述、缩略词】【下】

文章目录 容器介绍&#xff0c;容器工作机制、容器常用命令说明容器网络容器网络简介容器常用网络类型 - Bridge容器常用网络类型 - Host容器常用网络类型 - None其他容器网络类型【Macvlan、Overlay、IPvlan】容器网络相关配置 容器存储容器中应用数据的存储容器持久化存储配置…

2023年AI的飞速发展(上)

目录 1.ChatGPT&#xff1a; 2.Transformer、Bert&#xff1a; 3.Bard、Office 365 Copilot、LLAMA&#xff1a; 4.Claude、Grok&#xff1a; 1.ChatGPT&#xff1a; 2023年被视为人类科技史上的一个重要年份&#xff0c;可能标志着新一轮工业革命的开端。这一年&#xff…

2024.1.8每日一题

LeetCode 回旋镖的数量 447. 回旋镖的数量 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定平面上 n 对 互不相同 的点 points &#xff0c;其中 points[i] [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 &#xff0c;其中 i 和 j 之间的距离和 i 和 k 之间的欧式…

Python - 深夜数据结构与算法之 Two-Ended BFS

目录 一.引言 二.双向 BFS 简介 1.双向遍历示例 2.搜索模版回顾 三.经典算法实战 1.Word-Ladder [127] 2.Min-Gen-Mutation [433] 四.总结 一.引言 DFS、BFS 是常见的初级搜索方式&#xff0c;为了提高搜索效率&#xff0c;衍生了剪枝、双向 BFS 以及 A* 即启发式搜索…

【办公技巧】Word中如何对齐选择题中的ABCD选项?

使用word文件制作试卷&#xff0c;如何将ABCD选项全部设置对齐&#xff1f;除了一直按空格或者Tab键以外&#xff0c;还有其他方法吗&#xff1f;今天分享如何将ABCD选项对齐。 首先&#xff0c;我们打开【替换和查找】&#xff0c;在查找内容输入空格&#xff0c;然后点击全部…

2024年工信部AI人工智能证书“计算机视觉工程师”证书报考中!

为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署求&#xff0c;深入实施人才强国战略和创新驱动发展战略&#xff0c;加强全国数字化人才队伍建设&#xff0c;持续推进人工智能专业人员能…

FreeRTOS——任务管理

学习目标 理解任务管理机制掌握动态任务创建掌握任务删除掌握任务挂起和恢复了解静态任务创建了解任务调度机制了解临界区的概念学习内容 任务处理常见操作 操作 API 动态任务创建 xTaskCreate 任务删除 vTaskDelete 静态任务创建 vTaskCreateStatic 挂起任务 vTaskSuspend 恢…

视频做成二维码查看?多格式视频二维码生成器的使用方法

现在音视频是工作和生活中经常需要使用的一种内容表现形式&#xff0c;很多人都通过这种方式来查看视频内容&#xff0c;比如产品介绍、使用说明、安装教程等。通过一个二维码就可以来承载视频内容&#xff0c;与传统的方式相比拥有更快的内容传播速度&#xff0c;简化用户获取…

【刷题笔记2】

刷题笔记2 最小公倍数、最大公约数 两个数的最大公约数两数乘积/最小公倍数 #<include> cmath; int a,b; int mgcd(a,b);//求最大公约数复制字符串substr()函数 s.substr(pos, len) &#xff1a;pos的默认值是0&#xff0c;len的默认值是s.size() - pos string a1;in…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑧

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷8 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷8 模块一 …

创业只有破釜沉舟才能成功吗?2024个人创业做什么?2024普通人如何创业?

第一次创业必须零成本&#xff0c;千万别被那些砸锅卖铁、卖车卖房创业最后发了大财的鸡汤故事洗了脑&#xff0c;否则你一定会血本无归&#xff0c;妻离子散。 如果你要创业&#xff0c;请记住这组数据&#xff0c;全国能活过三年的创业公司只有10%&#xff0c;这10%不等于已经…

C# 自定义配置文件序列化生成+文件格式错误自动回档

文章目录 前言选择Xml简单的Xml使用测试用例简单的写简单的读简单的生成配置修改配置类测试用例运行结果对比 代码逻辑封装逻辑示意封装好的代码测试生成配置文件格式错误测试使用默认值覆盖来解决问题 配置文件人为修改错误如何解决解决方案代码测试用例运行结果 代码封装总结…

uni-app实现一键登录(企业版:因为获取手机号功能**目前针对非个人开发者**,所以个人开发者无法唤起获取手机号界面)

微信授权登录 用户在使用小程序时&#xff0c;其实已登录微信&#xff0c;其本质上就是&#xff1a;微信授权给小程序读取微信用户信息。 获取登录凭证&#xff08;企业版&#xff09; 前端&#xff1a;调用 wx.login() 接口获取登录凭证&#xff08;code&#xff09;。 后…