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

目录

一、实验

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 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.如何列出使用bpftracede的OpenJDK USDT探针

(1)命令

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

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

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

相关文章

清华大学生物信息学课件资料分享

清华大学鲁志老师实验室在网上分享了他们的生信课程学习资料&#xff0c;有电子书&#xff0c;PPT和视频&#xff0c;真是生信学习者的福音。 实验室网址是&#xff1a; https://www.ncrnalab.org/courses/#bioinfo2 可以看到&#xff0c;课程有针对本科生的&#xff0c;也有针…

(21)Linux的文件描述符输出重定向

一、文件描述符 1、文件描述符的底层理解 在上一章中&#xff0c;我们已经把 fd 的基本原理搞清楚了&#xff0c;知道了 fd 的值为什么是 0,1,2,3,4,5... 也知道了 fd 为什么默认从 3 开始&#xff0c;而不是从 0,1,2&#xff0c;因为其在内核中属于进程和文件的对应关系。 …

XSS(跨站脚本攻击)漏洞介绍

简介 XSS(跨站脚本攻击)是一种常见的计算机安全漏洞,也是Web应用中最主流的攻击方式之一。它利用网站接收用户提交数据时未进行足够的转义处理或过滤不足的缺点,将恶意代码嵌入到Web页面中。当其他用户访问该页面时,嵌入的代码会被执行,从而导致盗取用户资料、利用用户身…

《EnlightenGAN: Deep Light Enhancement withoutPaired Supervision》论文超详细解读(翻译+精读)

前言 最近学习低照度图像增强时读到这篇EnlightenGAN的论文觉得写得很有意思&#xff0c;讲故事的手法也很值得小白写论文时模仿&#xff0c;今天就来带大家读一下~ 目录 前言 ABSTRACT—摘要 翻译 精读 一、INTRODUCTION—简介 翻译 精读 二、RELATED WORKS—相关工…

【数据仓库与联机分析处理】多维数据模型

目录 一、数据立方体 二、数据模型 &#xff08;一&#xff09;星形模型 &#xff08;二&#xff09;雪花模式 &#xff08;三&#xff09;事实星座模式 三、多维数据模型中的OLAP操作 &#xff08;一&#xff09;下钻 &#xff08;二&#xff09;上卷 &#xff08;三…

oracle数据迁移到mysql

项目场景&#xff1a; 需要更换数据库 问题描述 导入导出脚本。不能满足需求 解决方案&#xff1a; 使用阿里巴巴的yugong 阿里巴巴去Oracle数据迁移同步工具(全量增量,目标支持MySQL/DRDS) GitHub - alibaba/yugong: 阿里巴巴去Oracle数据迁移同步工具(全量增量,目标支持MyS…

Leetcode 第 121 场双周赛 Problem D 统计强大整数的数目(Java + 记忆化搜索的数位 DP 模板 + 特判)

文章目录 题目思路Java 记忆化搜索的数位 DP 模板 特判第 1 步&#xff1a;第 2 步&#xff1a;第 3 步&#xff1a; 复杂度Code 题目 Problem: 100163. 统计强大整数的数目给你三个整数 start &#xff0c;finish 和 limit 。同时给你一个下标从 0 开始的字符串 s &#xf…

postman设置下载文件大小限制

问题 本地写了一个下载文件的接口&#xff0c;调用postman测试的时候&#xff0c;小文件可以&#xff0c;但时大文件就会报错&#xff0c;postman提示&#xff1a; 解决方案 点击postman的设置按钮&#xff0c;点击【Settings】&#xff0c;在打开的弹窗中选择【General】Tab…

三菱plc学习入门(二,三菱plc指令,触点比较,计数器,交替,四则运算,转换数据类型)

今天&#xff0c;进行总结对plc的学习&#xff0c;下面是对plc基础的学习&#xff0c;希望对读者有帮助&#xff0c;欢迎点赞&#xff0c;评论&#xff0c;收藏&#xff01;&#xff01;&#xff01; 目录 触点比较 当数据太大了的时候&#xff08;LDD32位&#xff09; CMP比…

