当前位置: 首页 > news >正文

BCC源码内容概览(1)

接前一篇文章:BCC源码编译和安装

本文参考官网中的Contents部分的介绍。

BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。

跟踪(Tracing)

examples目录下的文件:

  • examples/tracing/bitehist.py

块I/O大小直方图。

bcc/examples/tracing/bitehist.txt文件内容如下:

Demonstrations of bitehist.py, the Linux eBPF/bcc version.This prints a power-of-2 histogram to show the block I/O size distribution.
A summary is printed after Ctrl-C is hit.# ./bitehist.py
Tracing... Hit Ctrl-C to end.
^Ckbytes          : count     distribution0 -> 1        : 3        |                                      |2 -> 3        : 0        |                                      |4 -> 7        : 211      |**********                            |8 -> 15       : 0        |                                      |16 -> 31       : 0        |                                      |32 -> 63       : 0        |                                      |64 -> 127      : 1        |                                      |128 -> 255      : 800      |**************************************|This output shows a bimodal distribution. The largest mod of 800 I/O were
between 128 and 255 Kbytes in size, and another mode of 211 I/O were between
4 and 7 Kbytes in size.Understanding this distribution is useful for characterizing workloads and
understanding performance. The existence of this distribution is not visible
from averages alone.
  • examples/tracing/disksnoop.py

跟踪块设备I/O延迟。

bcc/examples/tracing/disksnoop_example.txt文件内容如下:

Demonstrations of disksnoop.py, the Linux eBPF/bcc version.This traces block I/O, a prints a line to summarize each I/O completed:# ./disksnoop.py 
TIME(s)            T  BYTES    LAT(ms)
16458043.435457    W  4096        2.73
16458043.435981    W  4096        3.24
16458043.436012    W  4096        3.13
16458043.437326    W  4096        4.44
16458044.126545    R  4096       42.82
16458044.129872    R  4096        3.24
16458044.130705    R  4096        0.73
16458044.142813    R  4096       12.01
16458044.147302    R  4096        4.33
16458044.148117    R  4096        0.71
16458044.148950    R  4096        0.70
16458044.164332    R  4096       15.29
16458044.168003    R  4096        3.58
16458044.171676    R  4096        3.59
16458044.172453    R  4096        0.72
16458044.173213    R  4096        0.71
16458044.173989    R  4096        0.72
16458044.174739    R  4096        0.70
16458044.190334    R  4096       15.52
16458044.196608    R  4096        6.17
16458044.203091    R  4096        6.35The output includes a basic timestamp (in seconds), the type of I/O (W == write,
R == read, M == metadata), the size of the I/O in bytes, and the latency (or
duration) of the I/O in milliseconds.The latency is measured from I/O request to the device, to the device
completion. This excludes latency spent queued in the OS.Most of the I/O in this example were 0.7 and 4 milliseconds in duration. There
was an outlier of 42.82 milliseconds, a read which followed many writes (the
high latency may have been caused by the writes still being serviced on the
storage device).
  • examples/hello_world.py

为新进程打印“Hello, World!”。

bcc/examples/hello_world.py文件内容如下:

#!/usr/bin/python
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")# run in project examples directory with:
# sudo ./hello_world.py"
# see trace_fields.py for a longer examplefrom bcc import BPF# This may not work for 4.17 on x64, you need replace kprobe__sys_clone with kprobe____x64_sys_clone
BPF(text='int kprobe__sys_clone(void *ctx) { bpf_trace_printk("Hello, World!\\n"); return 0; }').trace_print()
  • examples/tracing/mysqld_query.py

使用USDT探测跟踪MySQL服务器查询。

bcc/examples/tracing/mysqld_query.txt文件内容如下:

# ./mysqld_query.py `pgrep -n mysqld`
TIME(s)            COMM             PID    QUERY
17450459.549910001 mysqld           18608  select @@version_comment limit 1
17450463.822668001 mysqld           18608  SELECT DATABASE()
17450463.824042998 mysqld           18608  show databases
17450463.824570000 mysqld           18608  show tables
17450465.602717999 mysqld           18608  SELECT COUNT(*) FROM words
17450479.944897000 mysqld           18608  SELECT * FROM words WHERE word REGEXP '^bre.*n$'

相关文章:

BCC源码内容概览(1)

接前一篇文章:BCC源码编译和安装 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。 跟踪(Tracing) exam…...

mysql限制用户登录失败次数,限制时间

mysql用户登录限制设置 mysql 需要进行用户登录次数限制,当使用密码登录超过 3 次认证链接失败之后,登录锁住一段时间,禁止登录这里使用的 mysql: 8.1.0 这种方式不用重启数据库. 配置: 首先进入到 mysql 命令行:然后需要安装两个插件: 在 mysql 命令行中执行: mysql> INS…...

