此帖出自嵌入式系统论坛
最新回复
1. Linux内核的内存管理模块都对哪些页面进行了统计?
| 统计项 | 描述(实现) |
| ------------ | ------------ |
| NR_FREE_PAGES | 空闲页面数量 |
| NR_ZONE_LRU_BASE | 用于LRU_BASE的统计。LRU链表是从LRU_BASE开始标记的 |
| NR_ZONE_INACTIVE_ANON | 不活跃匿名页面数量 |
| NR_ZONE_ACTIVE_ANON | 活跃匿名页面数量 |
| NR_ZONE_INACTIVE_FILE | 不活跃文件映射页面数量 |
| NR_ZONE_ACTIVE_FILE | 活跃文件映射页面数量 |
| NR_ZONE_UNEVICTABLE | 不可回收的页面数量 |
| NR_ZONE_WRITE_PENDING | 脏页、正在回写以及不稳定的页面数量 |
| NR_MLOCK | 使用mlock()锁住的页面数量 |
| NR_PAGETABLE | 用于页表的页面数量 |
| NR_KERNEL_STACK_KB | 用于内核栈的页面数量 |
| NR_BOUNCE | 跳跃页面的数量 |
| NR_ZSPAGES | 用于zsmalloc机制的页面数量 |
| NR_FREE_CMA_PAGES | CMA中的空闲页面数量 |
| NR_VM_ZONE_STAT_ITEMS ZONE | 中vm_stat计数值的项数 |
vm_numa stat 计数值的统计项
| 统计项 | 描述 |
| ------------ | ------------ |
| NUMA HIT | 表示在预设的内存节点中分配的物理页面的数量 |
| NUMA MISS | 表示在预设的内存节点中无法分配的物理页面的数量 |
| NUMA _FOREIGN | 理想状况下在预设的内存节点中分配内存,但也可以在其他节点分配内存 |
| NUMA_INTERLEAVE_HIT | 表示在所有的内存节点中交织地分配内存,但首先在这个内存管理区中分配物理页面 |
| NUMA LOCAL | 表示在本地内存节点分配的物理页面的数量 |
| NUMA OTHER | 表示在本地内存节点以外的节点中分配的物理页面的数量 |
| NR VM NUMA STAT ITEMS | 表示 vm numa stat 数值中的统计项数 |
2.请解释/proc/meminfo节点中每一项的含义
| 统计项 | 描述 |
| ------------ | ------------ |
| MemTotal | 系统当前可用物理内存总量,通过读取全局变量_totalram_pages来获得 |
| MemFree | 系统当前剩余空闲物理内存,通过读取全局变量vm_zone_stat[]数组中的NR_FREE_PAGES来获得 |
| MemAvailable | 系统中可使用页面的数量,有si_mem_available()函数来计算。公式为Available=memfree+pagecache+reclaimable-totalreserve_pages。这里包括了空闲页面(memfree)、文件映射页面(pagecache)、可回收的页面(reclaimable),最后减去系统保留的页面 |
| Buffers | 用于块层的缓存,有nr_blockdev_pages()函数来计算 |
| Cached | 用于页面高速缓存的页面。计算公式为Cached=NR_FILE_PAGES-swap_cache-Buffers |
| SwapCached | 这里统计交换缓存的数量,交换缓存类似与内容缓存,只不过它对应的是交换分区,而内容缓存对应的是文件。这里表示匿名页面曾经被交换出去,现在又被交换回来,但是页面内容还在交换缓存中。
| Active | 活跃的匿名页面(LRU_ACTIVE_ANON)和活跃的文件映射页面(LRU_ACTIVE_FILE) |
| Inactive | 不活跃的匿名页面(LRU_INACTIVE_ANON)和不活跃的文件映射页面(LRU_INACTIVE_FILE) |
| Active | (anon) 活跃的匿名页面(LRU_ACTIVE_ANON) |
| Inactive | (anon) 不活跃的匿名页面(LRU_INACTIVE_ANON) |
| Active | (file) 活跃的文件映射页面(LRU_ACTIVE_FILE) |
| Inactive | (file) 不活跃的文件映射页面(LRU_INACTIVE_FILE) |
| Unevictable | 不能回收的页面(LRU_UNEVICTABLE) |
| Mlocked | 不会被交换到交换分区的页面,由全局的vm_zone_stat[]中的NR_MLOCK来统计 |
| SwapTotal | 交换分区的大小 |
| SwapFree | 交换分区的空闲空间大小 |
| Dirty | 脏页的数量,由全局的vm_node_stat[]中的NR_FILE_DIRTY来统计 |
| Writeback | 正在回写的页面数量,由全局的vm_node_stat[]中的NR_WRITEBACK来统计 |
| AnonPages | 统计有反向映射(RMAP)的页面,通常这些页面都是匿名页面并且都映射到了用户空间,但是并不是所有匿名页面都配置了反向映射,如部分的shmen和tmpfs页面就没有设置反向映射。这个计数由全局的vm_node_stat[]中的NR_ANON_MAPPED来统计
| Mapped | 统计所有映射到用户地址空间的内容缓存页面,由全局的vm_node_stat[]中的NR_FILE_MAPPED来统计 |
| Shmem | 共享内存(基于tmpfs实现的shmem、devtmfs等)页面的数量,由全局的vm_node_stat[]中的NR_SHMEM来统计 |
| KReclaimable | 内核可回收的内存,包括可回收的slab页面(NR_SLAB_RECLAIMABLE)和其他的可回收的内核页面(NR_KERNEL_MISC_RECL |AIMABLE)
| Slab | 所有slab页面,包括可回收的slab页面(NR_SLAB_RECLAIMABLE)和不可回收的slab页面(NR_SLAB_UNRECLAIMABLE) |
| SReclaimable | 可回收的slab页面(NR_SLAB_RECLAIMABLE) |
| SUnreclaim | 不可回收的slab页面(NR_SLAB_UNRECLAIMABLE) |
| KernelStack | 所有进程内核栈的总大小,由全局的vm_zone_stat[]中的NR_KERNEL_STACK_KB来统计 |
| PageTables | 所有用于页表的页面数量,由全局的vm_zone_stat[]中的NR_PAGETABLE来统计 |
| NFS_Unstable | 在NFS中,发送到服务器端但是还没有写入磁盘的页面(NR_UNSTABLE_NFS) |
| WritebackTmp | 回写过程中使用的临时缓存(NR_WRITEBACK_TEMP) |
| VmallocTotal | vmalloc区域的总大小 |
| VmallocUsed | 已经使用的vmalloc区域总大小 |
| Percpu | percpu机制使用的页面,由pcpu_nr_pages()函数来统计 |
| AnonHugePages | 统计透明巨页的数量 |
| ShmemHugePages | 统计在shmem或者tmpfs中使用的透明巨页的数量 |
| ShmemPmdMapped | 使用透明巨页并且映射到用户空间的shmem或者tmpfs的页面数量 |
| CmaTotal | CMA机制使用的内存 |
| CmaFree | CMA机制中空闲的内存 |
| HugePages_Total | 普通巨页的数量,普通巨页的页面是预分配的 |
| HugePages_Free | 空闲的普通巨页的数量 |
| Hugepagesize | 普通巨页的大小,通常是2MB或者1GB |
| Hugetlb | 普通巨页的总大小,单位是KB |
3.为什么/proc/meminfo节点中的MemTotal不等于QEMU虚拟机中分配的内存大小?
Kernel 静态使用的内存(如内核代码等)在启动阶段需要用到,其没有计入MemTotal统计项中,而是统计到reserved选项中。
详情
回复
发表于 2024-1-15 19:10
| ||||||||||
个人签名微信搜索公众号“EEWORLDBBS”快去添加关注吧!
|
||||||||||
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
EEWorld Datasheet 技术支持