CSR配置字典之Memory类
更新时间:2025/7/22
在Gitcode上查看源码📋 文档信息
项目 | 内容 |
---|---|
文档标题 | Memory类配置字典 |
版本 | v1.0 |
创建日期 | 2025-01-27 |
最后更新 | 2025-01-27 |
维护状态 | ✅ 活跃维护 |
📋 变更历史记录
文档变更记录
版本 | 发布日期 | 变更类型 | 变更内容 | 影响范围 | 维护人员 |
---|---|---|---|---|---|
v1.0 | 2025-01-27 | 初始版本 | 创建Memory类配置字典 | 全新文档 | 系统管理员 |
🎯 类概览
Memory 类
属性 | 值 |
---|---|
类名称 | Memory |
功能描述 | 内存管理,提供内存信息加载、显示和状态监控功能,支持DIMM通道配置和HBM温度监控 |
所属SIG组 | memory |
所属组件 | memory |
责任人 | 内存管理组 |
最后更新 | 2025-01-27 |
状态 | 🟢 正常运行 |
📊 属性定义详表
必选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
SystemId | U8 | 0 | 与Host个数保持一致 | - | 内存所在的HostId | 内存信息加载、显示 | "${SystemId}" | CSR配置 | 软件 |
DimmNum | U8 | 0 | U8 | - | 内存Dimm通道号 | 内存信息加载、显示 | `"$ | > expr($1 * 16 - 8)"` | CSR配置 |
Name | String | '' | 字符串,格式是Memory_XYZ X:CPU逻辑号 Y:物理通道号 Z:DIMM序号 | - | 内存名称,以Memory开头 | 内存信息加载、显示 | `"$ | > expr($1 * 2 - 2) | > string.format('Memory%s40', $1)"` |
DimmName | String | '' | 字符串,格式是DIMM_XYZ X:CPU逻辑号 Y:物理通道号 Z:DIMM序号 | - | 内存DIMM名称,以DIMM开头 | 内存信息加载、显示 | `"$ | > expr($1 * 2 - 2) | > string.format('DIMM%s40', $1)"` |
Presence | U8 | 0 | U8 | - | 内存在位状态,默认不在位 | 内存信息加载、显示 | 255 | CSR配置 | 软件 |
CpuId | U8 | 0 | U8 | - | 操作该块内存的CpuId | 内存信息加载、显示 | `"$ | > expr($1 * 2 - 2)"` | CSR配置 |
NodeId | U8 | 0 | U8 | - | 内存节点Id | 内存信息加载、显示 | `"$ | > expr($1 * 2 - 2)"` | CSR配置 |
ChannelId | U8 | 0 | U8 | - | 内存通道Id | 内存信息加载、显示 | 255 | CSR配置 | 软件 |
LogicalChannelId | U8 | 0 | U8 | - | 逻辑通道Id,CpuId+LogicalChannelId+DimmId唯一确定一块内存 | 内存信息加载、显示 | 255 | CSR配置 | 软件 |
DimmId | U8 | 0 | U8 | - | 槽位Id | 内存信息加载、显示 | 255 | CSR配置 | 软件 |
Position | String | '' | String | - | 内存位置 | 内存信息加载、显示 | "CpuBoard${Slot}" | CSR配置 | 软件 |
SilkText | String | '' | String | - | 内存的板上丝印 | 内存信息加载、显示 | "DIMM" | CSR配置 | 软件 |
DeviceLocator | String | '' | String | - | 内存的丝印 | 内存信息加载、显示 | `"$ | > expr($1 * 2 - 2) | > string.format('DIMM%s50', $1)"` |
Health | U8 | 0 | U8 | Component_Memory | 内存健康状态 | 内存信息加载、显示 | "<=/Component_Memory6.Health" | CSR配置 | 硬件 |
可选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
MemoryDeviceType | String | Unknown | String | - | 内存设备类型,只有HBM需要配置 | 内存信息加载、显示 | "DRAM" | CSR配置 | 软件 |
LogicTemperatureCelsius | Double | 0 | Double | - | HBM Logic区域温度 | 内存信息加载、显示 | 0 | 软件刷新 | 硬件 |
DRAMTemperatureCelsius | Double | 0 | Double | - | HBM DRAM区域温度 | 内存信息加载、显示 | 0 | 软件刷新 | 硬件 |
PredictiveFault | U8 | 0 | U8 | - | 预故障告警状态 | 内存信息加载、显示 | 0 | CSR配置 | 软件 |
OriginalPartNumber | String | '' | String | - | 内存的原厂部件号 | 内存信息加载、显示 | "N/A" | CSR配置 | 软件 |
SerialNumber | String | '' | String | - | 内存序列号 | 内存信息加载、显示 | "" | 软件更新 | 软件 |
DiagnosticFault | U8 | 0 | U8 | - | 严重故障诊断告警状态 | 内存信息加载、显示 | 0 | CSR配置 | 软件 |
🔗 动态关联机制
语法规范
使用表达式和变量替换语法实现动态关联:
yaml
# 系统ID变量替换
SystemId: "${SystemId}"
# 表达式计算
DimmNum: "${Slot} |> expr($1 * 16 - 8)"
CpuId: "${Slot} |> expr($1 * 2 - 2)"
# 字符串格式化
Name: "${Slot} |> expr($1 * 2 - 2) |> string.format('Memory%s40', $1)"
DimmName: "${Slot} |> expr($1 * 2 - 2) |> string.format('DIMM%s40', $1)"
# 健康状态关联
Health: "<=/Component_Memory6.Health"
关联说明
- SystemId: 使用系统ID变量标识内存所在的Host
- 表达式计算: 通过槽位计算相关ID和通道号
- 字符串格式化: 动态生成内存名称和DIMM名称
- Health: 关联Component对象获取健康状态
📂 分类标准
硬件属性
- 定义:与硬件内存设备直接相关的参数
- 特点:反映内存硬件的物理状态和温度
- 示例:
Health
,LogicTemperatureCelsius
,DRAMTemperatureCelsius
软件属性
- 定义:用于软件逻辑控制和信息管理的参数
- 特点:由CSR配置或软件更新管理
- 示例:
SystemId
,DimmNum
,Name
,DimmName
,Presence
,CpuId
,NodeId
,ChannelId
,LogicalChannelId
,DimmId
,Position
,SilkText
,DeviceLocator
,MemoryDeviceType
,PredictiveFault
,OriginalPartNumber
,SerialNumber
,DiagnosticFault
📝 配置示例
标准DIMM内存配置
json
{
"Memory": {
"SystemId": "${SystemId}",
"DimmNum": "${Slot} |> expr($1 * 16 - 8)",
"Name": "${Slot} |> expr($1 * 2 - 2) |> string.format('Memory%s40', $1)",
"DimmName": "${Slot} |> expr($1 * 2 - 2) |> string.format('DIMM%s40', $1)",
"Presence": 255,
"CpuId": "${Slot} |> expr($1 * 2 - 2)",
"NodeId": "${Slot} |> expr($1 * 2 - 2)",
"ChannelId": 255,
"LogicalChannelId": 255,
"DimmId": 255,
"Position": "CpuBoard${Slot}",
"SilkText": "DIMM",
"DeviceLocator": "${Slot} |> expr($1 * 2 - 2) |> string.format('DIMM%s50', $1)",
"Health": "<=/Component_Memory6.Health",
"MemoryDeviceType": "DRAM"
}
}
HBM内存配置
json
{
"Memory": {
"SystemId": "1",
"DimmNum": "8",
"Name": "Memory140",
"DimmName": "DIMM140",
"Presence": 1,
"CpuId": "1",
"NodeId": "1",
"ChannelId": 1,
"LogicalChannelId": 1,
"DimmId": 1,
"Position": "CpuBoard1",
"SilkText": "HBM",
"DeviceLocator": "HBM150",
"Health": "<=/Component_Memory1.Health",
"MemoryDeviceType": "HBM",
"LogicTemperatureCelsius": 0,
"DRAMTemperatureCelsius": 0
}
}
多通道内存配置
json
{
"Memory": {
"SystemId": "2",
"DimmNum": "24",
"Name": "Memory240",
"DimmName": "DIMM240",
"Presence": 1,
"CpuId": "2",
"NodeId": "2",
"ChannelId": 2,
"LogicalChannelId": 2,
"DimmId": 2,
"Position": "CpuBoard2",
"SilkText": "DIMM",
"DeviceLocator": "DIMM250",
"Health": "<=/Component_Memory2.Health",
"MemoryDeviceType": "DRAM",
"SerialNumber": "ABC123456",
"OriginalPartNumber": "HMA81GR7CJR8N-VK"
}
}
🔧 使用指南
配置步骤
- 设置系统标识:配置SystemId标识内存所在的Host
- 配置通道信息:设置DimmNum、ChannelId、LogicalChannelId、DimmId
- 设置CPU关联:配置CpuId和NodeId标识内存所属的CPU
- 配置名称信息:设置Name、DimmName、DeviceLocator等标识信息
- 设置位置信息:配置Position、SilkText标识物理位置
- 关联健康状态:通过Health关联Component对象
- 可选配置:根据内存类型配置温度监控和故障状态
注意事项
- 唯一性标识:CpuId+LogicalChannelId+DimmId必须唯一确定一块内存
- 命名规范:Name以Memory开头,DimmName以DIMM开头
- 表达式计算:合理使用表达式计算相关ID和通道号
- HBM特殊配置:HBM类型内存需要配置温度监控属性
- 健康状态关联:确保关联的Component对象已正确定义
- 在位状态:Presence默认为255表示不在位状态
性能建议
- 合理配置通道:根据实际硬件配置合适的通道数量
- 优化名称生成:使用表达式动态生成规范的名称
- 温度监控:对于HBM内存启用温度监控功能
- 故障预测:合理配置预故障告警机制
故障排查
- 内存识别失败:检查SystemId、CpuId、NodeId配置
- 通道冲突:检查ChannelId、LogicalChannelId、DimmId的唯一性
- 健康状态异常:检查Health关联的Component对象
- 温度监控异常:检查HBM温度监控配置
- 名称显示错误:检查Name、DimmName的表达式计算
内存管理
- 信息加载:支持内存基本信息的加载和显示
- 状态监控:监控内存在位状态和健康状态
- 故障诊断:支持预故障告警和严重故障诊断
- 温度监控:支持HBM内存的Logic和DRAM区域温度监控
- 序列号管理:支持内存序列号和部件号的管理
HBM内存支持
- 设备类型:MemoryDeviceType配置为HBM
- 温度监控:支持Logic和DRAM区域温度监控
- 特殊配置:HBM内存需要特殊的温度监控配置
- 故障诊断:支持HBM内存的故障诊断和告警