当前位置:首页 > 台系CIM入门解说 > 正文内容

派工引擎怎么写才不卡?

台系CIM入门解说 · 第29篇 | 主线案例:Lot L261029-A01-001|12寸晶圆|产品A01

图:派工引擎怎么写才不卡?

早上八点十分,三千盒货在等一句话

2026 年 8 月 12 日,早上八点十分。夜班刚交班,白班的第一波货集中出站。

阿凯盯着屏幕,看着两个数字往上跳:全厂在制 Lot 五千一百多个,等待派工的三千出头。

新版派工引擎是昨天半夜上的。老周的原话是"先一条线跑一周",厂长嫌慢,说"就一条线,能出什么事",于是直接推了全厂。

八点十二分,阿凯刷新了一次。单次派工耗时:80 毫秒。

八点十五分:600 毫秒。

八点十九分:2.3 秒。

"周哥。"他声音有点抖。

老周凑过来看了一眼,只说了一个字:"停。"

八点二十六分,回滚完成。这二十二分钟里,全厂三百多台设备有四十多台空转,搬送轨道上堵了七十多盒货,一条线停了二十分钟。

派工慢,到底慢在哪

复盘的时候,问题不在算法。

派工要算两件事:这台机器能不能做,这盒货该不该先做。能不能做,看认证、看机台状态、看刀具寿命、看腔体;该不该先做,看交期、看优先级、看有没有插单。

第 7 篇打过的比方,这里再用一次:RTD 是餐厅的领位员。门口排着几千个客人,里面几十张桌子。一个好领位员不会每来一个人,就把整个餐厅重新量一遍尺寸。

旧版为什么快?因为它先偷了个懒——按产品查一张"哪些机台能做"的表,五百台里通常筛出八台,再在这八台里算分数。八台乘几十条约束,几十毫秒算完。

新版为什么慢?阿凯为了"更准",把粗筛那一步砍了,改成全量精算:三千个 Lot,每个 Lot 对着三百多台机器、两百多条约束算一遍。听着很专业,实际上是把领位员变成了一个每次都要重新丈量整个餐厅的人。

"先粗筛再精算,"老周说,"这不是偷懒,是常识。被筛掉的那些,本来就不可能。"

粗筛之后,还得排个先后。这一层看着简单,其实最容易被业务吵翻。

每个 Lot 进来都带着一个分数:交期还剩几小时、已经等了多久、客户等级、是不是急单。三项加权,算出一个数。急单插进来,临时加五百分,排到前面去;加完之后如果它把三个正常单挤到超期,系统会亮黄灯,让计划员自己看一眼再确认。

阿凯第一版把权重写成了固定值,交期占七成。上线第一周,一个等了十九个小时的小单一直排不上,班组长跑来问:"这盒货是不要了吗?"后来权重改成可配,等待时长单独占一档,超八小时强制提分。

派工不只是算得快,还得算得让人服气。

卡住的不是算法,是那把锁

粗筛加回去,压测里又冒出一个更麻烦的问题。

派工要锁机台。锁的意思是:这台机器我定了,别人别抢。问题在锁怎么加。

阿凯最初的写法,是每次派工都去数据库里锁一行机台记录,算完再放开。单线程跑没问题,几十个线程一起跑就变成排队:一个线程拿着 ET02 的锁在算,另外三十个线程在门口等,等到超时、报错、重试,接着再等。

压测到第十七分钟,数据库连接池打满,最长的一次锁等待 8 秒。

老周让他把锁挪到内存里,按机台号分段:一号到五十号一把锁,五十一号到一百号一把锁,各排各的队,互不影响。再把机台状态、认证清单、刀具寿命这些天天要查的东西放进缓存,十秒刷一次。

改完再压,单次派工回到 70 毫秒,三千个 Lot 派完用了四分钟。

"锁不是越少越好,"老周说,"是要锁得足够小。你把整排桌子一锁,别人连门都进不来。"

压测要按两倍的量来挤

这里解释一个词:压测,就是故意用几倍的量去挤它,看它从哪个量开始喘。

阿凯第一次压测,用的是真实峰值:三千个 Lot 同时排队,每分钟六百次派工请求。跑了两小时,指标漂亮,他准备收工。

老周把他拦住:"按两倍来。"

"两倍?我们厂哪有六千个 Lot 同时等派工?"