从利用Arthas排查线上Fastjson问题到Java动态字节码技术(下)

上一篇从Arthas的源码引出了Java动态字节码技术,那么这一篇就从几种Java字节码技术出发,看看Arthas是如何通过动态字节码技术做到无侵入的源码增强; Java大部分情况下都是解释执行的,也就是解释.class文件,所以如果我们…...

Ubuntu中安装Anaconda 如何将 路径导入为全局变量

第一步:将你的anaconda 路径复制下来,在终端输入对应路径。 echo export PATH"/home/你的用户名/anaconda3/bin:$PATH" >> ~/.bashrc 第二步:在终端输入下面命令或者重启系统。 source ~/.bashrc 在对应的anaconda安装目…...

【QT】Qt的随身笔记(持续更新...)

目录 Qt 获取当前电脑桌面的路径Qt 获取当前程序运行路径Qt 创建新的文本文件txt,并写入内容如何向QPlainTextEdit 写入内容QTimerQMessageBox的使用QLatin1StringQLayoutC在c头文件中写#include类的头文件与直接写class加类名有何区别mutable关键字前向声明 QFontQ…...

【LeetCode-简单题】589. N 叉树的前序遍历

文章目录 题目方法一:单循环栈做法方法二:递归 题目 方法一:单循环栈做法 关键在于子节点的入栈顺序,决定了子节点的出栈顺序, 因为是前序遍历 所以压栈顺序先让右边的入栈 依次往左 这样左边的节点会在栈顶 这样下次…...

Linphone3.5.2 ARM RV1109音视频对讲开发记录

Linphone3.5.2 ARM RV1109音视频对讲开发记录 说明 这是一份事后记录,主要记录的几个核心关键点,有可能很多细节没有记上,主要是方便后面自己再找回来! 版本 3.5.2 一些原因选的是这样一个旧的版本! 新的开发最好选新一些的版…...

Unity用相机实现的镜子效果

首先登场 场景中的元素 mirror是镜子,挂着我们的脚本,Quad是一个面片。Camera是用来生成RenderTexture给面片的。里面的test1是我用来调试位置的球。 镜子size是大小,x是-2,为了反转一下贴图 相机直接可以禁用掉,用…...

计算机网络分类

按照覆盖范围分类 (1)个域网:通常覆盖范围在1~10m。 (2)局域网:通常覆盖范围在10m~1km。 (3)城域网:覆盖范围通常在5~50 km 。 &…...

AI AIgents时代 - (三.) AutoGPT和AgentGPT

前两篇讲解了Agent的原理和组件,这节我将给大家介绍两个agent项目,给出它们的工作原理和区别,并教大家亲手尝试使用 Agents🎉 🟢 AutoGPT🤖️ 我们的老朋友,之前文章也专门写过。AutoGPT 是一…...

Jmeter接口自动化和Python接口自动化,如何选择?

选择Jmeter或Python进行接口自动化测试取决于您的具体需求和环境。以下是一些可以考虑的因素: 1. 语言熟悉度:如果您对Java更熟悉,那么Jmeter可能是更好的选择。而如果您的团队或个人对Python更熟悉,那么Python可能是更好的选择。…...

Sqilte3初步教程

文章目录 安装创建数据库创建和删除表插入行数据 安装 Windows下安装,首先到下载页面,下载Windows安装软件,一般是 sqlite-dll-win32-*.zip sqlite-tools-win32-*.zip下载之后将其内容解压到同一个文件夹下,我把它们都放在了D:\…...

详解Python中的json库

目录 1. json简介2. dumps/loads3. dump/load4. jsonl格式 1. json简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在不同应用程序之间传递数据。它是一种文本格式,易于阅读和编写,同时也易于…...

【Spring Boot】Spring Boot源码解读与原理剖析

这里写目录标题 前言精进Spring Boot首选读物“小册”变“大书”,彻底弄懂Spring Boot全方位配套资源,学不会来找我!技术新赛道,2023领先抢跑 前言 承载着作者的厚望,掘金爆火小册同名读物《Spring Boot源码解读与原理…...

C++学习(1)

一、C概述(了解) C在C语言的基础上添加了面向对象编程和泛型编程的支持 二、helloword程序(掌握) #define _CET_SECURE_NO_WARNINGS//在开发软件visual studio编译 c文件时, visual studio认为strcpy,scanf等函数不安全的导致报…...

机器人如何有效采摘苹果?

