0

0

Linux bcc 的 funccount / funclatency / biotop 工具生产监控模板

冷炫風刃

冷炫風刃

发布时间:2026-02-21 16:46:02

|

402人浏览过

|

来源于php中文网

原创

根本原因是默认采样窗口过短且未过滤干扰进程;funclatency直方图大量0因纳秒单位与2倍桶宽不匹配,需用-m切毫秒单位并设-d限定范围。

linux bcc 的 funccount / funclatency / biotop 工具生产监控模板

funccount 统计函数调用频次时,为什么总看到 0 或数值跳变异常?

根本原因不是工具不准,而是默认采样窗口太短(1 秒),且未排除内核抢占、调度抖动和短生命周期进程干扰。

  • funccount 默认只抓 1 秒内的调用次数,对低频但关键的函数(比如 sys_openat)容易漏统计 —— 改用 -d 5 指定 5 秒持续采样
  • 不加 -P 会混入所有进程调用,包括 kthreaddrcu_gp 等内核线程,导致数据失真 —— 生产环境务必加 -P $(pgrep -f 'your_app')
  • 某些函数(如 tcp_sendmsg)在 TCP fastopen 或零拷贝路径下可能被绕过,单纯看计数不能等价于“业务请求量”
  • 示例:监控某 Java 应用的 sys_read 调用频次:
    funccount -P $(pgrep -f 'java.*order-service') -d 5 'sys_read'

funclatency 测延迟时,直方图输出里为什么大量 bin 显示 0?

不是没延迟,是默认时间单位(纳秒)和桶宽(2 倍增长)不匹配,导致低延迟区间分辨率不足。

  • 默认桶从 1ns 开始,按 2× 增长:1, 2, 4, 8… 直到 1s —— 对微秒级系统调用(如 gettimeofday),前 10 个 bin 全是 0
  • -m 切换为毫秒单位,再配 -D 100(最大 100ms)能看清真实分布:
    funclatency -m -D 100 -P $(pgrep -f 'nginx') 'ngx_http_process_request'
  • 注意:-m-u(微秒)不能共存;-m 下最小桶是 1ms,低于该值的延迟全归入第一桶
  • 如果目标函数调用极快(trace + timestamp 手动算差值,funclatency 不适合亚微秒精度场景

biotop 在容器环境里看不到宿主机磁盘 I/O?

因为 biotop 默认只跟踪当前 cgroup 的 I/O,而容器进程常被移入子 cgroup(如 /kubepods/burstable/podxxx/...),工具找不到对应上下文。

Voicenotes
Voicenotes

Voicenotes是一款简单直观的多功能AI语音笔记工具

下载
  • 先查目标容器的 cgroup 路径:
    cat /proc/$(pgrep -f 'redis-server')/cgroup | grep blkio
    ,拿到类似 8:blkio:/kubepods/burstable/podabc/redis
  • biotop -C 指定完整路径:
    biotop -C '/kubepods/burstable/podabc/redis' -d 3
  • 若容器使用 io.weight(cgroup v2),biotop 无法识别 —— 此时必须降级到 cgroup v1 模式,或改用 biosnoop + 进程名过滤
  • biotop 不显示网络块设备(如 EBS、Ceph RBD)的底层物理设备名,只显示逻辑名(nvme0n1),需结合 lsblkfindmnt 对齐实际挂载点

三个工具一起用时,为什么 funccount 和 biotop 时间对不上?

它们底层触发机制不同:funccount 用 kprobe,biotop 用 tracepoint,时间戳来源和延迟不可比,强行对齐会误导根因判断。

  • funccount 记录的是函数入口时间,biotop 记录的是 block_rq_issue tracepoint 触发时刻 —— 中间隔着 VFS 层、IO 调度器排队,差值可达毫秒级
  • 不要用 funccount sys_write 的峰值去解释 biotop 的 IOPS 尖峰,前者反映应用层写调用频次,后者反映实际下发到设备的请求数,中间有 page cache、合并、预读等多层缓冲
  • 真正要关联分析时,优先选同一事件源:比如用 trace 'r::ext4_file_write_iter "pid=%d %s", pid, args->buf' -T 同时捕获调用栈和时间戳,再导出比对
  • 生产模板里建议固定采样周期(如统一用 -d 10),但绝不假设各工具输出的时间列可直接相减

最麻烦的其实是 cgroup v2 + 容器 + 多线程混合场景下,funccount -P 可能漏掉 fork 出的子线程,而 biotop -C 又要求精确路径 —— 这时候得先确认 PID 是否稳定、cgroup 是否实时更新,而不是直接怀疑工具坏了。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

695

2023.08.10

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1520

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

715

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

791

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

584

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

563

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

308

2023.07.20

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

796

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.4万人学习

Git 教程
Git 教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号