续费季最尴尬的场面,不是预算被砍,是你坐在会议室里,采购把去年的合同往桌上一拍,问“今年续多少”,你嘴上说“还是紧”,但拿不出任何一个能拍在桌上的数。工程师抱怨抢不到号,你记着;财务说去年刚加过,你也记着。两边都没错,错的是你手里只有“感觉”,没有可以拆开看的证据。
先把一件事说清楚:软件续费的依据,不是“有多少人装了”,也不是“某天下午lmstat显示满了”,而是“过去一个完整业务周期里,每个feature的峰值并发到了多少,拒绝发生了多少次,其中有多少是checkout之后根本没干活的” 。这三件事不拆开,预算申请永远是一笔糊涂账。
FlexNet 这套东西的道理不复杂。浮动许可的每一次使用,本质上是一次 checkout:客户端向 vendor daemon 要一个 feature 句柄,用完了再 checkin 还回去。问题是,checkout 和“真正在计算”之间隔着一条很宽的沟。GUI 开着,人去开会了;求解器提交完任务,界面挂在那里;下班忘了关软件,句柄过夜。这些会话在 lmstat 的输出里全都算“in use”,你的利用率曲线看起来很高,但其中相当一部分是“占着不用”。更麻烦的是,lmstat 只给你看“现在谁占着”,它不告诉你历史上峰值冲到过多少,也不告诉你有人被拒绝过多少次——denial 记录在 vendor daemon 的日志里,不在 lmstat 的输出里。
所以续费前要拿出来的指标,得能回答三个不同的问题,不能混在一个“利用率”里一锅炖。
第一个,峰值并发,不是平均并发。 平均并发会把你最需要许可的那几个小时全部抹平。一个36席的NX池子,日均平均并发可能只有19,但峰值冲到31。你拿19去跟采购说“还有余量”,高峰期的工程师会想打人。峰值并发的口径要带上时间窗口:过去90天里,每个feature每天的最大同时checkout数,取一个稳定值。
第二个,拒绝率,而且要过滤掉假拒绝。 FLEXlm 记录的 denial 数量天然偏高,因为有些请求在一个池子被拒之后,在另一个池子或者另一台服务器上拿到了,用户实际上并没有被挡住。续费该看的是“true denial”,也就是用户真的没拿到许可的次数。这个数不单独看,要跟峰值并发放在一张图上看:峰值贴着采购数走,同时true denial集中出现在固定时段,那才是增购的论据;峰值离采购数还有距离,denial零零散散,先查池子拆分和部门配额,别急着签单。
第三个,闲置率,按feature算,不按软件总量算。 一次checkout之后,超过15或30分钟没有任何活跃命令,键鼠静默,软件本身也没有再生、求解、刷新动作,这段时长就应该计入闲置。这个数在制造业浮动许可里通常不低,25%到40%的“占而不用”是常态,不是个案。闲置率不直接等于“可以砍掉的席位数”,但它告诉你池子里有多少水是死水,续费前先把死水排掉,再谈买多少。

指标清单大概长这样,一张表,按feature拉,别按软件名拉:
过去90天,每个feature的峰值并发、第95百分位并发、true denial总次数与集中时段、checkout总时长中无活跃命令的占比、单人单次最长占用时长、非工作时段仍然处于checkout状态的平均席位数。
这几个数不需要什么高级平台,lmutil lmstat -a -c port@host 挂个cron每10到15分钟采一次,追加写日志,两周到一个月就能出趋势。麻烦的在后面:denial要从vendor daemon的debug log里捞,闲置判定要结合Report Log里的CHECKOUT和CHECKIN配对来算,不是看进程在不在。手工撸几十万行日志不现实,但至少要把原始日志留好,口径和周期写清楚,谁出的数谁签字。
说一个具体的。 2026年3月,一家汽配研究院,NX 2312买了36个浮动,Catia V5-6R2023买了28个,Ansys 2024买了24个。跑了两周只读采样,NX日均峰值并发31,平均19,闲置率41%,等效可释放10席;Catia闲置率37%,等效7席;Ansys闲置率44%,等效8席。NX单席年费大概6万,光NX一项释放10席就是60万上下,而这批“被占着”的席位里,相当一部分是午休和下班后仍然挂着的GUI句柄。拿着这张表去续费谈判,和拿着“工程师说不够用”去,是两种完全不同的局面。
坑也说几个。 把Node-locked和Floating混在一个分母里算利用率,算出来的数自己都不敢拿去汇报,lmstat本来就不显示uncounted/node-locked的席位。只在续费前一周跑一次lmstat,拿一个瞬时快照去砍单或者加单,下个季度一定反悔。还有,别在lmgrd那一层直接改TIMEOUTALL去“解决”闲置问题,旧版FlexNet对某些vendor daemon根本不生效,回收逻辑放在上层调度器做,比动license文件安全。
哦对了,仿真机和求解节点单独标出来。Ansys solver跑起来几个小时界面不动,那不是闲置,那是正在烧CPU。把长期计算任务当成僵尸用户回收,比浪费许可证严重得多。