摘要:本文利用动捕数据构建拟人运动模型,对比观察两种苹果采摘模式,并对系统性能进行全面评估,为提高机器人采摘效率提供创新方法。 近期,一项关于苹果采摘机器人的有趣研究—— "Design and evaluation of a rob…...

C# OpenCvSharp Yolov8 Detect 目标检测

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Open…...

rust数组

一、定义数组 (一)一维数组 1.指定所有元素 语法格式 let variable_name: [dataType; size] [value1,value2,value3];例如 let arr: [i32; 4] [10,20,30,40];2.指定初始值和长度 所有元素具有相同的值 语法格式 let variable_name: [dataType; siz…...

ubuntu | 安装NVIDIA套件:驱动、CUDA、cuDNN

CUDA 查看支持最高的cuda版本 nvidia-smiCUDA Version:12.2 区官网下在12.2.x最新的版本即可CUDA Toolkit Archive | NVIDIA Developer 下载安装 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run sudo…...

JAVA学习笔记

一、学习要点 java的最大优势就是跨平台; java的三个版本,javaSE标准版本,javaEE企业版本,javaME微型版本(用的比较少); JVM(Java Virtual Machine,Java虚拟机); JRE…...

IA-Lab AI 检测报告生成助手:双碳目标驱动下的检测机构效率引擎,重塑报告生成与合规审核新模式

在“双碳”目标持续推进的时代背景下,绿色发展已从政策导向转变为企业与机构必须面对的现实命题。对于检测认证(TIC)行业而言,这一变化尤为明显——碳排放核算、能源效率评估、环境数据监测等业务需求快速增长,检测报告…...

TypeC接口改造全攻略:从MicroUSB到TypeC的电路设计与PCB制作(含免费设计文件)

Type-C接口改造全攻略:从MicroUSB到Type-C的电路设计与PCB制作 最近整理工作室时翻出一堆老设备,清一色配备MicroUSB接口。看着手边越来越多的Type-C线材,突然意识到是时候给这些"老伙计"升级接口了。作为硬件开发者,我…...

毕业项目技术辅导:前后端与数据分析模块协作

毕业项目进入冲刺期,功能点多、时间紧、还要准备演示与答辩? 我这边提供毕业项目技术协作,主要做: 前端页面与交互实现(可配合你现有框架)后端接口、数据库与联调支持数据清洗、分析与可视化展示既有代码 b…...

深刻理解智能指针特性

文章目录RAII思想unique_ptr 独占型shared_ptr 共享型weak_ptr 弱引用型总结RAII思想 RAII:资源获取即初始化—>把资源的生命周期绑定到栈上对象的生命周期,栈上对象离开作用域就自动销毁了 对象构造,拿到资源对象析构,释放资…...

数据安全守护:QQ空间历史说说备份工具全攻略

数据安全守护:QQ空间历史说说备份工具全攻略 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字记忆日益珍贵的今天,QQ空间承载着无数人的青春回忆与生活印记…...

MVP.css暗黑模式终极指南:如何完美适配用户偏好与系统设置

MVP.css暗黑模式终极指南:如何完美适配用户偏好与系统设置 【免费下载链接】mvp MVP.css — Minimalist classless CSS stylesheet for HTML elements 项目地址: https://gitcode.com/gh_mirrors/mv/mvp MVP.css是一款极简主义的无类CSS样式表,为…...

Neomake Makers深度解析:如何为50+编程语言配置lint规则

Neomake Makers深度解析:如何为50编程语言配置lint规则 【免费下载链接】neomake Asynchronous linting and make framework for Neovim/Vim 项目地址: https://gitcode.com/gh_mirrors/ne/neomake Neomake是Vim/Neovim的异步代码检查框架,它通过…...

力扣第97题:多数元素

第一部分:问题描述 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums = [3,2,3] 输出:3 示例 2: 输入:nums = [2,2,1,1,1…...

单相半波可控整流电路仿真与优化【电力电子技术实践指南】

1. 单相半波可控整流电路基础入门 第一次接触电力电子技术时,我被各种整流电路搞得晕头转向。直到亲手用Multisim仿真了单相半波可控整流电路,才真正理解它的工作原理。这个电路虽然简单,但包含了可控整流的精髓,特别适合新手入门…...

具身Scaling Law押对了!独角兽新品1小时学会新任务,重复1800次成功率99%

克雷西 发自 凹非寺量子位 | 公众号 QbitAI机器人也开始内卷了,一位表现极其离谱的“新员工”,直接拉高了机器人的“就业门槛”。具身智能独角兽Generalist,刚刚推出了最新的研究成果——新模型Gen-1。在包装手机和折叠纸箱这些精细活儿上&am…...