Loading...

2024 年第十七周周报

生活

  1. 本周的状态
    1. 肠胃问题又出现反复
    2. 精神状态倒是还不错
  2. 本周的宠物
    1. 肾衰小猫的状况不算理想,还额外做了一次肠道手术,花钱花麻了。准备上一下实验性疗法搏一搏了
    2. 小猫的复杂性溃疡终于好的差不多多了
    3. 小狗的肠胃终于好转了,算是好消息了
  3. 本周的娱乐时间
    1. 本周还是没咋打游戏,呜呜呜,时间不够。。
    2. 本周的番
      1. 京吹第三季的质量蛮稳定的,京阿尼太不容易了
      2. 摇曳露营感觉继续保持水准,不过感觉 3D CG 真的很违和
      3. 末班列车有点高开低走的属于是
      4. 怪兽8号的蛮不错的,虽然是蛮“老套“的王道热血番。不过俺就吃这套.jpg 别和英雄学院一样就行(
      5. 调酒师剧情有点摸不着头脑感觉。。
      6. 蜻蜓感觉一般
  4. 本周的相机:
    1. 这周北京阴天太多,导致没法拍月亮,不开心
    2. 买了个 1424 2.8,大三元算是齐了
  5. 家里的阳台开了一堆的蔷薇,好美(
  6. 本周继续背单词

技术

  1. 这周在看看 RISCV 指令集一些的东西,感觉和 X86 系列的差异好大啊
  2. 本周测试了下普通发行版作为 OpenWRT 的替代方案,功能性基本上都满足了,但是稳定性还不确定。毕竟 OpenWRT 是特化了的
  3. 这周在看 zkevm 系的一些 RPC 实现,不由得感叹币圈都什么野鸡团队啊。。
  4. pylyzer 一个 Rust 写的 Python LSP,怎么全世界都在写 Rust 啊(烦恼
  5. 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 了
  6. 本周在继续看 Linux LSM 这块的实现,很有趣,非常有趣(
  7. 本周继续刷题

差不多就这样吧

总结

下周就放假了,坚持住.jpg


Comment