故障管理#
日志记录#
Aerial 遵循 Kubernetes 的最佳实践 (https://kubernetes.ac.cn/docs/concepts/cluster-administration/logging/) 来实现日志记录。
cuphycontroller 应用程序输出日志消息,其中日志级别小于或等于 nvlog.console_log_level cuphycontroller YAML 配置文件参数,使用节点级别日志记录模式直接输出到 stdout

对于高性能日志,Aerial 使用共享内存记录器从实时线程卸载 I/O 瓶颈。日志消息(级别小于或等于 nvlog.shm_log_level cuphycontroller YAML 配置文件参数)将输出到共享内存记录器。可以使用流式 Sidecar 模式(日志直接写入本地磁盘)检索共享内存记录器输出

或者使用带有日志记录代理的 Sidecar 模式直接流式传输到外部日志记录后端

nvlog 消息格式#
每个 nvlog 消息都是 “[软件组件名称] 消息” 形式的字符串,并带有以下空格分隔的可选字段前缀
日期
时间戳
主或辅助 nvlog 进程
日志级别
日志事件代码 ID
日志事件代码字符串
调用线程正在其上运行的 CPU 核心号
64 位序列号
线程 ID
线程名称
这些字段在 nvlog_config.yaml 中启用。
一个 nvlog 消息示例是
20:58:09.036299 C [NVLOG.CPP] nvlog_create: name=phy shm_level=1
console_level=1 max_file_size=0x10000000 shm_cache_size=0x200000
log_buf_size=1024 prefix_opts=0x09
上面的消息启用了以下前缀
时间戳
日志级别
以下是另外三个 nvlog 消息示例,其中启用了所有前缀字段,取自 cuphycontroller 进程执行开始时
2021-09-15 21:29:22.926521 P C 0 SUCESS 1 0 140699056300032
cuphycontroller [NVLOG.CPP] nvlog_create: name=phy shm_level=1
console_level=1 max_file_size=0x10000000 shm_cache_size=0x200000
log_buf_size=1024 prefix_opts=0xFF
2021-09-15 21:29:22.926560 P C 0 SUCCESS 1 1 140699056300032
cuphycontroller [CTL.SCF] Config file:
/cuBB_21-3/cuPHY-CP/cuphycontroller/config/cuphycontroller_V08.yaml
2021-09-15 21:29:23.130882 P C 0 SUCCESS 22 2 140699056300032
cuphycontroller [CTL.YAML] Standalone mode: No
以下是故障级别且事件代码为 AERIAL_MEMORY_EVENT 的 nvlog 消息示例
20:58:09.036299 F MEMORY_EVENT Unable to allocate memory for FH buffers
上面的消息启用了以下前缀
时间戳
日志级别
日志事件代码字符串
本文档进一步描述了这些字段
日期为 YYYY-MM-DD 格式,例如 1970-01-01
时间戳为 HH:MM:SS.us,例如 20:58:09.036299
主进程为 P,辅助进程为 S。
日志级别为
F - 致命
E - 错误
C - 控制台
W - 警告
I - 信息
D - 调试
V - 详细
日志事件代码字符串或日志事件代码 ID 是一个字符串(或数字 ID),指示已发生事件的类别。
nvlog 组件#
Aerial 实现了以下默认日志记录组件标签
nvlog 组件
10: “NVLOG”
11: “NVLOG.TEST”
12: “NVLOG.ITAG”
nvipc 组件
30: “NVIPC”
cuPHY-CP 控制器组件
100: “CTL”
101: “CTL.SCF”
102: “CTL.ALTRAN”
103: “CTL.DRV”
104: “CTL.YAML”
cuPHY-CP 驱动程序组件
200: “DRV”
201: “DRV.SA”
202: “DRV.TIME”
203: “DRV.CTX”
204: “DRV.API”
205: “DRV.FH”
206: “DRV.GEN_CUDA”
207: “DRV.GPUDEV”
208: “DRV.PHYCH”
209: “DRV.TASK”
210: “DRV.WORKER”
211: “DRV.DLBUF”
212: “DRV.CSIRS”
213: “DRV.PBCH”
214: “DRV.PDCCH_DL”
215: “DRV.PDSCH”
216: “DRV.MAP_DL”
217: “DRV.FUNC_DL”
218: “DRV.HARQ_POOL”
219: “DRV.ORDER_CUDA”
220: “DRV.ORDER_ENTITY”
221: “DRV.PRACH”
222: “DRV.PUCCH”
223: “DRV.PUSCH”
224: “DRV.MAP_UL”
225: “DRV.FUNC_UL”
226: “DRV.ULBUF”
227: “DRV.MPS”
228: “DRV.METRICS”
229: “DRV.MEMFOOT”
230: “DRV.CELL”
cuPHY-CP cuphyl2adapter 组件
300: “L2A”
301: “L2A.MAC”
302: “L2A.MACFACT”
303: “L2A.PROXY”
304: “L2A.EPOLL”
305: “L2A.TRANSPORT”
306: “L2A.MODULE”
307: “L2A.TICK”
308: “L2A.UEMD”
cuPHY-CP scfl2adapter 组件
330: “SCF”
331: “SCF.MAC”
332: “SCF.DISPATCH”
333: “SCF.PHY”
334: “SCF.SLOTCMD”
335: “SCF.L2SA”
336: “SCF.DUMMYMAC”
cuPHY-CP testMAC 组件
400: “MAC”
401: “MAC.LP”
402: “MAC.FAPI”
403: “MAC.UTILS”
404: “MAC.SCF”
405: “MAC.ALTRAN”
406: “MAC.CFG”
407: “MAC.PROC”
cuPHY-CP ru-emulator 组件
500: “RU”
501: “RU.EMULATOR”
502: “RU.PARSER”
cuPHY-CP aerial-fh-driver 组件
600: “FH”
601: “FH.FLOW”
602: “FH.FH”
603: “FH.GPU_MP”
604: “FH.LIB”
605: “FH.MEMREG”
606: “FH.METRICS”
607: “FH.NIC”
608: “FH.PDUMP”
609: “FH.PEER”
610: “FH.QUEUE”
611: “FH.RING”
612: “FH.TIME”
cuPHY-CP compression_decompression 组件
700: “COMP”
cuPHY-CP cuphyoam 组件
800: “OAM”
cuPHY 组件
900: “CUPHY”
注意
这些字符串可以使用 nvlog_config.yaml 进行更改。
事件代码#
以下是事件代码列表(请参阅 aerial_event_code.h
)。事件字符串与事件代码名称匹配,减去 AERIAL_
。
| AERIAL_SUCCESS = 0,
| AERIAL_INVALID_PARAM_EVENT = 1,
| AERIAL_INTERNAL_EVENT = 2,
| AERIAL_CUDA_API_EVENT = 3,
| AERIAL_DPDK_API_EVENT = 4,
| AERIAL_THREAD_API_EVENT = 5,
| AERIAL_CLOCK_API_EVENT = 6,
| AERIAL_NVIPC_API_EVENT = 7,
| AERIAL_ORAN_FH_EVENT = 8,
| AERIAL_CUPHYDRV_API_EVENT = 9,
| AERIAL_INPUT_OUTPUT_EVENT = 10,
| AERIAL_MEMORY_EVENT = 11,
| AERIAL_YAML_PARSER_EVENT = 12,
| AERIAL_NVLOG_EVENT = 13,
| AERIAL_CONFIG_EVENT = 14,
| AERIAL_FAPI_EVENT = 15,
| AERIAL_NO_SUPPORT_EVENT = 16,
| AERIAL_SYSTEM_API_EVENT = 17,
| AERIAL_L2ADAPTER_EVENT = 18,
| AERIAL_RU_EMULATOR_EVENT = 19,