5.7 BCC工具之disksnoop.py解读
一,disksnoop.py简介
disksnoop工具用于追踪块设备的I/O操作的延迟,它会在每次I/O执行完成后打印一行摘要信息。我们根据这些摘要日志,来分析当前的I/O操作是否存在延迟,以判断I/O是否达到了瓶颈。
二,代码示例
#!/usr/bin/python
#
# disksnoop.py Trace block device I/O: basic version of iosnoop.
# For Linux, uses BCC, eBPF. Embedded C.
#
# Written as a basic example of tracing latency.
#
# Copyright (c) 2015 Brendan Gregg.
# Licensed under the Apache License, Version 2.0 (the "License")
#
# 11-Aug-2015 Brendan Gregg Created this.from __future__ import print_function
from bcc import BPF
from bcc.utils import printbREQ_WRITE = 1 # from include/linux/blk_types.h# load BPF program
b = BPF(text="""
#include <uapi/linux/ptrace.h>
#include <linux/blk-mq.h>BPF_HASH(start, struct request *);void trace_start(struct pt_regs *ctx, struct request *req) {// stash start timestamp by request ptru64 ts = bpf_ktime_get_ns();start.update(&am