首页 > 最新动态 > 新特性!支持Linux内核IO全栈观测
最新动态
新特性!支持Linux内核IO全栈观测
2026-01-2115


HUATUO(华佗)是由滴滴开源并依托CCF (中国计算机学会) 孵化的操作系统深度可观测项目,专注为复杂云原生通用计算、AI计算、裸金属基础服务等提供操作系统内核级深度观测能力。本文将重点介绍CCF(中国计算机学会)开源项目HUATUO的最新特性-IO全栈观测能力、实现原理以及故障定位案例。


当磁盘被打爆,却找不到罪魁祸首。深夜,监控系统突然报警。磁盘IOPS 爆表,磁盘利用率达到100%!还有业务响应超时等。


此时,你可能会紧急登录服务器并使用各种IO工具,去试图找出元凶,却:

1.能看到某个进程在触发IO操作,却不知道它具体在读写哪个文件

2.能看到磁盘在疯狂写入,却不知道这些IO来自哪个业务进程

3.能看到内核线程在刷脏页,却根本无法追踪到原始的业务进程

4.能看到IO吞吐量,却不知道这些IO的延迟情况,无法定位性能瓶颈

不能全景的分析 “是谁在写”、“写到哪里”、“为什么慢”。排查陷入僵局,业务继续受影响…


解决方案

iotracing来了!这是一款基于eBPF技术的IO追踪工具,能够让你一步到位找到高IO的所有信息:

  • IO属于哪个进程,支持PID和进程名

  • IO属于哪个容器,支持容器化环境

  • IO写到哪个磁盘,支持设备号

  • IO写到哪个文件,支持完整文件路径和inode号

  • IO延迟分析,支持q2c、d2c延迟,找出性能瓶颈

  • 刷脏回写追踪,即使内核线程刷脏页,也能追溯到原始进程

  • 高延迟调用栈,捕获超过阈值的IO,显示完整内核调用栈


基础用法



1. 快速上手

输出进程按照磁盘IO量排序,mysql进程是最大的IO消耗者,每秒读取 5.2GB、写入1.8GB!




2. 深入分析

此外,该工具还会输出读写文件信息:

这里展示了进程操作的文件,可以看到MySQL正在疯狂读写ibdata1、 ib_logfile0、table1.ibd。延迟q2c,d2c信息一目了然。




3. 容器环境

识别IO来自哪个容器。在容器环境,iotracing还能显示容器信息 container_hostname :




4. 回写IO追踪

普通的工具只能抓到一堆内核线程kworker在刷脏页,无法定位到io具体来源的业务进程。

iotracing不仅准确识别到回写io的来源进程,更是精准定位到了io所属的文件。



高级用法

你一定遇到过这样的场景:

  • 凌晨监控告警:某台服务器磁盘IO突然飙升到100%,持续30秒后自动恢复

  • 业务影响:这30秒内,数据库查询超时,用户请求失败率飙升

  • 排查困境:等你收到告警并登录服务器时,IO已经恢复正常了。你不知道刚才发生了什么,更不知道如何复现


这是典型的突发IO问题:突发大量的IO请求,持续时间短,但影响严重!HUATUO autotracing框架搭配iotracing可以实时监控的IO负载,当出现异常突增或者延迟异常时,会自动调用iotracing抓取磁盘快照,以供后续的问题根因分析。


生产环境案例

下面以一个真实的案例来看iotracing在服务器IO异常突增的场景发挥的作用。


HUATUO观测到服务器在17:50左右发生一次大量读磁盘请求。


技术原理

iotracing实现原理核心架构如下图:


未来,HUATUO iotracing将打造IO性能分析的终极工具,开放更多特性。

HUATUO开源项目可登录CCF GitLink平台详细了解及参与。

GitLink项目仓库地址:

https://gitlink.org.cn/ccfos/huatuo

GitHub项目仓库地址:

https://github.com/ccfos/huatuo

HUATUO开源项目官网:

https://huatuo.tech/


注:原文作者戴坤海、转自HUATUO开源技术公众号。





图片


图片


点击“阅读原文”,加入CCF。

点我访问原文链接