Loading...

2023 年第37周周报

九月第三周,这周真是倒霉透了。。

生活

  1. 先汇报一下这周的近况
    1. 精神状态还 OK
    2. 做菜的确能缓解焦虑
    3. 本周倒霉透了,半个月去了几次急诊,这周头撞破去医院缝了几针
  2. 本周小狗的状态依旧很好
    1. 每次出门都是接上最靓的崽
    2. 做错事了会来按 sorry 道歉
  3. 本周和女朋友一起出去吃巴奴,感觉没之前好吃了
  4. 本周的娱乐时间
    1. 银之匙真的好看,有钱了要做第三季,三刷了
    2. 看了下 mygo,不喜欢
    3. 黎明N刷完了
    4. 本周的布莱泽,稍晚下调了一些,但是也很精彩
      1. 奥棚经典的亲子回,刻画队员的家庭在这几年新生代做的还不错的
      2. 这集张力比起前面来说有点不够,但是挺放松的
      3. 原始人解锁新技能了好事!
      4. 亲子回巅峰应该是高斯奥特曼第11话,动け! 怪獣/快动起来!怪兽,跨越6500万年的思念
  5. 本周小猫继续的补液,下周复查希望能好转
  6. 本周继续背单词
  7. 本周推荐 596秘史 这本书

技术

  1. 本周工作上好玩的事情
    1. GitHub Runner 最近的稳定性真的不行,但是目前中和体验来说好像也没更好的平台了?
  2. 这周在 MacOS 虚拟化上花了不少时间
    1. 用 Swift 基于 Apple Virtualization Framework 跑通了基础的 Linux 虚拟机,但是遇到很多问题
    2. 对于非 RAW Image 的支持没有,导致需要额外处理比较广泛的 qcow2 或者 vmware 格式的虚拟机。目前有这样的一些方法
      1. 自己手写一下 qcow2 转 Raw Image,工作量还好,但是 corner case 很麻烦
      2. 依赖 qemu 做镜像转换,但是 qemu 真的太重了
    3. vz framework 不支持 CDRom Device,导致 CloudInit 这样一个工具没法使用(cloud-init 默认行为是扫描 label 了 vfat 或者 iso9660 的 device,当然也可以走 HTTP 的方式下发,但是这样会存在 DHCP 的一个死循环的问题)
  3. 本周和 xintao 讨论一个问题,他的原话 “想追踪慢的 tcp connect 时间花在哪里了。有办法用bpf追踪吗?想知道,比如 DNS 时间,SYN 发出去的事件,SYN ACK. 事件。”,很使用的一些想法
    1. 我第一反应是如果要 eBPF 的话,可以在 https://elixir.bootlin.com/linux/latest/source/net/ipv4/tcp_output.c#L3923 找一些关键点,然后 unwind 串起来
    2. 经过师父提醒,可以用 pwru 来解决
    3. pwru 也存在一些问题
      1. 只检查了 skb 而没有追 sk,导致不少重要 tcp 函数没有被观测
      2. 只检查 kprobe 而没有 kr,导致对“耗时”的观测还有偏差
      3. 不能观测 bpf prog, xdp, L2 frame
      4. 过滤还很僵硬,比如这里如果能指定一个进程去 trace 其实很有价值,可以跨协议且全链路
      5. 太依赖入参,导致很多重要函数没有 skb 参数 没有观测到
  4. 本周还是有一个很有趣的内核里的问题,“怎么样去 trace custom module 里的函数”
    1. 我第一反应是 kprobe 应该可以做
    2. 写了一个 module,走 EXPORT_SYMBOL 暴露符号
    3. 在 /sys/kernel/debug/tracing/available_filter_functions 和 /proc/kallsyms 都能找到符号,符合预期
    4. 然后啪的一下用 eBPF + kprobe 抓不到事件,麻了
    5. 手动走 kprobe event 也不太 work
    6. 下周准备用 original kprobe 试下,实在不行我去内核里打桩看下发生了啥
  5. 本周 containerd 提了 CPU Burst 的 Proposal,被社区同学认领了
  6. CSAPP 虚拟内存看完了,该写 malloc 作业了,麻了
  7. 继续每天写题解

差不多这样

总结

这周还是挺摆烂,主要是太过于倒霉了。。希望能尽快好起来


Comment