Android eBPF Book
文章平均质量分 84
从0到1记录学习ebpf的过程......
优惠券已抵扣
余额抵扣
还需支付
¥99.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
高桐@BILL
校园到职场,做过室内设计;WEB前后端,APP,嵌入式,LinuxAndroid,ChromiumOS,YunOS,智舱OS等开发。
行业遍及互联网,手机,IOT,汽车。
合作品牌如华为,中兴,OV,小米,三星,谷歌,联想,诺基亚,魅族,上汽,大众,腾讯,百度,网易,LG、HTC,沃达丰,AT&T,中移动,中国电信。
职业规划为操作系统方向,涉及不同框架、方案架构设计开发,可维可测,全维度的工程化;
目前主要涉及Android产品从App、FWK、HAL、Kernel、QNX全链路的垂直工程化,以及跨域产/研/测/项目/互联网产品的横向工程化;
展开
-
5.120 BCC工具之zfsslower.py解读
zfsslower 显示慢于阈值的 ZFS 读取、写入、打开和 fsyncs 操作。原创 2024-04-11 22:42:52 · 1496 阅读 · 0 评论 -
5.118 BCC工具之xfsslower.py解读
xfsslower显示了XFS的读取、写入、打开和fsync操作,这些操作慢于一个阈值。原创 2024-04-10 08:08:48 · 400 阅读 · 0 评论 -
5.117 BCC工具之xfsdist.py解读
xfsdist 追踪 XFS 的读取、写入、打开和 fsyncs 操作,并将其延迟以 2 的幂次直方图的形式进行总结。原创 2024-04-09 07:47:17 · 248 阅读 · 0 评论 -
5.116 BCC工具之vfsstat.py解读
这追踪了一些常见的VFS调用,并每秒打印摘要。原创 2024-04-09 07:46:57 · 201 阅读 · 0 评论 -
5.115 BCC工具之vfscount.py解读
这通过追踪所有以“vfs_”开头的内核函数,计算了在此期间发生的VFS调用次数。默认情况下,时间为99999999秒。原创 2024-04-08 08:42:57 · 399 阅读 · 0 评论 -
5.114 BCC工具之nfsdist.py解读
nfsdist 追踪 NFS 读取、写入、打开和 getattr,并将其延迟概括为 2 的幂次方直方图。原创 2024-04-08 08:42:37 · 437 阅读 · 0 评论 -
5.113 BCC工具之nfsslower.py解读
NFS是一种分布式文件系统协议,允许客户端通过网络访问服务器上的文件。然而,由于网络延迟、服务器负载等原因,NFS操作可能会变得缓慢,从而影响系统性能。nfsslower显示慢于阈值的 NFS 读取、写入、打开和 getattr 操作。这有助于我们发现导致NFS性能下降的慢操作,并进一步分析其原因.该工具还可以追踪commit操作,这是NFS特有的,可能会非常慢。警告:这会对这些NFS操作(包括从文件系统缓存中的读取和写入)添加低开销的检测。这种读取和写入可能会非常频繁(取决于工作负载;原创 2024-04-06 10:55:00 · 363 阅读 · 0 评论 -
5.112 BCC工具之ext4slower.py解读
ext4slower可以显示慢于阈值的ext4读取、写入、打开和fsync操作。原创 2024-04-06 10:54:46 · 205 阅读 · 0 评论 -
5.111 BCC工具之ext4dist.py解读
ext4dist跟踪ext4的读取、写入、打开和fsync操作,并将其延迟总结为2的幂次方直方图。原创 2024-04-05 08:30:20 · 219 阅读 · 0 评论 -
5.110 BCC工具之btrfsslower.py解读
显示慢于阈值的 btrfs 读取、写入、打开和同步操作。原创 2024-04-05 08:29:53 · 392 阅读 · 0 评论 -
5.108 BCC工具之virtiostat.py解读
virtiostat程序用于跟踪virtio设备以分析IO操作和吞吐量。例如,客户端挂载了一个9pfs,而我们再也无法通过iostat命令获取IO统计信息。在这种情况下,我们只能从VIRTIO层而不是块层获取统计信息。示例。原创 2024-04-04 07:09:38 · 407 阅读 · 0 评论 -
5.107 BCC工具之mountsnoop.py解读
mountsnoop工具在系统范围内跟踪 mount() 和 umount 系统调用。原创 2024-04-04 07:09:13 · 23 阅读 · 0 评论 -
5.106 BCC工具之mdflush.py解读
mdflush工具在md驱动程序级别跟踪刷新操作,并打印包括刷新时间在内的详细信息。原创 2024-04-03 12:28:33 · 174 阅读 · 0 评论 -
5.109 BCC工具之btrfsdist.py解读
btrfsdist追踪 btrfs 的读取、写入、打开和同步操作,并将它们的延迟以 2 的幂次直方图的形式进行汇总。原创 2024-04-03 12:28:13 · 216 阅读 · 0 评论 -
5.105 BCC工具之filetop.py解读
filetop显示了按文件进行的读取和写入操作,并提供进程详细信息。原创 2024-04-02 11:55:47 · 500 阅读 · 0 评论 -
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 阅读 · 0 评论 -
5.103 BCC工具之filegone.py解读
filegone追踪文件消失的原因,无论是被删除还是被重命名。原创 2024-04-02 08:21:01 · 188 阅读 · 0 评论 -
5.102 BCC工具之filelife.py解读
filelife追踪短生命周期的文件:那些在追踪过程中被创建然后又被删除的文件。原创 2024-04-01 07:00:48 · 536 阅读 · 0 评论 -
5.101 BCC工具之dirtop.py解读
dirtop工具按目录显示读取和写入情况.原创 2024-04-01 07:00:30 · 145 阅读 · 0 评论 -
5.100 BCC工具之biosnoop.py解读
biosnoop用于追踪块设备 I/O(磁盘 I/O),并为每个 I/O 打印一行输出。原创 2024-03-31 07:48:49 · 648 阅读 · 0 评论 -
5.99 BCC工具之biopattern.py解读
识别随机/顺序磁盘访问模式。原创 2024-03-31 07:48:25 · 131 阅读 · 0 评论 -
【基础篇】1.1 单片机的概念
单片机(Single-Chip Microcomputer),也被称为单片微控制器,是一种集成电路芯片。它采用超大规模集成电路技术,将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上,构成了一个小而完善的微型计算机系统。简单来说,单片机就是一台微型计算机。我们来看下我们常见的计算机和单片机在结构上有什么区别?原创 2024-03-30 12:39:52 · 207 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
6.3 LIBBPF API(二,libbpf.h函数)
函数介绍原创 2024-03-27 06:20:05 · 308 阅读 · 0 评论 -
6.1 LIBBPF简介
libbpf和BPF CO-RE可以让我们专心做一个开发者,及时你对内核的理解没有那么深入。它同样大大减少了内核版本的差异给我们带来的痛苦,实现了真正意义上的Build once,Run everywhere。Libbpf扮演BPF程序加载器的角色,执行平凡的设置工作(重定位、加载和验证BPF程序、创建BPF映射、附加到BPF钩子等),让开发者只需要关注所开发BPF程序的正确性和性能。原创 2024-03-26 06:54:18 · 506 阅读 · 0 评论 -
5.96 BCC工具之dcstat.py解读
dcstat工具用于显示目录项缓存(dcache)的统计信息。原创 2024-03-29 07:02:02 · 137 阅读 · 0 评论 -
5.95 BCC工具之dcsnoop.py解读
dcsnoop工具用于追踪目录项缓存(dcache)的查找,并可用于 dcstat(8) 之外的进一步调查。由于 dcache 查找可能很频繁,因此输出可能很冗长。默认情况下,仅显示查找失败的情况。原创 2024-03-29 07:01:42 · 103 阅读 · 0 评论 -
5.94 BCC工具之cachetop.py解读
cachetop工具用于监视和统计系统页面缓存(page cache)的使用情况。页面缓存是Linux内核用于存储从磁盘读取的文件数据的内存区域,它可以显著提高文件访问的速度,因为当数据已经缓存在内存中时,应用程序无需再次从磁盘读取。cachetop则是类似于传统的top命令,但它专注于显示与页面缓存相关的实时统计信息。这些信息包括每个进程的缓存命中、未命中以及相应的命中率。这对于了解哪些进程在大量使用页面缓存、哪些进程可能由于频繁的缓存未命中而遭受性能下降等问题非常有用。当我们使用cachetop。原创 2024-03-28 07:13:20 · 123 阅读 · 0 评论 -
5.93 BCC工具之cachestat.py解读
对文件系统页面缓存的命中与未命中次数。页面缓存是Linux内核用来缓存磁盘上文件数据的一种内存区域,当应用程序请求读取文件时,如果数据已经在页面缓存中,那么就可以直接从内存中获取,而无需从磁盘上读取,从而大大提高了文件访问的速度。而cachestat工具则专门用于监控和报告Linux文件系统页面缓存(page cache)的命中与未命中情况。它通过定期采样页面缓存的相关统计信息,并计算出命中率(hits)和未命中率(misses),帮助我们了解系统缓存的使用情况和性能表现。原创 2024-03-28 07:12:34 · 161 阅读 · 0 评论 -
5.92 BCC工具之bitesize.py解读
bitesize工具按进程名称显示请求块大小的I/O分布。它通过监视磁盘上的读取和写入操作,记录每个操作的大小。再将跟踪到的 I/O 操作按照大小分组,通常是以 2 的幂次方(如 4K、8K、16K 等)进行划分,并统计每个大小范围内的 I/O 操作数量。原创 2024-03-27 06:19:24 · 108 阅读 · 0 评论 -
5.91 BCC工具之tcpcong.py解读
tcpcong工具跟踪Linux内核的TCP拥塞控制状态的变化事件,然后计算每个状态的持续时间并进行记录,最后以表格或直方图的形式将其打印出来,可用于评估TCP拥塞算法的性能。TCP拥塞控制是确保网络稳定性和性能的关键机制之一,它通过动态调整发送速率来避免网络拥塞。当TCP连接经历不同的拥塞状态(如慢启动、拥塞避免、快速重传和快速恢复)时,这些状态更改会触发相应的内核函数。我们可以利用tcpcong将这些内核函数的调用事件捕获并进行分析。原创 2024-03-27 06:19:03 · 135 阅读 · 0 评论 -
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 阅读 · 0 评论 -
5.89 BCC工具之tcptop.py解读
tcptop工具按主机和端口统计吞吐量。它能够实时地监控和分析网络上的TCP连接,提供关于哪些主机和端口正在使用最多的网络带宽的信息。这对于网络管理员和系统调优人员来说是非常有用的,因为它可以帮助他们快速识别出网络上的高流量源,进而进行相应的优化或处理。tcptop的工作原理是通过动态追踪内核中的TCP相关函数,收集关于TCP连接吞吐量的数据,并按照吞吐量进行排序和显示。它可以根据需要显示IPv4和IPv6的TCP连接信息,并可以按照发送或接收的吞吐量进行排序。此外,tcptop。原创 2024-03-26 06:54:43 · 370 阅读 · 0 评论 -
5.88 BCC工具之tcpsynbl.py解读
tcpsynbl工具以直方图的形式显示SYN到达时的TCP SYN积压大小。这可以让我们了解应用程序距离达到积压限制并丢弃SYN(导致SYN重传产生性能问题)还有多远。TCP SYN 数据包则通常用于启动 TCP 三次握手过程的第一次握手。原创 2024-03-25 07:14:48 · 342 阅读 · 0 评论 -
5.87 BCC工具之tcpsubnet.py解读
根据目标子网统计吞吐量。这个工具只在IPv4环境下工作,并允许用户指定特定的子网进行监控。通过使用tcpsubnet,用户可以实时地观察特定子网内TCP流量的变化和分布情况,从而帮助进行网络性能调优、故障排查和安全监控等工作。原创 2024-03-25 07:14:26 · 200 阅读 · 0 评论 -
5.86 BCC工具之tcpstates.py解读
tcpstates工具将会打印 TCP 状态更改信息,包括在每个状态中持续的时间(以毫秒为单位)。它是一个用于监控和分析TCP连接状态变化的工具。它利用BPF程序来跟踪TCP连接的生命周期,并记录每个连接在不同状态(如SYN_SENT、SYN_RECV、ESTABLISHED、FIN_WAIT1、FIN_WAIT2、TIME_WAIT等)下花费的时间。tcpstates工具的工作原理是通过在内核中附加BPF程序来捕获TCP状态变化事件。原创 2024-03-24 07:55:29 · 208 阅读 · 0 评论 -
5.85 BCC工具之tcprtt.py解读
tcprtt工具通过追踪TCP的RTT(往返时间)来分析网络质量,进而帮助我们区分网络延迟问题是由用户进程还是物理网络引起的。它可以用于测量和分析TCP连接的往返时间(RTT)。RTT是衡量网络性能的关键指标之一,它表示从发送一个数据包到接收到该数据包的确认所需的时间。通过测量RTT,可以了解网络连接的延迟情况,这对于诊断网络问题、优化网络性能以及确保应用程序的响应性至关重要。tcprtt工具通过在内核级别跟踪TCP数据包的发送和接收来计算RTT。原创 2024-03-24 07:55:04 · 494 阅读 · 0 评论 -
5.84 BCC工具之tcpretrans.py解读
tcpretrans工具追踪内核TCP重传函数,以显示这些重传的详细信息。它专门用于追踪TCP重传事件。在网络通信中,重传是由于数据包丢失、损坏或延迟到达而需要重新发送的情况。tcpretrans通过利用Linux内核中的BPF(Berkeley Packet Filter)机制,能够实时捕获和分析这些重传事件,帮助开发者和网络管理员诊断网络问题、优化网络性能。原创 2024-03-23 07:48:37 · 648 阅读 · 0 评论 -
5.83 BCC工具之tcplife.py解读
tcplife工具统计了在追踪过程中打开和关闭的 TCP 会话。tcplife工具能够显示 TCP 会话的生命周期和吞吐量统计。它可以追踪 TCP 连接的建立、数据传输和关闭过程,并提供有关连接持续时间、传输的字节数等详细信息。这对于分析和优化网络性能、识别潜在的网络问题以及了解应用程序的网络行为非常有用。原创 2024-03-23 07:47:55 · 431 阅读 · 0 评论