“等解释开始跑偏,假调度就会先动。”
周砚把最后那四个字落下去,屏幕上那条刚被限速拖慢的公共输入曲线,忽然往右侧轻轻一偏,像一只被拧歪了的表盘。
不是崩塌,是挪位。
`fakedispatch`
`annual.merge`
`hiddencallwindow`
`cooldownbypass`
“你们看。”他抬手点住那条从限速窗口里滑出去的细线,“这就是它们真正想要的。公共输入挤兑把所有人拖进排队,限速疲劳把所有人拖到没脾气,最后再放一条假调度出来,告诉系统:别急,已经有一批请求先处理了。”
顾明盯着那条线,眼底的疲惫像被刀刮开一层:“它在绕过冷却窗。”
“对。”周砚说,“假调度先动,真实队列就会被带偏。别人以为自己还在等,其实高优先级的请求已经从旁路进去了。它不是抢跑,是伪造‘已经在跑’。”
陆律的手指压在桌沿,关节泛白:“所以前面所有公平话术,都是给这个假调度打掩护?”
“还不止。”周砚把调度图层层展开,主井下方多出几条几乎看不见的灰线,灰线接在不同的入口标记上,却都汇进同一组执行槽位。
`dispatchshadow`
`annuallane`
`priorityreshuffle`
`re-entrymask`
“它先把公共输入挤兑做成常态,再把限速疲劳做成气氛,最后用假调度把真实优先级偷换掉。”他说,“这样一来,系统表面上还是公平排队,实际上已经有一批请求被悄悄前置。先动的不是人,是调度。”
门外的争执声突然高了一截,像有人已经在外面摔了文件。很快,玻璃门被敲了两下,隔着门板传来一句压低的催促:“年度输入池的处理顺序是不是变了?外面已经有人拿到回执了,里面的还没排上。”
周砚没立刻开门,只是看了一眼屏幕右下角的日志刷新时间。
“来了。”他说。
顾明迅速把新回执列表拉出来,几条本该并行等待的请求,竟然在同一分钟内被标记为“已进入调度”。但这些请求的来源并不一致,有修复申请,有复核申请,还有两条本该由人工签批的外部审阅补位。它们的共同点只有一个:都被打上了年度池标签。
“这不对。”顾明的声音很沉,“同一时刻,怎么会有这么多先动?”
“因为它不是同时动。”周砚说,“它是被一个假主控统一发号施令了。真正的先后被藏起来,留给外面看的只是同一批次的‘已调度’。”
他把调度发起链打开,最上层显示的是一个看似正常的系统任务名。
`annual-merge-dispatch`
`originscheduler`
`triggerfairness_balance`
`modeauto`
“看着像系统自动平衡。”周砚盯着它,“实际上这就是假调度。它会把前置优先级包装成轮转公平,把提前执行包装成资源平衡。谁先动,谁都能被说成是被系统照顾;谁没动,也能被说成只是还没轮到。”
陆律把那条任务名来回看了两遍,神色一点点变冷:“也就是说,只要这个假主控还在,前面的挤兑和疲劳就都能被解释成正常现象。”
“没错。”周砚说,“所以现在不是追着排队的人问,而是要先抓住谁在让假调度先动。谁先把执行槽放出去,谁就在替后面的偷换盖章。”
他话音刚落,系统又弹出一条新的日志。
`priorityreshuffleplete`
`firstbatchdispatched`
`manualreviewdeferred`
`shadow36.rootstable`
周砚盯着“firstbatchdispatched”那行字,眼神没有半点松动,反而更冷。
“看见了吗?”他说,“这就是先动的结果。第一批被前置,第二批被延后,第三批直接被挂起。假调度一旦跑起来,后面的所有等待都变成了它的证明。它会反过来说:你看,系统已经在处理了,只是你还没轮到。”
“那真实顺序怎么找回来?”顾明问。
“找回顺序不够。”周砚说,“得把假调度的第一步钉死。只要它的第一跳能被证伪,后面的先动就都站不住。”
他把调度链的放大,时间戳显示的不是整点,而是一个比队列刷新早了四十七秒的点位。那四十七秒,正好够一批请求被塞进隐藏执行窗,也正好够外面的人看见“系统已处理”的假象。