Bcc-tools 中文件系统相关工具介绍
  zwmX4WA4Dykt 2023年11月19日 43 0


之前简单介绍过了Linux下的工具集 bcc-tools,

本次详细的介绍一下和文件系统相关的一些实用工具,以下工具可以快速的帮我们定位文件系统相关问题,比如:

  • 当前系统在读写哪些文件?
  • 哪些文件读写耗时比较长?
  • 哪些进程在频繁创建删除文件?

Bcc-tools 中文件系统相关工具介绍_json


上图为bcc

目录

  • filelife 【文件寿命跟踪】
  • fileslower 【读写慢文件检测】
  • filetop 【文件读写数据量TOP】
  • vfscount 【VFS函数调用次数TOP】
  • vfsstat 【VFS读写检测】
  • xfsslower/ext4slower 【XFS/EXT4 慢文件检测】


filelife 【文件寿命跟踪】

该工具通过跟踪vsf_create()vfs_delete()函数,来检测文件从创建到删除的存活时间。
工具会输出进程ID、线程名称、文件寿命和文件名称。
通过 filelife 我们可以看到哪些线程在频繁创建和删除文件。

TIME     PID    COMM             AGE(s)  FILE
10:07:39 1493   vnode-mgmt       0.05    meta-ver130
10:07:39 1493   vnode-mgmt       0.03    meta-ver130
10:07:39 1493   vnode-mgmt       0.70    00000000000000006878.idx
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.1
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.2
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.3
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.4
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.5
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.6
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.7
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.8
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.9
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.10
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.11
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.12
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.13
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.14
10:07:39 1493   vnode-mgmt       0.01    MANIFEST-000001
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.1
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.2
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.3
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.4
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.1
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.2
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.3
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.4
10:07:39 1493   vnode-mgmt       0.00    MANIFEST-000001
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.1
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.2
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.3
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.4
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.5
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.6
10:07:39 1493   vnode-mgmt       0.00    main.tdb-journal.7

fileslower 【读写慢文件检测】

这个工具用来检测读写耗时长的文件,如果不指定耗时,默认为10ms。

可以通过以下参数指定基础你好ID和耗时,fileslower -p 281933 100

  • D 表示读写动作,R(读),W(写)
Tracing sync read/writes slower than 10 ms
TIME(s)  COMM           TID    D BYTES   LAT(ms) FILENAME
1.417    vnode-merge    281993 R 4096      14.01 v18f19579ver144631.stt
1.877    vnode-merge    281993 R 4096      10.74 v18f19579ver144645.stt
1.891    vnode-merge    281993 R 4096      13.08 v18f19579ver144645.stt
2.164    vnode-merge    281993 R 4096      10.47 v18f19579ver144613.stt
2.202    vnode-merge    281993 R 4096      11.78 v18f19579ver144593.stt
2.968    vnode-merge    281993 R 4096      14.04 v18f19579ver144652.stt
2.981    vnode-merge    281993 R 4096      12.43 v18f19579ver144652.stt
3.318    vnode-merge    281993 R 4096      11.59 v18f19579ver144614.stt
3.334    vnode-merge    281993 R 4096      15.62 v18f19579ver144614.stt
4.659    vnode-merge    281993 R 4096      21.78 v18f19579ver144706.stt
4.669    vnode-merge    281993 R 4096      10.38 v18f19579ver144706.stt
5.312    vnode-merge    281993 R 4096      10.46 v18f19579ver144620.stt
6.025    vnode-merge    281993 R 4096      14.37 v18f19579ver144693.stt
6.191    vnode-merge    281993 R 4096      17.30 v18f19579ver144616.stt
6.209    vnode-merge    281993 R 4096      16.72 v18f19579ver144616.stt

filetop 【文件读写数据量TOP】

该工具用于统计一段时间内读写较高的文件。

  • READS/WRITES 读写次数
  • R_Kb/W_Kb 读写数据量
  • T 文件类型:R(常规文件),S(Socket),O(other)
00:21:41 loadavg: 48.26 48.36 47.02 50/1685 393731

TID    COMM             READS  WRITES R_Kb    W_Kb    T FILE
281992 vnode-merge      407    0      1628    0       R v50f19544ver140873.stt
281966 vnode-merge      0      380    0       1520    R v50f19565ver1724.data
281970 vnode-merge      0      350    0       1400    R v50f19549ver1704.data
281978 vnode-merge      337    0      1348    0       R v50f19569ver131206.stt
281994 vnode-merge      334    0      1336    0       R v50f19540ver140920.stt
281989 vnode-merge      331    0      1324    0       R v50f19568ver136719.stt
281977 vnode-merge      292    0      1168    0       R v50f19574ver75820.stt
281994 vnode-merge      0      289    0       1156    R v50f19540ver1250.data
281972 vnode-merge      286    0      1144    0       R v50f19578ver140918.stt
281992 vnode-merge      0      281    0       1124    R v50f19544ver1250.data
281978 vnode-merge      0      277    0       1108    R v50f19569ver2115.data
281953 vnode-merge      0      262    0       1048    R v50f19557ver1704.data
281968 vnode-merge      0      260    0       1040    R v50f19541ver1250.data
281972 vnode-merge      0      259    0       1036    R v50f19578ver2132.data
281970 vnode-merge      256    0      1024    0       R v50f19549ver130808.stt
281996 vnode-merge      241    0      964     0       R v50f19564ver117468.stt
281961 vnode-merge      237    0      948     0       R v50f19572ver134799.stt
281974 vnode-merge      0      235    0       940     R v50f19556ver1704.data
281980 vnode-merge      0      231    0       924     R v50f19552ver1704.data
281997 vnode-merge      218    0      872     0       R v50f19571ver140943.stt

