1、按照内存使用方式排序

  top 之后使用 shift + m 那么top按照内存使用从大到小进行排列,使用 shift + P 表示按照CPU进行排序。

PID USER      PR     NI  VIRT RES  SHR S %CPU %MEM    TIME+  COMMAND      
bigfish 1118m 438m 30m S 11.3 :59.96 eclipse
bigfish 1706m 216m 61m S 5.6 :18.04 QQ.exe
bigfish 610m 138m 44m S 3.6 :19.26 maxthon PR :进程优先级
NI :进程当前nice调整值
VIRT : 进程使用的虚拟内存数
RES : 进程使用的物理内存
SHR : 允许与其他进程共享的内存数(比如一些动态库)
TIME+ : CPU时间

2、top查看指定进程

  top -p pid -d 1 使用-p选项指定pid,使用-d表示刷新间隔

3、pamp查看指定进程

  pmap会将进程中使用到的每个动态库等内存依次显示,最有有一个total表示使用的虚拟内存总数。

  看不到物理内存使用数。  

pmap  |grep total
total 1228664K

4、使用ps查看指定进程

  ps aux|grep java|grep UID

bigfish     0.0  0.0   ?        Sl   Nov07  : java -jar rateHis.jar
12286681164 分别表示虚拟内存与物理内存占用的KB数

5、查看/proc/pid/status查看指定进程

cat /proc//status
VmSize: kB --使用的虚拟内存
VmRSS: kB --使用的物理内存

6、查看系统内存使用

  1)cat /proc/meminfo

  2)使用top -d 1 每秒钟刷新一次

  3)sar -r 1 每秒钟刷新一次

  4)vmstat 1 每秒钟刷新一次

  5)free 命令

关于内存监控

7、内存使用 sar -r 1

16时20分55秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact
16时20分56秒 245924 3731788 93.82 145188 1704968 5485052 68.77 2227000 1235488
16时20分57秒 244684 3733028 93.85 145192 1706004 5485948 68.78 2227236 1236156
16时20分58秒 244312 3733400 93.86 145196 1706344 5486204 68.78 2227420 1236404
16时20分59秒 241708 3736004 93.92 145196 1706528 5488516 68.81 2229992 1236508
kbmemfree    空闲内存
kbmemused 已使用内存(包括了buffer与cached的内存),因此该值并非真实用户进程使用的内存数,需要减去buffer和cached
%memused 内存使用率
kbbuffers 内核使用的buffer
kbcached 内核使用的cached

  1)已使用内存数:特别要注意的是这个值包括了内核cached的值,并非真实用户进程使用掉的。

  可以通过如下方式释放这部分内存:首先执行sync让系统将缓存数据同步到磁盘之中;然后 echo 3 > /proc/sys/vm/drop_caches 修改dropcaches的值。通过修改proc目录下的文件可以实现与系统进行通信,drop_caches文件取值,1-释放页面缓存;2-释放目录项和文件节点;3-释放前两项。pagecaches表示内核最近访问过的文件页面缓存。

  参考自:http://os.51cto.com/art/201003/186885.htm  

8、系统交换活动监控  sar -W 1  

  -W表示swaping活动统计

16时56分23秒  pswpin/s pswpout/s
16时56分26秒 0.00 0.00
16时56分27秒 0.00 0.00
16时56分28秒 0.00 0.00
16时56分29秒 0.00 39.00
16时56分30秒 0.00 0.00
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量

  说明:对swap分区的使用无疑是非常耗时的,预示着物理内存是不是不够用了。

9、内存分页监控 sar -B 1

  还可以使用命令:vmstat

16时49分21秒  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
16时49分22秒 0.00 0.00 1143.00 0.00 328.00 0.00 0.00 0.00 0.00
16时49分23秒 0.00 16.00 1201.00 0.00 440.00 0.00 0.00 0.00 0.00
16时49分24秒 0.00 0.00 1553.00 0.00 576.00 0.00 0.00 0.00 0.00
pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB),vmstat中为si
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB), vmstat中为so
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
pgfree/s:每秒被放入空闲队列中的页个数
pgscank/s:每秒被kswapd扫描的页个数
pgscand/s:每秒直接被扫描的页个数
pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数
%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

  说明:LInux的内存管理使用主要是通过“调页Paging”和“交换Swapping”来完成内存调度。分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。当发生频繁的内存页换入换出时性能会受到严重影响,此时成为thrashing(颠簸)。

  执行:vmstat 1 

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 213712 496692 100760 1539336 0 0 15 5 3 11 19 9 71 2
2 1 213712 490608 100764 1545548 0 0 0 84 883 7062 8 5 87 0
1 1 213712 488996 100772 1545872 0 0 0 52 1079 8181 9 7 83 1
si  每秒从交换区读入到内存的次数
so 每秒从内存写入到交换区的次数
bi 每秒读取的块数(块大小512字节)
bo 每秒写入的块数(块大小为512字节)
in 每秒中断数,包括时钟中断
cs 每秒上下文却换数
wa 表示cpu处于IOwait的时间

