Linux内存状态监测工具smem命令 | 如何在#linux OS下找到特定进程的交换(swap)空间使用情况?

如何在#linux OS下找到特定进程的交换空间使用情况?

原文链接: https://www.cyberciti.biz/faq/linux-which-process-is-using-swap/

topfree命令显示服务器中的剩余物理和交换内存的总量。

如何确定哪个进程使用Linux操作系统下的交换空间?我如何找出诸如memcached之类的特定进程的交换空间使用情况?

您可以使用以下任何一种技术,但请记住,由于shared pages,没有可靠的方法来获取此信息[1]

  1. /proc/meminfo - 显示关系统内存使用的统计信息。free使用它来报告系统上的free内存和使用的内存(物理和交换)的量以及内核使用的共享内存和缓冲区

  2. /proc/$ {pid}/smaps/proc/$ {pid}/status/proc/$ {pid}/stat/stat:使用这些文件查找有关,使用其PID使用的查看内存,页面和交换的信息。

  3. smem - 此命令(Python脚本)报告了与共享内存分配的内存使用情况。

找出进程ID以及swap使用

pidof memcached

要查看Memcached使用的交换空间(PID#48440),请输入(#2):

grep --color VmSwap /proc/48440/status

或以下awk命令(#3):

awk '/VmSwap/{print $2 " " $3}' /proc/48440/status

在这里插入图片描述

## bash for loop ##
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done
## Get swap space in Linux using bash for loop ##
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

top命令

top

按照swap page使用(SWAP = VIRT – RES)
输入o(选项),然后是p(小p)和[enter]键:
在这里插入图片描述

SWAP = VIRT – RES

(1)top命令也可以查询到,最常用的内存指标
(2)将各个进程中的RSS值相加后,一般都会超出整个系统的内存消耗,这是因为RSS中包含了各个进程之间的共享内存

From the htop faq page:
不可能获得过程中用过的交换空间的确切大小。top命令通过进行swap = wirt - res来伪造此信息,但这不是一个好指标,因为其他内容(例如视频内存)也对virt进行了计数(例如:top说我的x进程使用了81m的交换,但是它还报告了我的整体系统仅使用2m的交换。因此,我不会在HTOP中添加类似的交换列,因为我不知道获取此信息的可靠方法(实际上,我认为这是不可能的要获得一个确切的数字,因为shared pages)。

Linux内存状态监测工具smem命令

下载地址:https://www.selenic.com/smem/

什么是smem

smem 是Linux系统上的一款可以生成多种内存耗用报告的命令行工具。与现有工具不一样的是 smem 可以报告 PSS【Proportional Set Size(按比例占用大小)】,这是一种更有意义的指标。可以衡量虚拟内存系统的库和应用程序所占用的内存数量。由于大部分的物理内存通常在多个应用程序之间共享,名为驻留集大小(RSS)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。PSS这个参数而是衡量了每个应用程序在每个共享内存区中的「公平分配」,给出了一个切合实际的衡量指标。

smem命令报告物理内存使用情况,考虑了共享内存页面。

  • PSS-(proportion set size)比例集大小
    所有使用某共享库的程序均分该共享库占用的内存时,显然所有进程的PSS之和就是系统的内存的使用量,会更准确一些,他将共享内存的大小进行平均后,在分摊到各个进程上去.

PSS情况(实际使用的物理内存(PSS)

  • USS-(unique set size): 进程独自占用内存
    只计算进程独自占用的内存大小,不包含任何共享的部分。

USS和PSS仅包括物理内存使用。它们不包括swapped out to disk。
内存可以根据进程、用户、mapping、system-wide以文本或图形化输出。

安装smem

ubuntu

sudo apt-get install smem

centos

yum install epel-release
yum install smem python-matplotlib python-tk

或:

wget https://www.selenic.com/smem/download/smem-1.4.tar.gz
tar xvf smem-1.4.tar.gz
cp /tmp/smem-1.2/smem /usr/local/bin/
chmod +x /usr/local/bin/smem

如何使用

Using smem
Show basic process information	smem
Show library-oriented view	smem -m
Show user-oriented view	smem -u
Show system view	smem -R 4G -K /path/to/vmlinux -w
Show totals and percentages	smem -t -p
Show different columns	smem -c "name user pss"
Sort by reverse RSS	smem -s rss -r
Show processes filtered by mapping	smem -M libxml
Show mappings filtered by process	smem -m -P [e]volution
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

在输出时显示单位,方便查看实际内存占用大小
参数说明
-k 显示易读内存单位
-s #进行排序

smem -k -s

如果我们想要查看特定应用程序使用内存情况,例如 Firefox,那么我们可以配合 grep 命令使用,同时使用 -p 选项以百分比形式查看内存使用情况。

smem -m -p | grep firefox

指定查看谋个用户进程使用内存大小

smem -P mysql  #(大写P)
smem -k -P mysql

smem 命令还可以显示每个用户的内存使用情况,需要使用 -u 选项:

[root@dev workspace]# smem -u -p
User     Count     Swap      USS      PSS      RSS
daemon       1      N/A    0.00%    0.00%    0.01%
_rpc         1      N/A    0.00%    0.01%    0.02%
ntp          1      N/A    0.01%    0.01%    0.02%
systemd-network     1      N/A    0.01%    0.01%    0.03%
messagebus     1      N/A    0.01%    0.01%    0.03%
syslog       1      N/A    0.02%    0.02%    0.03%
systemd-resolve     1      N/A    0.03%    0.03%    0.05%
root        41      N/A    2.58%    3.51%    5.08%
minima       4      N/A   26.81%   26.99%   27.57%
[root@dev workspace]#

使用 -w 选项查看系统内存使用情况

[root@dev workspace]# smem -w -p
Area                           Used      Cache   Noncache
firmware/hardware             0.00%      0.00%      0.00%
kernel image                  0.00%      0.00%      0.00%
kernel dynamic memory        29.97%     28.47%      1.50%
userspace memory             30.56%      1.69%     28.87%
free memory                  39.47%     39.47%      0.00%
[root@dev workspace]#

命令包括内核代码的大小以及在系统范围内(-w)输出中的静态分配数据:

smem -K /path/to/kernel/image/on/disk [option]

物理内存总大小。这个命令让semem检测 固件和硬件使用的内存

smem -R REALMEMSIZE [option]

用户维度查看

smem -u

结果:

Area                           Used      Cache   Noncache 
firmware/hardware                 0          0          0 
kernel image                      0          0          0 
kernel dynamic memory       5302144    5137920     164224 
userspace memory            2692196     240828    2451368 
free memory                  126228     126228          0 


查看所有进程和百分比占用情况:

smem -t -p

结果:

 PID User     Command                         Swap      USS      PSS      RSS 
53369 xxxxxxx  /usr/bin/php-cgi               0.04%    0.00%    0.00%    0.00% 
53387 xxxxxxx  /usr/bin/php-cgi               0.04%    0.00%    0.00%    0.00% 
36227 xxxxxxx  /usr/bin/php-cgi               0.04%    0.00%    0.00%    0.00% 
36232 xxxxxxx  /usr/bin/php-cgi               0.04%    0.00%    0.00%    0.00% 
36233 xxxxxxx  /usr/bin/php-cgi               0.04%    0.00%    0.00%    0.00% 
46733 xxxxxxxy /usr/bin/php-cgi               0.05%    0.00%    0.00%    0.00% 
46739 xxxxxxxy /usr/bin/php-cgi               0.05%    0.00%    0.00%    0.00% 
 3623 root     ssh-agent                      0.01%    0.00%    0.00%    0.00% 
53378 xxxxxxx  /usr/bin/php-cgi               0.04%    0.00%    0.00%    0.00% 
53396 xxxxxxx  /usr/bin/php-cgi               0.04%    0.00%    0.00%    0.00% 
 7855 root     rpc.rquotad                    0.00%    0.00%    0.00%    0.00% 
 7480 root     ssh-agent                      0.01%    0.00%    0.00%    0.00% 
34832 root     ssh-agent                      0.01%    0.00%    0.00%    0.00% 
 7334 root     /sbin/mingetty /dev/tty1       0.00%    0.00%    0.00%    0.00% 
 7336 root     /sbin/mingetty /dev/tty2       0.00%    0.00%    0.00%    0.00% 
 7338 root     /sbin/mingetty /dev/tty3       0.00%    0.00%    0.00%    0.00% 
.....
..
...
65304 vivek    /usr/bin/php-cgi               0.00%    0.16%    0.27%    0.61% 
33931 vivek    /usr/bin/php-cgi               0.00%    0.14%    0.28%    0.44% 
47933 squid    (squid) -f /etc/squid/squid    0.11%    2.69%    2.69%    2.71% 
28410 mysql    /usr/libexec/mysqld --based    0.01%    3.67%    3.67%    3.68% 
48440 memcached memcached -d -p 11211 -u me    0.01%    4.41%    4.41%    4.41% 
-------------------------------------------------------------------------------
  191 24                                      5.36%   16.08%   19.43%   27.24% 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值