当前位置: 首页 > news >正文

豆包 linux-6.19/tools/accounting/delaytop.c 源码分析

Linux 6.19tools/accounting/delaytop.c完整源码分析

文件路径:linux-6.19/tools/accounting/delaytop.c

一、整体定位

delaytop是 Linux 6.19 新增、基于Delay Accounting + PSI 压力指标交互式实时进程延迟排行工具(类似 top,但专门看进程阻塞延迟,不是CPU使用率)。

  • 内核依赖:CONFIG_TASK_DELAY_ACCT=yCONFIG_PSI=y
  • 数据来源:内核taskstatsnetlink 接口 +/proc/pressure/*PSI 文件
  • 界面:ncurses 终端UI、实时刷新、按键排序、TopN 阻塞进程排行
  • 用途:快速定位CPU调度等待、IO阻塞、内存回收、交换、内存颠簸等内核阻塞延迟根源

区别:

  • top:看CPU占用
  • getdelays.c:单进程静态延迟查询
  • delaytop.c:全系统实时动态Top阻塞延迟排行+PSI系统压力总览

二、内核延迟分类(delaytop 统计全部类型)

内核 Delay Accounting 统计5类进程阻塞延迟(单位ns):

  1. cpu_delay:调度延迟(就绪队列等待CPU运行)
  2. blkio_delay:块IO阻塞等待(等待磁盘完成)
  3. swapin_delay:换入内存等待
  4. freepages_delay:内存回收、页分配等待
  5. thrashing_delay:内存颠簸(频繁换入换出)

delaytop 同时读取PSI 系统全局压力(CPU/Memory/IO some/full 压力占比)。


三、源码整体结构(Linux6.19 最新版,约600行)

从上到下分为7大模块:

  1. 头文件、宏定义、数据结构体
  2. PSI 压力指标读取逻辑(/proc/pressure)
  3. taskstats netlink 初始化、数据接收解析
  4. 进程延迟数据收集、聚合、排序
  5. ncurses 终端UI初始化、绘制
  6. 主循环:定时刷新+按键交互
  7. 退出清理、信号处理

四、逐模块源码深度解析

4.1 头文件与核心数据结构

#include<ncurses.h>#include<linux/taskstats.h>#include<linux/genetlink.h>#include<sys/socket.h>// 单个进程延迟统计结构体(delaytop内部缓存)structtask_delay_stat{pid_tpid;charcomm[TASK_COMM_LEN];// 进程名uint64_tcpu_delay;// 调度延迟uint64_tblkio_delay;// IO阻塞uint64_tswapin_delay;uint64_tfreepages_delay;uint64_tthrashing_delay;uint64_ttotal_delay;// 总阻塞延迟};// PSI全局压力结构体structpsi_stat{uint64_tavg10,avg60,avg300;// 10s/60s/300s平均压力uint64_ttotal;// 累计压力时间};structpsi_system{struct
http://www.jsqmd.com/news/689164/

相关文章:

  • SUMO新手避坑指南:从零配置你的第一个仿真(含test.rou.xml和sumocfg文件详解)
  • from和inpu的用法介绍(Mac实操版)
  • ABAP批量导入Excel数据实战:从文件选择到数据库插入的完整流程
  • 解锁学术新秘籍:书匠策AI——期刊论文写作的“全能魔法棒”
  • **发散创新:基于Python与Redis的混合增强型权限控制系统实战**在现代分布式系统中,权限管理早已不是简单的角色-资源映射
  • 茉莉花插件完整指南:让Zotero中文文献管理效率飙升的终极解决方案
  • Java基本语法学习
  • 从数月到分钟级:360智能体自动挖洞终结人工低效时代
  • 基于python的在线教育课程管理系统 带协同过滤推荐算法
  • SQL注入靶场23-37关实战通关攻略
  • 2026年最火的工程范式:Harness Engineering指南与应用
  • Elasticsearch分布式原理:集群数据分布机制与分片路由全流程深度剖析
  • 北京良友伟业搬家|同城/异地/日式搬家全场景服务及靠谱公司推 - 海棠依旧大
  • 5个关键问题:如何用Klipper固件解决3D打印精度与性能难题
  • 2026帮孩子选辅导班前,实测6款学习APP的真实体验 - 品牌测评鉴赏家
  • 从FHSS到OFDMA:Wi-Fi协议演进中的核心技术变革
  • 别再傻傻分不清了!一张图看懂PLM、ERP、MES、CRM在工厂里到底怎么分工协作
  • Linux文件系统(一):从磁盘结构到文件系统基础
  • STM32F103C8T6 PWM引脚-定时器-通道对照表
  • 在线语音转文字支持哪些格式?上传前检查与压缩建议全解析
  • Perfetto UI分析Native内存:看懂四个关键视图,揪出Android应用里的“隐形”泄漏点
  • 使用archlinux搭建arm开发环境(非linux)
  • Ofd2Pdf终极指南:3步实现OFD到PDF高效无损转换
  • Harness Engineering:AI Agent 落地企业的工程化核心
  • 从malloc到memsafe_c:2026规范强制要求的4类API替换清单,不改业务逻辑也能通过ISO/IEC 17961合规审计
  • Java:捕获特定异常
  • 思源宋体完全指南:7字重免费开源中文字体终极教程
  • 当AI学会“挖洞”:从Mythos到360漏洞挖掘智能体,网
  • 从AK4490到ES9038:聊聊那些年我们用过的DAC芯片,以及它们背后的声音故事
  • 固本强基:国内网络变压器行业格局与技术演进分析(2026)