Victor's Code Journey
Victor's Code Journey

60 秒定位 Linux 性能瓶颈:一份能直接抄的命令清单

凌晨 3 点,oncall 电话响了。“服务慢了,用户在刷不出页面。” 你 SSH 进一台从没见过的 Linux 服务器,没有 Prometheus dashboard,没有 APM 火焰图,只有黑漆漆的命令行。

第一分钟该敲什么?

Netflix 性能工程团队 2015 年给出的答案是:10 个命令,60 秒。本文把这套方法整理成一份可以照抄的清单,并补上一张"心智地图",让你不只是机械记忆命令,而是理解为什么要敲它们、应该看哪几列、看完之后该往哪走

eBPF 简介:从钩子、验证器到 BCC 实战

你有没有遇到过这种场景:线上服务偶发延迟,top 看 CPU 正常、iostat 看磁盘不忙、strace 抓不到关键调用,但应用就是慢。想看某个系统调用真实的耗时分布?想找"一闪而过"的短进程?传统工具集体失灵。

问题的根源在于:Linux 内核对你"关着门"。你想观测的所有关键路径——系统调用、网络收发、调度、文件 I/O——都在内核里,而你已经很多年没编译过内核了。

eBPF(extended Berkeley Packet Filter)就是 Linux 给开发者开的一扇窗。它让你不重启内核、不写内核模块,就能在内核的关键路径上跑一段自定义逻辑。本文用三件事讲清它:eBPF 是什么、怎么工作、怎么先用起来。

GraphRAG 简介

你有没有遇到过这种情况:公司丢给你 10 万份内部事件报告,问你 “过去三年里,攻击模式呈现出哪些新趋势?” 你把这堆文档丢给传统 RAG 系统,它会按相似度捞出 Top-K 个最相关的文档块,让大模型基于这些片段作答。听起来很合理对吧?

问题来了:大模型拿到的只是 10 万份报告里"和’攻击趋势’长得最像"的几十个片段。它 根本没有通读过完整语料 ,怎么回答得出"新趋势"这种 全局性问题(Global Sensemaking) ?向量检索的本质是"局部相似",而全局总结是"通盘理解",这是两件本质不同的事。

类似的全局性问题还有很多:

  • “这家企业涉及的核心人物和主要事件有哪些?”
  • “这部小说里的人物关系网络是什么样子?”
  • “这套开源代码的架构主题分布如何?”

GraphRAG(Graph-based RAG)就是为这类问题而生的。它把 RAG 的检索单元从"文本片段"升级为 “知识图谱” ,通过图社区摘要、Map-Reduce 等机制让 LLM 真正具备 全局感知能力

Rsync 算法简介

你有没有遇到过这种情况:服务器上有两份代码,版本 A 和版本 B,你只想把 A 的改动同步到 B,但网络带宽只有几 Mbps,传输一个 24MB 的文件要等上好几分钟。

也许你会想到先在本地 diff,然后把 patch 发过去。没错,这是个思路。但你有没有想过:如果 A 和 B 都不在同一台机器上,diff 根本跑不起来怎么办?

这就是 rsync 要解决的问题。

Git Worktree 并行开发

git worktree 命令支持管理同一个 git 仓库的多个工作区1,每个工作区可检出不同分支/提交。每个工作区都像一个“轻量级的独立仓库”,但它们共享底层对象库,减少磁盘占用并加速切换。

同一分支在同一时刻只能在一个 worktree 中被检出。如果想在多个 worktree 同时基于同一分支进行试验,需要使用不同分支名,或者使用--detach直接检出到某个提交。

注意,--detach 会产生分离式 HEAD,后续的修改会丢失,一般不推荐使用,除非是仅看用于查看代码。