vfscount 【VFS函数调用次数TOP】

用于统计一段时间内调用vfs_相关函数的次数,并进行排序。
如果命令后不加时间(默认s),需要使用Ctrl-C中止。

Tracing... Ctrl-C to end.
^C
ADDR             FUNC                          COUNT
ffffffffb7c69a71 vfs_rename                        2
ffffffffb7c69471 vfs_create                        2
ffffffffb7c6a351 vfs_unlink                        6
ffffffffb7c617e1 vfs_fstat                        13
ffffffffb7c594e1 vfs_open                         55
ffffffffb7c94311 vfs_statfs                       58
ffffffffb7c61841 vfs_fstatat                      62
ffffffffb7c61761 vfs_getattr                      75
ffffffffb7c5ba91 vfs_read                       1972
ffffffffb7c5bc01 vfs_write                      2507

vfsstat 【VFS读写检测】

统计一段时间时间内 VFS 调用的次数,与vfscount不同,该工具不会输出线程信息,仅对不同的调用进行统计。

TIME         READ/s  WRITE/s CREATE/s   OPEN/s  FSYNC/s
10:09:02:       325      487        0        2        0
10:09:03:       317      485        1        4        0
10:09:04:       226      904       15       26        0
10:09:05:       295      538        2        3        0
10:09:06:       318      478        0        2        0
10:09:07:       338      488        0        5        0
10:09:08:       305      466        2        2        0
10:09:09:        42       96       12       18        0
10:09:10:       334     1009        6       23        0
10:09:11:       695      760        0        6        0
10:09:12:       699      765        0        1        0
10:09:13:       519      647        2       19        0
10:09:14:       331      507        0        1        0
10:09:15:       269      664       14       19        0
10:09:16:       291      820        4       13        0
10:09:17:       337      519        0        0        0
10:09:18:       328      501        0        2        0

xfsslower/ext4slower 【XFS/EXT4 慢文件检测】

统计一段时间内存 XFS/EXT4 文件系统中文件的读写时间。

  • T 文件类型:R(常规文件),S(Socket),O(other)
  • OFF_KB File offset
Tracing XFS operations slower than 10 ms
TIME     COMM           PID    T BYTES   OFF_KB   LAT(ms) FILENAME
10:01:57 vnode-write    1146   S 0       0         566.79 vnode_tmp.json
10:01:57 vnode-write    1146   S 0       0         327.59 vnode_tmp.json
10:01:57 vnode-commit   1146   S 0       0         149.27 00000000000000000000.log
10:01:57 vnode-commit   1146   S 0       0         148.91 00000000000000000000.log
10:01:58 vnode-commit   1146   S 0       0          12.75 v4f1736ver1.stt
10:01:58 vnode-commit   1146   S 0       0          13.99 00000000000000005123.log
10:02:02 vnode-write    1146   S 0       0          12.11 vnode_tmp.json
10:02:02 vnode-commit   1146   S 0       0          12.44 00000000000000005123.log
10:02:02 vnode-commit   1146   S 0       0          10.90 00000000000000005232.log
10:02:04 vnode-write    1146   W 280053  9300       11.15 00000000000000005232.log
10:02:05 vnode-merge    1146   S 0       0         171.87 v4f1736ver3.head
10:02:05 vnode-merge    1146   S 0       0         304.71 v5f1736ver3.head
10:02:05 vnode-merge    1146   S 0       0          10.30 v4f1736ver3.data
10:02:05 vnode-merge    1146   S 0       0          12.02 v4f1736ver3.sma
10:02:05 vnode-merge    1146   S 0       0          12.38 v5f1736ver3.data
10:02:08 vnode-commit   1146   S 0       0         143.99 00000000000000005232.log
10:02:08 vnode-commit   1146   S 0       0          97.54 00000000000000005240.log
10:02:08 vnode-commit   1146   S 0       0          10.37 v5f1736ver4.stt
10:02:08 vnode-commit   1146   S 0       0          10.48 00000000000000005350.log
10:02:13 vnode-write    1146   S 0       0         796.80 vnode_tmp.json
10:02:13 vnode-write    1146   S 0       0         927.95 vnode_tmp.json
10:02:13 vnode-commit   1146   S 0       0          11.38 00000000000000005359.log
10:02:13 vnode-commit   1146   S 0       0          13.13 00000000000000005350.log
10:02:13 vnode-write    1146   W 280053  1094       10.11 00000000000000005475.log
10:02:14 vnode-commit   1146   S 0       0          10.81 00000000000000005475.idx
10:02:14 vnode-commit   1146   S 0       0          13.89 v5f1736ver5.stt
10:02:14 vnode-commit   1146   S 0       0          21.05 00000000000000005467.idx
10:02:16 vnode-merge    1146   S 0       0          11.46 v4f1736ver3.data
10:02:19 vnode-commit   1146   S 0       0          34.90 00000000000000005475.log
10:02:19 vnode-commit   1146   S 0       0          32.18 00000000000000005467.log
10:02:19 vnode-commit   1146   S 0       0          10.05 meta-ver.tmp
10:02:19 vnode-commit   1146   S 0       0          11.30 v4f1736ver7.stt
10:02:19 vnode-commit   1146   S 0       0          12.99 00000000000000005593.log
10:02:20 vnode-write    1146   W 280053  4923       12.18 00000000000000005585.log

以上信息在 Github 的 Bcc 库中都能找到。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
zwmX4WA4Dykt