Мир сегодня с "Юрий Подоляка"
Мир сегодня с "Юрий Подоляка"
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Лёха в Short’ах Long’ует
Лёха в Short’ах Long’ует
Welcome to the Black Parade avatar
Welcome to the Black Parade
Welcome to the Black Parade avatar
Welcome to the Black Parade
哇原来!是用 gas 来控制 opcode 复杂度!这听起来比 bpf verifier 先进多了?(❓)

#zzh为将来被开除的我指明方向
27.01.202518:27
我其实不太追新,我看着各种频道里我读不出来的 AI 名字推陈出新毫无波动,继续日常和 gpt 做英语语法检查、问答 kubectl 怎么过滤字段、问一些我理解不了的内核问题然后收获一堆胡说八道,习惯了,预期建立得低就不会失望。

但是! DeepSeek!真的太爆炸了,下面请欣赏 chatgpt 4o 回答得一塌糊涂的编程问题在 deepseek 的精彩表现。

1. 用 golang 标准库 syscall 实现 inotify watch 普通文本文件,然后输出每次修改事件的 diff。

我觉得这个问题超简单,常用 syscall 的 API 不管是文档和博客都很多,我只是要求用 go 翻译一下,结果收获了无数光怪陆离,曾经是我用来测试 AI 写代码的标准题目,还发过一贴嘲笑 AI 们连 API 小子都做不好实在太菜了,收获了一堆 👎

deepseek 则一发入魂,图一就是核心逻辑,完全正确, 有个 u32 -> i32 的类型转化搞错了,不重要,要知道 gpt 4o 还搁那儿无限 for 循环里 cat file + sleep 呢。

2. 写 tcpdump filter,过滤出指定 src + dst ip 的 ipv6 tcp reset in vxlan。

这个问题前段时间也 po 过,gpt 4o 令人失望到起手就 tcp[tcpflags]=tcp-syn,而我在提问里给的 non-vxlan 示范里已经教学使用 ip6[53]&0x4!=0 了,它理解不了为什么,我多次指出错误之后更是开始打滚输出重复错误的代码。

deepseek 就清新脱俗了,在陷入长达两分钟的长考之后(长考过程很有趣),直接给出了完全正确的表达式,见图二。震撼!

3. 用 bpftrace 读 skb 非线性区。

正是上上上上条 post,gpt 4o 在多轮对话之后害直接解引用 page 指针,我都气笑了。但是 deepseek 直接给出图三的输出,虽错,但错误的原因是它脚本适用于 CONFIG_FLATMEM 配置下的内核而我的是 CONFIG_SPARSEMEM_VMEMMAP。告诉它我的配置之后,图四几乎对了,只差一点点,只要把 kaddr("vmemmap") 改成 *(uint64*)kaddr("vmemmap_base") 就赢了。

