Linux监控工具介绍系列——smem
smem工具介绍
smem是Linux系统上的一款可以生成多种内存耗用报告的命令行工具。与现有工具不一样的是smem可以报告实际使用的物理内存(PSS),这是一种更有意义的指标。可以衡量虚拟内存系统的库和应用程序所占用的内存数量。
由于大部分的物理内存通常在多个应用程序之间共享,名为实际使用物理内存(RSS)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。PSS这个参数而是衡量了每个应用程序在每个共享内存区中的“公平分配”,给出了一个切合实际的衡量指标。
smem有许多功能特性:
系统概况列表
按进程、映射和用户列表
按用户、映射或用户过滤
来自多个数据源的可配置列
可配置的输出单位和百分比
可配置的标题和总和
从/proc读取活动数据
从目录镜像或经过压缩的打包文件读取数据快照
面向嵌入式系统的轻型捕获工具
内置的图表生成功能
smem的系统要求
系统内核为2.6.27以上
Python版本必须为2.4或以上
依赖matplotlib库生成图表(可选的,自动检测)依赖matplotlib,是因为smem除了一般的文本信息报告外,smem 也可以生成条状或饼状图。
对应的英文原文如下:
smem is a tool that can give numerous reports on memory usage on Linux systems. Unlike existing tools, smem can report proportional set size (PSS), which is a more meaningful representation of the amount of memory used by libraries and applications in a virtual memory system.
Because large portions of physical memory are typically shared among multiple applications, the standard measure of memory usage known as resident set size (RSS) will significantly overestimate memory usage. PSS instead measures each application's "fair share" of each shared area to give a realistic measure.
smem has many features:
system overview listing
listings by process, mapping, user
filtering by process, mapping, or user
configurable columns from multiple data sources
configurable output units and percentages
configurable headers and totals
reading live data from /proc
reading data snapshots from directory mirrors or compressed tarballs
lightweight capture tool for embedded systems
built-in chart generation
smem has a few requirements:
a reasonably modern kernel (> 2.6.27 or so)
a reasonably recent version of Python (2.4 or so)
the matplotlib library for chart generation (optional, auto-detected)
Linux使用到了虚拟内存(virtual memory),因此要准确的计算一个进程实际使用的物理内存就不是那么简单。只知道进程的虚拟内存大小也并没有太大的用处,因为还是无法获取到实际分配的物理内存大小。
RSS(Resident set size),使用top命令可以查询到,是最常用的内存指标,表示进程占用的物理内存大小。但是,将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。
PSS(Proportional set size)所有使用某共享库的程序均分该共享库占用的内存时,每个进程占用的内存。显然所有进程的PSS之和就是系统的内存使用量。它会更准确一些,它将共享内存的大小进行平均后,再分摊到各进程上去。
USS(Unique set size )进程独自占用的内存,它是PSS中自己的部分,它只计算了进程独自占用的内存大小,不包含任何共享的部分。
VSS – Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS – Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS – Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS – Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
smem工具安装
首先去官方网址https://www.selenic.com/smem/ 下载对应的smem安装包,目前最新的版本为smem-1.4. 下面安装是在RHEL 5.7上安装,不同版本系统、以及不同安装方法都有一些区别。
1: [root@DB-Server tmp]# tar -xzvf smem-1.4.tar.gz
2: smem-1.4/.hg_archival.txt
3: smem-1.4/.hgtags
4: smem-1.4/COPYING
5: smem-1.4/smem
6: smem-1.4/smem.8
7: smem-1.4/smemcap.c
8: [root@DB-Server tmp]# cd smem-1.4
9: [root@DB-Server smem-1.4]# ls
10: COPYING smem smem.8 smemcap.c
11: [root@DB-Server smem-1.4]# cp /tmp/smem-1.4/smem /usr/bin
12: [root@DB-Server smem-1.4]# chmod +x /usr/bin/smem
smem工具使用
查看smem命令的相关帮助信息
1: [root@DB-Server tmp]# smem -h
2: usage: smem [options]
3:
4: options:
5: -h, --help show this help message and exit
6: -H, --no-header disable header line
7: -c COLUMNS, --columns=COLUMNS
8: columns to show
9: -t, --totals show totals
10: -R REALMEM, --realmem=REALMEM
11: amount of physical RAM
12: -K KERNEL, --kernel=KERNEL
13: path to kernel image
14: -m, --mappings show mappings
15: -u, --users show users
16: -w, --system show whole system
17: -P PROCESSFILTER, --processfilter=PROCESSFILTER
18: process filter regex
19: -M MAPFILTER, --mapfilter=MAPFILTER
20: map filter regex
21: -U USERFILTER, --userfilter=USERFILTER
22: user filter regex
23: -n, --numeric numeric output
24: -s SORT, --sort=SORT field to sort on
25: -r, --reverse reverse sort
26: -p, --percent show percentage
27: -k, --abbreviate show unit suffixes
28: --pie=PIE show pie graph
29: --bar=BAR show bar graph
30: -S SOURCE, --source=SOURCE
31: /proc data source
1:无参数时显示所有进程的内存使用情况
2:参数-u 显示每个用户所耗用的内存总量
smem -u
3: 参数-p 查看耗用内存情况的百分比。
smem -p
4: 参数-w 查看系统内存使用情况
1: [root@DB-Server01 ~]# smem -w
2: Area Used Cache Noncache
3: firmware/hardware 0 0 0
4: kernel image 0 0 0
5: kernel dynamic memory 22021892 21721584 300308
6: userspace memory 1899296 122424 1776872
7: free memory 686340 686340 0
8: [root@DB-Server01 ~]# smem -w -p
9: Area Used Cache Noncache
10: firmware/hardware 0.00% 0.00% 0.00%
11: kernel image 0.00% 0.00% 0.00%
12: kernel dynamic memory 89.49% 88.27% 1.22%
13: userspace memory 7.73% 0.50% 7.23%
14: free memory 2.78% 2.78% 0.00%
5: 参数-R REALMEM,REALMEM这个值是指物理内存数量。此参数可以让smem在整个系统(-w)的输出中发现固件/硬件所耗用的内存数量(对比上下即可发现,注意firmware/hardware)
1: [root@DB-Server01 ~]# smem -R 24G -w
2: Area Used Cache Noncache
3: firmware/hardware 558296 0 558296
4: kernel image 0 0 0
5: kernel dynamic memory 22024108 21722972 301136
6: userspace memory 1907676 122436 1785240
7: free memory 675744 675744 0
6:参数-c 用来显示需要展示的列。
1: [root@DB-Server01 ~]# smem -c "name user pss"
2: Name User PSS
3: mingetty root 18
4: mingetty root 18
5: mingetty root 18
6: mingetty root 18
7: mingetty root 18
8: bash root 911
9: sftp-server root 939
10: cupsd root 1208
11: rsyslogd root 1403
12: smbd tibco 1474
13: hald haldaemon 1477
14: pickup postfix 1487
15: vmtoolsd root 2309
16: sshd root 2521
17: python root 5464
18: beremote root 7585
19: java weblogic 18454
20: java weblogic 31431
21: java weblogic 69389
22: java tomcat 339977
23: java tomcat 355037
24: java tomcat 421133
25: java weblogic 640531
7: 参数-s 根据某一列(例如 rss)来排序.
8: 参数-r 一般与参数-s结合使用,表示反转排序(从升序改为降序)
9:参数-M 过滤相关进程。Show processes filtered by mapping
1: [root@DB-Server tmp]# smem -M mysql
2: PID User Command Swap USS PSS RSS
3: 4172 mysql /usr/sbin/mysqld --basedir= 0 3924 3924 3924
4: [root@DB-Server tmp]# smem -M mysql -p
5: PID User Command Swap USS PSS RSS
6: 4172 mysql /usr/sbin/mysqld --basedir= 0.00% 0.38% 0.38% 0.38%
7: [root@DB-Server tmp]#
10:参数-U 按用户过滤信息
另外一些参数如何展示条状图或饼状图的功能,个人感觉这些参数的用处不大,首先服务器一般都没有安装桌面系统,都是命令界面维护、管理。无法生成相关图形。其次服务器有桌面系统,也需要安装相关依赖包,相当麻烦。除非是为了生成报告需要。
Read data from capture tarball smem --source capture.tar.gz
Show a bar chart labeled by pid smem --bar pid -c "pss uss"
Show a pie chart of RSS labeled by name smem --pie name -s rss
参考资料
http://www.uml.org.cn/itnews/2013121108.asp
https://linux.cn/article-4492-1.html
Linux监控工具介绍系列——smem的更多相关文章
- Linux监控工具介绍系列——OSWatcher Black Box
OSWatcher Balck Box简介 OSWatcher Black Box (oswbb)是Oracle开发.提供的一个小巧,但是实用.强大的系统工具,它可以用来抓取操作系统的性能指标,用 ...
- Linux监控工具介绍系列——vmstat
说来惭愧,玩Linux这么久了,居然没有玩转vmstat这个命令,对很多指标的具体意义都有点模糊不清,花了点时间好好学习.整理一下这个命令的相关资料.因为这个命令确实比较重要,而且频繁用到. 命令 ...
- Linux监控工具介绍系列——free
在Linux系统中,我们查看.监控系统内存使用情况,一般最常用的命令就是free.free命令其实非常简单,参数也非常简单,但是里面很多知识点未必你都掌握了.下面总结一下我所了解的free命令.如有不 ...
- Linux监控工具介绍系列——iostat
文章转自:https://www.cnblogs.com/ghj1976/p/5691857.html Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iost ...
- Linux系统性能监控工具介绍之-tsar
Linux系统性能监控工具介绍之-tsar Linux系统性能监控工具介绍之-tsar 2017-03-02 20:25 175人阅读 评论(0) 收藏 举报 分类: LINUX调优(9) 目 ...
- Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试【转】
Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试[转] 本文是本人前一段时间做一个简单Java监控工具调研总 ...
- linux磁盘管理系列-LVM的使用
LVM是什么 LVM是Linux操作系统的逻辑卷管理器. 现在有两个Linux版本的LVM,分别是 LVM1,LVM2.LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本. ...
- Linux 系统化学习系列文章总目录(持续更新中)
本页内容都是本人系统化学习Linux 时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接 ...
- linux磁盘管理系列三:LVM的使用
磁盘管理系列 linux磁盘管理系列一:磁盘配额管理 http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html l ...
随机推荐
- __weak 和 __block 区别
Blocks理解: Blocks可以访问局部变量,但是不能修改 如果修改局部变量,需要加__block __block int multiplier = 7; int (^myBlock)(int) ...
- Android学习笔记之ListView复用机制
PS:满打满算,差不多三个月没写博客了...前一阵忙的不可开交...总算是可以抽出时间研究研究其他事情了... 学习内容: 1.ListView的复用机制 2.ViewHolder的概念 1.List ...
- 自定义UIButton
偶尔逛简书能看见很多值得记下来的东西,有的接触过有的没接触过,接触过的也可能过段时间就忘记了,再上手的时候可能手足无措,所以决定有些觉得值得记下来的东西还是记录一下.博客是个好地方,因为很多人都能搜索 ...
- Sublime插件支持Sass编译和Babel解析ES6 & .sublime-build文件初探
用Sublime Text蛮久了,配置配来配去的,每次换电脑都得重头再配过,奈何人老了脑子不中用了,得好好整理一些,下次换电脑就有得参考了.. 同事说,他的WebStorm简直太方便,自身集成了很多方 ...
- js的stopPropagation()、cancelBubble、preventDefault()、return false的分析
个人笔记,如有错误,望指出. 事件冒泡,举个列子: <li> <a href='http://www.baidu.com'>点击a</a> </li> ...
- WCF入门教程(二)如何创建WCF服务
WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...
- Andriod小项目——在线音乐播放器
转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...
- 开源UML工具推荐
1.StarUML StarUML是一个开源UML项目,可以开发快速,灵活,可扩展,多功能并且免费的UML/MDA平台.此项目运行在Win32平台之上.StarUML项目的目标是成为RationalR ...
- uct框架数据库sql文件导入错误之 sql_mode
uct框架在导入sql文件时可能会出现一种错误 ERROR 1101 (42000): BLOB/TEXT column 'brief' can't have a default value 这是由于 ...
- SpringMVC中的异常处理集锦
1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦合 ...




