songwen
(Songwen)
1
背景
某客户要求内存状态传感器的Number按照这种规则产生:
1.传感器名字是Px_Cy_Dz:x-CPU(数字),y-Channel(数字)z-DIMM(数字),数字从0开始,依次编码
2.内存总预留32个sensor num;sensor num分配dimm->channel->socket顺序依次递增num;如P0_C0_D0_Status sensor num为0x50,P0_C0_D1 sensor num为0x51
问题
实际配置和定制传感器都是按照dimm->channel->socket顺序依次递增的
但是实际的sensor num并不是按照这个顺序生成的
是否有办法按照客户要求实现
传感器对象的注册及相应sdr数据的注册都是根据传感器csr对象的分发顺序依次处理的,因此该问题的本质原因其实是无法保证csr对象分发给组件的顺序。
针对您的述求,可在sensor仓优化传感器对象注册流程。当前的注册流程如下:
- 当有传感器csr对象分发时(on_add_object),先进行缓存(temp_store_sensor)
- 当该position所有对象分发完成后(on_add_object_complete),统一处理传感器和sdr的注册(register_sensors)
可优化register_sensors处理
-- 原流程
step1 根据当前position从缓存中取出该position下缓存的所有传感器对象
local pos_sensors = unregistered_sensors[position]
step2 依次遍历pos_sensors中的传感器对象,并执行注册处理
-- 优化后流程
step1 根据当前position从缓存中取出该position下缓存的所有传感器对象
local pos_sensors = unregistered_sensors[position]
step2 先根据所有传感器对象的SensorName属性对pos_sensors进行排序
step3 依次遍历pos_sensors中的传感器对象,并执行注册处理