Linux系统查看内存使用率

Linux下看内存和CPU使用率一般都用top命令,但是实际在用的时候,用top查看出来的内存占用率都非常高,如:

  Mem:   4086496k total, 4034428k used,    52068k free,   112620k buffers

  Swap: 4192956k total,   799952k used, 3393004k free, 1831700k cached

  top –M看更直观,以M为单位

  接近98.7%,而实际上的应用程序占用的内存往往并没这么多,

  PID USER      PR NI VIRT RES SHR S %CPU %MEM    TIME+ COMMAND

  25801 sybase    15   0 2648m 806m 805m S 1.0 20.2 27:56.96 dataserver

  12084 oracle    16   0 1294m 741m 719m S 0.0 18.6   0:13.50 oracle

  27576 xugy      25   0 986m 210m 1040 S 1.0 5.3 28:51.24 cti

  25587 yaoyang   17   0 1206m 162m 3792 S 0.0 4.1   9:21.14 java

  看%MEM这列的数字,按内存排序后,把前几名加起来,撑死了才不过55%,那剩下的内存都干嘛用了?

  一般的解释是Linux系统下有一种思想,内存不用白不用,占用了就不释放,听上去有点道理,但如果我一定要知道应用程序还能有多少内存可用呢?

  仔细看top关于内存的显示输出,有两个数据buffers和cached,在Linux系统下的buffer指的是磁盘写缓存,而cache则指的是磁盘读缓存。

  (A buffer is something that has yet to be "written" to disk.

  A cache is something that has been "read" from the disk and stored for later use.)

  而这两块是为了提高系统效率而分配的内存,在内存富余的时候,操作系统将空闲内存利用起来,而有内存需求时,系统会释放这部分的内存供应用程序使用。

  这样,真正应用程序可用的内存就是free+buffer+cache,上面的例子就是:

  52068k + 112620k + 1831700k = 1996388k

  而已用内存则是used-buffer-cache,上面的例子为:

  4034428k - 112620k - 1831700k = 2090108k

  Linux下查看内存还有一个更方便的命令,free:

  $ free

  total       used       free     shared    buffers     cached

  Mem:       4086496    4034044      52452          0     112756    1831564

  -/+ buffers/cache:    2089724    1996772

  Swap:      4192956     799952    3393004

  Mem:这列就是用top命令看到的内存使用情况,而-/+buffers/cache这列就是我们刚刚做的计算结果,used-buffer-cache/free+buffer+cache

  也可以加-m或者-g参数查看按MB或者GB换算的结果。

  $ free -m

  total       used       free     shared    buffers     cached

  Mem:          3990       3906         83          0         90       1786

  -/+ buffers/cache:       2029       1961

  Swap:         4094        781       3312

  这样,真正应用程序的内存使用量就可以得出来了,上面的例子中内存占用率为51.1%。

  例如:

  # free -m

  total       used       free     shared    buffers     cached

  Mem:               4229       2834       1395          0         62       2548

  -/+ buffers/cache:                223        4006    //物理内存使用223M,剩余4006M

  Swap:               8001       0         8001

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-20 00:56:54

Linux系统查看内存使用率的相关文章

Linux下查看内存使用情况方法总结

Q:我想监视Linux系统的内存使用情况,在Linux下有哪些视图或者命令行工具可用呢? 在做Linux系统优化的时候,物理内存是其中最重要的一方面.自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况.下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法. 1. /proc/meminfo 查看RAM使用情况最简单的方法是通过 /proc/meminfo.这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等

linux下查看内存

前言:在Linux上不像在Windows上看内存那样方便,而且还有Swap这个新的概念,所以知道如何来看Linux内存还是有一定意义的. 在Linux下查看内存我们一般用command free [root@nonamelinux ~]# free total used free shared buffers cached Mem: 386024 377116 8908 0 21280 155468 -/+ buffers/cache: 200368 185656 Swap: 393552 0

Linux系统查看系统是32位还是64位方法总结

这篇博客是总结.归纳查看Linux系统是32位还是64位的一些方法,很多内容来自网上网友的博客.本篇只是整理.梳理这方面的知识,方便自己忘记的时候随时查看. 方法1:getconf LONG_BIT 查看 如下例子所示: 32位Linux系统显示32, 64位Linux系统显示64.最简单.快捷的方法. [root@DB-Server ~]# getconf LONG_BIT 32 [root@gettestlnx01 ~]# getconf LONG_BIT 64   方法2:uname命令查

Linux 系统查看命令

操作系统命令 uname -a #查看内核/操作系统/CPU信息 head -n 1 /etc/issue #查看操作系统版本 cat /proc/cpuinfo #查看CPU信息 hostname #查看计算机名 lspci -tv #列出所有PCI设备 lsusb -tv #列出所有USB设备 lsmod #列出加载的内核模块 env #查看环境变量 文件/IO资源命令 free -m #查看内存使用量和交换区使用量 df -h #查看各分区使用情况 du -sh <目录名> #查看指定目

linux系统查看命令

系统     # uname -a #查看内核/操作系统/CPU信息     # head -n 1 /etc/issue #查看操作系统版本     # cat /proc/cpuinfo #查看CPU信息     # hostname #查看计算机名     # lspci -tv #列出所有PCI设备     # lsusb -tv #列出所有USB设备     # lsmod #列出加载的内核模块     # env #查看环境变量     资源     # free -m #查看内存使

Linux系统查看系统是32位还是64位方法总结【转】

转自:http://www.cnblogs.com/kerrycode/p/3785768.html 这篇博客是总结.归纳查看Linux系统是32位还是64位的一些方法,很多内容来自网上网友的博客.本篇只是整理.梳理这方面的知识,方便自己忘记的时候随时查看. 方法1:getconf LONG_BIT 查看 如下例子所示: 32位Linux系统显示32, 64位Linux系统显示64.最简单.快捷的方法. [root@DB-Server ~]# getconf LONG_BIT 32 [root@

C写个吃内存的测试LINUX 系统可用内存持续减少的原因

C 内存测试 01 #include <stdio.h> 02 #include <stdlib.h> 03 #include <unistd.h> 04 #include <string.h> 05   06 main( int argc, char ** argv ) 07 { 08         char * pTest=0; 09         long iSize; 10         if( 2 == argc ){ 11         

Linux系统查看文件和文件夹大小占用硬盘情况

1. df 可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力(只能查看windows下的类似C盘,D盘) du 可以查看文件及文件夹的大小,比较好用 2. [ia@i5a6 ~]$ df -h 参数 -h 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB.MB 等易读的格式(比较使用的参数,比较你不行自己计算字节数) 3. du:查询文件或文件夹的磁盘使用空间 指定深入目录的层数,参数:–max-depth= [ia@i5a6 ~]# du

linux系统查看网卡实时流量(nload ifstat iftop)命令详解

iftop 命令 安  装:  代码如下 复制代码 [root@test iftop-0.9]# make [root@test iftop-0.9]# make install [root@test iftop-0.9]# iftop 实例 默认是监控第一块网卡的流量 iftop 监控eth1 iftop -i eth1 直接显示IP, 不进行DNS反解析 iftop -n 直接显示连接埠编号, 不显示服务名称: iftop -N 显示某个网段进出封包流量 iftop -F 192.168.1