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

news2024/12/24 11:40:50

目录

一、实验

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:*'

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

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

相关文章

机器学习笔记:时间序列异常检测

1 异常类型 1.1 异常值outlier 给定输入时间序列&#xff0c;异常值是时间戳值其中观测值与该时间序列的期望值不同。 1.2 波动点&#xff08;Change Point&#xff09; 给定输入时间序列&#xff0c;波动点是指在某个时间t&#xff0c;其状态在这个时间序列上表现出与t前后…

基于JSP+Servlet+Mysql的学生信息管理系统

基于JSPServletMysql的学生信息管理系统 一、系统介绍二、功能展示1.目录2.数据库3.登陆4.注册5.主页 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于JSPServletMysql的学生信息管理系统 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语…

Web前端-JavaScript(BOM)

文章目录 1.1 常用的键盘事件1.1.1 键盘事件1.1.2 键盘事件对象1.1.3 案例一 1.2 BOM1.2.1 什么是BOM1.2.2 BOM的构成1.2.3 window1.2.4 window对象常见事件窗口/页面加载事件**第1种****第2种** 调整窗口大小事件 1.2.5 定时器setTimeout() 炸弹定时器停止定时器**案例&#x…

python 写自动点击爬取数据

今天来点不一样的&#xff01;哥们 提示&#xff1a; 这里只是用于自己学习的 &#xff0c;请勿用违法地方 效果图 会进行点击下一页 进行抓取 需要其他操作也可以自己写 文章目录 今天来点不一样的&#xff01;哥们前言一、上代码&#xff1f;总结 前言 爬虫是指通过编程自动…

Spring Framework和SpringBoot的区别

目录 一、前言 二、什么是Spring 三、什么是Spring Framework 四、什么是SpringBoot 五、使用Spring Framework构建工程 六、使用SpringBoot构建工程 七、总结 一、前言 作为Java程序员&#xff0c;我们都听说过Spring&#xff0c;也都使用过Spring的相关产品&#xff0…

基因组学之碱基突变的关键概念

碱基突变 突变&#xff08;muation&#xff09;会引起DNA序列的变化&#xff0c;进一步会引起蛋白序列的改变。正常的细胞活动或细胞与环境的随机相互作用&#xff0c;会使得生物产生一定数目的突变&#xff0c;称为自发突变&#xff08;spontaneous muation&#xff09;。突变…

多线程第一课---

UML中规定的箭头方向是从子类指向父类。 关于这一点&#xff0c;按照以下方法去理解有助于大家记住这条规则。 在定义子类时需要通过extends关键字指定父类。因此&#xff0c; 子类一定要知道父类的定义&#xff0c;而反过来&#xff0c;父类并不知道子类的定义。 只有在知道对…

Spring事务(2):声明式事务管理案例-转账(xml、注解)

1 编写转账案例&#xff0c;引出事务管理问题 需求&#xff1a;账号转账&#xff0c;Tom账号取出1000元&#xff0c;存放到Jack账号上 1.1 建表脚本&#xff08;MySQL&#xff09; CREATE TABLE t_account (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,m…

Arduino开发实例-欧姆龙E3Z-D61光电传感器

欧姆龙E3Z-D61光电传感器 文章目录 欧姆龙E3Z-D61光电传感器1、E3Z-D61光电传感器介绍2、硬件准备及接线3、代码实现1、E3Z-D61光电传感器介绍 Omran 光电传感器可用于检测 5 至 100 毫米距离内的障碍物和物体。 传感器上有一个 LED,它始终熄灭,并在检测到障碍物时亮起。 您…

Plantuml之nwdiag网络图语法介绍(二十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

IDEA[Debug]简单说明

目录 &#x1f95e;1.打断点 &#x1f32d;2.第一组按钮 &#x1f9c2;3.第二组按钮 &#x1f953;4.参数查看 1.打断点 1.在需要断点处打上断点&#xff0c;然后点击debug运行 2.执行debug&#xff0c;直接执行到断点处 2.第一组按钮 共有8按钮&#xff0c;从左往右依…

【普中开发板】基于51单片机的简易密码锁设计( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的简易密码锁设计 1.主要功能&#xff1a;资料下载链接&#xff1a; 实物图&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单 【普中】基于51单片机的简易密码锁设计 ( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus8.16(有低版本) 程…

Defi安全-Monox攻击事件Foundry复现

其它相关内容可见个人主页 Mono攻击事件的介绍见&#xff1a;Defi安全–Monox攻击事件分析–phalconetherscan 1. 前情提要和思路介绍 Monox使用单边池模型&#xff0c;创建的是代币-vCash交易对&#xff0c;添加流动性时&#xff0c;只需添加代币&#xff0c;即可进行任意代…

秋招复习之堆

目录 前言 堆 堆的常用操作 堆的实现&#xff08;大根堆&#xff09; 1. 堆的存储与表示 2. 访问堆顶元素 3. 元素入堆 4. 堆顶元素出堆 Top-k 问题 方法一&#xff1a;遍历选择 方法二&#xff1a;排序 方法三&#xff1a;堆 总结 前言 秋招复习之堆。 堆 「堆 heap…

分布式系统——广播Broadcasts

1 广播抽象(Broadcast Abstractions)在进程中的两种方法 在分布式系统中广播抽象的概念。广播抽象允许系统中的进程使用两种基本方法进行通信&#xff1a; 1.1 Broadcast(m) 当一个进程 i 使用这个方法时&#xff0c;它会将消息 m 发送给系统中的所有其它进程。 1.2 …

数据结构实验1:栈和队列的应用

目录 一、实验目的 二、实验原理 1.1栈的基本操作 1.1.1 栈的定义 1.1.2 初始化栈 1.1.3 压栈&#xff08;Push&#xff09; 1.1.4 出栈&#xff08;Pop&#xff09; 1.1.5 判空&#xff08;isEmpty&#xff09; 1.1.6 查看栈顶元素&#xff08;Top&#xff09; 1.1…

【好书推荐】我的第一本科技漫画书:漫画区块链

王杰&#xff0c;南京理工大学物理电子学硕士&#xff0c;曾担任乐视VR技术总监&#xff0c;现为北京米唐科技有限公司CEO&#xff0c;知乎“区块链”领域知名作者&#xff0c;北京信息科技大学、北京建筑大学、北京信息职业技术学院客座教授。 郑巍&#xff0c;擅长绘制钢笔淡…

application.properties 如何改成 application.yml

Convert YAML and Properties File 右键直接转换即可 Further Reading &#xff1a; idea 常用插件

14_IO_其他流

文章目录 数据流DataOutputStream数据输出流DataInputStream数据输入流 打印流PrintStream字节打印流PrintWriter字符打印流 标准输入输出流标准输入流标准输出流 对象流(序列化与反序列化流)ObjectOutputStream序列化流ObjectInputStream反序列化流 RandomAccessFile随机访问文…

【Harmony OS - 网络请求】

在一个应用开发中&#xff0c;网络请求是必不可少的&#xff0c;我们一般用的fetch、axios来进行http请求&#xff0c;在鸿蒙中也可以通过createHppt来发生一个http请求&#xff0c;它们都是异步请求返回的Promise&#xff0c;下面我们将介绍’ohos.net.http’和axios这两种方式…