- 博客(823)
- 资源 (44)
- 收藏
- 关注
原创 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
原创 5.85 BCC工具之tcprtt.py解读
tcprtt工具通过追踪TCP的RTT(往返时间)来分析网络质量,进而帮助我们区分网络延迟问题是由用户进程还是物理网络引起的。它可以用于测量和分析TCP连接的往返时间(RTT)。RTT是衡量网络性能的关键指标之一,它表示从发送一个数据包到接收到该数据包的确认所需的时间。通过测量RTT,可以了解网络连接的延迟情况,这对于诊断网络问题、优化网络性能以及确保应用程序的响应性至关重要。tcprtt工具通过在内核级别跟踪TCP数据包的发送和接收来计算RTT。
2024-03-24 07:55:04 494
原创 5.84 BCC工具之tcpretrans.py解读
tcpretrans工具追踪内核TCP重传函数,以显示这些重传的详细信息。它专门用于追踪TCP重传事件。在网络通信中,重传是由于数据包丢失、损坏或延迟到达而需要重新发送的情况。tcpretrans通过利用Linux内核中的BPF(Berkeley Packet Filter)机制,能够实时捕获和分析这些重传事件,帮助开发者和网络管理员诊断网络问题、优化网络性能。
2024-03-23 07:48:37 648
原创 5.83 BCC工具之tcplife.py解读
tcplife工具统计了在追踪过程中打开和关闭的 TCP 会话。tcplife工具能够显示 TCP 会话的生命周期和吞吐量统计。它可以追踪 TCP 连接的建立、数据传输和关闭过程,并提供有关连接持续时间、传输的字节数等详细信息。这对于分析和优化网络性能、识别潜在的网络问题以及了解应用程序的网络行为非常有用。
2024-03-23 07:47:55 431
原创 5.81 BCC工具之tcpconnlat.py解读
tcpconnlat工具追踪执行活动TCP连接的内核函数(例如,通过connect()系统调用),并显示本地测量的连接延迟(时间):从发送SYN到响应数据包的时间。
2024-03-22 07:14:46 628
原创 5.80 BCC工具之tcpconnect.py解读
tcpconnect工具追踪执行活动TCP连接的内核函数(例如,通过connect()系统调用;accept()是被动连接)。
2024-03-22 07:14:21 448
原创 5.79 BCC工具之tcpaccept.py解读
tcpaccept工具用于追踪接受TCP套接字连接的内核函数(例如,通过accept()函数实现的被动连接;不是connect()函数)。
2024-03-21 07:33:05 683
原创 5.78 BCC工具之sslsniff.py解读
sslsniff工具可以用来追踪OpenSSL、GnuTLS和NSS的写入/发送和读取/接收函数。传递给这些函数的数据会以纯文本的形式打印出来。
2024-03-21 07:32:35 135
原创 5.77 BCC工具之solisten.py解读
该工具会追踪程序在监听TCP连接时调用的内核函数。它无法查看UDP或UNIX域套接字。当程序实际准备接受连接时,它可以用于动态更新负载均衡器,从而避免在初始化过程中出现“停机时间”。
2024-03-20 07:25:17 444
原创 5.75 BCC工具之netqtop.py解读
追踪在数据链路层上执行数据包发送 (xmit_one) 和数据包接收 () 的内核函数。该工具不仅通过指定的网络接口追踪每个数据包,还分别统计发送和接收方向上的 PPS(每秒数据包数)、BPS(每秒位数)和平均数据包大小以及按大小范围分类的数据包数量。结果以表格形式打印输出,可用于了解感兴趣的网络接口上每个队列的流量负载分配情况,以判断是否均衡。整体性能信息则在底部提供。
2024-03-19 07:31:53 444
原创 5.74 BCC工具之bindsnoop.py解读
bindsnoop工具追踪执行套接字绑定的内核函数,也就是追踪IPv4和IPv6的bind()调用,并打印在系统调用之前设置的可能会影响绑定行为和绑定接口的套接字选项
2024-03-19 07:31:28 286
原创 5.73 BCC工具之gethostlatency.py解读
gethostlatency是一个网络性能分析工具。它用于追踪主机名查找调用(getaddrinfo()、gethostbyname() 和 gethostbyname2()),并显示执行查找的 PID 和命令、调用的延迟(持续时间,以毫秒为单位)以及主机字符串。
2024-03-18 06:55:08 294
原创 5.72 BCC工具之wakeuptime.py解读
wakeuptime工具追踪工作在工作队列中的等待情况,并记录工作的排队延迟(时间)分布,当按下 Ctrl-C 时,将其以直方图的形式打印出来。
2024-03-18 06:54:36 199
原创 5.71 BCC工具之wqlat.py解读
wqlat工具统计线程阻塞的时间,并显示执行唤醒操作的线程的堆栈跟踪,以及唤醒进程和目标进程的进程名,以及总的阻塞时间。这个阻塞时间是从一个线程阻塞时开始统计的,直到发送唤醒信号时结束。请注意,这个时间不包括目标线程的一些运行队列延迟,因为目标线程如果需要等待在CPU上的轮次,可能不会立即执行。所有显示的数据,包括堆栈跟踪、进程名和时间,都在内核中使用eBPF映射进行高效汇总。该工具旨在在offcputime之后使用,offcputime显示了直接阻塞的堆栈。
2024-03-17 00:07:08 174
原创 5.70 BCC工具之runqslower.py解读
runqslower工具显示了任务准备运行与之后在CPU上运行之间的高延迟调度时间。该工具需要Linux 4.9+(支持BPF_PROG_TYPE_PERF_EVENT)。
2024-03-17 00:06:46 77
原创 5.69 BCC工具之runqlen.py解读
runqlen工具用于分析和报告运行队列(run queue)的长度,并以直方图的形式展示。它通过在所有CPU上以99赫兹的频率对运行队列长度进行采样来工作。在操作系统中,运行队列是指内核用来管理待执行(runnable)进程的队列。当一个进程准备好执行,但由于某些原因(如CPU资源不足、调度策略等)尚未被分配到CPU上运行时,它就会被放入运行队列中等待。它显示了不同运行队列长度出现的频率,也就是运行队列占用情况,从而帮助开发者了解系统的调度负载情况。
2024-03-16 07:04:59 109
原创 5.68 BCC工具之runqlat.py解读
runqlat工具用于分析和监视运行队列延迟。运行队列是操作系统内核中用于管理待运行进程的数据结构。当进程准备运行时,它们会被添加到运行队列中,然后由调度器选择并在 CPU 上执行。runqlat工具通过测量进程在运行队列中等待的时间,并以直方图的形式展示,它显示了任务等待在CPU上运行的时间。这帮助开发者了解系统调度行为的性能。使用该工具可以帮助我们识别和解决与调度延迟相关的问题。例如,如果发现某个进程或线程在运行队列中等待的时间过长,可能是由于调度器的不公平行为、资源争用或其他原因导致的。
2024-03-16 07:04:38 77
原创 5.67 BCC工具之profile.py解读
profile工具是一个用于追踪程序执行调用流程的强大工具。它通过在定时间隔内对程序的堆栈跟踪进行采样,并记录采样结果的频率。我们通过使用该工具可以确定程序中的瓶颈和热点,进而优化代码以提高性能。
2024-03-15 08:06:11 221
原创 5.66 BCC工具之offwaketime.py解读
offwaketime工具用于追踪和分析 Linux 系统中线程的 Off-CPU 时间,即线程不在 CPU 上执行的时间。特别地,它还关注哪些线程(唤醒者)唤醒了之前处于阻塞或休眠状态的线程。这对于性能分析和调试非常有用,尤其是当你想知道为什么某个线程在一段时间内没有执行时。它可以显示被阻塞和“off-CPU”的内核堆栈跟踪和任务名称,以及唤醒它们的线程的堆栈跟踪和任务名称,以及从它们被阻塞到被唤醒时的总经过时间。这结合了offwaketime和wakeuptime工具的总结。
2024-03-15 08:05:26 374
原创 5.65 BCC工具之offcputime.py解读
此程序显示被阻塞的堆栈跟踪以及它们被阻塞的总时长。它的工作原理是跟踪线程何时被阻塞以及何时返回CPU,同时测量它们被阻塞的时间(也称为“非CPU时间”)和被阻塞的堆栈跟踪以及任务名称。此数据通过内核进行汇总,按唯一的堆栈跟踪和任务名称汇总阻塞时间。
2024-03-14 07:32:28 251
原创 5.64 BCC工具之llcstat.py解读
llcstat用于在系统内跟踪缓存引用和缓存未命中事件,并按 PID 和 CPU 进行统计汇总。这些事件在 uapi/linux/perf_event.h 中定义,并在不同的体系结构上具有不同的含义。对于 x86-64,它们表示 LLC 的未命中和引用。
2024-03-14 07:31:57 191
原创 5.62 BCC工具之cpudist.py解读
cpudist会将任务在CPU上的时间汇总为直方图,显示任务在被取消调度之前在CPU上花费的时间。这提供了有价值的信息,可以指示过度订阅(处理器太少而任务太多)、由于过多上下文切换而产生的开销(例如,多个线程共用的常见锁)、工作负载分布不均、任务过于细化等。默认情况下,通过简单地排除PID 0,CPU的空闲时间被排除在外。另外,同样的选项也可用于汇总任务的离CPU时间,这有助于理解线程被取消调度的频率以及它们在等待I/O、锁、计时器和其他挂起原因上所花费的时间。
2024-03-13 07:50:06 256
原创 5.63 BCC工具之cpuunclaimed.py解读
cpuunclaimed工具用于采样CPU运行队列并计算未被占用的空闲CPU。此工具会采样运行队列的长度,并确定当存在空闲CPU时,仍有线程在等待运行。它会报告系统范围内未被等待线程占用的空闲CPU的百分比。应用程序被绑定到部分而非全部CPU上,并且有可运行的线程无法由于这种配置迁移到其他CPU上。CPU亲和性(CPU affinity):一种优化策略,将线程留在CPU上以保持CPU cache的亲和性,即使这意味着在其他CPU空闲时需要短暂等待。
2024-03-13 07:47:35 358
原创 5.82 BCC工具之tcpdrop.py解读
tcpdrop工具打印被内核丢弃的 TCP 数据包或段的详细信息,包括导致丢弃的内核堆栈跟踪。当网络出现拥堵、资源不足或其他原因导致数据包被内核丢弃时,tcpdrop可以帮助开发者和网络管理员识别并定位问题。该工具通过钩住内核中处理TCP数据包的相关函数,捕获丢弃事件并收集相关信息,如丢弃的TCP数据包的源IP、目的IP、端口号等。此外,它还可以提供内核堆栈跟踪,显示导致丢弃事件的内核函数调用链。
2024-03-12 22:17:19 1388
原创 5.61 BCC工具之syscount.py解读
syscount工具可以总结整个系统或特定进程的syscall计数,并打印可选的延迟信息。它对于一般的工作负载特征描述非常有用。
2024-03-12 07:18:30 348
原创 5.60 BCC工具之softirqs.py解读
软中断是内核中用于处理异步事件的一种机制,它们在特定的时机由内核调度执行,以完成诸如网络接收、磁盘 I/O 完成等任务。softirqs工具用于追踪和分析 Linux 内核中的软中断(softirq)事件。并将计时统计信息高效地存储在内核中。
2024-03-12 07:18:05 243
原创 5.59 BCC工具之ppchcalls.py解读
汇总了整个系统或特定进程的 计数,并提供了可选的延迟信息。它对于一般工作负载的特征描述非常有用。三,运行示例3.1 用法示例3.2 运行示例这些是前10个条目;你可以通过使用-T开关来获取更多内容。在这里,输出表明H_IPI,H_EOI和H_XIRR的hcalls非常常见,紧接着是H_VIO_SIGNAL,H_REMOVE等。默认情况下,ppchcalls会计算整个系统的数量,但我们可以将其指向感兴趣的特定进程:偶尔,hcall(超调用)的计数可能不足以满足需求,你还可能想要知道
2024-03-12 07:17:43 146
原创 5.58 BCC工具之mysqld_qslower.py解读
mysqld_qslower工具用于追踪 MySQL 服务器提供的查询,并打印出那些超过延迟(查询时间)阈值的查询。默认情况下,使用的阈值为 1 毫秒。
2024-03-11 07:18:13 274
原创 5.57 BCC工具之hardirqs.py解读
硬中断是由硬件设备(如网卡、磁盘控制器等)产生的,用于通知操作系统有紧急事件需要处理。正确地管理和响应硬中断对于系统性能至关重要,因为它们直接影响到系统的响应能力和吞吐量。而hardirqs工具用于跟踪硬中断(irqs),并将计时统计信息存储在内核中以提高效率。
2024-03-11 07:17:54 168
原创 5.56 BCC工具之funcslower.py解读
funcslower主要可以显示内核或用户函数调用慢于既定阈值的情况。当基于聚合的工具失败时,它可以用于最后的诊断。
2024-03-10 07:30:06 198
原创 5.55 BCC工具之funcinterval.py解读
eBPF/bcc非常适用于平台性能调优。通过funclatency工具,我们可以分析特定函数的性能,了解该函数的延迟情况。然而,有时性能下降并不是由于函数的延迟,而是函数调用之间的间隔。funcinterval正是为此而生。另外,在平台上进行硬件性能调优时,我们将使用协议分析器来分析性能,但大多数协议分析器都缺乏分布特性。使用协议分析器,你需要花费大量时间来检查每个细节的延迟。通过funcinterval,我们可以利用分布特性节省大量时间。
2024-03-10 07:29:41 138
原创 5.54 BCC工具之dbstat.py解读
dbstat工具用于追踪由 MySQL 或 PostgreSQL 数据库进程执行的查询,并显示查询延迟的直方图。
2024-03-09 06:54:27 164
原创 5.53 BCC工具之dbslower.py解读
dbstat用于追踪由MySQL或PostgreSQL数据库进程执行的查询,并显示查询延迟的直方图。
2024-03-09 06:54:07 346
原创 5.52 BCC工具之dbslower.py解读
dbslower工具用于追踪由 MySQL 或 PostgreSQL 服务器提供的查询,并打印出那些超过延迟(查询时间)阈值的查询。默认情况下,使用的阈值是 1 毫秒。
2024-03-08 07:26:22 485
原创 5.51 BCC工具之slabratetop.py解读
以类似于top命令的实时刷新显示方式,展示从内核内存分配缓存(SLAB 或 SLUB)中的分配速率和总字节数。例如:(注:SLAB 和 SLUB 是 Linux 内核中用于内存管理的两种不同机制,它们都提供了一种方式来缓存和管理小对象的内存分配。
2024-03-08 07:25:59 178
原创 5.50 BCC工具之shmsnoop.py解读
shmsnoop追踪shm*()系统调用。shm*()通常指的是与共享内存(shared memory)相关的系统调用,如shmget()shmat()shmdt(), 和shmctl()等。shmget(): 这个系统调用用于创建或获取一个共享内存段。它接收一个关键字(通常通过ftok()函数生成),共享内存段的大小,以及一些标志位(如IPC_CREAT用于创建新的共享内存段)。如果成功,它返回一个非负整数,即共享内存标识符(shmid);如果失败,则返回-1。shmat()
2024-03-07 07:25:22 247
原创 5.49 BCC工具之rdmaucma.py解读
首先,RDMA UCMA是什么?RDMA UCMA(用户空间连接管理器访问,Userspace Connection Manager Access)是与RDMA(远程直接内存访问,Remote Direct Memory Access)相关的一个概念。RDMA允许在两个或多个计算机之间进行通讯时,直接从一个主机的内存访问另一个主机的内存,而不需要操作系统CPU的参与。这种技术能够大大降低CPU的开销,并提高数据传输的效率。UCMA则是指用户空间的连接管理器访问,它是RDMA在用户空间的一个接口。
2024-03-07 07:24:49 376
原创 5.47 BCC工具之oomkill.py解读
oomkill工具用于跟踪 Linux 的内存溢出(OOM)查杀,并在每行显示一个 OOM 杀死的基本详细信息。
2024-03-06 07:23:34 175
pageowner 解析工具
2022-05-13
SELinux4AndroidO
2018-02-05
recovery_l10n
2015-04-10
解决Android4.3彩信幻灯片中gif格式图片不能正常播放
2014-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人