性能分析与调优: Linux 安装基于BPF的bcc-tools系统性能工具库

2024-01-07 11:52

本文主要是介绍性能分析与调优: Linux 安装基于BPF的bcc-tools系统性能工具库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 一、实验

1.环境

2.agent服务器安装使用ELRepo安装依赖包

3.agent服务器安装基于BPF的bcc-tools系统性能工具库

二、问题

1.安装bcc-tools后执行命令报错


 一、实验

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)ELRepo官网地址

ELRepo | HomePage

2.agent服务器安装使用ELRepo安装依赖包

(1)查看当前系统的内核版本

uname -rs

(2)查看已安装的内核依赖包

rpm -qa | grep kernel-lt

(3)查看当前可用的内核发行版本

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

(3)安装依赖包

yum --enablerepo=elrepo-kernel install kernel-lt-devel  \
kernel-lt-headers \
kernel-lt-tools \
kernel-lt-tools-libs 

 (4)再次查看已安装的内核依赖包

rpm -qa | grep kernel-lt

3.agent服务器安装基于BPF的bcc-tools系统性能工具库

(1)安装bcc-tools(内核必须升级到4.x版本以上,才可以使用。)

yum install -y bcc-tools

(2)添加环境变量

export PATH=$PATH:/usr/share/bcc/tools

(3)测试

二、问题

1.安装bcc-tools后执行命令报错

(1)报错

执行cachestat命令报错

(2)原因分析

① 原因一

如果kernel-devel 版本不一致导致的,建议下载跟操作系统内核版本对齐。

#可以yum安装
yum install "kernel-devel-$(uname -r)"
# 或者下载对应内核版本rpm包安装# 下载地址:http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/
rpm -ivh kernel-lt-devel-5.4.265-1.el7.elrepo.x86_64.rpm

② 原因二

另一个原因是是由于内核版本的原因,kernel-5.4.X之后才会出现该问题。内核头文件中用 asm 替换 asm_inline即可,具体参考如下的BCC官网。Missing support for asm_inline in Linux 5.4 · Issue #2546 · iovisor/bcc · GitHub

(3)解决方法

1)配置文件
vim /lib/modules/5.4.265-1.el7.elrepo.x86_64/build/arch/x86/include/asm/segment.h 2)在最上新增如下配置
#ifdef asm_inline
#undef asm_inline
#define asm_inline asm
#endif

修改前:

修改后:

成功:

这篇关于性能分析与调优: Linux 安装基于BPF的bcc-tools系统性能工具库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/579826

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信