可再生能源波动导致电价差异,如何调度批量任务到低价时段

解读

面试官把“性能测试”与“绿色算力”结合,考察候选人能否把传统的“并发-吞吐量-资源利用率”指标,延伸到“电价-碳排-成本”维度。
核心矛盾是:可再生能源(风光)出力不可控,现货电价每15分钟跳变一次;而批量任务(日志归集、AI训练、大文件转码、夜间对账)又必须满足SLA。
性能测试工程师需要给出“可量化、可验证、可回滚”的调度方案,并用压测手段证明:在低价窗口内完成任务,且不因资源争抢导致超时或失败。
回答时要体现“测试左移”思维:不是简单写个cron,而是先建模、再仿真、再灰度、再监控,最终把结论反哺到容量基线与SLA修订。

知识点

  1. 国内电价体系:分时电价(峰平谷)、现货市场日前/实时出清价、绿电交易溢价、需求侧响应补贴。
  2. 任务特征刻画:CPU型、GPU型、内存型、IO型;可拆分粒度;最早开始时间、最晚完成时间、可容忍中断次数。
  3. 性能建模:排队论M/M/c→M/M/c/K,把“电价≤λ元/度”当作服务窗口,计算任务在窗口内完成的概率P(Tq≤Tsla)。
  4. 容量评估:基于历史PV、Wind出力曲线与电价曲线做蒙特卡洛2万次采样,得到“低价时段可用算力”分布,再反推需要提前扩容的容器副本数。
  5. 压测设计:
    • 负载模型:用JMeter+自定义JavaSampler模拟“电价触发+任务提交”双因子负载,电价下降瞬间并发陡增10倍。
    • 资源监控:接入Prometheus+node-exporter,重点看CPU steal、GPU显存碎片、磁盘iowait,防止低价时段大家一拥而上反而打爆集群。
    • 稳定性:用Linux tc+chaosblade模拟风光骤降→电价飙升,验证任务能否在30秒内保存checkpoint并优雅挂起。
  6. 指标验收:
    • 业务指标:任务完成率≥99.5%,平均延迟不超过SLA 1.2倍。
    • 成本指标:度电成本下降≥18%,碳排因子下降≥25%。
    • 系统指标:低价时段CPU利用率从45%提升到78%,且P95 Pod启动时间≤8秒。
  7. 回滚策略:若压测发现“低价窗口并发过载导致长尾延迟>SLA”,立即触发熔断,把非关键任务弹回常规时段,并记录基线偏差供下次调参。

答案

整体思路分四步:画像→预测→调度→验证。
第一步,任务画像。把批量任务按“能否中断、能否并行、资源饥渴度”打三维标签。例如:

  • AI训练任务:可拆成128个子任务,单卡GPU 80%,中断需保存checkpoint,最晚7点前完成。
  • 日志压缩:CPU 40%,内存2 GB,不可中断但可延迟到24点。
    用一周的历史运行数据,在Hive里跑SQL,算出每个任务在不同并发下的运行时间分布,输出P50、P90、P99。

第二步,电价预测。调用国网南瑞公开的“新能源出力+现货价格”API,拿到过去365天5分钟粒度数据。用LightGBM做特征工程:把风速、光照、温度、节假日、历史电价作为输入,预测未来24小时电价曲线。模型评价指标MAPE≤6%。同时输出“低价置信区间”:例如明日02:00-05:00电价≤0.32元/度的概率为92%。

第三步,调度策略。采用“双队列+动态优先级”算法:

  1. 预调度队列:在20:00根据预测结果,把可延迟任务一次性排进低价窗口,并预留20% buffer防止预测误差。
  2. 实时校正队列:每15分钟对比真实电价与预测值,若偏差>15%,触发重调度。用Kubernetes自定义Operator,修改CronJob的suspend字段,或把低优先级任务从GPU节点驱逐到CPU节点,释放高价时段的昂贵资源。
  3. 资源隔离:给低价窗口单独建一个HPA,最小副本数=基准负载,最大副本数=集群剩余容量;通过PodDisruptionBudget保证至少有1个副本存活,避免全部抢占导致雪崩。

第四步,性能验证。

  1. 影子压测:在预发环境用生产等量数据,把电价曲线提前注入,模拟“预测准确”和“预测失准”两种场景。压测脚本用Go写gRPC压测客户端,持续6小时,QPS曲线对齐真实任务提交节奏。
  2. 瓶颈定位:通过eBPF采集on-CPU火焰图,发现低价时段etcd写延迟飙高,原因是所有节点同时拉镜像。解决方案:提前在本地磁盘缓存镜像,并把镜像仓库迁到内网Harbor,P99延迟从1.2秒降到180毫秒。
  3. SLA报告:输出《绿色调度性能报告》,包含“任务完成率-电价-碳排”三维散点图(文字描述即可),证明在电价≤0.35元/度时段完成85%计算量,整体度电成本下降21%,碳排因子下降27%,且核心接口P99延迟仅上涨4%,在SLA允许范围内。

最终,把以上过程固化成一条GitLab CI流水线:

  • 每晨7点自动拉取最新气象与电价数据→预测→生成调度计划→跑影子压测→若指标通过,合并到main分支,由ArgoCD自动下发到生产集群;若指标失败,发企业微信告警并阻断发布。这样就把“可再生能源波动”纳入了常规性能基线管理,实现了测试左移与成本优化的闭环。

拓展思考

  1. 碳排双控升级:未来各省陆续出台“碳排双控”考核,调度策略不仅要算电价,还要算实时碳排因子。性能测试需要引入“碳效率”指标:每克CO₂能完成多少有效计算。压测报告里要同时给出“成本-性能-碳排”帕累托前沿,供管理层决策。
  2. 需求侧响应补贴:江苏、广东对“可中断负荷”提供最高3元/千瓦时的补贴。性能测试可模拟“电网下发削峰指令,5秒内必须卸掉30%算力”的极端场景,验证任务checkpoint速度与状态恢复一致性,确保既拿到补贴又不丢数据。
  3. 异构算力潮汐:西部弃风弃光时段,电价接近0元,但网络延迟高。可把非实时离线任务通过IPv6+SRv6弹性调度到“东数西算”节点,性能测试需评估“高带宽打满时的TCP重传率”与“跨域对象存储写入延迟”,确保远程算力潮汐不会成为新瓶颈。