- 博客(823)
- 资源 (44)
- 收藏
- 关注
原创 6.2 LIBBPF API(一,异常处理)
如果函数直接返回错误代码,它会使用0来表示成功,并使用负的错误代码来表示错误的原因。在这种情况下,应直接从返回值中检查错误代码,无需检查errno。如果函数返回一个指针,它会返回NULL来表示存在错误。在这种情况下,应检查errno来获取错误代码。当使用“libbpf 1.0模式”中的libbpf时,API函数可以通过两种方式返回错误。/* 请注意下面EINVAL和E2BIG的错误代码前没有负号。/* 相应地处理错误 */处理E2BIG错误 */处理EINVAL错误。
2024-04-11 22:43:21 1549
原创 5.119 BCC工具之zfsdist.py解读
ZFS 是一种高级的文件系统,设计用于存储大量数据并提供强大的数据完整性保证。zfsdist用于追踪 ZFS(Zettabyte File System)的读取、写入、打开和同步操作,并将其延迟以 2 的幂次直方图的形式进行汇总。
2024-04-10 08:09:19 1467
原创 5.117 BCC工具之xfsdist.py解读
xfsdist 追踪 XFS 的读取、写入、打开和 fsyncs 操作,并将其延迟以 2 的幂次直方图的形式进行总结。
2024-04-09 07:47:17 248
原创 5.115 BCC工具之vfscount.py解读
这通过追踪所有以“vfs_”开头的内核函数,计算了在此期间发生的VFS调用次数。默认情况下,时间为99999999秒。
2024-04-08 08:42:57 399
原创 5.114 BCC工具之nfsdist.py解读
nfsdist 追踪 NFS 读取、写入、打开和 getattr,并将其延迟概括为 2 的幂次方直方图。
2024-04-08 08:42:37 435
原创 5.113 BCC工具之nfsslower.py解读
NFS是一种分布式文件系统协议,允许客户端通过网络访问服务器上的文件。然而,由于网络延迟、服务器负载等原因,NFS操作可能会变得缓慢,从而影响系统性能。nfsslower显示慢于阈值的 NFS 读取、写入、打开和 getattr 操作。这有助于我们发现导致NFS性能下降的慢操作,并进一步分析其原因.该工具还可以追踪commit操作,这是NFS特有的,可能会非常慢。警告:这会对这些NFS操作(包括从文件系统缓存中的读取和写入)添加低开销的检测。这种读取和写入可能会非常频繁(取决于工作负载;
2024-04-06 10:55:00 362
原创 5.111 BCC工具之ext4dist.py解读
ext4dist跟踪ext4的读取、写入、打开和fsync操作,并将其延迟总结为2的幂次方直方图。
2024-04-05 08:30:20 219
原创 5.108 BCC工具之virtiostat.py解读
virtiostat程序用于跟踪virtio设备以分析IO操作和吞吐量。例如,客户端挂载了一个9pfs,而我们再也无法通过iostat命令获取IO统计信息。在这种情况下,我们只能从VIRTIO层而不是块层获取统计信息。示例。
2024-04-04 07:09:38 407
原创 【基础篇】1.6 开发环境搭建
学习STM32的开发,我们需要选选择合适型号,STM32开发板。通过前面的博客,我们知道它通常包含了微控制器、外设接口和必要的电路组件。在搭建STM32开发环境时,开发者需要首先安装选定的IDE(如Keil MDK),然后安装相关的器件支持包,以确保对特定STM32型号的支持。此外,根据开发需求,可能还需要安装串口驱动、配置工具和其他辅助软件。下面我们一一了解下该专栏所用到的STM32和常见的开发工具。
2024-04-03 22:14:59 907
原创 5.109 BCC工具之btrfsdist.py解读
btrfsdist追踪 btrfs 的读取、写入、打开和同步操作,并将它们的延迟以 2 的幂次直方图的形式进行汇总。
2024-04-03 12:28:13 216
原创 5.104 BCC工具之fileslower.py解读
fileslower可以显示低于阈值的基于文件的同步读写情况。此脚本使用内核对VFS接口上的同步读取和写入的动态跟踪,以识别任何文件系统的慢文件读取和写入。它通过跟踪__vfs_read()和__vfs_write()函数,并过滤出同步I/O(通往new_sync_read()和new_sync_write()的路径)以及带有文件名的I/O来实现此功能。这种方法仅提供了两种文件系统请求类型的视图。通常还有许多其他类型:异步I/O、目录操作、文件句柄操作等,此工具并不包含这些。
2024-04-02 08:21:18 160
原创 【基础篇】1.1 单片机的概念
单片机(Single-Chip Microcomputer),也被称为单片微控制器,是一种集成电路芯片。它采用超大规模集成电路技术,将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上,构成了一个小而完善的微型计算机系统。简单来说,单片机就是一台微型计算机。我们来看下我们常见的计算机和单片机在结构上有什么区别?
2024-03-30 12:39:52 207
原创 5.98 BCC工具之biotop.py解读
biotop工具是“block device I/O top”的缩写,它会统计哪些进程正在执行磁盘I/O操作。它通过收集和分析内核的块设备I/O事件,提供了实时的磁盘I/O性能数据。它类似于top命令,但是专注于显示哪些进程正在执行磁盘I/O操作,并按照I/O量进行排序。这使得开发人员和系统管理员能够快速识别出最活跃的磁盘I/O消费者,并了解它们对系统性能的影响。
2024-03-30 06:08:31 79
原创 5.97 BCC工具之biolatency.py解读
biolatency 跟踪块设备 I/O(磁盘 I/O),并记录 I/O 延迟(时间)的分布,通过 Ctrl-C 可以停止跟踪,并将其以直方图的形式打印出来。它通过动态追踪blk_族函数(与块设备相关的内核函数)并记录函数的变化,从而收集块设备I/O的延迟信息。它记录I/O延迟的分布,并以直方图的形式显示出来,使用户能够直观地了解I/O操作的性能特征。
2024-03-30 06:08:11 71
原创 4.1 ebpf基础能力拆解
想要彻底理解eBPF的能力,我们就需要知道它主要的应用场景是什么?无论eBPF的演进路线,还是开发者生态,eBPF主要的两大应用场景分别是网络优化和性能监控。网络优化这里不必赘述,因为它是从BPF演进拓展而来,而BPF则因网络而存在。本章节主要来聊性能监控。ebpf虽然让开发者们具备了在不改动内核的情况下可以编写运行在内核中的ebpf程序,但这是有条件的。
2024-03-29 22:07:35 168
原创 5.95 BCC工具之dcsnoop.py解读
dcsnoop工具用于追踪目录项缓存(dcache)的查找,并可用于 dcstat(8) 之外的进一步调查。由于 dcache 查找可能很频繁,因此输出可能很冗长。默认情况下,仅显示查找失败的情况。
2024-03-29 07:01:42 103
原创 5.94 BCC工具之cachetop.py解读
cachetop工具用于监视和统计系统页面缓存(page cache)的使用情况。页面缓存是Linux内核用于存储从磁盘读取的文件数据的内存区域,它可以显著提高文件访问的速度,因为当数据已经缓存在内存中时,应用程序无需再次从磁盘读取。cachetop则是类似于传统的top命令,但它专注于显示与页面缓存相关的实时统计信息。这些信息包括每个进程的缓存命中、未命中以及相应的命中率。这对于了解哪些进程在大量使用页面缓存、哪些进程可能由于频繁的缓存未命中而遭受性能下降等问题非常有用。当我们使用cachetop。
2024-03-28 07:13:20 123
原创 5.93 BCC工具之cachestat.py解读
对文件系统页面缓存的命中与未命中次数。页面缓存是Linux内核用来缓存磁盘上文件数据的一种内存区域,当应用程序请求读取文件时,如果数据已经在页面缓存中,那么就可以直接从内存中获取,而无需从磁盘上读取,从而大大提高了文件访问的速度。而cachestat工具则专门用于监控和报告Linux文件系统页面缓存(page cache)的命中与未命中情况。它通过定期采样页面缓存的相关统计信息,并计算出命中率(hits)和未命中率(misses),帮助我们了解系统缓存的使用情况和性能表现。
2024-03-28 07:12:34 161
原创 5.92 BCC工具之bitesize.py解读
bitesize工具按进程名称显示请求块大小的I/O分布。它通过监视磁盘上的读取和写入操作,记录每个操作的大小。再将跟踪到的 I/O 操作按照大小分组,通常是以 2 的幂次方(如 4K、8K、16K 等)进行划分,并统计每个大小范围内的 I/O 操作数量。
2024-03-27 06:19:24 108
原创 5.91 BCC工具之tcpcong.py解读
tcpcong工具跟踪Linux内核的TCP拥塞控制状态的变化事件,然后计算每个状态的持续时间并进行记录,最后以表格或直方图的形式将其打印出来,可用于评估TCP拥塞算法的性能。TCP拥塞控制是确保网络稳定性和性能的关键机制之一,它通过动态调整发送速率来避免网络拥塞。当TCP连接经历不同的拥塞状态(如慢启动、拥塞避免、快速重传和快速恢复)时,这些状态更改会触发相应的内核函数。我们可以利用tcpcong将这些内核函数的调用事件捕获并进行分析。
2024-03-27 06:19:03 135
原创 5.90 BCC工具之tcptracer.py解读
tcptracer工具用于追踪执行TCP连接的内核函数(例如,通过connect()或accept()系统调用)以及关闭它们(显式地或者如果进程死亡)。它可以跟踪 TCP 连接的建立、关闭以及数据传输过程中的关键事件。它监视诸如connect()accept()close()等系统调用的执行,以及 TCP 状态的变化(如 SYN、SYN+ACK、ESTABLISHED、FIN、RST 等)。
2024-03-26 06:55:04 513
原创 5.89 BCC工具之tcptop.py解读
tcptop工具按主机和端口统计吞吐量。它能够实时地监控和分析网络上的TCP连接,提供关于哪些主机和端口正在使用最多的网络带宽的信息。这对于网络管理员和系统调优人员来说是非常有用的,因为它可以帮助他们快速识别出网络上的高流量源,进而进行相应的优化或处理。tcptop的工作原理是通过动态追踪内核中的TCP相关函数,收集关于TCP连接吞吐量的数据,并按照吞吐量进行排序和显示。它可以根据需要显示IPv4和IPv6的TCP连接信息,并可以按照发送或接收的吞吐量进行排序。此外,tcptop。
2024-03-26 06:54:43 370
原创 6.1 LIBBPF简介
libbpf和BPF CO-RE可以让我们专心做一个开发者,及时你对内核的理解没有那么深入。它同样大大减少了内核版本的差异给我们带来的痛苦,实现了真正意义上的Build once,Run everywhere。Libbpf扮演BPF程序加载器的角色,执行平凡的设置工作(重定位、加载和验证BPF程序、创建BPF映射、附加到BPF钩子等),让开发者只需要关注所开发BPF程序的正确性和性能。
2024-03-26 06:54:18 506
原创 5.88 BCC工具之tcpsynbl.py解读
tcpsynbl工具以直方图的形式显示SYN到达时的TCP SYN积压大小。这可以让我们了解应用程序距离达到积压限制并丢弃SYN(导致SYN重传产生性能问题)还有多远。TCP SYN 数据包则通常用于启动 TCP 三次握手过程的第一次握手。
2024-03-25 07:14:48 342
原创 5.87 BCC工具之tcpsubnet.py解读
根据目标子网统计吞吐量。这个工具只在IPv4环境下工作,并允许用户指定特定的子网进行监控。通过使用tcpsubnet,用户可以实时地观察特定子网内TCP流量的变化和分布情况,从而帮助进行网络性能调优、故障排查和安全监控等工作。
2024-03-25 07:14:26 200
pageowner 解析工具
2022-05-13
SELinux4AndroidO
2018-02-05
recovery_l10n
2015-04-10
解决Android4.3彩信幻灯片中gif格式图片不能正常播放
2014-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人