如何通过阅读源代码了解 vmstat 中的指标

Wedding Bus 官方 2024-06-01 00:02:52
最佳回答
vmstat -a 命令能看到 active memory 和 inactive memory,但是它们是什么意思呢?它们的含义在 manpage 中只给了简单的说明,并未详细解释:inact: the amount of inactive memory. (-a option)active: the amount of active memory. (-a option)在此我们试图准确理解它的含义。通过阅读 vmstat 的源代码 (vmstat.c 和 proc/sys**.c)得知,vmstat 命令是直接从/proc/mem** 中获取的数据:而/proc/mem** 的数据是在以下内核函数中生成的:这段代码的意思是统计所有的 lru l**t,其中 active memory 等于 active_anon 与 active_file 之和,inactive memory 等于 inactive_anon 与 inactive_file 之和。lru l**t 是 linux 内核的内存页面回收算法page frame reclaiming algorithm所使用的数据结构,lru 是 least recently used 的缩写词。这个算法的核心思想是:回收的页面应该是最近使用得最少的。为了实现这个目标,最理想的情况是每个页面都有一个年龄项,用于记录最近一次访问页面的时间,可惜 x86 cpu 硬件并不支持这个特性,x86 cpu 只能做到在访问页面时设置一个标志位 access bit,无法记录时间。所以 linux 内核使用了一个折衷的方法:它采用了 lru l**t 列表,把刚访问过的页面放在列首,越接近列尾的就是越长时间未访问过的页面,这样,虽然不能记录访问时间,但利用页面在 lru l**t 中的相对位置也可以轻松找到年龄最长的页面。linux 内核设计了两种 lru l**t: active l**t 和 inactive l**t, 刚访问过的页面放进 active l**t,长时间未访问过的页面放进 inactive l**t,这样从 inactive l**t 回收页面就变得简单了。内核线程 kswapd 会周期性地把 active l**t 中符合条件的页面移到 inactive l**t 中,这项转移工作是由 refill_inactive_zone() 完成的。这段代码的意思是统计所有的 lru l**t,其中active memory 等于 active_anon 与 active_file 之和,inactive memory 等于 inactive_anon 与 inactive_file 之和。lru l**t 示意图vmstat 看到的 active/inactive memory 就分别是 active l**t 和 inactive l**t 中的内存大小。如果 inactive l**t 很大,表明在必要时可以回收的页面很多;而如果 inactive l**t 很小,说明可以回收的页面不多。active/inactive memory 是针对用户进程所占用的内存而言的,内核占用的内存(包括 slab)不在其中。至于在源代码中看到的 active_anon 和 active_file,分别表示 anonymous pages 和 mapped pages。用户进程的内存页分为两种:与文件关联的内存(比如程序文件、数据文件所对应的内存页)和与文件无关的内存(比如进程的堆栈,用 malloc 申请的内存),前者称为 file pages 或 mapped pages,后者称为 anonymous pages。file pages 在发生换页(page-in 或 page-out)时,是从它对应的文件读入或写出;anonymous pages 在发生换页时,是对交换区进行读/写操作。 20210311
汇率兑换计算器

类似问答
  • 图解通达信股票公式 怎样调出ene指标.ene轨道线指标源代码公式
    • 2024-06-01 10:26:26
    • 提问者: 未知
    ene源码: 调出ene指标: 只要在任意股票的k线图界面输入英文字母ene,就可以调出了。
  • 指南针公式源码如何导入指标**
    • 2024-06-01 23:31:31
    • 提问者: 未知
    指南针公式源码导入指标**方法: ...指标最早起源于期货市场,由乔治·莱恩首创的,它在通过当日或最近几日最高价、最低价及收盘价等价格波动的波幅,反映价格趋势的强弱。...
  • 求macd空中加油指标源码(通达信)
    • 2024-06-01 15:15:59
    • 提问者: 未知
    通达信的 ma4:ma(c,4);ma10:ma(c,10);ma20:ma(c,20);ma62:ma(c,62);a10:=atan((ma(c,10)/ref(ma(c,10),1)-1)*100)*3.1416*ma(c,10);macd称为指数平滑移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(ema)减去慢的指数移动平均线,macd的意义和双移动平均线基本相同,但阅读...
  • 通达信机构版主图指标如何解读
    • 2024-06-01 00:18:12
    • 提问者: 未知
    建议你去macd论坛的指标公式区去求助版主浩申,他是通达信的指标专家,很热心的
  • 求macd空中加油指标源码(通达信)
    • 2024-06-01 07:57:21
    • 提问者: 未知
    ma4:ma(c,4);ma10:ma(c,10);ma20:ma(c,20);ma62:ma(c,62);a10:=atan((ma(c,10)/ref(ma(c,10),1)-1)*100)*3.1416*ma(c,10);小金角:=ref(cross(ma...
  • 求macd空中加油指标源码(通达信)
    • 2024-06-01 10:23:28
    • 提问者: 未知
    通达信的 ma4:ma(c,4);ma10:ma(c,10);ma20:ma(c,20);ma62:ma(c,62);a10:=atan((ma(c,10)/ref(ma(c,10),1)-1)*100)*3.1416*ma(c,10);小金角:=ref(cross(ma(c,10),ma(c,20)),1)and a10>10.0;drawtext(小金角,l-0.20,'小金角');b2...
  • 阅读理解.
    • 2024-06-01 17:52:45
    • 提问者: 未知
    all the fourth-grade classes hold a school fair.everyone in fourth grade works at the fair.some sell ice cream, drinks and snacks.others take care of the little...
  • 如何jiang分时九转指标公式源码
    • 2024-06-01 12:10:16
    • 提问者: 未知
    我知道如何操作
  • 怎么通过棉花质量公检条码编码,了解棉花指标?
    • 2024-06-01 18:34:18
    • 提问者: 未知
    1【系统自动生成位】编号的1-2位数是系统自动生成位2【地区代码】【加工企业编码】编号的3-4位数是地区代码,每个地区的代码都是不一样的;编号的5-7位数是加工企业编码;3【年】【月】【日】,编号的3-4位数是年月日4【加工类型】【净重】【回潮率】编号的14-20是棉花的指标 加工类型分为:锯齿细绒棉,皮辊细绒棉,机采棉,长绒棉;5【棉花品种】【异性纤维】【籽棉品级】【籽棉垛号】编号的21-26是...
  • 谁能**通达信加密指标,现在看不到源代码!!!急急急
    • 2024-06-01 07:57:32
    • 提问者: 未知
    你把指标载图发上来,也许能找到呢。
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。