手艺人舍bpftrace而取systemtap的代价和思考
上个礼拜我就想喷eBPF了,由于周末时间实在太紧,就准备拖延一周,但还是立了个flag,先发了个朋友圈: ebpf就像牛皮藓一样,已经遍布在linux内核的各个角落,每个调用点都看上去很随意,毫无规划,让人觉得好像自己觉得哪里需要这么一个调用点并不很难… 但实际上如果你真的去尝试在某处加一个ebpf调用点时,就会觉得这件事和清除牛皮藓的过程非常类似,修改散落在各个目录的多个文件,还得重新编译,大概率失败,还要重新做一次,很难一次做干净,当你好不容易成功了,会有一种“不过如此”的嗟叹… 我曾将ebpf比做扩散的癌细胞,这个比喻没有给人密集恐惧的效果,所以我换成了牛皮癣。该存在ebpf调用点的地方一个也没有,没必要ebpf的地方到处都是,这些点还在持续增加,迄至5.11内核,ebpf已经有大三十个点了,依然在毫无规划地疯长着… eBPF是个创新,但人们明显狂热过度了,ebpf增加调用点也过于随意,太业务导向了,损坏了内核的内聚性,远远比不上当初netfilter的五个hook点以及qdisc这种经过良好设计的机制,另外还有一个问题,netfilter的五个hook点上如果部署了ebpf点,其实就能解决大部分性能问题,然而直到现在都没有,感觉是社区矫枉过正了,真的彻底把netfilter当成了旧时代的象征,把马杀掉的同时,轮子也不要了 人们都像虫子一样在这里你争我抢,吃的都是良心