性能分析与调优: 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.hqwc.cn/news/337460.html

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

相关文章

共享wifi项目如何加盟?

共享wifi贴项目如何加盟呢&#xff1f;具体的途径在哪里&#xff0c;费用是多少呢&#xff1f;今天小编就来一次性同你讲清楚。 我们先来讲一下共享wifi贴的加盟方法。 首先&#xff0c;找到共享wifi的官方渠道在点击右上角&#xff0c;根据页面上的信息填写资料。 然后&…

分享几款比较常用的接口测试工具

首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能给你…

MongoDB多文档事务详解

事务简介 事务&#xff08;transaction&#xff09;是传统数据库所具备的一项基本能力&#xff0c;其根本目的是为数据的可靠性与一致性提供保障。而在通常的实现中&#xff0c;事务包含了一个系列的数据库读写操作&#xff0c;这些操作要么全部完成&#xff0c;要么全部撤销。…

04- OpenCV:Mat对象简介和使用

目录 1、Mat对象与IplImage对象 2、Mat对象使用 3、Mat定义数组 4、相关的代码演示 1、Mat对象与IplImage对象 先看看Mat对象&#xff1a;图片在计算机眼里都是一个二维数组&#xff1b; 在OpenCV中&#xff0c;Mat是一个非常重要的类&#xff0c;用于表示图像或矩阵数据。…

如何使用 NFTScan NFT API 在 PlatON 网络上开发 Web3 应用

PlatON 是由万向区块链和矩阵元主导开发的面向下一代的全球计算架构&#xff0c;创新性的采用元计算框架 Monad 和基于 Reload 覆盖网络的同构多链架构&#xff0c;其愿景是成为全球首个提供完备隐私保护能力的运营服务网络。它提供计算、存储、通讯服务&#xff0c;并提供算力…

使用 Cypress 进行可视化回归测试:一种务实的方法

每次组件库 Picasso 发布新版本时&#xff0c;都会更新所有的前端应用程序&#xff0c;让绝大部分新功能能与整个平台的设计保持一致。上个月&#xff0c;推出了 Toptal Talent Portal 的 Picasso 更新&#xff0c;这是我们的用户用来找工作和与客户互动的平台。 已知了这个版本…

搜维尔科技:【简报】元宇宙数字人赛道,2022年金奖《金魚姬》赏析!

一名网络直播主名叫琉璃&#xff0c;在即将展开她日常进行的每日准时直播前&#xff0c;肚子极为不舒服&#xff0c;突然很想上厕所&#xff0c;由于时间紧迫&#xff0c;导致琉璃需要在厕所里面完成直播&#xff01;为了掩饰自己所在的处境&#xff0c;她决定运用自己设计的虚…

Python基础教程——用Python处理Excel!

Excel是一种常见的电子表格文件格式&#xff0c;广泛用于数据记录和处理。Python提供了多个第三方库&#xff0c;可以方便地对Excel文件进行读写、数据操作和处理。本文将介绍如何使用Python对Excel文件进行处理&#xff0c;并提供相应的代码示例和详细说明。 一、安装第三方库…

springboot 企业微信 网页授权

html 引入jquery $(function () {// alert("JQ onready");// 当前企业的 corp_idconst corp_id xxxxxx;// 重定向 URL → 最终打开的画面地址&#xff0c;域名是在企业微信上配置好的域名const redirect_uri encodeURI(http://xxxxx.cn);//企业的agentId 每个应用都…

vue3 ts defineProps、defineEmits、defineExpose、defineOptions、defineSlots

文章目录 前言一、defineProps二、defineEmits三、defineExpose四、defineOptions&#xff08; Vue3.3 新特性&#xff09;五、defineSlots(Vue3.3 新特性) 前言 本章我们来讲解vue3 ts 中 defineProps、defineEmits、defineExpose、defineOptions、defineSlots的使用及作用。 …

计算机毕业设计——SpringBoot 个人博客管理系统(附源码)

1&#xff0c;绪论 1.1 背景调研 在互联网飞速发展的今天&#xff0c;互联网已经成为人们快速获取、发布和传递信息的重要渠道&#xff0c;它在人们政治、经济、生活等各个方面发挥着重要的作用。互联网上发布信息主要是通过网站来实现的&#xff0c;获取信息也是要在互联网中…

数模学习day11-系统聚类法

本文参考辽宁石油化工大学于晶贤教授的演示文档聚类分析之系统聚类法及其SPSS实现。 目录 1.样品与样品间的距离 2.指标和指标间的“距离” 相关系数 夹角余弦 3.类与类间的距离 &#xff08;1&#xff09;类间距离 &#xff08;2&#xff09;类间距离定义方式 1.最短…