首页 / LINUX / Linux非活动内存
Linux非活动内存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux非活动内存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1847字,纯文字阅读大概需要3分钟。
内容图文
![Linux非活动内存](/upload/InfoBanner/zyjiaocheng/958/009a4cdde03d49ef95193bac673b6acb.jpg)
当我在我的Linux机器上发出命令vmstat -s时,我获得了以下数据:
vmstat -s
16305800 total memory
16217112 used memory
9117400 active memory
6689116 inactive memory
88688 free memory
151280 buffer memory
我已经跳过了使用此命令显示的一些细节.
我理解这些术语:活动内存是特定进程正在使用的内存.非活动内存是分配给不再运行的进程的内存.
只是想知道,有什么方法可以获得分配非活动内存的进程吗?因为top或vmstat命令仍然将使用的内存显示为活动和非活动内存的总和,我只能看到正在使用活动内存但正在使用非活动内存的进程仍然是一个问题.
解决方法:
在某些情况下,查看非活动内存很有趣,例如,活动内存与非活动内存的高比率可以指示内存压力,但这种情况通常伴随着更容易理解和观察的分页/交换.文件/ proc / kpageflags包含每个物理内存页面的64位位图,您可以获得内核可能附带的page-types的摘要.
但是,您对活动和非活动的理解不正确
>活动内存是“最近”访问过的页面
>非活动内存是“最近”未访问的页面
“最近”不是时间的绝对量度,也取决于活动
和内存压力(您可以阅读免费书籍Understanding the Linux Virtual Memory Manager,Chapter 10中的一些技术细节)或内核文档(pagemap.txt).
每个列表都存储为LRU(或多或少).非活动内存页面是写入交换文件的良好候选者,可以是先发制人(在需要空闲内存页之前),也可以是空闲内存低于配置限制并且(迫切需要)空闲页面.
这两个标志都适用于分配给正在运行的进程的页面,除了持久性或共享内存之外,当进程退出时,所有内存都被释放,否则将被视为错误.
这个低级页面标记不需要知道PID(并且内存页面在任何情况下都可以有多个PID映射),因此提供所请求数据所需的信息不在一个地方.
要在每个进程的基础上执行此操作,您需要从/ prod / PID / maps中提取虚拟地址范围,使用/ proc / PID / pagemap转换为PFN(物理页面),并将索引转换为/ proc / kpageflags.这一切都在pagemap.txt中描述,并且需要大约60-80行C.除非您正在对VM系统进行故障排除,否则这些数字不是很有趣.您可以做的一件事是计算每个进程的非活动和交换支持的页面,这些数字应该表示与VSZ(总VM大小)相比具有低RSS(驻留)大小的进程.另一件事可能是推断内存泄漏,但是有更好的工具可以完成这项任务.
内容总结
以上是互联网集市为您收集整理的Linux非活动内存全部内容,希望文章能够帮你解决Linux非活动内存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。