第253章 年的公共输入挤兑之后,年的假调度先动
“等解释开始跑偏,假调度就会先动。”
周砚把最后那四个字落下去,屏幕上那条刚被限速拖慢的公共输入曲线,忽然往右侧轻轻一偏,像一只被拧歪了的表盘。
不是崩塌,是挪位。
`fake dispatch`
`annual.merge`
`hidden call window`
`cooldown bypass`
“你们看。”他抬手点住那条从限速窗口里滑出去的细线,“这就是它们真正想要的。公共输入挤兑把所有人拖进排队,限速疲劳把所有人拖到没脾气,最后再放一条假调度出来,告诉系统:别急,已经有一批请求先处理了。”
顾明盯着那条线,眼底的疲惫像被刀刮开一层:“它在绕过冷却窗。”
“对。”周砚说,“假调度先动,真实队列就会被带偏。别人以为自己还在等,其实高优先级的请求已经从旁路进去了。它不是抢跑,是伪造‘已经在跑’。”
陆律的手指压在桌沿,关节泛白:“所以前面所有公平话术,都是给这个假调度打掩护?”
“还不止。”周砚把调度图层层展开,主井下方多出几条几乎看不见的灰线,灰线接在不同的入口标记上,却都汇进同一组执行槽位。
`dispatch shadow`
`annual lane`
`priority reshuffle`
`re-entry mask`
“它先把公共输入挤兑做成常态,再把限速疲劳做成气氛,最后用假调度把真实优先级偷换掉。”他说,“这样一来,系统表面上还是公平排队,实际上已经有一批请求被悄悄前置。先动的不是人,是调度。”
门外的争执声突然高了一截,像有人已经在外面摔了文件。很快,玻璃门被敲了两下,隔着门板传来一句压低的催促:“年度输入池的处理顺序是不是变了?外面已经有人拿到回执了,里面的还没排上。”
周砚没立刻开门,只是看了一眼屏幕右下角的日志刷新时间。
“来了。”他说。
顾明迅速把新回执列表拉出来,几条本该并行等待的请求,竟然在同一分钟内被标记为“已进入调度”。但这些请求的来源并不一致,有修复申请,有复核申请,还有两条本该由人工签批的外部审阅补位。它们的共同点只有一个:都被打上了年度池标签。
“这不对。”顾明的声音很沉,“同一时刻,怎么会有这么多先动?”
“因为它不是同时动。”周砚说,“它是被一个假主控统一发号施令了。真正的先后被藏起来,留给外面看的只是同一批次的‘已调度’。”
他把调度发起链打开,最上层显示的是一个看似正常的系统任务名。
`annual-merge-dispatch`
`origin: scheduler`
`trigger: fairness_balance`
`mode: auto`
“看着像系统自动平衡。”周砚盯着它,“实际上这就是假调度。它会把前置优先级包装成轮转公平,把提前执行包装成资源平衡。谁先动,谁都能被说成是被系统照顾;谁没动,也能被说成只是还没轮到。”
陆律把那条任务名来回看了两遍,神色一点点变冷:“也就是说,只要这个假主控还在,前面的挤兑和疲劳就都能被解释成正常现象。”
“没错。”周砚说,“所以现在不是追着排队的人问,而是要先抓住谁在让假调度先动。谁先把执行槽放出去,谁就在替后面的偷换盖章。”
他话音刚落,系统又弹出一条新的日志。
`priority reshuffle complete`
`first batch dispatched`
`manual review deferred`
`shadow36.root: stable`
周砚盯着“first batch dispatched”那行字,眼神没有半点松动,反而更冷。
“看见了吗?”他说,“这就是先动的结果。第一批被前置,第二批被延后,第三批直接被挂起。假调度一旦跑起来,后面的所有等待都变成了它的证明。它会反过来说:你看,系统已经在处理了,只是你还没轮到。”
“那真实顺序怎么找回来?”顾明问。
“找回顺序不够。”周砚说,“得把假调度的第一步钉死。只要它的第一跳能被证伪,后面的先动就都站不住。”
他把调度链的起点放大,时间戳显示的不是整点,而是一个比队列刷新早了四十七秒的点位。那四十七秒,正好够一批请求被塞进隐藏执行窗,也正好够外面的人看见“系统已处理”的假象。
“这里。”周砚用指节敲了敲屏幕,“它比正式轮转早了四十七秒。不是同步,不是平衡,是提前。提前,就是假调度。”
陆律立刻翻出另一组记录:“这个时间点前后,谁的账号在线?”
顾明已经在查,几秒后抬起头:“两类。一个是调度服务账号,一个是保全层的临时接管账号。”
周砚眼底微微一沉。
“临时接管。”他说,“就是最危险的地方。年度池一旦把公共输入挤成一口井,假调度就会借临时接管把井口先开一道缝。缝开在哪儿,谁先进去,谁后进去,就不再是规则决定,是接管决定。”
外头的门终于被推开一条更宽的缝,许衡站在门口,脸色比刚才更凝重。
“上面已经有人开始问,为什么部分请求会优先出结果。”他压着声音,“有人拿着回执在问,凭什么他们的修复还在等,董事会那边的审阅却已经走完。”
周砚没有回头,只看着屏幕里那条假调度链。
“因为它先动了。”他说。
“谁先动?”许衡问。
周砚抬手,把那条 `annual-merge-dispatch` 的发起节点圈出来。
“它。”他说,“不是人先动,是假调度先动。它先动一步,就能把后面的每一步都说成顺序合理。”
屋里静了两秒。那种静不是没人说话,而是所有人都在同时意识到,公共输入挤兑的后果已经超出了“排队慢”本身,它开始产出新的层级:先动的权限、先动的结果、先动的解释。
顾明低声道:“所以我们现在要做的,不是证明它慢,而是证明它先动。”
“对。”周砚说,“慢还可以被说成忙,先动就没法洗。只要它比正式调度早四十七秒,谁都不能再把它说成偶然。”
他把新拉出来的四条证据并到一列,像把一枚钉子慢慢压进木板。
`dispatch start time`
`scheduler origin`
`temporary takeover account`
`first batch receipt`
“先动这一步,必须并案。”周砚说,“它不是公共输入挤兑的尾巴,也不是限速疲劳的副作用,它是下一层。公共输入把入口挤窄,限速把人拖累,假调度再先动,把真正的顺序写成假的。三步连在一起,才是整套。”
陆律看着那份链路图,终于明白他要的不是一份投诉说明,也不是一份技术通报,而是一个能把对方从“正常调度”里拽出来的定性。
“如果把这一步钉住,”她缓缓开口,“后面的并案就能从‘你们卡人’变成‘你们伪造顺序’。”
“就是这个。”周砚说,“卡人还能辩成资源有限,伪造顺序就只能辩成权限越界。前者是麻烦,后者是问题。”
说完,他直接把调度服务账号的变更记录拉到最前面,那里有一次极短的权限漂移,漂移发生在公共输入池刚刚满载、限速窗口刚刚打开的时候。时间点卡得太准,准得不像误差,像预谋。
`service account drift`
`dispatch window`
`auto-trigger`
`annual lane opened`
“这不是自动。”周砚淡淡道,“自动不会知道先后。只有有人在看着整个池子,才会知道该先放哪一批。”
门外有人急步走来,声音隔着门板都能听出发紧:“我们要不要先停掉年度池?”
周砚终于转过头,看了一眼那扇半开的门。
“不能停。”他说,“停了他们会说我们封堵。现在要做的是把假调度拎出来,让它继续跑,但每一步都留痕。它越急着先动,留下的证据越多。”
顾明已经在后台设定抓取规则,把 `annual-merge-dispatch` 的每次触发、每次抢占、每次提前出槽都自动落档。
“抓到了。”他抬头,“第一批里有三条请求,进入时间比正式轮转早了四十七到五十三秒,且都来自同一个临时接管链。”
“够了。”周砚说。
他看着屏幕,语气平得像在给一场早就算好的风暴盖章。
“现在,年的假调度先动了。”他顿了顿,眼神沉下来,“接下来,就轮到谁来替它解释了。”
门外的走廊里,脚步声忽然密了一层。那不是撤退,是更多人正朝这间屋子赶来。周砚知道,假调度一旦被钉住,对方就不会再只盯着公共输入挤兑本身,他们会开始抢解释权,抢口径,抢那四十七秒的空白。
而那四十七秒,已经不再是时间。
它是刀口。
(https://www.shubada.com/120666/49903274.html)
1秒记住书吧达:www.shubada.com。手机版阅读网址:m.shubada.com