在Linux中可视化显示内存占用情况的方法

   物理内存不足对Linux桌面系统和服务器系统的性能影响都很大。当你的计算机变慢时,要做的第一件事就是释放内存。尤其是在多用户环境以及执行关键任务的服务器环境下,内存消耗会变得更加关键,因为多个用户和应用线程会同时竞争更多的内存空间。

  如果要监测系统内各种资源的使用情况(比如说CPU或内存),图形化显示是一种高效的方法,通过图形界面可以快速分析各用户和进程的资源消耗情况。本教程将给大家介绍在linux下图形化分析内存使用情况的方法,使用到命令行工具是smem.

  物理内存使用情况: RSS 、 PSS 和 USS

  由于Linux使用到了虚拟内存(virtual memory),因此要准确的计算一个进程实际使用的物理内存就不是那么简单。 只知道进程的虚拟内存大小也并没有太大的用处,因为还是无法获取到实际分配的物理内存大小。

  RSS(Resident set size),使用top命令可以查询到,是最常用的内存指标,表示进程占用的物理内存大小。但是,将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。

  PSS(Proportional set size)会更准确一些,它将共享内存的大小进行平均后,再分摊到各进程上去。

  USS(Unique set size )是PSS中自己的部分,它只计算了进程独自占用的内存大小,不包含任何共享的部分。

  安装Smem

  smem是一个能够生成多种内存耗用报告的命令行工具,它从/proc文件系统中提取各进程的PSS/USS信息,并进行汇总输出。它还内建了图表的生成能力,所以能够方便地分析整个系统的内存使用情况。

  在Debian, Ubuntu 或 Linux Mint 上安装smem

  代码如下:

  $ sudo apt-get install smem

  在Fedora 或 CentOS/RHEL上安装Smem

  在CentOS/RHEL上,你首先得启用EPEL仓库。

  代码如下:

  $ sudo yum install smem python-matplotlib

  使用smem检查内存使用情况

  你可以在非特权模式下使用smem,它能够显示当前用户运行的所有进程的内存使用情况,并按照PSS的大小进行排序。

  代码如下:

  $ smem


  如有你想得到整个系统中所有用户的内存使用情况,就需要使用root权限来运行smem。

  代码如下:

  $ sudo smem


  也可以按用户维度来输出报告:

  代码如下:

  $ sudo smem -u


  smem提供了以下选项来对输出结果进行筛选,支持按映射方式(mapping)、进程和用户三个维度的筛选:

  -M <正则表达式>

  -P <正则表达式>

  -U <正则表达式>

  想了解smem更多的使用方式,可以查询用户手册(man page)。

  使用smem图形化显示内存使用情况

  图形化的报告使用起来会更加方便快捷。smem支持两种格式的图形显示方式:直方图和饼图。

  下面是一些图形化显示的实例。

  下面的命令行会基于PSS/RSS值,生成直方图,以用户alice为例。

  代码如下:

  $ sudo smem --bar name -c "pss uss" -U alice


  这个例子会生成一张饼图,图中显示了系统中各进程的PSS内存使用量:

  代码如下:

  $ sudo smem --pie name -c "pss"


  概括来说,smem是一个方便易用的内存分析工具。利用smem的格式化输出,你可以对内存使用报告进行自动化分析,并执行一些自动化的处理措施。如果你还知道其他的一些优秀的内存检测工具,请在留言区告诉我。

时间: 2024-11-03 02:56:20

在Linux中可视化显示内存占用情况的方法的相关文章

远程检测Linux服务器中内存占用情况的方法

  我们要用的监控内存的脚本在Nagios 市场上,在创建者的Github仓库中也可以找到. 假设我们已经安装了NRPE,我们首先在我们想要监控的服务器上下载脚本. 准备远程服务器 在 Debain/Ubuntu 中: 代码如下: # cd /usr/lib/nagios/plugins/ # wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl # mv ch

Linux中apache 2内存占用监控记录脚本

web服务器遇到一个奇怪的问题,在运行的诸多apache2进程中, 会有某个进程, 慢慢占满全部内存, 然后机器就象死了一样,写了一个自动检查脚本,检查并杀死出问题的apache2进程,问题得到缓解,但是没有解决, 因为慢慢占满内存 ,会使linux释放掉所以的硬盘cache并且周期性的有性能下降.用RLimitMEM参数限制内存,也不奏效,bw_mod限制流量也不奏效 今天修改了一下脚本, 在杀死出问题的进程之前,先记录此进程连接的外部的ip和端口,&http://www.aliyun.com

Linux查看CPU和内存使用情况

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

Linux查看CPU和内存使用情况【转】

转自:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等.退出 top 的命令为 q (在 top 运行中敲 q 键一次). top

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

查看Linux服务器下的内存使用情况 ,可以使用命令free -m.注意此命令只在Linux下有效,在FreeBSD中没有此命令.命令如下所示: used:已经使用的内存数 free:空闲的内存数 shared:多个进程共享的内存总额 -buffers/cache:(已用)的内存数,即used-buffers-cached +buffers/cache:(可用)的内存数,即free+buffers+cached 得出结论: 可用内存的计算公式为: 可用内存=free+buffers+cached

降低JRuby的内存占用的可能方法

JRuby的内存占用是比较高的,毕竟需要启动一个JVM以及构建抽象语法树等,一般同一个脚本的内存占用都是CRuby的几十倍甚至上百倍.记的Infoq上有过一个新闻是说sun跟东京某大学合作研究Ruby和JRuby的MVM,可以在几个VM之间共享解释器,可以在启动多个VM的时候大大降低内存占用.不过这个项目暂时没有什么消息,要想在实际中应用更是没影的事情.有无其他解决办法?今天看到IBM Developer的一篇文章,原来IBM JRE for the Java platform SE 5早就引入

Linux中使用cat命令查看系统信息的方法

Linux中使用cat命令查看系统信息的方法 cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx) cat /proc/interrupts - 中断 cat /proc/ioports - 设备IO端口 cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size) cat /proc/partitions - 所有设备的所有分区 cat /proc/pci - PCI设备的信息

Android中TextView显示插入的图片实现方法_Android

本文实例讲述了Android中TextView显示插入的图片实现方法.分享给大家供大家参考,具体如下: Android系统默认给TextView插入图片提供了三种方式: 1.ImageSpan 2.Html.ImageGetter 3.TextView.setCompoundDrawables(left, top, right, bottom) 1.TextView使用ImageSpan显示图片 ImageSpan span = new ImageSpan(this, R.drawable.ic

查看LINUX进程内存占用情况

  (1)top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程