376|0

208

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

奔跑吧Linux内核+内存管理与调试信息 [复制链接]

 

swappiness 是 Linux 内核中的一个参数,用于控制内核在回收内存页面时,将匿名页面(即进程直接分配的内存页面,不属于任何文件)写入交换分区(swap space)的积极程度。该参数的取值范围通常是 0 到 100。

swappiness 的默认值是 60,这意味着内核在回收内存时,会相对积极地考虑将匿名页面写入交换分区。

 

内存水位(Watermarks)

内存水位是内核用来控制内存分配和回收的一组阈值。这些阈值定义了内核在不同内存压力下应该采取的行动。Linux内核中有三个主要的水位:

  1. 低水位(Low Watermark):当内存使用降到这个水平时,内核开始积极地回收内存,以避免进一步的内存短缺。
  2. 中水位(Mid Watermark):这个水位用于平衡内存分配和回收,确保系统有足够的内存来应对正常的负载。
  3. 高水位(High Watermark):当内存使用达到这个水平时,表明系统可能正在经历较高的内存压力,需要采取更积极的措施来回收内存。

min_free_kbytes

min_free_kbytes是一个内核参数,用于指定系统应保留的最低空闲内存量(以KB为单位)。这个参数用于保护系统免受恶意进程或过度使用内存的合法进程的侵害。当系统空闲内存低于这个阈值时,内核会开始积极地回收内存,以确保系统稳定性和性能。

计算公式

你提到的公式min_free_kbytes = 4 * lowmem_kbytes是一个用于计算min_free_kbytes的简化公式。这里的lowmem_kbytes是系统中除去高水位页面之后的剩余可管理页面数量。这个公式确保了系统始终保留足够的空闲内存来应对潜在的内存压力。

调优和限制

min_free_kbytes的值可以在系统运行时通过/proc/sys/vm/min_free_kbytes进行调整,也可以在系统启动时通过内核参数进行设置。这个值有一个范围限制,最小值为128KB,最大值为64MB,这是为了确保系统不会因为设置过低的值而变得不稳定,也不会因为设置过高的值而浪费过多的内存。

进程优先级和内存分配

进程在申请内存时,根据其优先级和当前的内存状况,可能会有不同的结果。普通优先级的进程在内存紧张时可能无法分配到所需的内存,而高优先级的进程(如内核线程或某些关键的用户空间进程)则可以通过设置特定的标志(如GFP_HIGH、GFP_ATOMIC或GFP_MEMALLOC)来尝试访问预留内存。

 

 

SwapTotal 减去 SwapFree 得到的 S_swap 确实表示系统中已经使用的交换内存大小。而累加所有进程的 /proc/[PID]/status 中的 VmSwap 得到的 P_swap 应该是所有进程当前使用的交换内存量。

 

 

读者对MemTotal与QEMU虚拟机中分配的内存大小不一致的问题感到疑惑是很正常的。这个问题涉及到Linux内核的内存管理机制以及QEMU虚拟机的内存分配方式。

 

meminfo节点是Linux内核中用来显示系统内存使用状况的一个接口。meminfo节点通过/proc/meminfo文件向用户空间提供信息,而这些信息是由内核中的meminfo.c文件负责收集和展示的。

在meminfo.c中,meminfo_proc_show函数负责构建并输出/proc/meminfo文件的内容。该函数通过读取内核中的一系列全局变量和统计数据来生成各个内存统计项的值。

 

 

meminfo节点是Linux内核中用于展示系统内存使用情况的接口,通过/proc/meminfo文件向用户空间提供详细的内存统计信息。这些信息由内核中的meminfo.c文件负责收集和展示,其中meminfo_proc_show函数负责构建并输出这些内容。

meminfo节点包含多个统计项,每个统计项都有其特定的计算方式和意义。这些统计项涵盖了系统物理内存总量、空闲内存、缓存、交换空间使用情况、脏页等各个方面,为用户提供了全面的系统内存使用情况的视图。

这些统计信息对于系统管理员和开发者来说至关重要,它们有助于了解系统的内存状态,进而进行性能调优、故障排查和资源管理。通过分析和监控这些统计项,可以及时发现并解决潜在的内存问题,确保系统的稳定性和高效性。

点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表