bcc专题

BCC软译码和硬译码之间的性能差别

在探讨BCC(由于BCC并非广泛认知的术语,且没有直接对应到某个具体的技术或标准,这里假设它是指某种涉及编码或数据处理的技术或过程)的软译码和硬译码之间的性能差别时,我们可以从一般性的角度来解释这两种译码方式在性能上的不同。 软译码(Soft Decoding) 软译码通常指的是在解码过程中,解码器不仅输出最终的解码结果(如比特序列),还输出每个解码结果的不确定性或概率信息。这种信息通常用于后

基于MATLAB仿真的BCC卷积码维特比译码算法

🧑🏻个人简介:具有3年工作经验,擅长通信算法的MATLAB仿真和FPGA实现。代码事宜,私信博主,程序定制、设计指导。 🚀基于MATLAB仿真的BCC卷积码维特比译码算法 目录 🚀1.BCC卷积码概述 🚀2.维特比译码算法 🚀2.1概述 🚀2.2算法核心思想 🚀2.3算法优缺点 🚀2.4应用实例 🚀2.5部分源代码和仿真截图 🚀1.BCC卷积

TCP 连接排故:使用 BPF BCC工具包进行网络跟踪

写在前面 博文内容为 BCC 进行网络跟踪常见工具介绍tcpconnect:主动的 TCP 连接跟踪tcpaccept:被动的 TCP 连接跟踪tcpretrans:重传的 TCP 连接跟踪tcptracer:已建立的 TCP 连接跟踪tcpconnlat:测量出站 TCP 连接的延迟tcpdrop:被内核丢弃的 TCP 数据包跟踪tcplife: TCP 会话追踪tcpstates: TC

邮件系统中的CC和BCC含义

一、背景 我们在发邮件时,有时会看到或用到CC和BCC相关的功能,下面简要介绍一下。 二、CC CC:Carbon Copy,也就是抄送,是一种电子邮件发送方式。 三、BCC BCC:Blind Carbon Copy,也就是密件抄送,是一种电子邮件发送方式。 在电子邮箱中有个密件抄送功能,这里面的地址,只有该收件人能看到,其他的收件人看不到。 有时,我们将一封信件寄给收件人时,同时

数据校验--BCC校验

BCC(Block Check Character/信息组校验码)即异或校验法 1、使用范围:适用于大多数要求不高的数据通讯。 2、应用场景:IC卡接口通讯、很多单片机系统的串口通讯都使用。 3、实现步骤:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常把它附在通讯数据的最后一起发送出去。接收方收到数据后自己也计

5.117 BCC工具之xfsdist.py解读

一,工具简介 xfsdist 追踪 XFS 的读取、写入、打开和 fsyncs 操作,并将其延迟以 2 的幂次直方图的形式进行总结。例如: 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_functionfrom bcc import BPFfrom time import sleep, strftimeimport a

5.108 BCC工具之virtiostat.py解读

一,工具简介 virtiostat程序用于跟踪virtio设备以分析IO操作和吞吐量。 例如,客户端挂载了一个9pfs,而我们再也无法通过iostat命令获取IO统计信息。 在这种情况下,我们只能从VIRTIO层而不是块层获取统计信息。 示例 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_functionfrom bcc

5.105 BCC工具之filetop.py解读

一,工具简介 filetop显示了按文件进行的读取和写入操作,并提供进程详细信息。它可以实时监视系统中的文件 I/O,并以类似于 top 命令的方式显示最活跃的文件。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_functionfrom bcc import BPFfrom time import sleep, str

5.86 BCC工具之tcpstates.py解读

一,工具简介 tcpstates工具将会打印 TCP 状态更改信息,包括在每个状态中持续的时间(以毫秒为单位)。它是一个用于监控和分析TCP连接状态变化的工具。它利用BPF程序来跟踪TCP连接的生命周期,并记录每个连接在不同状态(如SYN_SENT、SYN_RECV、ESTABLISHED、FIN_WAIT1、FIN_WAIT2、TIME_WAIT等)下花费的时间。 tcpstates工具的工

5.85 BCC工具之tcprtt.py解读

一,工具简介 tcprtt工具通过追踪TCP的RTT(往返时间)来分析网络质量,进而帮助我们区分网络延迟问题是由用户进程还是物理网络引起的。 它可以用于测量和分析TCP连接的往返时间(RTT)。RTT是衡量网络性能的关键指标之一,它表示从发送一个数据包到接收到该数据包的确认所需的时间。通过测量RTT,可以了解网络连接的延迟情况,这对于诊断网络问题、优化网络性能以及确保应用程序的响应性至关重要。

5.76 BCC工具之sofdsnoop.py解读

一,工具简介 sofdsnoop工具追踪通过 Unix 套接字传递的文件描述符(FDs)。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_functionfrom bcc import ArgString, BPFimport osimport argparsefrom datetime import datetim

5.70 BCC工具之runqslower.py解读

一,工具简介 runqslower工具显示了任务准备运行与之后在CPU上运行之间的高延迟调度时间。 该工具需要Linux 4.9+(支持BPF_PROG_TYPE_PERF_EVENT)。 二,代码示例 此脚本统计任务在运行队列中等待在CPU上运行的时间,并将此时间显示为单个事件。这个时间应该很短,但由于CPU负载,任务可能需要等待其轮次。 此脚本会统计两种类型的运行队列延迟: 1.

5.71 BCC工具之wqlat.py解读

