仿真总监周三冲进 IT 办公室:"今晚 12 个 OptiStruct 要跑一夜, license 池已经空了,活干不完明天交不了差。"你一查 almutil 池子被吃干了,但看不出是谁、哪个模块、哪个求解器干的——因为 HyperWorks 的许可账本跟 NX、AutoCAD 不是一套算法,你按席位思维去算全是坑。
HyperWorks 不卖固定席位,卖的是 Altair Units(HWU/AU)池。1 个 AU 在 license 文件里对应 1000 个 feature。HyperMesh 启动就抽 21 个 AU,HyperView 6 个,OptiStruct 起步就是 50 个。SolverHPC 的抽法是分层的:前 1–4 核共 30 AU,第 5–36 核每核 +1.60,37–70 核每核 +0.80,71–200 每核 +0.60,核数越多边际越低。OptiStruct 优化、HyperSpice、MotionSolve 在这基础上乘 1.5。GPU 卡算 4 个核(EDEM 算 16 个核)。
两个关键机制必须搞懂,否则算都算错:Leveling(同主机同用户名下,多个应用同时跑只按最贵的那个算,比如 HyperMesh 21 AU + HyperGraph 6 AU,实际只抽 21 AU)和 Stacking(不同用户、不同主机的抽量累加,这是吃池子的主力)。Leveling 是否生效、有没有被错算成双倍,纯靠手算根本算不过来,所以要靠工具盯。
ALM 是 Altair License Manager,almutil 是命令行查询工具,URT(Usage Report Tools)是 on-premises 模式下必须配置的上报组件。托管模式走 Altair One,on-premises 走本地 ALM 服务器,两套模式抓日志的方式不一样。
第一,把 AU 池的消费图搞清楚。 交互式占用和 SolverHPC 批处理完全分开统计——HyperMesh 是交互占大头,OptiStruct/RADIOSS 是求解器按核数抽,两者在 license 日志里的 feature 名不同,混在一起算峰值必错。重点看:谁占得最多、哪个时间段挤、哪些 AU 抽了但没干活。
第二,抓失败重试和长占。 求解失败重试会重复抽 AU,脚本没清理的批处理进程会一直占坑。这两类是"看不见的浪费",在 almutil 的实时视图里只显示成"占用中",要按用户名和主机反查才能找到源头。
第三,抓峰值时刻。续约谈判和容量测算用的都是"Peak Usage",找到那一小时的构成(哪个项目、哪批任务、哪个用户组),决定后面做削峰还是扩池。
任务分级和预约机制立起来:关键节点的求解任务走优先队列,调研类、试验类的走低优先级,错峰跑夜间。可延迟任务推到窗口期,写清楚谁负责、什么时候完成、做完回读验证。无计算活动的会话做回收,CAE 求解中、多物理耦合仿真的千万别动——这是命脉,回收错了等着研发找你算账。按项目计划做容量预测,新车型 SOP 前、碰撞安全认证节点前提前扩池或调抽量,别等挤爆了再抱佛脚。

盯四个数
任务等待时长、模块拒绝率、批处理成功率、峰值利用率。任务等待时长和模块拒绝率必须在同一周期观察,跨周期对比得出的结论没法用。每个指标留分子分母和下钻明细,能回到具体用户、具体求解器、具体项目才有解释力。
一个真事
某汽车 Tier1 做底盘件的,150 个仿真工程师,AU 池 400 个,Q4 新车认证节点排队严重,研发天天投诉"license 不够要采购"。IT 拉了 60 天 ALM 日志做拆解:HyperMesh 交互占池 30%,但日均活跃只有 45 人,人均挂机时长 4.7 小时——一半 AU 是挂机吃掉的。OptiStruct 批处理按 64 核起步抽,最贵的时候单任务抽了 120 AU,一个晚高峰挤掉 3 个用户的 HyperMesh。整改动作:HyperMesh 上空闲 20 分钟回收 + 旁路调度网关;OptiStruct 的 HPC 批处理改走 PBS Pro 队列调度,按核数分档错峰(白天限 32 核、夜间放开 128 核);Leveling 规则核对,发现 12 个用户因为跨主机开同一个账号被错算成双倍抽量,统一收敛到工作站跑。三个月后:AU 池峰值从 385 降到 290,任务等待时长从平均 4.2 小时压到 0.8 小时,批处理成功率从 78% 拉到 96%,续约时按真实峰值砍了 40 个 AU,省下差不多两个工程师年薪的订阅费。
涉及合同条款和续约谈判的部分让采购和法务把关,技术这边把 ALM 日志、almutil 实时数据和峰值削峰曲线做扎实就行。