1. 内存总量与可用内存
dmesg日志中通过"Memory:"关键字标识系统内存概况,格式为“可用内存/总内存”(单位:KB),并列出内核代码、数据段、保留内存等占用项。例如:“Memory: 8177848k/9830400k available (8192k kernel code, 131072k rwdata, 49152k rodata, 229376k init, 196608k bss, 278528k reserved, 0K cma-reserved)”,其中“8177848k”是当前可用内存,“9830400k”是系统总内存,后续括号内为内核各部分占用的内存大小。
2. 内存分区信息
通过"Memory region"关键字记录物理内存的分区详情,包括起始地址、结束地址、大小及映射关系。例如:“Memory region [mem 0x00000000-0x0009ffff] pfn 0-32767 prefaulted”,表示从物理地址0x00000000到0x0009ffff的内存区域(共32768个页帧,pfn 0-32767)已被预取。
3. 内存分配与释放记录
内核内存管理操作(如kmalloc、kfree、vmalloc、vfree)的日志会记录内存块的分配/释放详情,包括大小、地址和时间戳。例如:“kmalloc: size=128 flags=0x20000000 --> 0xffff880012345000”表示分配了128字节内存,地址为0xffff880012345000;“kfree: 0xffff880012345000”表示释放了该地址的内存。
4. 内存错误与警告
dmesg会捕获内存相关的错误或警告信息,帮助定位硬件或驱动问题。常见类型包括: