问题背景:Atlas Box A800机型,openubmc的Redfish接口Sensors资源,实测轮询时效无法满足散热要求(<2s,其中查询nBMC响应延迟1s,主BMC处理1s),需讨论策略
1、原ThresholdSensors接口查询响应能满足要求,<1s
2、新接口采用集合模板,需要先分页访问集合,再通过扩展参数查询。155个传感器按32个每页需5页,实测查完一轮时间>40s,无法满足使用要求
问题背景:Atlas Box A800机型,openubmc的Redfish接口Sensors资源,实测轮询时效无法满足散热要求(<2s,其中查询nBMC响应延迟1s,主BMC处理1s),需讨论策略
1、原ThresholdSensors接口查询响应能满足要求,<1s
2、新接口采用集合模板,需要先分页访问集合,再通过扩展参数查询。155个传感器按32个每页需5页,实测查完一轮时间>40s,无法满足使用要求
答案内容由AI生成,仅供参考:
在Atlas Box A800机型上,当前通过Redfish接口批量获取Sensors资源的轮询时效无法满足散热监控的实时性要求(需小于2秒)。实测显示,完整一轮传感器数据采集耗时超过40秒,远超预期。该延迟主要由两部分构成:nBMC查询响应延迟约1秒,主BMC处理时间约1秒。尽管原ThresholdSensors接口单次查询响应时间可控制在1秒以内,但新采用的集合模板分页机制显著增加了整体开销。
新的Sensors资源接口采用了集合(Collection)模板设计,需先分页访问集合,再通过expand参数获取详细信息。以155个传感器为例,按每页32个计算,需进行5次分页请求。每次请求不仅涉及多次HTTP交互,还需在服务器端进行资源聚合和序列化处理,导致总耗时急剧上升。此外,知识库中已有反馈指出,使用expand参数时响应时间可达23秒以上,进一步验证了该设计在大规模传感器场景下的性能缺陷。
根据现有知识库信息,可考虑以下优化方向:
避免深度嵌套与过度扩展:参考GET /redfish/v1/Chassis/1/Thermal接口被ThermalSubsystem替代的案例,应避免返回深层嵌套或大规模扩展的数据结构。建议评估是否可将Sensors资源整合为更扁平化的子资源容器,如按类型或区域划分,减少单次请求负载。
优化分页与查询机制:目前分页加扩展的模式效率低下。可探索支持批量ID查询或指定字段投影的接口,减少不必要的数据传输。同时,需排查是否存在资源就绪延迟(Resource Readiness Delay)问题,确保BMC重启后相关资源能快速可用。
引入缓存与增量更新机制:对于变化频率较低的传感器数据,可在BMC侧实现缓存策略,并支持客户端通过ETag或时间戳判断数据变更,仅获取更新部分,降低频繁全量查询的压力。
性能监控与调优:结合BMC reboot Redfish response test等测试手段,持续监控接口响应时间,定位瓶颈环节。同时,参考busctl等工具对D-Bus接口的调用方式,评估底层服务交互是否存在优化空间。
综上所述,当前Sensors接口的设计模式是性能问题的主要根源。建议重新评估接口架构,优先保障关键监控路径的低延迟需求,必要时可保留原有高效接口或引入新的高性能查询机制。
请提供下NPU Box侧BMC的版本信息
Chassis/1/Sensors 是一个集合资源,?$Expand=.($levels=1) 实际就是访问多个URI,时间消耗是访问所有URI的消耗总和。
Chassis/1/ThresholdSensors 和 Chassis/1/DiscreteSensors 并非实现为集合资源,实际就是一个URI,所以性能相比 Chassis/1/Sensors 会更好。
问题的代码逻辑是懂,但提出来讨论自然是有背景的。
1、温度、功耗这些时效敏感的大批量的数据都在Sensors资源下,是要用于调速的,目前官方schema还没有其他替代
2、当OpenUBMC作为组件管理设备而非服务器的主管理设备,意味着服务器主管理设备需要从OpenUBMC获取这些资源用于调速,业界通用采集数据主要看Sensors资源是否满足性能,不看华为定制的接口,不然搭载不同的AI模组配置,会有兼容性问题
3、友商在其他管理设备上已经实现了Sensors资源使用查询参数扩展查询的响应时效在1s内,不管他怎么实现的,是能满足客户诉求的,但OpenUBMC这里还存在巨大的沟通gap
@duzhou13_51cdj @JiYou 当前在 openUBMC 上确实在传感器上的集合查询时存在性能低的问题,这部分类比了 LogService 资源上 EventLog/Entries 的查询,有可以优化的空间。当前问题已经转issue进行解决,issue 链接:[缺陷]: Redfish 接口 Chassis/Sensors 使用 expand 查询很慢 sensor #84