性能分析与调优: 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 监测GUI grafana 192.168.204.19
agent 

监测

主机

node_exporter 192.168.204.20

(2)文件系统观测工具

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

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

2.mount

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

[root@agent ~]# mount

性能分析与调优: Linux 文件系统观测工具_第1张图片

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统计信息

性能分析与调优: Linux 文件系统观测工具_第2张图片

5.vmstat

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

每秒1次,共5次输出

[root@agent ~]# vmstat 1 5

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

性能分析与调优: Linux 文件系统观测工具_第3张图片

6.sar

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

每秒1次,共5次输出

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

性能分析与调优: Linux 文件系统观测工具_第4张图片

(2)-r 选项

每秒1次,共5次输出

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

输出了分别代表缓冲区高速缓存大小以及页缓存大小的kbbuffers 和 kbcached性能分析与调优: Linux 文件系统观测工具_第5张图片

7.slabtop

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

[root@agent ~]# slabtop -o

性能分析与调优: Linux 文件系统观测工具_第6张图片

8.strace

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

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

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

性能分析与调优: Linux 文件系统观测工具_第7张图片

9.opensnoop

(1) 跟踪文件打开

①   -T选项包含时间戳

[root@agent ~]# opensnoop -T 

性能分析与调优: Linux 文件系统观测工具_第8张图片性能分析与调优: Linux 文件系统观测工具_第9张图片

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

[root@agent ~]# opensnoop -x

10.filetop

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

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

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

性能分析与调优: Linux 文件系统观测工具_第10张图片

11.cachestat

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

每秒1次,共5次输出

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

性能分析与调优: Linux 文件系统观测工具_第11张图片

二、问题

1.Ftrace实例如何实现

(1)Ftrace 三板斧

1)设置 tracer 类型

2)设置 tracer 参数

3)使能 tracer

2.Function trace 如何跟踪实例

(1)查看

1)进入 ftrace 工作目录
cd /sys/kernel/debug/tracing

2)查看系统支持的 tracer 类型
cat available_tracers

3)Disable tracer
echo 0 > tracing_on

4)设置 tracer 类型为 function
echo function > current_tracer

5)设置 tracer 类型为 function
echo function > current_tracer

6)set_ftrace_filter 表示要跟踪的函数,这里我们只跟踪 dev_attr_show 函数
 echo dev_attr_show > set_ftrace_filter

7)Enable tracer
echo 1 > tracing_on

8)提取 trace 结果
cat trace

性能分析与调优: Linux 文件系统观测工具_第12张图片

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

cat current_tracer

(3)开始跟踪

1)初始化跟踪
echo 1 > tracing_on 

2)将跟踪文件保存到一个临时文件
cat trace > /tmp/trace.txt 

3)禁用跟踪功能
echo 0 > tracing_on
 
4) 查看trace文件的输出。
cat /tmp/trace.txt   | head -25

性能分析与调优: Linux 文件系统观测工具_第13张图片
 

3.function_graph Trace 如何跟踪实例

(1) 查看

1)进入 ftrace 工作目录
cd /sys/kernel/debug/tracing

2)查看系统支持的 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.txt

3)禁用跟踪功能
echo 0 > tracing_on
 
4) 查看trace文件的输出。
cat /tmp/grapgtrace.txt   | head -25


性能分析与调优: Linux 文件系统观测工具_第14张图片

4.trace event 如何跟踪实例

(1) 查看

1)进入 ftrace 工作目录
cd /sys/kernel/debug/tracing

2)查看系统支持的 tracer 类型
cat available_tracers

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

1)切换目录
 cd /sys/kernel/debug/tracing/events/sched/sched_switch

2)查看
ls

3)写入
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.txt

3)禁用跟踪功能
echo 0 > tracing_on
 
4) 查看trace文件的输出。
cat /tmp/traceevent.txt   | head -25


性能分析与调优: Linux 文件系统观测工具_第15张图片

(6)过滤信息

1)切换目录
cd /sys/kernel/debug/tracing/events/sched/sched_switch

2)查看
cat format

性能分析与调优: Linux 文件系统观测工具_第16张图片

(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/tools

2)更新
[root@agent ~]# source /etc/profile 

③ 成功

性能分析与调优: Linux 文件系统观测工具_第17张图片

6. fatrace有何功能

(1)功能

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

(2)命令

 fatrace

你可能感兴趣的:(性能分析与调优,linux,服务器,运维,性能优化)