0%

在上一篇,我们用 crossterm 绘制出了一个专业的 TUI 界面。现在,是时候挑战 PIPA-rs 的真正核心了:实现 pipa-rs stat -- <command>,一个 perf stat 的原生替代品。

这意味着,我们要直面 perf_event_open 这个系统调用,去精确测量一个外部命令从生到死的完整生命周期。

前期的探索,虽然没有产生一行可用的代码,但却留下了一份极其宝贵的财富:一份详尽的“此路不通”的地图。 它用 ptrace 和信号的失败告诉我们,任何试图在用户态通过复杂技巧来模拟内核级同步的方案,都是在与操作系统的底层调度作对,这是一场注定会失败的战争。

所以,这次我们不是在收拾烂摊子。我们怀揣着“排除法得来的宝贵知识”,进行了一次目标明确的、从零开始的正确构建。我们的任务,从“发明创造”,转变成了“探索发现”。

阅读全文 »

在上一篇手记中,我们为 PIPA-rs 搭建了一副坚固的“骨架”——一个自律的、自动化的工程框架。现在,是时候为这副骨架注入第一股“生命力”了。我们的目标是:深入 pipa_collector,从零开始实现对系统核心指标的采集,并构建一个基础的 TUI 监控工具,作为 sartop 的一个微型替代品。

有人可能会问,Linux 上有那么多现成的工具和 crate,为什么非要选择一条最“难”的路——直接去解析 /proc 文件系统?

答案很简单,它源于 PIPA-rs 的核心理念:“零外部二进制依赖”和“超可靠”。我们不希望 PIPA-rs 的可靠性建立在对 sar 命令输出格式的脆弱假设上。我们希望直接与内核提供的数据源对话,并用自己的代码来保证每一次解析的健壮性。这不仅仅是重新造轮子,更是一次关于构建“可信度”的修行。

阅读全文 »

开新坑了。这次,我想从零开始,用 Rust 认真地做一个原生的 Linux 性能分析工具链——PIPA-rs。这不仅是对经典 PIPA 项目的一次重塑,也是我个人在系统编程领域的一次深度探索。

但今天这第一篇,我们不聊 perf_event_open 的底层魔法,也不谈 /proc 文件系统的精妙。在写下第一行真正的业务逻辑之前,我想先聊聊那些“看不见”的东西:项目的工程化基础。

很多人(包括曾经的我)在开始一个新项目时,总是迫不及待地 cargo new 然后一头扎进 main.rs。但这次,我决定反其道而行之。我要为 PIPA-rs 搭建一个“世界级”的工程基础。这听起来有点空,甚至有点“过度工程”的嫌疑,但一个可靠的工具,必须诞生于一个可靠的摇篮。这个摇篮,关乎开发纪律、自动化,以及在未来漫长的迭代中,我们是否还能保持从容。

所以,这篇手记,就从我们的第一块基石开始:如何搭建一个“自律”的 Rust 项目框架,以及我们在 CI/CD 自动化之路上,踩过的那些坑和最终找到的光。

阅读全文 »

本次环境为Arch Linux,内核版本6.12.46-3-cachyos-lts,perf版本6.16-3

前言:从“健康报告”到“外科手术”

在上一篇文章《我的程序为什么慢?—— Perf CPU 性能剖析》中,我们学会了使用 perf stat。它就像一份体检报告,能告诉我们程序的整体健康状况——IPC 高不高、分支预测准不准。

但这还不够。如果报告说“指标异常”,我们并不知道问题出在哪个“器官”。perf stat 告诉我们程序慢了,但它没告诉我们慢在哪里

阅读全文 »

本次环境为Arch Linux,内核版本6.12.46-3-cachyos-lts,perf版本6.16-3

前言:为什么 perf 让人望而生畏?

perf 是 Linux 世界中无可争议的性能分析神器。然而,很多开发者(包括曾经的我)在第一次看到 perf stat 那满屏飞舞的专业术语时,都会感到一丝困惑和畏惧:task-clock, IPC, stalled-cycles-frontend… 这些到底意味着什么?

阅读全文 »

2 块钱,我学会了比 异地组网 和 SSH 更重要的一课

今天是我新实习的第二天。

上午的状态堪称完美,灵感迸发,顺手修复了团队内部工具的几个历史遗留 Bug,提交了几个赏心悦目的 PR。午饭后,我泡了杯咖啡,准备按照计划,深入学习一下性能分析领域的圣经——Brendan Gregg 的‘perf’教程

阅读全文 »

读到这里,你已经陪我走完了 rkyolo 从一个想法到一个功能完备的框架的全过程。但在这个故事开始之前,还有一段小插曲。它虽然只占了大概三个小时,却为后面所有的“顺利”铺平了道路,也算是一场有惊无险的“系统急救”演练。

阅读全文 »

好了好了,到了给这个系列收尾的时候了。回头看看,这个叫 rkyolo 的小东西,从一个念头开始,居然真的被我一点点攒成了一个能跑、能看、还能给自己打分的 Rust 推理框架,想想也是挺神奇的。

在这最后一篇,咱不吹牛,就唠点实在的。说说我都捣鼓了啥,还有哪些地方让我挠头,以及以后还能怎么接着玩。

阅读全文 »

在完成了rKYOLO核心推理引擎和多种 IO 功能后,项目已经具备了完整的应用能力。然而,我深知在机器学习项目中,可靠的评估体系与高效的推理能力同等重要。为此,我构建了rkyolo-eval工具链,为项目增添了专业的模型评估能力。

阅读全文 »

在前几轮的扎实工作后,RKYOLO 的核心推理引擎已经变得相当可靠:安全、自适应且性能良好。但它当时更像一个“库”,离一个开箱即用的“工具”还有一步之遥。我的下一个目标,就是为这个强大的引擎,打造一个完整的外壳,让它能灵活地处理现实世界中的各种视觉输入。

阅读全文 »