Linux - 内存性能评估

简介: Linux - 内存性能评估

image.png

概述


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


free 命令

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

[root@artisan~]# free -m
       total    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


image.png


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



image.png


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


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

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

watch -n 3 -d free


image.png


其中,

  • “-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  wa
 0 0 906440 22796  155616 1325496 340 180  2   4   1   4  80 0  10 10
 0 0 906440 42796  155616 1325496 320 289  0  54  1095 287  70 15 0  15
 0 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 3
Linux 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项可知,此系统目前内存资源充足。


小结


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


目录
打赏
0
0
0
0
99
分享
相关文章
|
3月前
|
linux 手动释放内存
在 Linux 系统中,内存管理通常自动处理,但业务繁忙时缓存占用过多可能导致内存不足,影响性能。此时可在业务闲时手动释放内存。
161 17
|
12天前
|
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
79 27
Linux中的System V通信标准--共享内存、消息队列以及信号量
希望本文能帮助您更好地理解和应用System V IPC机制,构建高效的Linux应用程序。
142 48
|
2月前
|
Linux系统内存使用优化技巧
交换空间(Swap)的优化 禁用 Swap sudo swapoff -a 作用:这个命令会禁用系统中所有的 Swap 空间。swapoff 命令用于关闭 Swap 空间,-a 参数表示关闭 /etc/fstab 文件中配置的所有 Swap 空间。 使用场景:在高性能应用场景下,比如数据库服务器或高性能计算服务器,禁用 Swap 可以减少磁盘 I/O,提高系统性能。
48 3
|
2月前
|
Linux查看内存命令
1. free free命令是最常用的查看内存使用情况的命令。它显示系统的总内存、已使用内存、空闲内存和交换内存的总量。 free -h • -h 选项:以易读的格式(如GB、MB)显示内存大小。 输出示例: total used free shared buff/cache available Mem: 15Gi 4.7Gi 4.1Gi 288Mi 6.6Gi 9.9Gi Swap: 2.0Gi 0B 2.0Gi • to
57 2
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
228 20
BPF及Linux性能调试探索初探
BPF技术从最初的网络数据包过滤发展为强大的系统性能优化工具,无需修改内核代码即可实现实时监控、动态调整和精确分析。本文深入探讨BPF在Linux性能调试中的应用,介绍bpftune和BPF-tools等工具,并通过具体案例展示其优化效果。
170 14
深入探索Linux内核的内存管理机制
本文旨在为读者提供对Linux操作系统内核中内存管理机制的深入理解。通过探讨Linux内核如何高效地分配、回收和优化内存资源,我们揭示了这一复杂系统背后的原理及其对系统性能的影响。不同于常规的摘要,本文将直接进入主题,不包含背景信息或研究目的等标准部分,而是专注于技术细节和实际操作。
|
9天前
|
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
96 56
|
12天前
|
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
59 19
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等