美文网首页
第三章 性能工具:系统内存

第三章 性能工具:系统内存

作者: super_pcm | 来源:发表于2019-08-07 17:44 被阅读0次

3.1内存性能统计信息

3.1.1 内存子系统和性能

  • 和CPU相比,内存的读写速度都大大落后于CPU。为了弥补这个差距,通常CPU会采用高速缓存的机制(高cache)。

3.1.2 内存子系统(虚拟存储器)

在物理内存寻址时,Linux将其分成块或者内存“页”。内存页面过小,会造成管理内存时产生大的花销;内存页面大时,则容易造成内存的浪费。

  1. 交换(物理内存不足)
    内存的大小是固定的,当内存不够用时,内核会使用硬盘作为临时存储器,这个硬盘空间称为交换分区(swap space)。
    交换分区确实能够让大内存的程序运行,但是却非常慢。如果系统性能不佳,有可能是系统使用了较多的swap。

  2. 缓冲区(buffer)和缓存(cache)(物理内存太多)
    如果你的内存很多,系统不会浪费不用的。系统会把多出来的内存用来做缓冲或者缓存使用,这样能大大加快程序的读写。
    应用程序写入到磁盘的速度是很慢的,Linux为了能够让程序能够马上执行,会把文件数据保存到缓冲区,然后在某个时间,再把缓冲区的数据写入到磁盘。
    缓存和缓冲正好倒过来,Linux会把程序用过的数据放在内存中,这样下次使用的时候就不用去到磁盘读取了。
    缓冲和缓存都是为了提高系统性能,提高程序的运行速度。虽然看起来系统free(空余)的内存很少,但这是个好事。

  3. 活跃和非活跃内存
    活跃内存是指当前进程使用的内存,不活跃的内存是已经被分配了,但暂时还没有使用的内存。

3.2Linux性能工具:CPU与内存

3.2.1 vmstat

vmstat统计信息说明

输出 说明
swap 当前交换到硬盘的内存总量
free 未被系统使用的物理内存总量
buff 系统共缓冲区的大小
cache 缓存区的大小
si 上次采样中,从硬盘进来的内存交换速率
so 上次采样中,到硬盘去的内存交换速率

vmstat的输出,默认是平均模式。

vmstat –a 可以查看活跃和非活跃的内存

vmstat 1 5 查看过去五秒的采样数据,可以看出没有内存数据的交换。

vmstat –s可以查看系统的统计信息

3.2.2 top

具体用法可以参考CPU章节的top 的解析。

3.2.3 free

free –m的输出

free内存部分统计信息说明

输出 说明
total 物理内存与交换空间的总量
used 使用的物理内存和交换分区的容量
free 未使用的物理内存和交换分区的容量
-/+ buffers/cache: 对于used来说,把buff和cache当成已使用的内存,显示的是内存使用的总和;对于free来说,把buff和cache当作空闲内存统计的内存总和。

3.2.4 slabtop

slabtop实时显示内核是如何分配其各种缓存的,以及这些缓存的被占用情况。在内部,内核有一系列的缓存,他们由一个或者多个分片(salb)构成。
默认情况下slab会每3秒更新一次数据,可以看出多数的分片都是活跃的。

3.2.5 sar

sar给出的Linux内存子系统的信息相当完整,除了能看到绝对值,还能提供一些重要数值的变化率。此外,sar还能统计CPU和磁盘I/O的统计数据。

sar –r 1 5 过去5秒的内存信息

[root@localhost   ~]# sar -r 1 5

Linux   2.6.18-308.el5 (localhost)    2018年01月15日

18时40分40秒 kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused    kbswpcad

18时40分41秒      102816   3940916     97.46      801872   1369084   4023580      170716      4.07     50584

18时40分42秒      102816   3940916     97.46      801872   1369084   4023580      170716      4.07     50584

18时40分43秒      102816   3940916     97.46      801872   1369084   4023580      170716      4.07     50584

18时40分44秒      102816   3940916     97.46      801872   1369084   4023580      170716      4.07     50584

18时40分45秒      102816   3940916     97.46      801872   1369084   4023580      170716      4.07     50584

Average:       102816   3940916       97.46    801872   1369084     4023580    170716      4.07       50584

sar内存统计信息说明

输出 说明
kbmemfree 当前空闲或未被使用的内存总量
%memused 被使用的物理内存总量所占的百分比
%swpused 被使用的交换分区的百分比
kbswapcad 该项内存包括了交换到磁盘和已存在内存中的

3.2.6 /proc/meminfo

Linux内核提供用户可读文本文件/proc/meminfo来显示当前系统范围的内存性能统计信息,里面的信息非常全面。如果需要定期更新的数据,需要自行编写脚本实现。
meminfo统计信息部分说明

输出 说明
MemTotal 系统物理内存总量
SwapCached 在交换分区和物理内存中都存在的内存总量
Active 当前系统中处于活跃状态的内存
HightTotal 高端内存容量
Dirty 等待写入磁盘的内存
Writeback 当前被写入磁盘的内存
Slab 内核分片内存的总量
Committed_AS 所需内存容量,在当前工作负载下,这个容量几乎是不会耗尽的。通常情况下,内核会分配更多的内存,预期应用程序会超分配。如果所有的应用程序都使用自己被分配的内存,这个就是你需要的物理内存的容量。
PageTables 为内核页表保留的内存容量

相关文章

  • 第三章 性能工具:系统内存

    3.1内存性能统计信息 3.1.1 内存子系统和性能 和CPU相比,内存的读写速度都大大落后于CPU。为了弥补这个...

  • 性能优化——内存泄漏(3)代码分析篇

    内存泄漏系列文章:性能优化——内存泄漏(1)入门篇性能优化——内存泄漏(2)工具分析篇性能优化——内存泄漏(3)代...

  • 性能优化——内存泄漏(2)工具分析篇

    内存泄漏系列文章:性能优化——内存泄漏(1)入门篇性能优化——内存泄漏(2)工具分析篇性能优化——内存泄漏(3)代...

  • 性能优化——内存泄漏(1)入门篇

    内存泄漏系列文章:性能优化——内存泄漏(1)入门篇性能优化——内存泄漏(2)工具分析篇性能优化——内存泄漏(3)代...

  • 内存性能瓶颈分析套路

    内存性能指标 性能指标与工具 根据指标对应到工具 根据工具对应到指标 内存瓶颈分析思路 从整体到具体

  • iOS性能优化

    三类工具 基础工具(NSLog的方式记录运行时间) 性能工具,检测各个部分的性能表现,找出性能瓶颈 内存工具,检查...

  • Geekbench 4 for Mac(系统性能检测工具) 4.

    Geekbench 4 for Mac是应用在Mac上的一款系统性能检测工具,可快速准确地测量处理器和内存性能,包...

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • 技术站点

    系统 环境 服务器mnt挂载磁盘 ubuntu系统备份恢复 性能 linux性能监测工具 linux系统级调优工具...

网友评论

      本文标题:第三章 性能工具:系统内存

      本文链接:https://www.haomeiwen.com/subject/jwjadctx.html