一,工具简介 wqlat工具统计线程阻塞的时间,并显示执行唤醒操作的线程的堆栈跟踪,以及唤醒进程和目标进程的进程名,以及总的阻塞时间。这个阻塞时间是从一个线程阻塞时开始统计的,直到发送唤醒信号时结束。请注意,这个时间不包括目标线程的一些运行队列延迟,因为目标线程如果需要等待在CPU上的轮次,可能不会立即执行。所有显示的数据,包括堆栈跟踪、进程名和时间,都在内核中使用eBPF映射进行高效汇总。

5.82 BCC工具之tcpdrop.py解读

一,工具简介 tcpdrop工具打印被内核丢弃的 TCP 数据包或段的详细信息,包括导致丢弃的内核堆栈跟踪。 当网络出现拥堵、资源不足或其他原因导致数据包被内核丢弃时,tcpdrop可以帮助开发者和网络管理员识别并定位问题。 该工具通过钩住内核中处理TCP数据包的相关函数,捕获丢弃事件并收集相关信息,如丢弃的TCP数据包的源IP、目的IP、端口号等。此外,它还可以提供内核堆栈跟踪,显示导致丢

5.61 BCC工具之syscount.py解读

一,工具简介 syscount工具可以总结整个系统或特定进程的syscall计数,并打印可选的延迟信息。 它对于一般的工作负载特征描述非常有用。 二,代码示例 #!/usr/bin/env pythonfrom time import sleep, strftimeimport argparseimport errnoimport itertoolsimport sysimport

5.60 BCC工具之softirqs.py解读

一,工具简介 软中断是内核中用于处理异步事件的一种机制,它们在特定的时机由内核调度执行,以完成诸如网络接收、磁盘 I/O 完成等任务。 softirqs工具用于追踪和分析 Linux 内核中的软中断(softirq)事件。并将计时统计信息高效地存储在内核中。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_function

5.53 BCC工具之dbslower.py解读

一,工具简介 dbstat用于追踪由MySQL或PostgreSQL数据库进程执行的查询,并显示查询延迟的直方图。 二,代码示例 #!/usr/bin/env pythonfrom bcc import BPF, USDTimport argparseimport subprocessfrom time import sleep, strftimeexamples = """dbsta

5.50 BCC工具之shmsnoop.py解读

一,工具简介 shmsnoop 追踪 shm*() 系统调用。 shm*() 通常指的是与共享内存(shared memory)相关的系统调用,如 shmget(), shmat(), shmdt(), 和 shmctl() 等。详细如下: shmget(): 这个系统调用用于创建或获取一个共享内存段。它接收一个关键字(通常通过ftok()函数生成),共享内存段的大小,以及一些标志位(如I

5.37 BCC工具之uflow.py解读

一,工具简介 uflow工具用于跟踪方法的进入和退出事件,并打印一个可视化的流程图,显示方法是如何进入和退出的,类似于带有断点的跟踪调试器。这对于理解Java、Perl、PHP、Python、Ruby和Tcl等高级语言中的程序流非常有用,这些语言为方法调用提供了USDT探测。 二,代码示例 #!/usr/bin/pythonfrom __future__ import print_funct

5.28 BCC工具之readahead.py解读

一,工具简介 操作系统的读预取机制通过预先读取一些页面来优化顺序操作,从而避免更昂贵的文件系统操作。readahead工具在给定的负载下显示系统上读预取缓存的性能,以调查任何缓存问题。它显示了缓存中未使用页面的数量,并打印了一个直方图,显示它们在缓存中停留的时间。 那readahead工具在什么应用场景下使用呢? 假设你正在开发一个React Native应用程序,该程序在重新编码本地存储中

5.29 BCC工具之reset-trace.sh解读

一,工具简介 从文件名就可以理解这个工具是用来reset trace状态的。 那么我们可能永远都不需要这个工具。如果你使用-9(以及其他信号,如SIGTERM)杀死bcc工具,或者bcc工具崩溃,那么内核跟踪可能会处于半启用状态。这听起来并不那么糟糕:可能只是向从未读取的环形缓冲区写入数据的开销。此工具可用于清理跟踪状态,重置并禁用活动跟踪。 警告:确保没有其他跟踪会话处于活动状态,因为这可

5.22 BCC工具之deadlock.py解读

一,工具简介 deadlock工具用于检测运行进程中的潜在死锁(锁顺序反转),但它不适用于共享互斥锁或递归互斥锁。 它可以跟踪pthread互斥锁(mutex)的锁定和解锁调用,以构建一个表示互斥锁等待图的有向图: 图中的节点代表互斥锁。如果存在某个线程T,在该线程中先调用了lock(A),然后调用了lock(B),再调用unlock(A),则存在边(A, B)。 如果程序发现潜在的锁顺

5.21 BCC工具之criticalstat.py解读

一,工具简介 介绍之前我们先了解以下Atomic critical section(原子临界区),它指的是在并行计算或多线程环境中,一段需要被原子性地(即不可分割地)执行的代码区域。原子性意味着这段代码要么完全执行,要么完全不执行,不会出现部分执行的情况。在原子临界区内的操作,不允许其他线程或进程中断或干扰。 而criticalstat是一个用于Linux内核性能分析的工具,专门设计来追踪和报

5.18 BCC工具之bpflist.py解读

一,工具简介 bpflist工具显示当前正在使用BPF程序和映射的进程、pinned的BPF程序和映射以及已使能探针的进程。也就是说bpflist可以为我们展示出系统哪个BPF程序在运行,并打印相关的探针。 二,代码示例 #!/usr/bin/env pythonfrom bcc import BPF, USDTimport argparseimport reimport osimp

5.17 BCC工具之bashreadline.py解读

一,工具简介 工具用于打印系统中所有正在运行的shell中输入的bash命令。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_functionfrom elftools.elf.elffile import ELFFilefrom bcc import BPFfrom time import strftimeimpo