转载:https://blog.51cto.com/superpcm/2068843

cat /proc/{pid}/status

Valgrind工具检测内存泄漏

3.1内存性能统计信息

3.1.1 内存子系统和性能

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

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

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

l 交换(物理内存不足)

内存的大小是固定的,当内存不够用时,内核会使用硬盘作为临时存储器,这个硬盘空间称为交换分区(swap space)。

交换分区确实能够让大内存的程序运行,但是却非常慢。如果系统性能不佳,有可能是系统使用了较多的swap。

l 缓冲区(buffer)和缓存(cache)(物理内存太多)

如果你的内存很多,系统不会浪费不用的。系统会把多出来的内存用来做缓冲或者缓存使用,这样能大大加快程序的读写。

应用程序写入到磁盘的速度是很慢的,Linux为了能够让程序能够马上执行,会把文件数据保存到缓冲区,然后在某个时间,再把缓冲区的数据写入到磁盘。

缓存和缓冲正好倒过来,Linux会把程序用过的数据放在内存中,这样下次使用的时候就不用去到磁盘读取了。

缓冲和缓存都是为了提高系统性能,提高程序的运行速度。虽然看起来系统free(空余)的内存很少,但这是个好事。

l 活跃和非活跃内存

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

3.2Linux性能工具:CPU与内存

3.2.1 vmstat

vmstat统计信息说明

|

swap

|

当前交换到硬盘的内存总量

|

|

free

|

未被系统使用的物理内存总量

|

|

buff

|

系统共缓冲区的大小

|

|

cache

|

缓存区的大小

|

|

si

|

上次采样中,从硬盘进来的内存交换速率

|

|

so

|

上次采样中,到硬盘去的内存交换速率

|

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

image.png

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

image.png

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

image.png

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

image.png

3.2.2 top

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

3.2.3 free

free –m的输出

image.png

free内存部分统计信息说明

|

total

|

物理内存与交换空间的总量

|

|

used

|

使用的物理内存和交换分区的容量

|

|

free

|

未使用的物理内存和交换分区的容量

|

|

-/+ buffers/cache:

|

对于used来说,把buff和cache当成已使用的内存,显示的是内存使用的总和;对于free来说,把buff和cache当作空闲内存统计的内存总和。

|

3.2.4 slabtop

slabtop实时显示内核是如何分配其各种缓存的,以及这些缓存的被占用情况。在内部,内核有一系列的缓存,他们由一个或者多个分片(salb)构成。

默认情况下slab会每3秒更新一次数据,可以看出多数的分片都是活跃的。

image.png

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

|

为内核页表保留的内存容量

|

image.png

LINUX如何让内存FREE变大,Linux性能优化(内存:free + top +vmstat )相关推荐

  1. python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错“ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连接”的问题

    python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错"ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连 ...

  2. Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - TraceView Android性能分析工具 为什么内存优化? 在一个商业项目中,很有可能因 ...

  3. 推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题(图解版)

    欢迎一起学习 <提升能力,涨薪可待篇> <面试知识,工作可待篇 > <实战演练,拒绝996篇 > 欢迎关注我csnd博客 也欢迎关注公 众 号[Ccww笔记],原创 ...

  4. Linux性能优化-内存的swap

    目录 Swap原理 NUMA和swap swappiness 创建swap 一个swap的例子 参考 内存不足的情况 1.内存回收 2.OOM杀死进程 内存紧张导致的OOM,是指系统杀死占用大量内存的 ...

  5. Linux性能优化—内存实战篇

    一.Linux内存工作原理 相关视频讲解: 深入讲解Linux内核内存管理(第一节) 深入讲解Linux内核内存管理( 第二节) Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 ...

  6. linux gpu 测试工具,推荐 7 大 Linux GPU 监控和诊断命令行工具

    原标题:推荐 7 大 Linux GPU 监控和诊断命令行工具 作者:Linux迷 链接:https://www.linuxmi.com/7-linux-gpu-jiankong.html 视频卡是一 ...

  7. Linux性能优化-内存优化

    目录 1.内存原理 1.1.内存映射 1.2.虚拟内存空间分布 1.3.SWAP运行原理 2.内存性能统计信息 2.1.内存系统使用量 2.2.缓存与缓冲区命中率 3.性能剖析 3.1.内存性能指标 ...

  8. linux u盘复制文件过大,Linux下U盘拷贝文件

    创建一个文件夹 mkdir /mnt/usb 挂载U盘 挂u盘之前,运行命令cat /proc/partitions,看看现在系统中有哪些分区.插上u盘以后,再次运行上述命令,看看多出来什么分区(通常 ...

  9. 服务器内存一般多大_性能调优第一步,搞定服务器硬件选型

    服务器选型是Linux性能调优的第一步. 无论你是自行购买服务器进行托管,还是租用服务器,购买云主机,都要面临的一个问题:选择服务器的硬件配置. 我们需要从不同角度.多个方面来决定选择一台什么样的服务 ...

最新文章

  1. 【Python教程】 print 和return 的区别
  2. 收藏 | 综述:目标检测二十年
  3. 【开发必知】基本缓存概念
  4. php r很卡,Laravel 在高并发下很卡?求大神解答
  5. SQLServer通过链接服务器调用Oracle 存储过程
  6. R语言中不能安装包(Package)的四种解决办法
  7. 详述 ISC BIND 服务器中的信息泄露漏洞
  8. 转载:为什么OpenFlow没有被广泛采用?
  9. python 查看文件夹大小
  10. 数据分析的步骤和常用方法
  11. 新版闪讯破解无线wifi共享
  12. Netlog中数据库演变过程(转载)
  13. 获取frame 标签里#documents里面的内容
  14. 2023年4月北京机动车尾号限行轮换新规定用手机提醒
  15. 教你实现windowsxp自动登录大法(转)
  16. Kindle进入日本
  17. 什么是serverless?
  18. 【计算机网络】交换机工作原理
  19. 利用LFSR结构设计的流密钥生成器C++实现
  20. 番外7:F类功放中漏极四分之一波长阻抗线特性分析

热门文章

  1. IIS之Web服务器
  2. python如何定义i_如何在Python中使用自定义消息引发相同的Exception?
  3. 算法分析:Oracle 11g 中基于哈希算法对唯一值数(NDV)的估算
  4. OpenHarmony移植案例:如何适配服务启动引导部件bootstrap_lite
  5. 基于CarbonData的电信时空大数据探索
  6. 华为云携手马栏山文创园助力湖南广电荣获国家广电总局多项大奖
  7. 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计
  8. 从哲学源头思考自动驾驶网络架构设计
  9. 初识弹性文件服务:可靠的共享文件存储
  10. 玩游戏提示计算机性能过低,如果玩游戏的fps低怎么办?八个问题和九个解决方案...