"现在没有。明年产能扩三分之一,后年再上一条线,就有了。"老周说,"系统不是给今天造的。你按今天的峰值造,明年的峰值一来,你就得再回滚一次。"

第二次压测:六千个 Lot,每分钟一千二百次请求,连续跑四小时。前四十分钟一切正常,第四十一分钟内存开始涨——缓存里堆了一批已经派完的 Lot 没清掉,两小时后堆到九十万条,垃圾回收一卡,全厂停摆。

这回改的是过期清理:派完的 Lot 出缓存,取消的派工立刻释放锁,超时没回执的单独进一个补账队列,不跟正常派工抢资源。

还有一处阿凯没想到的:压测脚本最初是一条平线,每秒钟均匀地发请求。老周看了一眼就笑了:"真实流量不长这样。"厂里的派工请求集中在交接班后的十五分钟,早八点那一波能占全天的两成,中间还有设备突然停机带来的小尖峰。

脚本改成带尖峰的形状再压,才压出了锁等待那个问题。平均负载好看,尖峰顶不住,一样堵。

派工引擎为什么最像实时系统

一篇写下来,骨架就四件事:先粗筛再精算,锁要锁得小,缓存要清得勤,压测按两倍挤。

听着都不高深,但没有一件能省。因为派工引擎跟 CIM 里别的模块不一样:账本晚记三分钟,补上就行;报表晚出一天,没人停工;派工晚三秒,几百盒货在门口站着,搬送车堵在轨道上,人也跟着一起等。

它是这套系统里最像"实时系统"的一块。不是因为它算得多聪明,是因为它没有"等会儿再说"这个选项。

老周说:"派工引擎的本事,不在算得多准,在几千盒货一起挤的时候还算得完。"

这套引擎现在每天派工四十多万次,最忙的一个小时派了三万次,最长一次卡顿 400 毫秒。

系统这边算是稳住了。可系统跑得再稳,也得跟机器说得上话。国产的系统去接台厂用了十几年的设备,中间那些说不清的地方,才是真正耗时间的活。

下一篇:《国产CIM对接台厂设备,坑都在哪?》——这个系列的收尾篇。

相关文章

CIM和MES到底谁管谁?一个Lot的旅行说清楚

CIM和MES到底谁管谁?一个Lot的旅行说清楚

台系CIM入门解说 · 第2篇 | 主线案例:Lot L261029-A01-001|12寸晶圆|产品A01 先把误会说破 上一篇结尾留了个问题:CIM 和 MES,到底谁大谁小? 网上很多文章越讲...

跟着一片晶圆走一天:CIM系统全流程解说

跟着一片晶圆走一天:CIM系统全流程解说

台系CIM入门解说 · 第3篇 | 主线案例:Lot L261029-A01-001|12寸晶圆|产品A01 早上七点半:投料 L261029-A01-001 的故事,从早上七点半开始。 25 片...

台厂CIM都守的规矩:SEMI E系列规范到底管什么

台厂CIM都守的规矩:SEMI E系列规范到底管什么

台系CIM入门解说 · 第4篇 | 主线案例:Lot L261029-A01-001|12寸晶圆|产品A01 从一个"翻译事故"说起 阿凯入职第一个月,遇到一件让他印象深刻的事:...

国产CIM和台厂CIM差在哪?不是软件,是这五件事

国产CIM和台厂CIM差在哪?不是软件,是这五件事

台系CIM入门解说 · 第5篇 | 主线案例:Lot L261029-A01-001|12寸晶圆|产品A01 老周的一次"跳槽" 讲这篇之前,先说老周的一段经历。 前年,老周被一...

MES到底管什么?厂里那本谁都不敢改的账本

MES到底管什么?厂里那本谁都不敢改的账本

台系CIM入门解说 · 第6篇 | 主线案例:Lot L261029-A01-001|12寸晶圆|产品A01 一个想插队的班组长 周五晚上七点半,制造部的办公室里有点躁。业务那边刚接到客户电话,一个...

几百台机器,谁决定这批货先上哪台?

几百台机器,谁决定这批货先上哪台?

台系CIM入门解说 · 第7篇 | 主线案例:Lot L261029-A01-001|12寸晶圆|产品A01 早班八点的一单活 早上八点十分,L261029-A01-001 出了上一站,接下来要去...