Linux学习资料之Linux内核跟踪:syscall tracer(1)
- 格式:pptx
- 大小:270.31 KB
- 文档页数:29


Itrace跟踪进程调用库函数参数选项-linux系统学习心得
Itrace能够跟踪进程的库函数调用,它会显现出调用了哪个库函数,而strace则是跟踪进程的每个系统调用。
随着Linux运维技术的发展,各企业对于Linux运维工程师人才的需求也是逐渐增加,学习Linux的人们越来越多。
学习Linux运维技术Linux命令至关重要。
那么众多Linux运维命令中,Itrace跟踪进程调用库函数参数选项有什么?
Itrace命令参数选项说明介绍:
-c 统计库函数每次调用的时间,最后程序退出时打印摘要。
-C 解码低級别名称(内核级)为用户级名称。
-d 打印调试信息。
-e expr 输出过滤器,通过表达式,可以过滤掉你不想要的输出。
-e printf 表示只查看printf函数调。
-e!printf 表示查看除printf函数以外的所有函数调用。
-f 跟踪子进程。
-o flename 将ltrace的输出写入文件filename。
-p pid 指定要跟踪的进程pid。
-r 输出每一个调用的相对时间。
-S 显示系统调用。
-t 在输出中的每一行前加上时间信息。
-tt 在输出中的每一行前加上时间信息,精确到微秒。
-ttt 在输出中的每一行前加上时间信息,精确到微秒,而且时间表示为UNIX时间戳。
-T 显示每次调用所花费的时间。
-u username以username的UID和GID执行所跟踪的命令。
linux trace point原理Linux trace point是一种轻量级的事件追踪机制,它使用动态跟踪技术和内核模块化机制,可以在运行时动态地向代码中插入跟踪点。
跟踪点可以是函数入口、函数返回、变量赋值、系统调用、内核事件等。
通过触发跟踪点,可以收集运行时的信息,如函数调用路径、参数传递、返回值等,以及系统性能指标,如CPU、内存、磁盘、网络等的使用情况。
跟踪点是由内核模块动态注册的,其注册方式类似于设备驱动程序的注册方式。
内核模块定义一个tracepoint宏,该宏包含跟踪点名称、参数类型、跟踪点处理函数等信息。
在模块初始化函数中,调用tracepoint_probe_register函数注册跟踪点,该函数返回一个probe标识符,用于后续开启和关闭跟踪。
跟踪点的处理函数是用户自定义的函数,用于处理跟踪点触发后的操作,如打印跟踪信息、收集性能数据等。
处理函数的参数与跟踪点的参数类型对应,可以通过访问参数的方式获取跟踪点的信息。
跟踪点的开启和关闭是基于probe标识符进行的。
调用tracepoint_probe_enable函数开启跟踪点,调用tracepoint_probe_disable函数关闭跟踪点。
当跟踪点触发时,处理函数会被调用,如果跟踪点未开启,则处理函数不会被调用。
跟踪点可以被多个内核模块注册和开启,在跟踪点触发时,所有开启的跟踪点的处理函数都会被调用。
这使得跨模块的信息传递和协作成为可能。
同时,跟踪点也可以被多个线程并发地触发,在处理函数中需要考虑线程安全性和并发性。
Linux trace point提供了一种低开销、高效率、可扩展的系统跟踪机制,它可以帮助开发人员快速定位和解决应用程序和内核的性能问题。
使用trace-cmd、perf等工具,可以方便地收集、分析和可视化跟踪信息。
目前,Linux trace point已经得到了广泛的应用和发展,成为Linux内核的重要功能之一。
tracerftrace笔记(1)——介绍与使⽤1.Ftrace简介Ftrace 的设计⽬标简单,本质上是⼀种静态代码插装技术,不需要⽀持某种编程接⼝让⽤户⾃定义 trace ⾏为。
静态代码插装技术更加可靠,不会因为⽤户的不当使⽤⽽导致内核崩溃。
ftrace 的作⽤是帮助开发⼈员了解 Linux 内核的运⾏时⾏为,以便进⾏故障调试或性能分析。
如今 ftrace 已经成为⼀个 framework,采⽤ plugin 的⽅式⽀持开发⼈员添加更多种类的 trace 功能。
ftrace 代码量很⼩,稳定可靠。
2.⽬前已经⽀持的 tracer 包括:(1) Function tracer 和 Function graph tracer: 跟踪函数调⽤。
(2) Schedule switch tracer: 跟踪进程调度情况。
(3) Wakeup tracer:跟踪进程的调度延迟,即⾼优先级进程从进⼊ ready 状态到获得 CPU 的延迟时间。
该 tracer 只针对实时进程。
(4) Irqsoff tracer:当中断被禁⽌时,系统⽆法相应外部事件,⽐如键盘和⿏标,时钟也⽆法产⽣ tick 中断。
这意味着系统响应延迟,irqsoff 这个 tracer 能够跟踪并记录内核中哪些函数禁⽌了中断,对于其中中断禁⽌时间最长的,irqsoff 将在 log ⽂件的第⼀⾏标⽰出来,从⽽使开发⼈员可以迅速定位造成响应延迟的罪魁祸⾸。
(5) Preemptoff tracer:和前⼀个 tracer 类似,preemptoff tracer 跟踪并记录禁⽌内核抢占的函数,并清晰地显⽰出禁⽌抢占时间最长的内核函数。
(6) Preemptirqsoff tracer: 同上,跟踪和记录禁⽌中断或者禁⽌抢占的内核函数,以及禁⽌时间最长的函数。
(7) Branch tracer: 跟踪内核程序中的 likely/unlikely 分⽀预测命中率情况。
traceroute用法 linuxTraceroute是一种用于跟踪网络数据包传输路径的命令行工具,它可以帮助用户了解数据包在传输过程中所经过的路由器和网络节点。
在Linux系统中,traceroute命令属于网络工具的一部分,通常在终端中使用。
一、基本用法1. 命令格式:traceroute [目标地址或域名]2. 注意事项:在执行traceroute命令之前,请确保您具有足够的权限,以便能够查看其他计算机的路由信息。
3. 输出说明:traceroute命令会输出一系列的IP地址和延迟(以毫秒为单位),这些信息显示了数据包从本地计算机到目标计算机的传输路径。
二、高级用法1. 使用traceroute ping:您可以使用traceroute命令来模拟ping操作,以检查目标计算机是否在线并响应。
只需将traceroute的输出与ping命令的输出进行比较即可。
2. 使用traceroute追踪防火墙:当您需要了解防火墙或路由器如何处理网络流量时,可以使用traceroute来追踪数据包的传输路径。
通过观察延迟和跳数的变化,您可以了解哪些网络设备正在阻止或过滤流量。
3. 使用traceroute分析网络拥塞:通过比较不同时间段内traceroute的输出,您可以了解网络中是否存在拥塞或延迟增加的情况。
这有助于您更好地了解您的网络环境和性能。
4. 使用traceroute限制数据包大小:您可以使用traceroute命令来测试目标计算机上各种数据包大小的性能。
通过观察丢包率和延迟,您可以了解目标计算机在不同数据包大小下的表现。
三、进阶技巧1. 使用traceroute追踪IPv6地址:traceroute命令也支持IPv6地址。
如果您需要追踪IPv6流量,请使用带有IPv6地址的目标参数。
2. 使用其他工具配合traceroute:除了单独使用traceroute 外,您还可以与其他网络工具配合使用,如mtr、tracepath和ping 等,以获得更全面的网络性能信息。