这才是我心中的 AI,让我看看怎么给它打钱来着。现在入 AI 神教应该还来得及,我去带路先(

(prompt 见评论区)
20.01.202518:26
至此,已经可以用 bpftrace 写出最核心的 page_to_vaddr 的逻辑:
#define vmemmap_base ((uint64)0xffffffffaf6f5558)

其中 vmemmap_base 和 page_offset_base 查询 /proc/kallsyms 得到。

现在我终于可以说,我能在内核任意地方抓包了(并没有哈,kprobe 有一大堆 notrace 禁飞区,除此之外大部分地方还是可以的
博德之门3里下城区“精灵之歌”酒店里有个讲笑话比赛,中文翻译一如既往的惨不忍睹,堪比神界原罪2里那灾难性的“仁义礼智信”。不如来看看那些笑话笑点究竟是什么8

Say, what’s the difference between a dwarf and a bulette? You can’t toss the bulette!
问,一个矮人和鲨蜥兽有什么区别?鲨蜥兽扔不动

Dwarf-tossing 是澳大利亚人发明的酒吧娱乐活动,就真的是把 dwarf 拿来扔比谁扔得远。。不愧是囚犯流放地,我真的黄豆流汗。。。

Hey! I asked my wizard to cast Shatter. He said, ‘Shatter? I hardly know ‘er!’
哈!我让我的法师施展精力流失。他说,”经理?我基本不认识她啊!“

模板 “X-er? I hardly know 'er!”,比如 “Liquor? I hardly know her!”,liquor 被空耳成 lick her;“Poker? I hardly know her!”,poker 被空耳成 poke her。后来被延申到所有 -er 结尾的单词,比如下次你同事问你怎么用 hrtimer 你就可以 hardly know her 不要在职场用

You know why I hate vampires? They just suck.
你知道我为什么讨厌吸血鬼?因为他们只吸不吐。

这个翻译 sucks

I tried sleeping with a dragonborn the other night, but it didn’t work out - he had reptile dysfunction.
有天晚上我打算跟一个龙裔睡觉,但是没有成功——因为他龙萎了。

reptile dysfunction 谐音 erectile dysfunction (ED)。其实这个翻译还行,“他龙,萎了”。

The Dead Three, am I right? What losers. You know why Bane worshippers will never conquer the world? They don’t have the Bhaals!
死亡三神,我说得对吗?真是。你知道班恩的崇拜者为什么从来没能征服这个世界吗?因为他们没有巴尔!

DND 中的死亡三神是纷争之神班恩、死者之神米尔寇、谋杀之神巴尔,这个笑话的笑点是 Bhaals 可以被空耳成 Balls:they don't have the balls 他们没胆。
Bhaal 在《暗黑破坏神2》里被读作 Baal 巴尔,但其实很多年前就有讨论 Bhaal 是否应该读作 Ball

A mind flayer’s duergar slave lost his nose, so I asked the illiquid, ‘How does he smell?’ and it said, ‘I have eaten its brain’.
一个夺心魔的灰矮人奴隶失去了他的鼻子,所以我问灵吸怪,“他闻起来怎么样?”,然后他说,“脑子没味儿”。

来自经典笑话 “My dog has no nose. How does he smell? Terrible!” 中文翻译完全失去了 how does he smell 在英语里双关。

Our cleric tried to cast Healing Word on a ham, but it was already cured.
我们的牧师打算对一个火腿施展治愈真言,但它已经风干了。

Cure a ham 风干火腿,翻译很难译出这种一词多义。

最后,从今天起,请叫我博得人 Baldurian.
24.01.202512:05
乌克兰同事被强制征兵了😢 希望公司能帮帮他。

他在内核做了很多非平凡贡献,主导了某项目 clang10 -> clang17 的升级,是编译器专家,XDP/XSK 专家,网卡性能专家,bpf verifier 专家。

https://lore.kernel.org/netdev/?q=maximmi

不可思议 #NSFW
23.01.202518:26
我不信内核还有比 xfrm 更糟糕的用户态 api 😀

# ip x p add src 10.0.0.0/8 dst 10.36.1.0/24 dir in mark 0x58d73e00 mask 0xffffff00 
28.01.202511:02
she年快乐!

Make love, not code 👩‍💻
22.01.202518:28
测完了 tp_btf/netif_receive_skb + bpf_skb_output 大战 kporbe/__netif_receive_skb_core + 手动拆非线性区,结果是🤬😭

rps 从 80192.46 baseline 分别下降到 60532.69 (bpf_skb_output) 和 46360.68 (手动档),下降越少越好😀 tcpdump 只下降到 63131.31 ,赢!

所以仅剩的卖点就是好玩了。不对,仅剩的卖点是可以在任意地方抓包,但我还是觉得好玩最重要!只是狂歌一曲,恍惚间就化入无穷,debug,杯莫停,人生不过一场大梦~

(下面开始找补)

其实在任意地方抓包还是有工程价值的,尤其是 tcpdump 只能在 interface 上抓,还容易被 bpf 干扰,还有美美隐身的 xfrm , slirp 转化的 vxlan0 ,ipsec offload ,还有 GRO GSO 这些之前几乎没有工具能观测的内核功能以前只能看着文档催眠自己“对就是这样的不要多想照着抄就行了”现在也终于能手动展开 skb_shared_info 而仔细灌肠。

费曼说 “What I cannot create, I do not understand” ;我说 “What I cannot see, I do not believe” 。
Показано 1 - 9 из 9
Войдите, чтобы разблокировать больше функциональности.