2024 年第十七周周报
生活
- 本周的状态
- 肠胃问题又出现反复
- 精神状态倒是还不错
- 本周的宠物
- 肾衰小猫的状况不算理想,还额外做了一次肠道手术,花钱花麻了。准备上一下实验性疗法搏一搏了
- 小猫的复杂性溃疡终于好的差不多多了
- 小狗的肠胃终于好转了,算是好消息了
- 本周的娱乐时间
- 本周还是没咋打游戏,呜呜呜,时间不够。。
- 本周的番
- 京吹第三季的质量蛮稳定的,京阿尼太不容易了
- 摇曳露营感觉继续保持水准,不过感觉 3D CG 真的很违和
- 末班列车有点高开低走的属于是
- 怪兽8号的蛮不错的,虽然是蛮“老套“的王道热血番。不过俺就吃这套.jpg 别和英雄学院一样就行(
- 调酒师剧情有点摸不着头脑感觉。。
- 蜻蜓感觉一般
- 本周的相机:
- 这周北京阴天太多,导致没法拍月亮,不开心
- 买了个 1424 2.8,大三元算是齐了
- 家里的阳台开了一堆的蔷薇,好美(
- 本周继续背单词
技术
- 这周在看看 RISCV 指令集一些的东西,感觉和 X86 系列的差异好大啊
- 本周测试了下普通发行版作为 OpenWRT 的替代方案,功能性基本上都满足了,但是稳定性还不确定。毕竟 OpenWRT 是特化了的
- 这周在看 zkevm 系的一些 RPC 实现,不由得感叹币圈都什么野鸡团队啊。。
- pylyzer 一个 Rust 写的 Python LSP,怎么全世界都在写 Rust 啊(烦恼
- Elastic 开源了一个 Agent 里面非常 Magic otel-profiling-agent,可以拿一个点出来锐评下
- 以 Elastic 为首的 OTEL 厂商在做 Agent 的时候,一个问题是将系统中的性能事件和请求之类的 tracing 关联起来.这就涉及到一个核心的问题了
- 怎么样将用户态信息和内核信息关联起来]Elastic 的解法是这样,首先将 traceID 放在 ThreadLocal storage 中(后面简称 TLS)的固定位置,而在 Linux 下,通常使用 fs 寄存器,thread_struct->fsbase(x86/64下),然后我们可以根据 fsbase 的值扣出 TLS 中存在的数据,然后完成关联
- But How could we get the fsbase address? 因为 thread_struct 的内存布局随时都在变化。熟悉 eBPF 的同学可能想起了我可以用 BTF+CORE 来做,但是如果低版本还是不支持 BTF+CORE 呢? Elastic 有一个很魔法解法: 我们确定一个利用 task_struct 一些主体字段的函数。
- 然后我们从 /proc/kallsyms 中获取到这个函数的地址。在进程加载后,我们对这个地址进行反汇编,可以模拟汇编求出我们这个锚定字段在进程运行时真正的地址,然后根据锚定字段相较于 fsbase 的偏移量,获取到 fsbase 的地址 比如他们在 5.19 上用了 aout_dump_debugregs 这个函数
- 这个函数中使用了thread_struct->ptrace_bps 这个字段,这个字段相较于 fsbase 有 16 bytes 的偏移,根据这些信息,我们可以拿到 TLS 中存储的字段,从而实现关联
- 太过于 Magic 了
- 本周在继续看 Linux LSM 这块的实现,很有趣,非常有趣(
- 本周继续刷题
差不多就这样吧
总结
下周就放假了,坚持住.jpg
Comments