附注:

1、关于cached的解释

Mem:   7742060k total,  7597916k used,   144144k free,     3000k buffers
Swap: 0k total, 0k used, 0k free, 5924580k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root 137g .9g .5g S 4.0 39.6 :40.70 mongod
root 129g .2g .8g S 10.0 29.2 :45.04 mongod

  上面数据是一台运行mongodb的服务器,总共8GB内存,其中有6GB的cached,并且swap分区使用为0.

  但是从每个mongod占用的物理内存看,已经达到了5GB,那么6GB的cached哪里来呢?

  可能的解释:mongod申请的内存,还没有使用,依然以cached的形式存在着。

参考文档:http://blog.csdn.net/sunlylorn/article/details/6215137

Linux 内存监控的更多相关文章

  1. linux内存监控 free

    free 命令详解: 执行命令后总共四行. 第一行: 列头 第二行: total 内存总数: 32881776 used 已经使用的内存数: 8324796 free 空闲的内存数: 24556980 ...

  2. Docker容器内存监控

    linux内存监控 要明白docker容器内存是如何计算的,首先要明白linux中内存的相关概念. 使用free命令可以查看当前内存使用情况. [root@localhost ~]$ free tot ...

  3. Linux内存、性能诊断中vmstat命令的详解

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存 交换情况,IO读写情况.相比top,通过vmstat可以看到 ...

  4. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  5. Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...

  6. 浅谈Linux内存管理机制

    经常遇到一些刚接触Linux的新手会问内存占用怎么那么多?在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这 ...

  7. Linux 服务器监控

    200 ? "200px" : this.width)!important;} --> 标签:iostat/free/top/dstat 概述 文字主要讲述使用linux自带 ...

  8. [转]linux 系统监控、诊断工具之 IO wait

    1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...

  9. linux 进程监控

    linux 进程监控 supervise Supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程 ...

随机推荐

  1. Opencv 发现轮廓 findContours

    vector<vector<Point>> vec_p; vector<Vec4i> vec_4f; findContours(img_canny1, vec_p, ...

  2. nginx相关教程

    1.nginx简易的教程 http://www.cnblogs.com/jingmoxukong/p/5945200.html#%E8%B7%A8%E5%9F%9F%E8%A7%A3%E5%86%B3 ...

  3. VC6.0 中 添加/取消 块注释的Macro代码

    SAMPLE.DSM是微软提供的样例,使用的是vb语言.其中的 CommentOut 函数,是支持块注释的,可是这种/**/的注释方式,有时候用起来不是很方便,因为两个/会因为一个/而终止.对于大块代 ...

  4. 白盒测试实践--Day3 12/19/2017

    累计完成任务情况: 阶段内容 参与人 完成静态代码检查结果报告 小靳 完成JUnit脚本编写 小黄 完成CheckStyle检查 小靳 完成代码评审会议纪要和结果报告 小熊.小梁及其他 完成白盒测试用 ...

  5. ubuntu虚拟机安装简单pxe服务器

    安装环境: vmware2台虚拟机,一台用来做pxe服务器(安装tftp.dhcp.apache2等服务),另一台用来做安装测试. 虚拟机的网络配置:dhcp的虚拟网络为192.168.10.100/ ...

  6. overflow 在ie7下失效

    问题原因: 当父元素的后代元素的样式拥有position:relative属性时,父元素的overflow:hidden属性就会失效. 解决方法: 在父元素中使用position:relative;即 ...

  7. JavaScript语言精粹 笔记03 继承

    继承伪类对象说明符原型函数化部件 继承 JS不是基于类的,而是基于原型的,这意味着对象直接从其他对象继承. 1 伪类 JS提供了一套丰富的代码重用模式,它可以模拟那些基于类的模式,因为JS实际上没有类 ...

  8. Alpha冲刺(五)

    Information: 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Details: 组员1 柯奇豪 过去两天完成了哪些任务 基于ssm框架的前后端交互测试,结合微信小 ...

  9. jenkins构建后接受者收不到邮件问题解决方案

    jenkins部署.安装增强版邮件插件,配置邮件及增强版邮件通知请参考网上教程,由于教程比较多页通俗易懂,笔者在这里不做重复说明,本文重点是解决配置好增强版邮件,job构建后仍然收不到邮件的问题 步骤 ...

  10. 关于Qt官方下载页的最新变动

    时间过得很快,现在Qt已经迎来了5.10版本,但是当我们去下载页下载对应安装包的时候,已经找不到之前的offline安装包了.你能够看到的只有在线安装包,并且我自己有做过测试,国内的网络基本上没有机会 ...