ftrace中有哪些block設備的觀測事件
时间: 2024-01-24 13:20:44 浏览: 33
在ftrace中,可以观测以下block设备的事件:
1. block:block_bio_remap:重映射一个bio(即将其分割为更小的bio)
2. block:block_dirty_buffer:将一个脏页标记为脏
3. block:block_getrq:获取一个请求
4. block:block_plug:将请求合并为批处理(batch)
5. block:block_rq_abort:请求被取消
6. block:block_rq_complete:请求已完成
7. block:block_rq_insert:将请求插入队列
8. block:block_rq_issue:请求已被提交给设备
9. block:block_rq_requeue:请求重新加入队列
10. block:block_rq_remove:从队列中删除请求
11. block:block_rq_resurrect:请求被重新唤醒
12. block:block_softirq_done:softirq处理完成
13. block:block_split:将一个bio分割为更小的部分
14. block:block_touch_buffer:将一个缓冲区标记为已使用
15. block:block_unplug:将所有请求提交给设备
以上是一些常见的block设备观测事件,但不是全部。具体观测事件可以通过ftrace手册进行查询。
相关问题
如何使用ftrace觀測所有的block事件呢
你可以使用以下步骤来使用ftrace观测所有的block事件:
1. 确保你的内核已启用了CONFIG_BLK_DEV_IO_TRACE选项。
2. 打开终端并用root用户登录。
3. 进入/sys/kernel/debug/tracing目录。
4. 将可用事件列表写入可用事件文件:
```
echo block:block_rq_issue > available_events
```
5. 将要监视的事件添加到跟踪器中:
```
echo 1 > events/block/block_rq_issue/enable
```
6. 打开ftrace,开始跟踪:
```
echo 1 > tracing_on
```
7. 执行你要测试的操作。
8. 关闭ftrace:
```
echo 0 > tracing_on
```
9. 查看跟踪结果:
```
cat trace
```
如果你想要更详细的输出,可以使用以下命令:
```
cat trace | grep "block_rq"
```
这将仅显示与块I/O相关的事件。
注意:ftrace需要root权限才能使用,并且跟踪期间会产生大量的数据,因此在跟踪完成后,最好将跟踪器关闭以减少系统负载。
android 中如何對block device進行trace
在 Android 中,可以使用 ftrace 工具来跟踪块设备的活动。ftrace 是 Linux 内核自带的跟踪工具,可以用来捕获内核的各种活动,包括块设备的 I/O 操作。
下面是在 Android 中使用 ftrace 跟踪块设备的步骤:
1. 确认内核支持 ftrace:
在 Android 设备上运行以下命令:
```
adb shell cat /proc/config.gz | gunzip | grep CONFIG_FTRACE
```
如果输出中包含 `CONFIG_FTRACE=y`,则说明内核支持 ftrace。
2. 启用 ftrace:
使用以下命令启用 ftrace:
```
adb shell "echo 1 > /sys/kernel/debug/tracing/tracing_on"
```
3. 选择要跟踪的事件:
使用以下命令选择要跟踪的事件:
```
adb shell "echo 'block:block_rq_issue' > /sys/kernel/debug/tracing/set_event"
```
这里选择的是 `block_rq_issue` 事件,表示块设备的请求被提交到队列中。
4. 查看跟踪结果:
使用以下命令查看跟踪结果:
```
adb shell "cat /sys/kernel/debug/tracing/trace"
```
这里输出的是块设备请求的相关信息,包括设备名称、请求类型、块偏移量等。
注意:使用 ftrace 可能会对系统性能产生一定影响,因此在生产环境中谨慎使用。