linux 内存占用_Linux内存占用查看利器-smem

在Linux系统中,当我们想查看系统内存使用情况的时候,可能首先会想到“free”。查看内存的整体使用情况,“free”命令可以胜任,如果要查看某个指定进程的内存占用,可以选择使用“top”或它的升级版命令“htop”,但你会发现这些命令显示的结果都不直观。比如下面这样:

20b46b004558ac7abf367adc2c683f90.png

htop命令显示

难道有这么多进程都占用了101G“RES”内存吗?显示不是的,这样的话251GB内存早都撑爆了,这里显示的PID都是线程(可以使用“pstree”命令查看进程和线程的关系图)。再进一步,查看指定进程对“swap”空间的占用情况,这时上面给出的命令就有点力不从心了。

好了,主角“smem”命令登场

“smem”可以直观简洁的显示进程(不是线程)对内存和“swap”空间的占用情况。比如,对进程按对内存的占用大小从高往低排序,仅显示前5个:

aneirin@host-1:~$ sudo smem  -r -k | head -6  PID User     Command                         Swap      USS      PSS      RSS  3752 presto   java -cp /home/presto/prest        0   101.9G   101.9G   102.0G 85199 hbase    /usr/lib/jvm/java-8-openjdk     7.7G    13.8G    13.8G    13.8G 77009 hdfs     jsvc.exec -Dproc_datanode -    86.8M    12.5G    12.6G    12.6G 139749 clickhouse /usr/bin/clickhouse-server      6.7G     5.6G     5.6G     5.6G 81533 yarn     /usr/lib/jvm/java-8-openjdk   207.2M     2.7G     2.7G     2.7G 

核心参数解释:

USS:Unique Set Size,进程的非共享(Unshared memory)内存占用

PSS:Proportional Set Size,上面的USS加上进程在共享内存中占用的部分

RSS:Resident set size,进程对物理内存的占用,这个值加上“Swap”中的值(被交换到外部文件系统的数据)就是进程整体的内存占用情况

使用“smem”命令可以非常快速的找到占用内存最多的进程,从而在内存吃紧时,对进程做出调整。

工作中常会收到“Swap”空间占用过大导致的告警,使用下面命令让惹祸的进程无处藏身:

sudo smem -s swap -r -k | head -10

注意,如果不使用“sudo”命令仅显示自己创建的进程内存使用情况。

希望这篇文档能帮到正在努力的你,欢迎关注和评论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值