网站首页 > linux / 正文
在Linux系统中,当我们想查看系统内存使用情况的时候,可能首先会想到“free”。查看内存的整体使用情况,“free”命令可以胜任,如果要查看某个指定进程的内存占用,可以选择使用“top”或它的升级版命令“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”命令仅显示自己创建的进程内存使用情况。
希望这篇文档能帮到正在努力的你,欢迎关注和评论!
Tags:查看linux内存使用情况
猜你喜欢
- 2024-11-26 一口气搞懂「Linux内存管理」,就靠这60张图、59个问题了
- 2024-11-26 在 Linux 中按最高内存和 CPU 使用率查找运行最频繁的进程
- 2024-11-26 分享一个实用脚本--一键获取linux内存、cpu、磁盘IO等信息
- 2024-11-26 Linux内存泄露案例分析和内存管理分享
- 2024-11-26 linux内存指标
- 2024-11-26 软件性能测试Linux内存监控free命令了解
- 2024-11-26 如何用脚本统计linux系统CPU、内存、磁盘IO等信息?
- 2024-11-26 超干货!Linux 内存管理知识总结(一)
- 2024-11-26 Linux内存占用过高?非也
- 2024-11-26 Linux下内存问题检测神器:Valgrind