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 ...
随机推荐
- swift2.0 如何隐藏和设置状态栏
1.在ViewController中操作当前ViewController的状态栏/** 隐藏状态栏 */ override func prefersStatusBarHidden() -> Bo ...
- 【Java心得总结七】Java容器下——Map
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...
- 图片每天换及纯css3手风琴特效
<a target="_blank" id="a"><img id="img" /></a> <s ...
- PHP实现实现数字补零格式化
在接支付SDK的时候,第三方回调处理时需要IP,并且IP的需求是:去掉点号,补零到每地址段3位, 如:192168000001 先看看我的实现: <?php $IP = explode ( '. ...
- 一个基于mysql构建的队列表
通常大家都会使用redis作为应用的任务队列表,redis的List结构,在一段进行任务的插入,在另一端进行任务的提取. 任务的插入 $redis->lPush("key:task:l ...
- [译] Paxos算法详解
1. 概述 Paxos算法被用来实现一个容错的分布式系统,一直以来以晦涩难懂著称.这可能是因为该算法最开始使用希腊文表述的.事实上,它是所有分布式算法中最简单易懂的.Paxos算法的本质其实就是一个共 ...
- Nancy之基于Nancy.Hosting.Self的小Demo
继昨天的Nancy之基于Nancy.Hosting.Aspnet的小Demo后, 今天来做个基于Nancy.Hosting.Self的小Demo. 关于Self Hosting Nancy,官方文档的 ...
- WPF CheckBox 自定义样式
WPF 自定义样式.CheckBox <Style x:Key="EmptyCheckBox" TargetType="CheckBox"> < ...
- 虚拟机安装ubuntu问题解决办法
vmware workstation 10安装ubuntu 13.10看不到下一步,如图所示 解决办法:如果不能调整安装程序的窗口大小,就按住Alt往上托窗口,应该就可以看到右下方的"下一步 ...
- python之进程与线程
什么是操作系统 可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...