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

目录

一、实验

1.环境

2. proc目录

3. sys目录

5.tracepoint

6.kprobes

7. uprobes

二、问题

1.systemd如何查看启动时间

2.CentOS与Ubuntu如何安装bpftrace

3.snap有哪些常用的命令

4.snap如何安装store

5.如何列出使用bpftrace的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 bpftrace2)适用于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=stable3)更新一个snap包,
如果你后面不加包的名字的话那就是更新所有的snap包
sudo snap refresh <snap name>4)列出已经安装的snap包
sudo snap list5) 搜索要安装的snap包
sudo snap find <text to search>6) 安装一个snap包
sudo snap install <snap name>7) 指定 edge通道 安装软件 
sudo snap install <snap name> --edge8) 把一个包还原到以前安装的版本
snap revert <snap name>9) 更新snap
snap install core10) 删除一个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.如何列出使用bpftrace的OpenJDK USDT探针

(1)命令

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

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

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

相关文章

显示管理磁盘分区 fdisk

显示管理磁盘分区 fdisk fdisk是用于检查一个磁盘上分区信息最通用的命令。 fdisk可以显示分区信息及一些细节信息&#xff0c;比如文件系统类型等。 设备的名称通常是/dev/sda、/dev/sdb 等。 对于以前的设备有可能还存在设备名为 /dev/hd* (IDE)的设备&#xff0c;这个设…

回顾2023编程之旅

一、前言 看在给了我一个博客专家的份上就继续写写博客&#xff0c;实事求是的讲如果是工作之余去总结csdn写写技术博客&#xff0c;还想混个专家什么的&#xff0c;真的是精力不够。因为里面的灌水的实在太多&#xff0c;比不过的&#xff0c;写这个玩意必须得淡泊名利才能悠然…

【PostgreSQL在线创建索引(CIC)功能的锁分析以及使用注意】

前一篇文章提到了普通创建索引会阻塞DML操作 PostgreSQL创建索引的锁分析和使用注意 而PostgreSQL里可以使用create index concurrently 在线创建索引(CIC)功能&#xff0c;降低创建索引在表上申请的锁的级别&#xff0c;ShareUpdateExclusiveLock级别的锁和RowExclusiveLock…

烟花燃放如何管控?智能分析网关V4烟火检测保障烟火安全

一、方案背景 随着元旦佳节的热潮退去&#xff0c;春节也即将来临&#xff0c;在众多传统的中国节日里&#xff0c;烟花与烧纸祭祀都是必不可少的&#xff0c;一方面表达了人们对节日的庆祝的期许&#xff0c;另一方面也是一种对故者思念的寄托。烟花爆竹的燃放不仅存在着巨大的…

Git将本地项目上传到Gitee仓库

1.右键点击文件&#xff0c;点击Git Bash Here,进入git窗口 2.初始化本地仓库 git init3.将本地仓库与远程仓库建立连接 git remote add origin 远程仓库地址远程仓库地址在gitee仓库复制即可 4.将远程仓库的文件拉到本地仓库中 git pull origin master5.将本地文件全部上传…

多模态推荐系统综述:二、特征交互 Fusion

二、Fusion 融合不同的多模态信息&#xff0c;与bridge相比&#xff0c;融合更关注项目之间的多模态内部关系。 它可以灵活地融合不同权重和焦点的多模态信息。 注意机制是应用最为广泛的特征融合。 2.1 粗粒度注意力。 一些模型应用注意力机制在粗粒度级别融合来自多种模式…

使用openssl 生成pfx格式证书时报错:unable to load certificates

问题现象包如下&#xff1a; 之前在centos上使用openssl部署证书服务器以及颁发证书的时候遇到的问题&#xff0c;在进行个人证书生成之后需要形成pfx格式证书&#xff0c;结果过程中报错了。网上类似资料比较少&#xff0c;做个记录。 生成pfx格式证书的命令&#xff1a; o…

c++实现支持动态扩容的栈(stack)

1.在栈容量满时自动扩容: 支持自动扩容栈实现: // // myStack.hpp // algo_demo // // Created by Hacker X on 2024/1/9. //#ifndef myStack_hpp #define myStack_hpp #include <stdio.h> #include <string.h> //栈实现 //1.入栈 //2.出栈 //3.空栈 //4.满栈 …

git安装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

