linux 查看进程 排序,linux – 如何查看按实际内存使用情况排序的顶级进程?

我有一台12G内存的服务器.顶部的片段如下所示:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

12979 frank 20 0 206m 21m 12m S 11 0.2 26667:24 krfb

13 root 15 -5 0 0 0 S 1 0.0 36:25.04 ksoftirqd/3

59 root 15 -5 0 0 0 S 0 0.0 4:53.00 ata/2

2155 root 20 0 662m 37m 8364 S 0 0.3 338:10.25 Xorg

4560 frank 20 0 8672 1300 852 R 0 0.0 0:00.03 top

12981 frank 20 0 987m 27m 15m S 0 0.2 45:10.82 amarok

24908 frank 20 0 16648 708 548 S 0 0.0 2:08.84 wrapper

1 root 20 0 8072 608 572 S 0 0.0 0:47.36 init

2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd

free -m显示以下内容:

total used free shared buffers cached

Mem: 12038 11676 362 0 599 9745

-/+ buffers/cache: 1331 10706

Swap: 2204 257 1946

如果我理解正确,系统只有362 MB的可用内存.我的问题是:如何找出消耗大部分内存的进程?

就像背景信息一样,系统运行64位OpenSuse 12.

解决方法:

首先,重复这个咒语一段时间:“未使用的内存是浪费的内存”. Linux内核保留了大量的文件元数据和所请求的文件,直到看起来更重要的东西将数据推出.这就是为什么你可以运行:

find /home -type f -name '*.mp3'

find /home -type f -name '*.aac'

让第二个查找实例以荒谬的速度运行.

Linux只留下一点内存“免费”来处理内存使用量的峰值而不需要太多努力.

其次,你想要找到满足你所有记忆的过程;在顶部使用M命令按内存使用排序.您可以随意忽略VIRT列,它只是告诉您已分配了多少虚拟内存,而不是该进程使用了​​多少内存. RES报告驻留或当前处于ram中的内存量(相对于交换到磁盘或从未实际分配的内存,尽管被请求).

但是,因为RES会计算,例如/lib/libc.so.6几乎每个进程都有一次内存,它并不是一个很好的衡量一个进程使用多少内存的方法. SHR列报告与其他进程共享多少内存,但无法保证另一个进程实际共享 – 它可以是可共享的,只是没有其他人想要共享.

smem工具旨在帮助用户更好地测量每个进程应该归咎于多少内存.它做了一些聪明的工作来弄清楚什么是真正独特的,共享的,并按比例计算共享内存与共享内存的进程. smem可以帮助你理解你的记忆力比top更好,但top是一个很好的第一个工具.

标签:opensuse,linux,memory,ram

来源: https://codeday.me/bug/20190928/1826377.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值