性能分析与调优: Linux 监测工具的数据来源

2024-01-07 18:28:26

目录

一、实验

1.环境

2. proc目录

3. sys目录

5.tracepoint

6.kprobes

7. uprobes

二、问题

1.systemd如何查看启动时间

2.CentOS与Ubuntu如何安装bpftrace

3.snap有哪些常用的命令

4.snap如何安装store

5.如何列出使用bpftracede的OpenJDK USDT探针


一、实验

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)Linux监测来源表

表1-2 Linux监测来源表

序号类型来源
1进程级计数器/proc
2系统级计数器/proc、/sys
3设备配置与计数器/sys
4Cgroup统计/sys/fs/cgroup
5进程级跟踪ptrace
6硬件计数器( PMC)perf_event
7网络统计netlink
8捕获网络数据包libpcap
9线程级延时指标延时审计
10系统级跟踪函数剂析(Ftrace)、 tracepoint、 软件事件、kprobes、 uprobes、 pert_event

2. proc目录

(1) 进程级别统计

① 查看proc目录,提供了各种文件用于每个进程的统计

[root@prometheus proc]# ls -F /proc/

② 查看PID 1

[root@prometheus proc]# ls -F /proc/1

(2) 系统级别统计

[root@prometheus proc]# ls -Fd [a-z]*

(3)CPU统计准确性

[root@prometheus proc]# cat /proc/stat 

(4)文件内容(查看内存信息)

[root@prometheus proc]# cat /proc/meminfo 

[root@prometheus proc]# grep Mem  /proc/meminfo 

3. sys目录

(1)查看CPU0 文件列表

[root@prometheus proc]# find /sys/devices/system/cpu/cpu0 -type f

(2)查看CPU0 硬件缓存信息

[root@prometheus proc]# grep .  /sys/devices/system/cpu/cpu0/cache/index*/level

[root@prometheus proc]# grep .  /sys/devices/system/cpu/cpu0/cache/index*/size

分析:

CPU0有2个L1缓存,48K和32K,还有1个2MB的L2缓存,以及一个36MB的L3缓存

(1) 查看套接字统计工具ss

[root@prometheus proc]# strace ss

分析:

?NETLINK_SOCK_DIAG组打开了一个AF_NETLINK套接字,NETLINK_SOCK_DIAG返回套接字的信息。

5.tracepoint

(1)tracepoint

① 搜索perf

[root@prometheus proc]# yum search perf

② 安装perf

[root@prometheus proc]# yum install perf -y

③ 命令列出可用的tracepoint (数量1000+,只显示开头和结尾)

[root@prometheus proc]# perf list tracepoint

④ 命令跟踪指定事件并实时打印

[root@prometheus proc]# perf trace -e block:block_rq_issue

(2)tracepoint参数与格式字符串

①查看事件的额外上下文

[root@prometheus proc]# cat /sys/kernel/debug/tracing/events/block/block_rq_issue/format

分析:

最后打印信息位perf脚本输出的格式字符串例子,最后一行显示了字符串的格式与参数。?

6.kprobes

(1)??bpftrace列出探针

① 添加repo

[root@prometheus proc]#  curl https://repos.baslab.org/rhel/7/bpftools/bpftools.repo --output /etc/yum.repos.d/bpftools.repo 

② 安装

[root@prometheus proc]#         yum install bpftrace bpftrace-tools bpftrace-doc bcc-static bcc-tools

③ 列出bpftrace支持的nanosleep函数相关的所有探针

[root@prometheus proc]# bpftrace -l '*nanosleep'

7. uprobes

(1) 列出bash shell 的uprobes函数入口位置(1000+)

二、问题

1.systemd如何查看启动时间

(1)功能

systemd是常用的Linux服务管理器,包括依赖感知服务启动和服务时间统计等功能。

systemd的时间统计可以显示出调整的方向。

(2)报告总体启动时间

[root@prometheus proc]# systemd-analyze

(3)子命令查看更多信息(显示导致延迟的各步序列)

[root@prometheus proc]# systemd-analyze critical-chain

分析:

最慢的服务是postfix.service,需要1.515秒才启动。

2.CentOS与Ubuntu如何安装bpftrace

(1)CentOS安装

1)添加仓库
curl https://repos.baslab.org/rhel/7/bpftools/bpftools.repo --output /etc/yum.repos.d/bpftools.repo 

2)安装
yum install bpftrace bpftrace-tools bpftrace-doc bcc-static bcc-tools

(2)Ubuntu安装

1)适用于ubuntu19.04及更高版本
sudo apt-get install -y bpftrace

2)适用于ubuntu16.04及更高版本
sudo snap install --devmode bpftrace   sudo snap connect bpftrace:system-trace

3.snap有哪些常用的命令

(1)命令

1)切换软件仓库
#扩展
snap refresh hugo --channel=extended 
#稳定
snap refresh hugo --channel=stable
 
3)更新一个snap包,
如果你后面不加包的名字的话那就是更新所有的snap包
sudo snap refresh <snap name>
 
4)列出已经安装的snap包
sudo snap list
 
5) 搜索要安装的snap包
sudo snap find <text to search>
 
6) 安装一个snap包
sudo snap install <snap name>
 
7) 指定 edge通道 安装软件 
sudo snap install <snap name> --edge
 
8) 把一个包还原到以前安装的版本
snap revert <snap name>
 
9) 更新snap
snap install core
 
10) 删除一个snap包
sudo snap remove <snap name>

4.snap如何安装store

(1)安装依赖

[root@prometheus proc]# yum install epel-release

(2)安装snapd

[root@prometheus proc]# yum install snapd

(3) 自启动与软链接

[root@prometheus proc]# sudo systemctl enable --now snapd.socket

[root@prometheus proc]# sudo ln -s /var/lib/snapd/snap /snap

(4)安装store

[root@prometheus proc]# sudo snap install snap-store

(5) 完成

(6)查看列表

[root@prometheus proc]# sudo snap list

(7)更新仓库

[root@prometheus proc]# sudo snap install hugo --edge

[root@prometheus proc]# snap refresh hugo --channel=stable

(8)再次查看列表

[root@prometheus proc]# sudo snap list

5.如何列出使用bpftracede的OpenJDK USDT探针

(1)命令

bpftrace -lv 'usdt:/usr/lib/jvm/openjdk/libjvm.so:*'

文章来源:https://blog.csdn.net/cronaldo91/article/details/135430002
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。