Java后端开发——Mybatis实验

文章目录 Java后端开发——Mybatis实验一、MyBatis入门程序1.创建工程2.引入相关依赖3.数据库准备4.编写数据库连接信息配置文件5.创建POJO实体6.编写核心配置文件和映射文件 二、MyBatis案例&#xff1a;员工管理系统1.在mybatis数据库中创建employee表2.创建持久化类Employee…

忆阻器芯片STELLAR权重更新算法(清华大学吴华强课题组)

参考文献&#xff08;清华大学吴华强课题组&#xff09; Zhang, Wenbin, et al. “Edge learning using a fully integrated neuro-inspired memristor chip.” Science 381.6663 (2023): 1205-1211. STELLAR更新算法原理 在权值更新阶段&#xff0c;只需根据输入、输出和误差…

python数据可视化之折线图案例讲解

学习完python基础知识点&#xff0c;终于来到了新的模块——数据可视化。 我理解的数据可视化是对大量的数据进行分析以更直观的形式展现出来。 今天我们用python数据可视化来实现一个2023年三大购物平台销售额比重的折线图。 准备工作&#xff1a;我们需要下载用于生成图表的第…

Hyperledger Fabric 自动发现网络信息 discover 工具使用

客户端要往 Fabric 网络中发送请求&#xff0c;首先需要知道网络的相关信息&#xff0c;如网络中成员组织信息、背书节点的地址、链码安装信息等。 在 Fabric v1.2.0 版本之前&#xff0c;这些信息需要调用者手动指定&#xff0c;容易出错&#xff1b;另外&#xff0c;当网络中…

Centos7 手动更改系统时间

文章目录 1.更改系统时间2.写入系统时间3.查看是否写入成功 1.更改系统时间 date -s "2017-12-18 09:40:00"2.写入系统时间 hwclock -w3.查看是否写入成功 timedatectl

RT-Thread:SPI万能驱动 SFUD 驱动Flash W25Q64,通过 STM32CubeMX 配置 STM32 SPI 驱动

关键词&#xff1a;SFUD,FLASH,W25Q64&#xff0c;W25Q128&#xff0c;STM32F407 说明&#xff1a;RT-Thread 系统 使用 SPI万能驱动 SFUD 驱动 Flash W25Q64&#xff0c;通过 STM32CubeMX 配置 STM32 SPI 驱动。 提示&#xff1a;SFUD添加后的存储位置 1.打开RT-Thread Sett…

497 蓝桥杯 成绩分析 简单

497 蓝桥杯 成绩分析 简单 //C风格解法1&#xff0c;*max_element&#xff08;&#xff09;与*min_element&#xff08;&#xff09;求最值 //时间复杂度O(n)&#xff0c;通过率100% #include <bits/stdc.h> using namespace std;using ll long long; const int N 1e4 …

线扫相机品牌汇总(国外+国内)

线扫相机品牌汇总(国外+国内) 行者 ​ 热爱生活 22 人赞同了该文章 线扫相机也叫做线阵相机,和面阵相机一样,都是重要的工业相机。 线扫相机正如其名字那样,拍照时像扫描一样,相机和被拍照物体有相对匀速运动。 Perhaps the most common example of line scan imagin…

谷粒商城项目|微服务架构的一些与思考解决跨域问题

1.微服务架构的组成每部分的作用 2.还有其他的微服务架构模式吗 3.微服务服务交互的方式 1&#xff09;grpc 2&#xff09;rest api 4.微服务网关与API网关&#xff1f; 5.注册中心比较&#xff08;Nacos与Eureka&#xff09; Nacos Nacos 是阿里巴巴开源的项目&#xff0c;N…

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(上)准备工作、部门管理

一、准备工作 1.明确需求 根据产品经理绘制的页面原型&#xff0c;对部门和员工进行相应的增删改查操作。 2.环境搭建 将使用相同配置的不同项目作为Module放入同一Project&#xff0c;以提高相同配置的复用性。 准备数据库表&#xff08;dept, emp&#xff09; 资料中包含…

Objective-C中使用STL标准库Queue队列

1.修改.m文件为mm 2.导入queue头 #include<queue> 3.使用&#xff1a; #import <Foundation/Foundation.h> #include <cmath> #include <queue> using namespace std;int main(int argc, const char * argv[]) {autoreleasepool {NSLog("C标准…