9.8 KiB
乙卷·天道诸劫(Kernel/法则层)·八回
第一回 天怒一降万物寂 判词如碑刻穹苍(Kernel Panic 雷劫)
天道判词
一线天心忽自裂,万法俱空夜色长。 雷书不为凡情改,断处回溯是遗章。
渡劫段落模板 却说洞府上界忽现异光,先是软锁如缚、RCU 如喘,继而天幕一黑,万物齐寂。串口与屏幕留下一道道栈回溯,似天道亲手刻碑:哪一处法则被触怒,哪一处经脉已崩塌。主角知此非人界小祸,乃天怒之雷;若无后手(kdump/pstore/netconsole)存得雷痕,便只能在黑暗里猜。待捧得“天书残页”(oops trace + vmlinux 符号),方可循章溯源,寻得那一粒致命的魔种。
第二回 天锁既成群雄困 万力齐施也不行(死锁与锁竞争劫)
天道判词
锁锁相扣成天网,英雄到此亦低头。 非关气短功不济,只怪因循结旧愁。
渡劫段落模板 那日主角修为已至化境,偏偏一动便觉寸步难行:吞吐如坠深井,火焰图上尽是锁影与 futex 哀鸣。更有 hung task 警示如冷风穿堂,似有天锁将众生绑在一处。此劫不靠蛮力,靠改道——分片、减共享、缩临界、定锁序;再以 lockdep/perf lock 或 eBPF 观锁魂,查谁持锁如抱丹不放。若只在旧锁外再加新锁,便是以绳缚绳,越缚越死。
第三回 宽限不至天机滞 一念不让万界迟(RCU Stall 劫)
天道判词
宽限如潮终须至,有人不退便成灾。 一念长执遮天道,万灵齐等夜徘徊。
渡劫段落模板 忽闻上界传来警示:RCU stall。众人初不解其意,只觉洞府像被定身——并非全死,却处处拖慢。主角知 RCU 之道在“众生皆须一让”,宽限期方能过去;若有人在临界之地久不放手(禁抢占/关中断/长临界),便如以一念遮天,令天机停滞。于是他循迹追索:是哪个路径占着天道不肯让步;用 tracepoint/ftrace 或 eBPF 观其停滞之时长,斩断那段过长的执念,宽限潮水方能再度回流。
第四回 天刑巡夜锁魂急 软硬皆判不容情(Soft/Hard Lockup 劫)
天道判词
看门神犬昼夜巡,久不应声便是刑。 软判尚留回头路,硬裁一落断今生。
渡劫段落模板 却说洞府里忽现“watchdog”谕令:soft lockup 先鸣,似告诫“尚可回头”;若仍不醒,hard lockup 便如重锤,直接裁决。其因多在某核久不调度、久不应钟:或长循环不让出,或关中断太久,或锁劫缠身。主角若要破此天刑,须先分清是“应钟不灵”还是“被天锁困死”,再沿调度与中断之线追到源头。此劫最忌以为“偶发无妨”,因为天刑巡夜,第二次往往更重。
第五回 仙骨暗腐无声噬 瓦解从来不见刀(SLAB 泄漏劫)
天道判词
不见刀兵见骨瘦,仙骨空空自成伤。 一滴一滴吞灵去,回头已是万山荒。
渡劫段落模板 有一类天道劫最阴:洞府表面风平浪静,内里仙骨(slab)却在悄悄变薄。主角只觉可用之物日渐稀少,却在用户态查不出分毫端倪;原来吞灵者藏在内核堆里,拿了对象不还,或引用不断。此时须翻开 slab 之谱(/proc/slabinfo、slabtop 等),看哪一族缓存增长如草;再借调试护体(如 KASAN/trace)追其来路。此劫最适合写“慢性心魔”:不痛不响,却把寿元一点点掏空,直到突然引爆更大的天罚。
第六回 回收成狂无寸进 吐纳千回亦枉然(回收活锁/Thrashing 劫)
天道判词
吐纳千回仍见空,回收无功反自穷。 脏潮未退砂仍碎,一劫牵连百劫重。
渡劫段落模板 忽然之间,洞府像中了“反复吐纳”的邪咒:CPU 忙得团团转,回收与压缩不断,却换不来真正的可用灵气。主角一看便知是回收活锁:脏页回写不畅、碎片化顽固、高阶需求不停,三者互相牵扯,吐纳越急越乱。要破此劫,须先退脏潮(稳回写水位),再治碎砂(减连续分配/调整 THP/compaction 行为),最后把吞灵之源关进界内(cgroup 限制)。若只加大回收力度,等同逼人强行运功,往往先把自己累死。
第七回 天时不与英才绝 饥饿一至万念空(调度饥饿/优先级反转劫)
天道判词
天时若偏千般巧,英雄无用也成愁。 一高一低相牵制,反转回环断去留。
渡劫段落模板 此劫来时,最像“被天命冷落”:有的生灵明明该动,却久久得不到一丝天时;有的却霸占时辰,行走如风。其因或在优先级反转,或在实时之法被滥用,或在绑核/配额使天时偏斜。主角若要破关,须把“谁拿走了天时”查得明白——从调度观测入手(perf/ftrace 的调度轨迹),再调回天秤:让不该独占的归还,让该得到片刻的得片刻。此劫最适合写“强者受困”:不是修为不够,而是天时不与。
第八回 大页似舟翻作浪 塑脉成灾震一城(THP/Compaction 震荡劫)
天道判词
大页原为渡劫舟,碎浪翻时反作仇。 强塑经脉天地颤,一震三惊不肯休。
渡劫段落模板 有宗门喜用“透明大页”以求气机通畅,奈何洞府经脉碎时,大舟反成浪。THP 与 compaction 一旦频繁出手,便像强行塑脉,震得人界一阵阵抽搐。主角若要止震,不能只喊“关或开”,须先观其震源:究竟是分配模式碎、还是高阶需求逼迫,抑或内存压力把 compaction 推到前台。待查明后,或调 THP 策略、或改分配形态、或把高阶需求移道,方能令洞府不再“每逢塑脉便震三震”。
乙卷·天道诸劫(Kernel/法则层)·案牍注解(旁批)
第一回 Kernel Panic 雷劫 — 案牍注解
- “天怒(panic)”:法则自知不可续,遂令万物归零;非人界可挽。
- “oops trace”:天道失手时的血书,最可贵者在“调用之链”,非在最后一句。
- “kdump / pstore / netconsole”:留雷痕之法;无痕则无从问罪,无从破关。
- “vmlinux 符号”:解碑文之钥;无符号则碑上皆是天书。
第二回 死锁与锁竞争劫 — 案牍注解
- “死锁”:两法相制,各不相让;多因锁序错、临界长、交错取。
- “锁竞争”:非死亦苦;众生争一门,门虽开却一人一入。
- “futex”:人界与天道相接之锁门;火焰图见其影,常是瓶颈明证。
- “lockdep”:锁狱簿册,记诸锁因果;启之可见天网,亦耗灵气。
- “perf lock / eBPF 观锁”:量其持锁之时、争锁之众,方能对症下药。
第三回 RCU Stall 劫 — 案牍注解
- “RCU”:以“先行后补”换读之畅;其要在“宽限期”(grace period)。
- “stall”:宽限不至;多因有人久不让步(长临界、禁抢占、关中断)。
- “synchronize_rcu”:求宽限之令;若久不应,便知天机受阻。
- “tracepoint / ftrace”:观“谁不让步”的照妖镜;寻得元凶,劫自可解。
第四回 Soft/Hard Lockup 劫 — 案牍注解
- “watchdog”:巡夜官也;久不闻钟,便判“天道凝死”。
- “soft lockup”:尚能喘息,或可回头;多见于长计算/长禁抢占。
- “hard lockup”:钟声不入,往往更凶;常因关中断过久或死锁入骨。
- “NMI”:天道外使,强行探查诸核;其至则判词多可信。
- “应钟”:调度与中断之应答;失其应,则天刑必下。
第五回 SLAB 泄漏劫 — 案牍注解
- “slab / kmalloc”:天道用器之库;对象如砖,取用当归还。
- “泄漏”:取而不还,或引用不断;阴毒在无声无息。
- “/proc/slabinfo”:仙骨谱;看哪一族缓存肥长异常,即知吞灵所在。
- “KASAN”:护体罡气,专照越界与破坏;重则耗灵,轻则救命。
- “模块/驱动”:最常藏魔处;旁门法器多,归还之道杂。
第六回 回收活锁/Thrashing 劫 — 案牍注解
- “reclaim”:回收使者之行;本为救急,久行则耗命。
- “direct reclaim”:众生自下场回收,故万事皆慢;此乃“逼人强行运功”。
- “thrashing”:吐纳无功、往复空转;常与脏页、碎片、高阶分配互为因果。
- “kswapd”:回收行者;其忙与不忙,皆可作天象判读。
- “cgroup memory”:小洞天之界;先圈祸源,后谈根治。
第七回 调度饥饿/优先级反转劫 — 案牍注解
- “starvation”:天时不至;非死却比死更磨人。
- “优先级反转”:低者握钥,高者久候;天时虽在,因果却倒。
- “RT(实时)”:夺时之术;用之不慎,众生皆贫天时。
- “CPU 绑核/配额”:天时分封之法;封得不均,则一洲富、一洲饥。
- “sched trace”:天时簿;看谁得时、谁失时,方能正其偏。
第八回 THP/Compaction 震荡劫 — 案牍注解
- “THP”:透明大页;本欲通脉,脉碎则舟翻。
- “compaction”:强塑经脉以求连续;频繁则震,震久则伤。
- “高阶页”:大器之材;需连续之地,故最怕碎片。
- “震荡”:多非单点之罪,常是分配形态与压力策略相冲。
- “取舍”:THP 关开皆非究竟,先观其震源,再定其法度。