性能篇:内存

内存相关概念

  • 虚拟内存:是一个逻辑概念,目的是为了便于程序的使用和系统的管理,虚拟内存会与物理内存形成映射关系

  • 常驻内存:当前处于主存中的内存

  • 匿名内存:无文件系统位置或者路径名的内存,进程堆和栈空间的内存都属于匿名内存(文件之外分配使用的内存)

    • 参考:https://www.jianshu.com/p/84d6d5c75c02
  • 分页:虚拟内存与物理内存映射他们使用页概念(固定大小,默认4kb),通过维护页表实现访问(每个进程各种维护一个页表)
    在这里插入图片描述

  • 分段:基于段基地址+段内偏移的方式访问内存,目前64位系统已经架空使用,但是概念还存在使用(CPU的任务管理还在使用)

    • 代码段、数据段、堆、共享库、栈
    • 栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等
    • 堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回

      在这里插入图片描述
  • 交换内存:计算机硬盘上的空间,当内存不够用,虚拟内存页映射到硬盘上,释放物理内存空间

  • 地址空间:内存上下文。每个进程和内核都有对应的虚拟地址空间

  • OOM:内存溢出,内核检测到可用内存低,极端下会进行kill进程,确保系统正常运行

  • 换页:换页是将页面换入和调出主存,当物理内存容量不够的时候,利用换页算法把物理上的页写到硬盘上,当缺页的时候再换入

  • 缺页:虚拟内存已经分配映射的页,但是还不在物理内存上就发生缺页,再把硬盘上的数据写入内存

性能指标:

  • 匿名换页:匿名换页牵涉进程的私有数据:进程堆和栈,换页会发生I/O阻塞,增大程序延迟(换出异步完成可能不太影响,换入会影响到)
  • 常驻集合大小(RSS):已分配的主存页大小(真实内存使用大小)
  • 虚拟内存大小:所有已分配的区域(已映射、未映射(没有使用)、已映射到物理交换空间)
  • 缓存机制(系统能够用的内存需要加上缓存内存大小)
    • buffers:缓存块设备的读写
    • cached:缓存文件的读写(数据和元数据)
    • 参考:https://zhuanlan.zhihu.com/p/101258495
      性能工具使用
      在这里插入图片描述
      vmstat
      在这里插入图片描述

系统内存健康程度总览(大颗粒度)
swpd:交换出的内存量
free:空闲的可用内存
buff:用于缓存块设备的读写
cache:用于缓存文件的读写
si:换入的内存(换页)
so:换出的内存(换页)
参数:-Sm 显示M单位

判断方向:

  • 换页入出的内存使用情况(si,so为匿名换页)

si和so一直非0,需要关注内存的消耗情况

sar
在这里插入图片描述
在这里插入图片描述

现运行的历史统计数据
-B:换页统计信息
-H:大页面统计信息
-r:内存使用率
-R:内存统计信息
-S:交换空间统计信息
-W:交换统计信息
参考:https://www.jianshu.com/p/ea7ed85918ac
在这里插入图片描述
在这里插入图片描述

判断方向:

  • 换页入出的内存使用情况(KB/s,表明内存不足)
    • -B 换页是主存(内存)与块设备(硬盘)之间的page in/out,把块设备中的页读入内存或把内存中的页写入块设备(时常有,vmstat in的值=sar pgpgout)
    • -W 换页从块设备swap区中读入/读出(如果为非0,需要关注)
  • 缺页情况,majflt/s(真实缺页)情况比fault/s严重
  • %vmeff衡量页回收效率,pgsteal/pgscan的值,值越小越糟糕

ps
在这里插入图片描述

查看进程的内存使用情况
%MEM:主存使用占总量百分比
VSZ:虚拟内存(KB)
RSS:常驻内存(KB)

判断方向:

  • 进程占用内存情况

top
在这里插入图片描述

top可以看到进程内存和内存总体情况的汇总

参考书籍:性能之巅:洞悉系统、企业与云计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值