通用统计信息
| crash> kmem -i |
| PAGES TOTAL PERCENTAGE |
| TOTAL MEM 197646761 754 GB ---- |
| FREE 33983015 129.6 GB 17% of TOTAL MEM |
| USED 163663746 624.3 GB 82% of TOTAL MEM |
| SHARED 139137050 530.8 GB 70% of TOTAL MEM |
| BUFFERS 163044 636.9 MB 0% of TOTAL MEM |
| CACHED 138671703 529 GB 70% of TOTAL MEM |
| SLAB 1979673 7.6 GB 1% of TOTAL MEM |
| |
| TOTAL HUGE 527360 2 GB ---- |
| HUGE FREE 3072 12 MB 0% of TOTAL HUGE |
| |
| TOTAL SWAP 10485759 40 GB ---- |
| SWAP USED 229952 898.2 MB 2% of TOTAL SWAP |
| SWAP FREE 10255807 39.1 GB 97% of TOTAL SWAP |
| |
| COMMIT LIMIT 109045459 416 GB ---- |
| COMMITTED 190946051 728.4 GB 175% of TOTAL LIMIT |
更详细的内存统计
| crash> kmem -V |
| VM_ZONE_STAT: |
| NR_FREE_PAGES: 33983015 |
| NR_ZONE_INACTIVE_ANON: 102298116 |
| NR_ZONE_ACTIVE_ANON: 54564210 |
| NR_ZONE_INACTIVE_FILE: 569613 |
| NR_ZONE_ACTIVE_FILE: 1835235 |
| NR_ZONE_UNEVICTABLE: 83405 |
| NR_ZONE_WRITE_PENDING: 843 |
| NR_MLOCK: 83405 |
| NR_PAGETABLE: 615900 |
| NR_KERNEL_STACK_KB: 104512 |
| ... |
| VM_NODE_STAT: |
| NR_INACTIVE_ANON: 102298116 |
| NR_ACTIVE_ANON: 54564210 |
| NR_INACTIVE_FILE: 569613 |
| NR_ACTIVE_FILE: 1835235 |
| NR_UNEVICTABLE: 83405 |
| NR_SLAB_RECLAIMABLE: 1158659 |
| NR_SLAB_UNRECLAIMABLE: 821014 |
| NR_ISOLATED_ANON: 0 |
| NR_ISOLATED_FILE: 0 |
| WORKINGSET_REFAULT: 1611642 |
| WORKINGSET_ACTIVATE: 595412 |
| WORKINGSET_NODERECLAIM: 0 |
| NR_ANON_MAPPED: 20486105 |
| ... |
| VM_NUMA_STAT: |
| NUMA_HIT: 3114247459241 |
| NUMA_MISS: 324426183 |
| NUMA_FOREIGN: 324426183 |
| ... |
| VM_EVENT_STATES: |
| PGPGIN: 1338982539116 |
| PGPGOUT: 1957291385093 |
| PSWPIN: 405180 |
| PSWPOUT: 604083 |
| PGALLOC_DMA: 0 |
| PGALLOC_DMA32: 0 |
| PGALLOC_NORMAL: 3507797098568 |
| PGALLOC_MOVABLE: 0 |
| ... |
显示每个zone的内存使用统计
| crash> kmem -z |
| NODE: 0 ZONE: 0 ADDR: ffff88e03ffc1000 NAME: "DMA" |
| SIZE: 4095 PRESENT: 3997 MIN/LOW/HIGH: 5/8/11 |
| VM_STAT: |
| NR_FREE_PAGES: 3840 |
| NR_ZONE_INACTIVE_ANON: 0 |
| NR_ZONE_ACTIVE_ANON: 0 |
| NR_ZONE_INACTIVE_FILE: 0 |
| NR_ZONE_ACTIVE_FILE: 0 |
| ... |
| NODE: 0 ZONE: 1 ADDR: ffff88e03ffc5000 NAME: "DMA32" |
| SIZE: 1044480 PRESENT: 392960 MIN/LOW/HIGH: 334/586/838 |
| VM_STAT: |
| NR_FREE_PAGES: 252250 |
| NR_ZONE_INACTIVE_ANON: 0 |
| NR_ZONE_ACTIVE_ANON: 0 |
| NR_ZONE_INACTIVE_FILE: 0 |
| NR_ZONE_ACTIVE_FILE: 0 |
| ... |
| NODE: 0 ZONE: 2 ADDR: ffff88e03ffc9000 NAME: "Normal" |
| SIZE: 99876864 MIN/LOW/HIGH: 130384/228688/326992 |
| VM_STAT: |
| NR_FREE_PAGES: 18034897 |
| NR_ZONE_INACTIVE_ANON: 42387361 |
| NR_ZONE_ACTIVE_ANON: 33542124 |
| NR_ZONE_INACTIVE_FILE: 284979 |
| ... |
| NODE: 0 ZONE: 3 ADDR: ffff88e03ffcd000 NAME: "Movable" |
| [unpopulated] |
| |
| NODE: 0 ZONE: 4 ADDR: ffff88e03ffd1000 NAME: "Device" |
| [unpopulated] |
| |
| NODE: 1 ZONE: 0 ADDR: ffff89403fdbe000 NAME: "DMA" |
| [unpopulated] |
| |
| NODE: 1 ZONE: 1 ADDR: ffff89403fdc2000 NAME: "DMA32" |
| [unpopulated] |
| |
| NODE: 1 ZONE: 2 ADDR: ffff89403fdc6000 NAME: "Normal" |
| SIZE: 100663296 MIN/LOW/HIGH: 131420/230505/329590 |
| VM_STAT: |
| NR_FREE_PAGES: 15692028 |
| NR_ZONE_INACTIVE_ANON: 59910755 |
| NR_ZONE_ACTIVE_ANON: 21022086 |
| NR_ZONE_INACTIVE_FILE: 284634 |
标准巨型页的使用统计
| crash> kmem -h |
| HSTATE SIZE FREE TOTAL NAME |
| ffffffff835bab60 1GB 0 0 hugepages-1048576kB |
| ffffffff835c2010 2MB 6 1030 hugepages-2048kB |
查看当前伙伴系统的空闲内存信息
| crash> kmem -f |
| NODE |
| 0 |
| ZONE NAME SIZE FREE MEM_MAP START_PADDR START_MAPNR |
| 0 DMA 4095 3840 ffffea0000000040 1000 0 |
| AREA SIZE FREE_AREA_STRUCT BLOCKS PAGES |
| 0 4k ffff88e03ffc2000 0 0 |
| 0 4k ffff88e03ffc2010 0 0 |
| 0 4k ffff88e03ffc2020 0 0 |
| 0 4k ffff88e03ffc2030 0 0 |
| 0 4k ffff88e03ffc2040 0 0 |
| 1 8k ffff88e03ffc2058 0 0 |
| 1 8k ffff88e03ffc2068 0 0 |
| 1 8k ffff88e03ffc2078 0 0 |
| 1 8k ffff88e03ffc2088 0 0 |
| 1 8k ffff88e03ffc2098 0 0 |
| ... |
| ZONE NAME SIZE FREE MEM_MAP START_PADDR START_MAPNR |
| 1 DMA32 1044480 252250 ffffea0000040000 1000000 4095 |
| AREA SIZE FREE_AREA_STRUCT BLOCKS PAGES |
| 0 4k ffff88e03ffc6000 0 0 |
| 0 4k ffff88e03ffc6010 6 6 |
| 0 4k ffff88e03ffc6020 0 0 |
| 0 4k ffff88e03ffc6030 0 0 |
| 0 4k ffff88e03ffc6040 0 0 |
| 1 8k ffff88e03ffc6058 0 0 |
| 1 8k ffff88e03ffc6068 6 12 |
| 1 8k ffff88e03ffc6078 0 0 |
| 1 8k ffff88e03ffc6088 0 0 |
| 1 8k ffff88e03ffc6098 0 0 |
| 2 16k ffff88e03ffc60b0 0 0 |
| 2 16k ffff88e03ffc60c0 8 32 |
| 2 16k ffff88e03ffc60d0 0 0 |
| 2 16k ffff88e03ffc60e0 0 0 |
| ... |
以Node1的ZONE1中ffff88e03ffc60c0这个free_area为例,表示每个页块4*4K=16K
,一共有8个空闲的页块,一共有32KB:
| crash> whatis free_area |
| struct free_area { |
| struct list_head free_list[5]; |
| unsigned long nr_free; |
| } |
| SIZE: 88 |
| |
| crash> *free_area ffff88e03ffc60c0 |
| struct free_area { |
| free_list = {{ |
| next = 0xffffea000011f908, |
| prev = 0xffffea000183be08 |
| }, { |
| next = 0xffff88e03ffc60d0, |
| prev = 0xffff88e03ffc60d0 |
| }, { |
| next = 0xffff88e03ffc60e0, |
| prev = 0xffff88e03ffc60e0 |
| }, { |
| next = 0xffff88e03ffc60f0, |
| prev = 0xffff88e03ffc60f0 |
| }, { |
| next = 0x8, |
| prev = 0xffff88e03ffc6108 |
| }}, |
| nr_free = 18446613095460397320 |
| } |
每个页块通过第一个page的lru挂到free_list,上面第一个free_list[0],可以通过list命令将每个页块的第一个page的地址打印出来:
| crash> list -x -o page.lru -s page.flags -H ffff88e03ffc60c0 |
| ffffea000011f900 |
| flags = 0x8000000000000, |
| ffffea000015e700 |
| flags = 0x8000000000000, |
| ffffea0000178100 |
| flags = 0x8000000000000, |
| ffffea0001551000 |
| flags = 0x8000000000000, |
| ffffea00017b5500 |
| flags = 0x8000000000000, |
| ffffea0000167e00 |
| flags = 0x8000000000000, |
| ffffea0001666900 |
| flags = 0x8000000000000, |
| ffffea000183be00 |
| flags = 0x8000000000000, |
此外,如果需要把每个空闲页块的第一个page的地址也一并打印出来,可以直接使用下面的命令:
| crash> kmem -F |
| ... |
| AREA SIZE FREE_AREA_STRUCT |
| 2 16k ffff88e03ffc60c0 |
| ffffea000011f900 |
| ffffea000015e700 |
| ffffea0000178100 |
| ffffea0001551000 |
| ffffea00017b5500 |
| ffffea0000167e00 |
| ffffea0001666900 |
| ffffea000183be00 |
可以看到,上面输出的page的地址跟list命令输出的是一样的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话