当前位置: 首页 > news >正文

Linux - 内存性能评估

文章目录

  • 概述
  • free 命令
    • 指定的时间段内不间断地监控内存的使用情况
  • 通过watch与free相结合动态监控内存状况
  • vmstat命令监控内存
  • “sar –r”命令组合
  • 小结

在这里插入图片描述


概述

内存的管理和优化是系统性能优化的一个重要部分,内存资源的充足与否直接影响应用系统的使用性能。在进行内存优化之前,一定要熟悉Linux的内存管理机制,这里我们重点探讨如何通过系统命令监控Linux系统的内存使用状况。


free 命令

free是监控Linux内存使用状况最常用的指令.

[root@artisan~]# free -mtotal    used    free    shared  buffers   cached
Mem:     8111    7185    925      0     243    6299
-/+ buffers/cache:    643    7468
Swap:     8189      0    8189

“free –m”表示以MB为单位查看内存使用情况。

在这个输出中,我们重点关注的应该是free列与cached列的输出值,由输出可知,

  • 此系统共8GB内存,

  • 系统空闲内存还有925MB,

  • 其中,缓冲区缓存占用了243MB,

  • 页面缓存占用了6299MB,由此可知,系统缓存了很多的文件和目录。

  • 而对于应用程序来说,可以使用的内存还有7468MB,当然,这个7468MB包含了缓冲区缓存和页面缓存的值。

  • 在Swap项可以看出,交换分区还未使用。

所以,从应用的角度来说,此系统内存资源还非常充足。

一般有这样一个经验公式:当应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能;当应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存;当20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

在这里插入图片描述

指定的时间段内不间断地监控内存的使用情况

free命令还可以适时监控内存的使用状况,使用“-s”参数可以在指定的时间段内不间断地监控内存的使用情况。

[root@VM-24-3-centos ~]# free -b -s 5

在这里插入图片描述

其中,“-b”表示以千字节(也就是1024字节为单位)来显示内存使用情况。 当然了,也可以 free -m -s 5 在这里插入图片描述


通过watch与free相结合动态监控内存状况

通过watch,可以动态监控命令的运行结果,省去手动执行的麻烦。

在watch后面跟上需要运行的命令,watch就会自动重复运行这个命令,默认2秒钟执行一次,并把执行的结果更新在屏幕上。

watch -n 3 -d free

在这里插入图片描述

其中,

  • “-n”指定重复执行的时间,
  • “-d”表示高亮显示变动。

在这里插入图片描述


vmstat命令监控内存

vmstat命令在监控系统内存方面功能强大。

请看下面的一个输出。

procs -----------memory---------- ---swap-- -----io---- --system--  ----cpu----r b  swpd  free  buff  cache  si  so   bi  bo  in  cs  us sy id  wa0 0 906440 22796  155616 1325496 340 180  2   4   1   4  80 0  10 100 0 906440 42796  155616 1325496 320 289  0  54  1095 287  70 15 0  150 0 906440 42884  155624 1325748 236 387  2  102  1064  276 78 2  5  15

对于内存的监控,在vmstat中重点关注的是swpd、si和so行。从这个输出可以看出,此系统内存资源紧缺,swpd占用了900MB左右内存,si和so占用了很大内在,而由于系统内存的紧缺,导致出现15%左右的系统等待,此时增加系统的内存是必须要做的。


“sar –r”命令组合

sar命令也可以监控Linux的内存使用状况。可以通过“sar –r”命令组合查看系统内存和交换空间的使用率。

[root@VM-24-3-centos ~]#sar -r 2 3Linux 2.6.9-42.ELsmp (webserver)    11/30/2008   _i686_ (8 CPU)09:57:33 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit  %commit
09:57:35 PM   897988  7408556  89.19   249428  6496532  786556    4.71
09:57:37 PM   898564  7407980  89.18   249428  6496532  784276    4.70
09:57:39 PM   899196  7407348  89.17   249440  6496520  782132    4.69
Average:    898583  7407961  89.18   249432  6496528  784321    4.70

其中,

  • kbmemfree表示空闲物理内存大小,
  • kbmemused表示已使用的物理内存空间大小,
  • %memused表示已使用内存占总内存大小的百分比,
  • kbbuffers和kbcached分别表示缓冲区缓存和页面缓存的大小,
  • kbcommit和%commit分别表示应用程序当前使用的内存大小和使用百分比。

可以看出sar的输出其实与free的输出完全对应,不过sar更加人性化,不仅给出了内存使用量,还给出了内存使用的百分比以及统计的平均值。从%commit项可知,此系统目前内存资源充足。


小结

这里介绍了内存监控常用的几个指令以及一些经验规则。其实现在的系统在内存方面出现的瓶颈已经很少,因为内存价格很低,充足的内存已经完全能满足应用程序和系统本身的需要。如果系统在内存方面出现瓶颈,很大的可能是应用程序本身的问题造成的。

在这里插入图片描述

http://www.lryc.cn/news/31195.html

相关文章:

  • 00后初中辍学,转行程序员后,终于找到了女朋友
  • “Vue学习注意事项:掌握核心特性,注意性能优化和第三方库的使用“
  • 计算机网络协议详解(二)
  • 【CSS】CSS 复合选择器 ② ( 子元素选择器 | 交集选择器 )
  • Java集合专题
  • 双重差分法(DID):算法策略效果评估的利器
  • 【pytorch】使用mixup技术扩充数据集进行训练
  • 面向对象设计模式:创建型模式之单例模式
  • IsADirectoryError: [Errno 21] Is a directory: ‘.‘
  • 判断三角面片与空间中球体是否相交
  • 继承下的缺省参数值和访问说明符
  • Spring核心模块—— BeanFactoryPostProcessorBeanPostProcessor(后处理器)
  • 产品新人如何培养产品思维?
  • 「兔了个兔」CSS如此之美,看我如何实现可爱兔兔LOADING页面(万字详解附源码)
  • 【Java】阻塞队列 BlcokingQueue 原理、与等待唤醒机制condition/await/singal的关系、多线程安全总结
  • 【水下图像增强】Enhancing Underwater Imagery using Generative Adversarial Networks
  • Maven专题总结—详细版
  • 华为OD机试真题Java实现【字符串加密】真题+解题思路+代码(20222023)
  • 「Python 基础」函数与高阶函数
  • DIV内容滚动,文字符滚动标签marquee兼容稳定不卡
  • SpringBoot_第五章(Web和原理分析)
  • 4-2 Linux进程和内存概念
  • 【微信小程序】计算器案例
  • 408 计算机基础复试笔记 —— 更新中
  • 找出最大数-课后程序(Python程序开发案例教程-黑马程序员编著-第二章-课后作业)
  • Java——N叉树的层序遍历
  • 【Kubernetes】第十八篇 - k8s 服务发现简介
  • Codeforces Round 856 (Div. 2) 最好ak的div2
  • 最新JVM技术: GraalVM,让你一文了解它的方方面面
  • MySQL索引失效的场景