如何正确查看Linux机器内存使用情况

如何正确查看Linux机器内存使用情况

背景

??只要工作上涉及到Linux机器,基本上都会有这样一个需求,查看内存使用情况,但是怎么看才正确呢?之前使用的是top命令,一直存在一个误区。

为什么top命令看内存会有误区?

??top是个很好用的系统分析工具,可以实时查看进程,cpu使用率,内存使用率等情况,有点像windows下的任务管理器。我以前一直以为top看到的就是真正的内存使用情况,后来baidugoogle好久,才发现自己图样。= =||
首先看下top命令后展示出来的内存使用情况,我用自己一台搬瓦工vps做示范:

Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:     73728k total,    70048k used,     3680k free,        0k buffers
Swap:    16384k total,     4696k used,    11688k free,    64716k cached

??可以看到 Mem: 73728k total, 70048k used, 3680k free, 0k buffers 这一行,就是内存使用情况。一开始我也只看这一行。后来在公司的生产机子上看时,觉得很疑惑,只要是运行了一段时间的机子,内存的 total 和 used 总是非常的接近,free值很少,也就是说“内存使用率”非常高,哪怕我已经把各种服务都关掉了。但是就算这样,服务器也没有任何问题,再次启动tomcat服务,做一些小的压测,表现的情况也很正常。那么问题就来了:明明内存情况这么紧张,怎么还能运行这么多服务,甚至做压力测试呢?—>答案其实很简单,这些看起来used很多的内存中,一大部分是缓存,这就要说到Linux的内存管理机制了。

Linux中的Cache Memory

??什么是Cache Memory(缓存内存):

当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。
其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。
只有当 free 减去 cached 剩下的这部分内存情况紧张时,才有可能出现应用程序没有足够内存使用的情况。

??所以其实刚才top看到的内存使用情况,有一部分是缓存,那个缓存有多少呢?注意看最后有个mem那行后面有个buffers ,swap那行后面有个cached,这两个就是缓存大小。所以如果要计算应用程序真正使用物理内存的情况,应该是used-cached-buffers才对,所以刚才top看到的物理内存使用情况为70048k-64716k=5332k。所以也才没用多少嘛!

??另外,如果单纯想要看内存使用情况,用free命令其实更直观:

             total       used       free     shared    buffers     cached
Mem:         73728      70940       2788          0          0      64840
-/+ buffers/cache:       6100      67628
Swap:        16384       4500      11884

这些信息的说明大致如下:
其中第一行用全局角度描述系统使用的内存状况:
total——总物理内存
used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存
free——完全未被使用的内存
shared——应用程序共享内存
buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)
cached——缓存,用于已打开的文件
注意-/+ buffers/cache: 6100 67628这行。
??前个值表示-buffers/cache—–>不包括缓存,应用程序物理内存使用情况,即 -buffers/cache=used-buffers-cached ,所以此时应用程序才用了6100k内存 。
??后个值表示+buffers/cache—–>所有可供应用程序使用的内存大小,free加上缓存值,即+buffers/cache=free+buffers+cached ,所以此时还有67628k 内存可供程序使用。
??另外,free命令也可以使用”-m” 参数,这样显示的内存信息是用MB算,而不是KB,大内存情况下,这样更直观。

free -m
-----------
             total       used       free     shared    buffers     cached
Mem:            72         69          2          0          0         63
-/+ buffers/cache:          5         66
Swap:           16          4         11

总结

??使用top命令或者free命令看到的内存使用率used中,包含了缓存,如果要查看应用程序真正的内存使用情况,应该是used-cached-buffers ,或者直接看free命令结果的 -/+ buffers/cache 行信息。

本文引用

  1. 关于Linux的缓存内存 Cache Memory详解
时间: 2024-12-28 15:53:41

如何正确查看Linux机器内存使用情况的相关文章

怎样正确查看Linux的内存占用情况

昨天下午客户那边反馈,说服务器里面32G的内存通过TOP查看,已经用了31G多的,让我处理解决.我当时过程过去一看,刚开始也认为是内存快满了,晚上回去做了个24小时的稳定性测试,探讨了Linux的Mem使用情况: 查看内存最方便的命令是free -m,如:[[email protected] ~]# free -m           total  used  free shared buffers cached       Mem: 1024  1005  19   0    9    782

查看Linux服务器内存使用情况

一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [[email protected] ~]# free -m            total       used       free     shared    buffers     cachedMem:          1526        182       1344          0         16  

查看LINUX进程内存占用情况

可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: (1)top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle 内容解释: PID:进程的ID USE

Linux查看CPU和内存使用情况总结

Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内存是其中最重要的一方面.自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况.下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法. 1. /proc/meminfo 查看RAM使用情况最简单的方法是通过/proc/meminfo.这个动态更新的虚拟

使用Free命令查看Linux服务器内存使用状况(-/+ buffers/cache详解)

free命令可选参数 -b,-k,-m,-g show output in bytes, KB, MB, or GB -h human readable output (automatic unit scaling) -l show detailed low and high memory statistics -o use old format (no -/+buffers/cache line) -t display total for RAM + swap -s update every

FreeBSD 查看服务器 cpu 内存使用情况

最近在公司接到一个freebsd的项目,主要是移植,中间涉及到freebsd中查看cpu占用率,内存的使用率等,查了一下,使用vmstat命令,粘贴一个博文:http://www.demix.cn/h?z=28618 vmstat查看FreeBSD服务器的内存使用情况   在FreeBSD里运行vmstat命令执行结果如下: # vmstatprocs memory page disk faults cpur b w avm fre flt re pi po fr sr ad0 in sy cs

查看linux机器配置&内核版本

[[email protected] bin]# uname  -a   Linux hadoop1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [[email protected] bin]#  cat /proc/version Linux version 2.6.32-431.el6.x86_64 ([email protected].bsys.dev.ce

查看linux机器是32位还是64位的相关命令

查看linux机器是32位还是64位的方法: 方法一:uname -a 方法二:uname -m 方法三: file /sbin/init   如果显示 64-bit 则为64位:如果显示为32 bit 则为32bit: 方法四:getconf LANG_BIT 方法五:ls / | grep 64   (也就是根目录如果有lib64文件夹,那就是64位) 附: 查看系统版本: cat /etc/redhat-release 查看内核版本:uname -r

Linux查看CPU和内存使用情况详解

在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中, 可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的 模式 -- 用基于 top 的命令,可以控制显示方式等等.退出 top 的命令为 q (在 top 运行中敲 q 键一次). 1.top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务 管理器.可