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會捕獲內存相關的錯誤或警告信息,幫助定位硬件或驅動問題。常見類型包括: