匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“Blktrace”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
块跟踪器
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{DISPLAYTITLE:块跟踪器}} =块跟踪器= ==文章目的== 本文提供了开始使用Linux工具所需的基本信息:blktrace [1 ](块跟踪器)。 ==简介== : 下表简要介绍了该工具及其可用性,具体取决于软件包: * 是:该工具已经存在(可以使用或激活),也可以在软件包中集成和激活。 * 没有:该工具不存在且无法集成,或者存在但无法在软件包中激活。 {| class="wikitable" !colspan="3" | 工具 |- | 名称 | 类别 | 目的 |- |blktrace |追踪工具 |blktrace [1 ]生成对块设备(SD卡,USB,eMMC ...) 上的I/O流量的跟踪 |- !colspan="3" | STM32MPU嵌入式软件发行版 |- | 入门资料包 | 开发者资料包 | 发行版资料包 |- |没有 |是 |是 |- !colspan="3" | 适用于 Android 的STM32MPU嵌入式软件发行版 |- | 入门资料包 | 开发者资料包 | 发行版资料包 |- |没有 |没有 |是 |} : blktrace工具由三个主要组件组成: * 一个内核 * 在用户空间上记录来自内核的 I/O 跟踪信息的实用程序 * 实用程序来分析和查看跟踪信息。 : blkparse [2 ]也与blktrace关联。它从blktrace实用程序获取原始输出,并将其转换为格式良好且易于阅读的格式。 ==在目标板上安装跟踪和调试工具== : 它包括将blktrace二进制文件放在rootfs中,并修改Linux内核配置。 : 为了使用blktrace,Linux内核配置必须使用Linux内核menuconfig工具激活CONFIG_BLK_DEV_ IO _TRACE: <syntaxhighlight lang="bash"> Symbol: BLK_DEV_IO_TRACE Location: Kernel Hacking ---> [*] Tracers ---> [*] Support for tracing block I/O actions </syntaxhighlight> ===使用STM32MPU嵌入式软件发行版=== : 默认情况下,所有STM32MPU嵌入式软件包中都提供blktrace二进制文件: <syntaxhighlight lang="bash"> Board $> which blktrace /usr/bin/blktrace </syntaxhighlight> : 通过openembedded-core软件包将其集成到weston镜像分发中: openembedded-core/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb 。 <syntaxhighlight lang="bash"> RRECOMMENDS_${PN} = "\ ${PERF} \ trace-cmd \ blktrace \ ${PROFILE_TOOLS_X} \ ${PROFILE_TOOLS_SYSTEMD} \ " </syntaxhighlight> ====入门包==== : 不适用,因为无法更新Linux内核配置。 ====开发人员软件包==== : 要在Linux内核配置中启用CONFIG_BLK_DEV_IO_TRACE,请参考 [https://wiki.st.com/stm32mpu/wiki/Menuconfig_or_how_to_configure_kernel Menuconfig 或如何配置内核]。 本文提供了有关在Developer Package上下文中修改配置和重新编译Linux内核镜像的说明。 ====分发包==== : 要在Linux内核配置中启用CONFIG_BLK_DEV_IO_TRACE,请参考 [https://wiki.st.com/stm32mpu/wiki/Menuconfig_or_how_to_configure_kernel Menuconfig 或如何配置内核]。 本文提供了有关在“分发程序包”上下文中修改配置和重新编译Linux内核镜像的说明。 ===使用适用于 Android 的STM32MPU嵌入式软件=== : 该blktrace二进制是默认不可用的的全部Android STM32MPU嵌入式软件的软件包,所以必须加入。 ====入门包==== : 不适用,因为无法更新Linux内核配置。 ====开发人员软件包==== : 不适用,因为无法更新Linux内核配置。 ====分发包==== : 要在Linux内核配置中启用CONFIG_BLK_DEV_IO_TRACE,请参阅[https://wiki.st.com/stm32mpu/wiki/How_to_customize_kernel_for_Android 如何为Android定制内核]。 本文提供了有关在Android分发包中修改配置并重新编译Linux内核镜像的说明。 : blktrace源代码模块在中可用external/blktrace。 : 编译(确保正确设置了构建环境): <syntaxhighlight lang="bash"> PC $> cd $ANDROID_BUILD_TOP PC $> mma blktrace </syntaxhighlight> : 检查blktrace二进制文件在系统镜像中是否可用: <syntaxhighlight lang="bash"> PC $> ls out/target/product/<BoardId>/system/bin/blktrace </syntaxhighlight> : 将二进制文件推送到远程目标文件系统: <syntaxhighlight lang="bash"> # Remount first the target file system with write access PC $> adb root; adb remount PC $> adb sync </syntaxhighlight> ==使用入门== : 从blktrace开始,跟踪已安装的块设备上的I/O流量(以块设备为例进行说明,该设备 /dev/mmcblk0p6 安装为 /usr/local): <syntaxhighlight lang="bash"> Board $> mount | grep mmcblk /dev/mmcblk0p5 on / type ext4 (rw,relatime,data=ordered) /dev/mmcblk0p4 on /boot type ext4 (rw,relatime,data=ordered) /dev/mmcblk0p6 on /usr/local type ext4 (rw,relatime,data=ordered) </syntaxhighlight> : 在后台启动blktrace工具: <syntaxhighlight lang="bash"> Board $> blktrace -d /dev/mmcblk0p6 & </syntaxhighlight> : 读取 /usr/local 的内容(它生成对关联块设备的读取访问权限): <syntaxhighlight lang="bash"> Board $> ls -la /usr/local </syntaxhighlight> : 将 blktrace 活动放在前台,然后按组合键 Ctrl + C 停止它: <syntaxhighlight lang="bash"> Board $> fg blktrace -d /dev/mmcblk0p6 Board $> <Ctrl-C> ^C=== mmcblk0p6 === CPU 0: 98 events, 5 KiB data CPU 1: 79 events, 4 KiB data Total: 177 events (dropped 0), 9 KiB data </syntaxhighlight> : 注意:以下信息与 Android 发行版相关,因为文件系统为只读,因此必须使用 ADB。 <syntaxhighlight lang="bash"> PC $> adb root; adb remount PC $> adb shell Board $> ... </syntaxhighlight> : 有关blktrace使用的详细指导,请参考手册页[1 ]或帮助信息: <syntaxhighlight lang="bash"> Board $> blktrace --help Usage: blktrace -d <dev> | --dev=<dev> [ -r <debugfs path> | --relay=<debugfs path> ] [ -o <file> | --output=<file>] [ -D <dir> | --output-dir=<dir> [ -w | --stopwatch=] [ -a <action field> | --act-mask=<action field>] [ -A <action mask> | --set-mask=<action mask>] [ -b <size> | --buffer-size] [ -n <number> | --num-sub-buffers=<number>] [ -l | --listen] [ -h <hostname> | --host=<hostname>] [ -p <port number> | --port=<port number>] [ -s | --no-sendfile] [ -I <devs file> | --input-devs=<devs file>] [ -v <version> | --version] [ -V <version> | --version] -d Use specified device. May also be given last after options -r Path to mounted debugfs, defaults to /sys/kernel/debug -o File(s) to send output to -D Directory to prepend to output file names -w Stop after defined time, in seconds -a Only trace specified actions. See documentation -A Give trace mask as a single value. See documentation -b Sub buffer size in KiB (default 512) -n Number of sub buffers (default 4) -l Run in network listen mode (blktrace server) -h Run in network client mode, connecting to the given host -p Network port to use (default 8462) -s Make the network client NOT use sendfile() to transfer data -I Add devices found in <devs file> -v Print program version info -V Print program version info </syntaxhighlight> : 要开始使用 blktrace,您还可以参考 Yocto Project Wiki 页面上的 blktrace [3],其中提供了更多详细信息以及示例。 ==深入学习== ===blkparse的用法=== : 除了在控制台上为用户显示信息之外,blktrace还创建跟踪文件(每个CPU一个),可以使用blkparse查看该文件。这些文件存储在当前路径目录下。 <syntaxhighlight lang="bash">Board $> blkparse mmcblk0p6 Input file mmcblk0p6.blktrace.0 added Input file mmcblk0p6.blktrace.1 added 179,6 0 1 0.000000000 99 P N [jbd2/mmcblk0p5-] 179,6 0 0 0.000337792 0 m N cfq99SN insert_request 179,6 0 0 0.000344292 0 m N cfq99SN add_to_rr 179,6 0 0 0.000366250 0 m N cfq99SN insert_request 179,6 0 0 0.000374792 0 m N cfq99SN insert_request 179,6 0 0 0.000382458 0 m N cfq99SN insert_request 179,6 0 0 0.000390167 0 m N cfq99SN insert_request 179,6 0 2 0.000396625 99 U N [jbd2/mmcblk0p5-] 5 179,6 0 0 0.000452542 0 m N cfq workload slice:150000000 179,6 0 0 0.000460750 0 m N cfq99SN set_active wl_class:0 wl_type:1 179,6 0 0 0.000469083 0 m N cfq99SN dispatch_insert 179,6 0 0 0.000478500 0 m N cfq99SN dispatched a request 179,6 0 0 0.000484583 0 m N cfq99SN activate rq, drv=1 179,6 0 0 0.000747292 0 m N cfq99SN dispatch_insert 179,6 0 0 0.000755042 0 m N cfq99SN dispatched a request 179,6 0 0 0.000759708 0 m N cfq99SN activate rq, drv=2 179,6 0 0 0.004197583 0 m N cfq99SN complete rqnoidle 1 179,6 0 0 0.004206958 0 m N cfq99SN set_slice=120000000 179,6 0 0 0.004231917 0 m N cfq99SN dispatch_insert 179,6 0 0 0.004239208 0 m N cfq99SN dispatched a request 179,6 0 0 0.004243958 0 m N cfq99SN activate rq, drv=2 179,6 0 0 0.006287958 0 m N cfq99SN complete rqnoidle 1 179,6 0 0 0.006305208 0 m N cfq99SN dispatch_insert 179,6 0 0 0.006310542 0 m N cfq99SN dispatched a request 179,6 0 0 0.006315417 0 m N cfq99SN activate rq, drv=2 179,6 0 0 0.008340833 0 m N cfq99SN complete rqnoidle 1 179,6 0 0 0.008359000 0 m N cfq99SN dispatch_insert 179,6 0 0 0.008365083 0 m N cfq99SN dispatched a request 179,6 0 0 0.008370000 0 m N cfq99SN activate rq, drv=2 179,6 0 0 0.011504375 0 m N cfq99SN complete rqnoidle 1 179,6 0 0 0.014671667 0 m N cfq99SN insert_request 179,6 0 0 0.014727458 0 m N cfq99SN complete rqnoidle 1 179,6 0 0 0.014731250 0 m N cfq schedule dispatch 179,6 0 0 0.014808000 0 m N cfq99SN dispatch_insert 179,6 0 0 0.014813875 0 m N cfq99SN dispatched a request 179,6 0 0 0.014819958 0 m N cfq99SN activate rq, drv=1 179,6 0 0 0.017068708 0 m N cfq99SN complete rqnoidle 1 179,6 0 0 0.017078375 0 m N cfq schedule dispatch 179,0 0 3 5.759777419 193 A WS 1706892 + 2 <- (179,6) 32778 179,6 0 4 5.759784878 193 Q WS 1706892 + 2 [jbd2/mmcblk0p6-] 179,6 0 5 5.759849336 193 G WS 1706892 + 2 [jbd2/mmcblk0p6-] 179,6 0 6 5.759854253 193 P N [jbd2/mmcblk0p6-] 179,6 1 1 5.759855044 99 P N [jbd2/mmcblk0p5-] 179,0 0 7 5.759887628 193 A WS 1706894 + 2 <- (179,6) 32780 179,6 0 8 5.759893919 193 Q WS 1706894 + 2 [jbd2/mmcblk0p6-] 179,6 0 9 5.759947753 193 G WS 1706894 + 2 [jbd2/mmcblk0p6-] 179,6 1 0 5.759975503 0 m N cfq99SN insert_request 179,6 1 0 5.759990336 0 m N cfq99SN insert_request 179,6 1 2 5.759999253 99 U N [jbd2/mmcblk0p5-] 2 179,6 0 10 5.760024669 193 I WS 1706892 + 2 [jbd2/mmcblk0p6-] 179,6 0 0 5.760035461 0 m N cfq193SN insert_request 179,6 0 0 5.760041711 0 m N cfq193SN add_to_rr 179,6 0 0 5.760053169 0 m N cfq193SN preempt 179,6 0 0 5.760059253 0 m N cfq99SN slice expired t=1 179,6 0 0 5.760066503 0 m N cfq99SN resid=-5635859836 179,6 0 0 5.760081503 0 m N cfq99SN sl_used=120000000 disp=6 charge=120000000 iops=0 sect=12 179,6 0 11 5.760087294 193 I WS 1706894 + 2 [jbd2/mmcblk0p6-] 179,6 0 0 5.760091586 0 m N cfq193SN insert_request 179,6 0 12 5.760096294 193 U N [jbd2/mmcblk0p6-] 2 179,6 1 0 5.760111211 0 m N cfq workload slice:300000000 179,6 1 0 5.760118086 0 m N cfq193SN set_active wl_class:0 wl_type:1 179,6 1 0 5.760125669 0 m N cfq193SN dispatch_insert 179,6 1 0 5.760133128 0 m N cfq193SN dispatched a request 179,6 1 0 5.760137711 0 m N cfq193SN activate rq, drv=1 179,6 1 3 5.760145253 80 D WS 1706892 + 2 [mmcqd/0] 179,6 1 0 5.760393003 0 m N cfq193SN dispatch_insert 179,6 1 0 5.760399961 0 m N cfq193SN dispatched a request 179,6 1 0 5.760404128 0 m N cfq193SN activate rq, drv=2 179,6 1 4 5.760408211 80 D WS 1706894 + 2 [mmcqd/0] 179,6 1 5 5.764367836 80 C WS 1706892 + 2 [0] 179,6 1 0 5.764403128 0 m N cfq193SN complete rqnoidle 1 179,6 1 0 5.764412461 0 m N cfq193SN set_slice=120000000 179,6 1 0 5.764439169 0 m N cfq193SN slice expired t=0 179,6 1 0 5.764450253 0 m N cfq193SN sl_used=33750 disp=2 charge=33750 iops=0 sect=4 179,6 1 0 5.764456836 0 m N cfq193SN del_from_rr 179,6 1 0 5.764464711 0 m N cfq99SN set_active wl_class:0 wl_type:1 179,6 1 0 5.764470211 0 m N cfq99SN dispatch_insert 179,6 1 0 5.764475669 0 m N cfq99SN dispatched a request 179,6 1 0 5.764479378 0 m N cfq99SN activate rq, drv=2 179,6 1 6 5.767516794 80 C WS 1706894 + 2 [0] 179,6 1 0 5.767546961 0 m N cfq193SN complete rqnoidle 1 179,6 1 0 5.767564836 0 m N cfq99SN dispatch_insert 179,6 1 0 5.767571086 0 m N cfq99SN dispatched a request 179,6 1 0 5.767575628 0 m N cfq99SN activate rq, drv=2 179,0 0 13 5.767654378 193 A FWFS 1706896 + 2 <- (179,6) 32782 179,6 0 14 5.767662669 193 Q WS 1706896 + 2 [jbd2/mmcblk0p6-] 179,6 0 15 5.767726461 193 G WS 1706896 + 2 [jbd2/mmcblk0p6-] 179,6 0 16 5.767734169 193 I WS 1706896 + 2 [jbd2/mmcblk0p6-] 179,6 0 0 5.767744003 0 m N cfq193SN insert_request 179,6 0 0 5.767750253 0 m N cfq193SN add_to_rr 179,6 0 0 5.767760628 0 m N cfq193SN preempt 179,6 0 0 5.767764336 0 m N cfq99SN slice expired t=1 179,6 0 0 5.767770044 0 m N cfq99SN resid=120000000 179,6 0 0 5.767781378 0 m N cfq99SN sl_used=10000000 disp=2 charge=10000000 iops=0 sect=4 179,6 0 0 5.767784378 0 m N cfq99SN del_from_rr 179,6 1 0 5.772038836 0 m N cfq99SN complete rqnoidle 1 179,6 1 0 5.772064253 0 m N cfq193SN set_active wl_class:0 wl_type:1 179,6 1 0 5.772070878 0 m N cfq193SN dispatch_insert 179,6 1 0 5.772077044 0 m N cfq193SN dispatched a request 179,6 1 0 5.772081878 0 m N cfq193SN activate rq, drv=2 179,6 1 7 5.772085086 80 D WS 1706896 + 2 [mmcqd/0] 179,6 1 0 5.774473336 0 m N cfq99SN insert_request 179,6 1 0 5.774481419 0 m N cfq99SN add_to_rr 179,6 1 0 5.774490461 0 m N cfq99SN preempt 179,6 1 0 5.774496211 0 m N cfq193SN slice expired t=1 179,6 1 0 5.774502586 0 m N cfq193SN resid=120000000 179,6 1 0 5.774515044 0 m N cfq193SN sl_used=10000000 disp=1 charge=10000000 iops=0 sect=2 179,6 1 0 5.774519128 0 m N cfq193SN del_from_rr 179,6 1 0 5.774558711 0 m N cfq99SN complete rqnoidle 1 179,6 1 0 5.774577211 0 m N cfq99SN set_active wl_class:0 wl_type:1 179,6 1 0 5.774583919 0 m N cfq99SN dispatch_insert 179,6 1 0 5.774590253 0 m N cfq99SN dispatched a request 179,6 1 0 5.774595086 0 m N cfq99SN activate rq, drv=2 179,6 1 8 5.777926544 80 C WS 1706896 + 2 [0] 179,6 1 0 5.777956461 0 m N cfq193SN complete rqnoidle 1 179,6 1 0 5.782932794 0 m N cfq99SN complete rqnoidle 1 179,6 1 0 5.782943419 0 m N cfq99SN set_slice=120000000 179,6 1 0 5.782949919 0 m N cfq schedule dispatch CPU0 (mmcblk0p6): Reads Queued: 0, 0KiB Writes Queued: 3, 3KiB Read Dispatches: 0, 0KiB Write Dispatches: 0, 0KiB Reads Requeued: 0 Writes Requeued: 0 Reads Completed: 0, 0KiB Writes Completed: 0, 0KiB Read Merges: 0, 0KiB Write Merges: 0, 0KiB Read depth: 0 Write depth: 2 IO unplugs: 2 Timer unplugs: 0 CPU1 (mmcblk0p6): Reads Queued: 0, 0KiB Writes Queued: 0, 0KiB Read Dispatches: 0, 0KiB Write Dispatches: 3, 3KiB Reads Requeued: 0 Writes Requeued: 0 Reads Completed: 0, 0KiB Writes Completed: 3, 3KiB Read Merges: 0, 0KiB Write Merges: 0, 0KiB Read depth: 0 Write depth: 2 IO unplugs: 1 Timer unplugs: 0 Total (mmcblk0p6): Reads Queued: 0, 0KiB Writes Queued: 3, 3KiB Read Dispatches: 0, 0KiB Write Dispatches: 3, 3KiB Reads Requeued: 0 Writes Requeued: 0 Reads Completed: 0, 0KiB Writes Completed: 3, 3KiB Read Merges: 0, 0KiB Write Merges: 0, 0KiB IO unplugs: 3 Timer unplugs: 0 Throughput (R/W): 0KiB/s / 0KiB/s Events (mmcblk0p6): 118 entries Skips: 0 f orward (0 - 0.0%) </syntaxhighlight> : 注意:以下信息与 Android 发行版相关 blkparse 源代码模块在 external/blktrace 中可用 :: 编译(确保正确设置了构建环境): <syntaxhighlight lang="bash"> PC $> cd $ANDROID_BUILD_TOP PC $> mma blkparse </syntaxhighlight> :: 检查blkparse二进制文件在系统镜像中是否可用: <syntaxhighlight lang="bash"> PC $> ls out/target/product/<BoardId>/system/bin/blkparse </syntaxhighlight> :: 将二进制文件推送到远程目标文件系统: <syntaxhighlight lang="bash"> # Remount first the target file system with write access PC $> adb root; adb remount PC $> adb sync </syntaxhighlight> ===ftrace用法=== : 一旦Linux内核配置 CONFIG_BLK_DEV_ IO _TRACE 是激活的,块层(BLK)动作可以通过使用被追踪 ftrace: : 在这种情况下,只能为 ftrace 配置 blk 跟踪器,如以下命令的结果所示: <syntaxhighlight lang="bash"> Board $> mount -t tracefs nodev /sys/kernel/tracing Board $> cat /sys/kernel/tracing/available_tracers blk nop </syntaxhighlight> : 为了获得更多的 ftrace 跟踪器(例如"function”),必须通过分发程序包激活其他 Linux 内核配置选项,如 ftrace 文章中所述。 通过以 /usr/local 读取内容为例(挂载点为mcblk0p6): <syntaxhighlight lang="bash"> Board $> echo 1 > /sys/block/mmcblk0/mmcblk0p6/trace/enable Board $> echo blk > /sys/kernel/tracing/current_tracer Board $> ls -la /usr/local Board $> cat /sys/kernel/tracing/trace_pipe </syntaxhighlight> <syntaxhighlight lang="bash"> jbd2/mmcblk0p5--97 [001] ...1 100.412943: 179,0 A WS 415902 + 2 <- (179,5) 278652 jbd2/mmcblk0p6--196 [000] ...1 100.412943: 179,0 A WS 1706892 + 2 <- (179,6) 32778 jbd2/mmcblk0p5--97 [001] ...1 100.412974: 179,0 Q WS 415902 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p6--196 [000] ...1 100.412987: 179,0 Q WS 1706892 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p5--97 [001] ...1 100.413012: 179,0 G WS 415902 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p6--196 [000] ...1 100.413012: 179,0 G WS 1706892 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p6--196 [000] ...1 100.413018: 179,0 P N [jbd2/mmcblk0p6-] jbd2/mmcblk0p5--97 [001] ...1 100.413019: 179,0 P N [jbd2/mmcblk0p5-] jbd2/mmcblk0p5--97 [001] ...1 100.413034: 179,0 A WS 415904 + 2 <- (179,5) 278654 jbd2/mmcblk0p6--196 [000] ...1 100.413034: 179,0 A WS 1706894 + 2 <- (179,6) 32780 jbd2/mmcblk0p5--97 [001] ...1 100.413040: 179,0 Q WS 415904 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p6--196 [000] ...1 100.413040: 179,0 Q WS 1706894 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p5--97 [001] ...1 100.413054: 179,0 G WS 415904 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p6--196 [000] ...1 100.413056: 179,0 G WS 1706894 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p6--196 [000] ...2 100.413071: 179,0 I WS 1706892 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p6--196 [000] ...1 100.413092: 179,0 m N cfq196SN insert_request jbd2/mmcblk0p6--196 [000] ...2 100.413104: 179,0 I WS 1706894 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p6--196 [000] ...1 100.413111: 179,0 m N cfq196SN insert_request jbd2/mmcblk0p6--196 [000] ...2 100.413118: 179,0 U N [jbd2/mmcblk0p6-] 2 jbd2/mmcblk0p5--97 [001] ...2 100.413135: 179,0 I WS 415902 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p5--97 [001] ...1 100.413144: 179,0 m N cfq97SN insert_request jbd2/mmcblk0p5--97 [001] ...1 100.413151: 179,0 m N cfq97SN add_to_rr jbd2/mmcblk0p5--97 [001] ...1 100.413162: 179,0 m N cfq97SN preempt jbd2/mmcblk0p5--97 [001] ...1 100.413168: 179,0 m N cfq196SN slice expired t=1 jbd2/mmcblk0p5--97 [001] ...1 100.413176: 179,0 m N cfq196SN resid=-32494149849 jbd2/mmcblk0p5--97 [001] ...1 100.413191: 179,0 m N cfq196SN sl_used=120000000 disp=1 charge=120000000 iops=0 sect=2 jbd2/mmcblk0p5--97 [001] ...2 100.413199: 179,0 I WS 415904 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p5--97 [001] ...1 100.413205: 179,0 m N cfq97SN insert_request jbd2/mmcblk0p5--97 [001] ...2 100.413211: 179,0 U N [jbd2/mmcblk0p5-] 2 mmcqd/0-80 [000] ...1 100.413224: 179,0 m N cfq workload slice:200000000 mmcqd/0-80 [000] ...1 100.413232: 179,0 m N cfq97SN set_active wl_class:0 wl_type:1 mmcqd/0-80 [000] ...1 100.413241: 179,0 m N cfq97SN dispatch_insert mmcqd/0-80 [000] ...1 100.413250: 179,0 m N cfq97SN dispatched a request mmcqd/0-80 [000] ...1 100.413256: 179,0 m N cfq97SN activate rq, drv=1 mmcqd/0-80 [000] ...2 100.413261: 179,0 D WS 415902 + 2 [mmcqd/0] mmcqd/0-80 [000] ...1 100.413515: 179,0 m N cfq97SN dispatch_insert mmcqd/0-80 [000] ...1 100.413524: 179,0 m N cfq97SN dispatched a request mmcqd/0-80 [000] ...1 100.413530: 179,0 m N cfq97SN activate rq, drv=2 mmcqd/0-80 [000] ...2 100.413534: 179,0 D WS 415904 + 2 [mmcqd/0] mmcqd/0-80 [000] ...1 100.417441: 179,0 C WS 415902 + 2 [0] mmcqd/0-80 [000] ...1 100.417482: 179,0 m N cfq97SN complete rqnoidle 1 mmcqd/0-80 [000] ...1 100.417494: 179,0 m N cfq97SN set_slice=120000000 mmcqd/0-80 [000] ...1 100.417526: 179,0 m N cfq97SN slice expired t=0 mmcqd/0-80 [000] ...1 100.417539: 179,0 m N cfq97SN sl_used=40584 disp=2 charge=40584 iops=0 sect=4 mmcqd/0-80 [000] ...1 100.417545: 179,0 m N cfq97SN del_from_rr mmcqd/0-80 [000] ...1 100.417555: 179,0 m N cfq196SN set_active wl_class:0 wl_type:1 mmcqd/0-80 [000] ...1 100.417561: 179,0 m N cfq196SN dispatch_insert mmcqd/0-80 [000] ...1 100.417569: 179,0 m N cfq196SN dispatched a request mmcqd/0-80 [000] ...1 100.417575: 179,0 m N cfq196SN activate rq, drv=2 mmcqd/0-80 [000] ...2 100.417579: 179,0 D WS 1706892 + 2 [mmcqd/0] mmcqd/0-80 [000] ...1 100.419353: 179,0 C WS 415904 + 2 [0] mmcqd/0-80 [000] ...1 100.419380: 179,0 m N cfq97SN complete rqnoidle 1 mmcqd/0-80 [000] ...1 100.419393: 179,0 m N cfq196SN dispatch_insert mmcqd/0-80 [000] ...1 100.419400: 179,0 m N cfq196SN dispatched a request mmcqd/0-80 [000] ...1 100.419405: 179,0 m N cfq196SN activate rq, drv=2 mmcqd/0-80 [000] ...2 100.419409: 179,0 D WS 1706894 + 2 [mmcqd/0] jbd2/mmcblk0p5--97 [001] ...1 100.419431: 179,0 A FWFS 415906 + 2 <- (179,5) 278656 jbd2/mmcblk0p5--97 [001] ...1 100.419440: 179,0 Q WS 415906 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p5--97 [001] ...1 100.419465: 179,0 G WS 415906 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p5--97 [001] ...2 100.419475: 179,0 I WS 415906 + 2 [jbd2/mmcblk0p5-] jbd2/mmcblk0p5--97 [001] ...1 100.419484: 179,0 m N cfq97SN insert_request jbd2/mmcblk0p5--97 [001] ...1 100.419491: 179,0 m N cfq97SN add_to_rr jbd2/mmcblk0p5--97 [001] ...1 100.419502: 179,0 m N cfq97SN preempt jbd2/mmcblk0p5--97 [001] ...1 100.419507: 179,0 m N cfq196SN slice expired t=1 jbd2/mmcblk0p5--97 [001] ...1 100.419514: 179,0 m N cfq196SN resid=120000000 jbd2/mmcblk0p5--97 [001] ...1 100.419526: 179,0 m N cfq196SN sl_used=10000000 disp=2 charge=10000000 iops=0 sect=4 jbd2/mmcblk0p5--97 [001] ...1 100.419530: 179,0 m N cfq196SN del_from_rr mmcqd/0-80 [000] ...1 100.424339: 179,0 C WS 1706892 + 2 [0] mmcqd/0-80 [000] ...1 100.424367: 179,0 m N cfq196SN complete rqnoidle 1 mmcqd/0-80 [000] ...1 100.424388: 179,0 m N cfq97SN set_active wl_class:0 wl_type:1 mmcqd/0-80 [000] ...1 100.424396: 179,0 m N cfq97SN dispatch_insert mmcqd/0-80 [000] ...1 100.424404: 179,0 m N cfq97SN dispatched a request mmcqd/0-80 [000] ...1 100.424409: 179,0 m N cfq97SN activate rq, drv=2 mmcqd/0-80 [000] ...2 100.424413: 179,0 D WS 415906 + 2 [mmcqd/0] mmcqd/0-80 [000] ...1 100.427349: 179,0 C WS 1706894 + 2 [0] mmcqd/0-80 [000] ...1 100.427382: 179,0 m N cfq196SN complete rqnoidle 1 jbd2/mmcblk0p6--196 [000] ...1 100.427441: 179,0 A FWFS 1706896 + 2 <- (179,6) 32782 jbd2/mmcblk0p6--196 [000] ...1 100.427458: 179,0 Q WS 1706896 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p6--196 [000] ...1 100.427482: 179,0 G WS 1706896 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p6--196 [000] ...2 100.427492: 179,0 I WS 1706896 + 2 [jbd2/mmcblk0p6-] jbd2/mmcblk0p6--196 [000] ...1 100.427499: 179,0 m N cfq196SN insert_request jbd2/mmcblk0p6--196 [000] ...1 100.427505: 179,0 m N cfq196SN add_to_rr jbd2/mmcblk0p6--196 [000] ...1 100.427516: 179,0 m N cfq196SN preempt jbd2/mmcblk0p6--196 [000] ...1 100.427521: 179,0 m N cfq97SN slice expired t=1 jbd2/mmcblk0p6--196 [000] ...1 100.427528: 179,0 m N cfq97SN resid=120000000 jbd2/mmcblk0p6--196 [000] ...1 100.427545: 179,0 m N cfq97SN sl_used=10000000 disp=1 charge=10000000 iops=0 sect=2 jbd2/mmcblk0p6--196 [000] ...1 100.427550: 179,0 m N cfq97SN del_from_rr mmcqd/0-80 [000] ...1 100.427598: 179,0 m N cfq196SN set_active wl_class:0 wl_type:1 mmcqd/0-80 [000] ...1 100.427605: 179,0 m N cfq196SN dispatch_insert mmcqd/0-80 [000] ...1 100.427612: 179,0 m N cfq196SN dispatched a request mmcqd/0-80 [000] ...1 100.427618: 179,0 m N cfq196SN activate rq, drv=2 mmcqd/0-80 [000] ...2 100.427622: 179,0 D WS 1706896 + 2 [mmcqd/0] mmcqd/0-80 [000] ...1 100.431133: 179,0 C WS 415906 + 2 [0] mmcqd/0-80 [000] ...1 100.431164: 179,0 m N cfq97SN complete rqnoidle 1 mmcqd/0-80 [000] ...1 100.434921: 179,0 C WS 1706896 + 2 [0] mmcqd/0-80 [000] ...1 100.434951: 179,0 m N cfq196SN complete rqnoidle 1 mmcqd/0-80 [000] ...1 100.434962: 179,0 m N cfq196SN set_slice=120000000 mmcqd/0-80 [000] ...1 100.434969: 179,0 m N cfq schedule dispatch kworker/u4:1-65 [001] ...1 101.612916: 179,0 A WM 137922 + 2 <- (179,5) 672 kworker/u4:1-65 [001] ...1 101.612949: 179,0 Q WM 137922 + 2 [kworker/u4:1] kworker/u4:1-65 [001] ...1 101.613001: 179,0 G WM 137922 + 2 [kworker/u4:1] kworker/u4:1-65 [001] ...1 101.613012: 179,0 P N [kworker/u4:1] kworker/u4:1-65 [001] ...1 101.613071: 179,0 A WM 1674662 + 2 <- (179,6) 548 kworker/u4:1-65 [001] ...1 101.613077: 179,0 Q WM 1674662 + 2 [kworker/u4:1] kworker/u4:1-65 [001] ...1 101.613093: 179,0 G WM 1674662 + 2 [kworker/u4:1] kworker/u4:1-65 [001] ...2 101.613119: 179,0 I WM 137922 + 2 [kworker/u4:1] kworker/u4:1-65 [001] ...1 101.613131: 179,0 m N cfq200A insert_request kworker/u4:1-65 [001] ...1 101.613139: 179,0 m N cfq200A add_to_rr kworker/u4:1-65 [001] ...1 101.613152: 179,0 m N cfq200A preempt kworker/u4:1-65 [001] ...1 101.613157: 179,0 m N cfq196SN slice expired t=1 kworker/u4:1-65 [001] ...1 101.613164: 179,0 m N cfq196SN resid=-1058203000 kworker/u4:1-65 [001] ...1 101.613179: 179,0 m N cfq196SN sl_used=120000000 disp=1 charge=120000000 iops=0 sect=2 kworker/u4:1-65 [001] ...1 101.613185: 179,0 m N cfq196SN del_from_rr kworker/u4:1-65 [001] ...2 101.613198: 179,0 I WM 1674662 + 2 [kworker/u4:1] kworker/u4:1-65 [001] ...1 101.613206: 179,0 m N cfq200A insert_request kworker/u4:1-65 [001] ...2 101.613214: 179,0 U N [kworker/u4:1] 2 mmcqd/0-80 [000] ...1 101.613238: 179,0 m N cfq workload slice:40000000 mmcqd/0-80 [000] ...1 101.613248: 179,0 m N cfq200A set_active wl_class:0 wl_type:0 mmcqd/0-80 [000] ...1 101.613258: 179,0 m N cfq200A dispatch_insert mmcqd/0-80 [000] ...1 101.613267: 179,0 m N cfq200A dispatched a request mmcqd/0-80 [000] ...1 101.613274: 179,0 m N cfq200A activate rq, drv=1 mmcqd/0-80 [000] ...2 101.613280: 179,0 D WM 1674662 + 2 [mmcqd/0] mmcqd/0-80 [000] ...1 101.613511: 179,0 m N cfq200A dispatch_insert mmcqd/0-80 [000] ...1 101.613520: 179,0 m N cfq200A dispatched a request mmcqd/0-80 [000] ...1 101.613525: 179,0 m N cfq200A activate rq, drv=2 mmcqd/0-80 [000] ...2 101.613529: 179,0 D WM 137922 + 2 [mmcqd/0] mmcqd/0-80 [000] ...1 101.618520: 179,0 C WM 1674662 + 2 [0] mmcqd/0-80 [000] ...1 101.618576: 179,0 m N cfq200A complete rqnoidle 0 mmcqd/0-80 [000] ...1 101.618586: 179,0 m N cfq200A set_slice=40000000 mmcqd/0-80 [000] ...1 101.623185: 179,0 C WM 137922 + 2 [0] mmcqd/0-80 [000] ...1 101.623215: 179,0 m N cfq200A complete rqnoidle 0 mmcqd/0-80 [000] ...1 101.623221: 179,0 m N cfq schedule dispatch </syntaxhighlight> : 注意:以下信息与 Android 发行版相关,因为文件系统为只读,因此必须使用ADB。 <syntaxhighlight lang="bash"> PC $> adb root; adb remount PC $> adb shell Board $> ... </syntaxhighlight> ==参考== : 1. [https://linux.die.net/man/8/blktrace https://linux.die.net/man/8/blktrace] : 2. [https://linux.die.net/man/1/blkparse https://linux.die.net/man/1/blkparse] : 3. [https://wiki.yoctoproject.org/wiki/Tracing_and_Profiling#blktrace https://wiki.yoctoproject.org/wiki/Tracing_and_Profiling#blktrace] * 有用的外部链接 {| class="wikitable" |- ! 文件链接 !! 文件类型 !! 描述 |- | [https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git blktrace 工具源代码,包括用户空间工具] || 资料来源 || blktrace来源git |- | [https://www.mimuw.edu.pl/~lichota/09-10/Optymalizacja-open-source/Materialy/10%20-%20Dysk/gelato_ICE06apr_blktrace_brunelle_hp.pdf blktrace 演示] || 介绍 || Alan D. Brunelle的演讲 |} [[Category:Linux_Operating_System]] [[Category:Linux_tracing_tools]]
返回至
块跟踪器
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志