1874_曲轴位置传感器

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_ECU_hacking: some learning notes about ECU(engine control unit) hacking. 1874_曲轴位置传感器 功能描述 综述 发动机控制处理中&#xff0c;曲轴位置传感器是非常关键的一个信息。这里先从基本的功能上&…

如何设计企业级业务流程?学习华为的流程六级分类经验

业务流程管理&#xff08;BPM&#xff09;是一种系统化的方法&#xff0c;用于分析、设计、执行、监控和优化组织的业务流程&#xff0c;以实现预期的目标和价值。业务流程管理中&#xff0c;流程的分级方法有多种&#xff0c;常见的有以下几种&#xff1a; APQC的流程分级方法…

【Verilog】基于Verilog的DDR控制器的简单实现(一)——初始化

在FPGA中&#xff0c;大规模数据的存储常常会用到DDR。为了方便用户使用&#xff0c;Xilinx提供了DDR MIG IP核&#xff0c;用户能够通过AXI接口进行DDR的读写访问&#xff0c;然而MIG内部自动实现了许多环节&#xff0c;不利于用户深入理解DDR的底层逻辑。 本文以美光(Micro…

(leetcode)Z字形变换 -- 模拟算法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 题目链接 . - 力扣&#xff08;LeetCode&#xff09; 输入描述 string convert(string s, int numRows)&#xff0c;输入一个字符串s&#xff0c;以及一个行数numRows&#xff0c;将字符串按照这个行数进行Z字形排列&…

vue项目接入滑动验证码

前言 本文教你基于Node.js环境&#xff0c;在vue项目中如何接入KgCapctah。 准备工作 访问凯格行为验证码官网&#xff0c;注册账号后登录控制台&#xff0c;访问“无感验证”模块&#xff0c;申请开通后系统会分配给应用一个唯一的AppId、AppSecret。凯格提供后端SDK来校验…

Python 面向对象知识点补充

Python 面向对象知识点补充 【一】Mixins机制 【1】概念 Mixins&#xff1a;是一种在面向对象编程中&#xff0c;通过组合多个类的特称来创建一个新类的技术核心机制&#xff1a;就是在多继承的背景下尽可能地提升多继承的可读性通过命名规范来满足人的思维习惯&#xff08;…

Java:File类详解

文章目录 1、概述2、创建File实例3、常用方法3.1 获取功能的方法3.2 绝对路径和相对路径3.3 判断功能的方法3.4 创建删除功能的方法3.5 文件过滤功能的方法 4、文件夹的遍历5、综合练习5.1 创建文件夹5.2 查找文件&#xff08;不考虑子文件夹&#xff09;5.3 查找文件&#xff…

一些数字设计及验证的笔试题(6)

一些数字设计及验证的笔试题汇总&#xff0c;仅供参考。 文章目录 一、什么是亚稳态&#xff1f;如何改善&#xff1f; 二、C语言下列关系符号中&#xff0c;优先级最低的是哪个&#xff1f; 三、下面哪种不属于Vim编辑器的工作模式&#xff1f; 四、在以下的哪个timescale…

python爬虫,简单的requests的get请求,百度搜索实例

1、百度搜索实例 import requests url https://www.baidu.com/s? # key_word 迪丽热巴 key_word input(输入搜索内容&#xff1a;) headers {User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537…

来瞅瞅Java 11都有啥新特性

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff01;今天小黑要和咱们聊聊Java 11&#xff0c;这个在Java发展史上占有一席之地的版本。说起Java&#xff0c;咱们都知道&#xff0c;它是一门历史悠久又持续发展的编程语言。Java不仅因其“一次编写&#xff0c;到处…

Sentinel限流熔断

官网&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html github文档&#xff1a;https://github.com/alibaba/Sentinel/wiki Sentinel 是一款面向分布式服务架构的轻量级流量控制组件&#xff0c;主要以流量为切入点&#xff0c;从流量控制、 熔断降级 、系…