众所周知,Linux 机器有 RAM 内存和交换内存。
我的第一个问题是:
交换内存增加的原因是什么?是因为 RAM 使用率高还是其他原因?
第二- 是否可以验证一个进程占用了多少内存?
来自 top 命令的示例:
是否可以计算出看门狗进程占用了多少内存(如顶视图所述)?
Tasks: 107 total, 1 running, 106 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.8%us, 0.5%sy, 0.0%ni, 98.0%id, 0.5%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 2075440k total, 2011396k used, 64044k free, 120452k buffers
Swap: 4192924k total, 1554096k used, 2638828k free, 1418852k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 2160 600 544 S 0.0 0.0 1:00.91 init
2 root RT -5 0 0 0 S 0.0 0.0 0:04.50 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.16 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.01 watchdog/0
答案1
如果使用了大量交换空间(超过几 MB),那么系统确实处于内存紧缩状态 - 您的示例显示了这种情况 - 在这种情况下系统通常会变得缓慢。
少量可能是正常的,通常表示内存页面被换出(在过去有时发生的内存紧缩期间)并且从那时起就不再需要(例如,来自休眠进程)。
计算一个进程使用的内存时应该小心 - 它可能并不总是与内存紧缩的情况相关 - 它使用的部分/全部内存实际上可以被换出,并且不会直接导致这种情况(有争议)。
另外,对于某些系统(例如专用的 Web 服务器)来说,指出占用最多内存的进程可能并不合适,罪魁祸首可能是大量占用少量内存的进程。
答案2
交换内存增加的原因是什么?是因为 RAM 使用率高还是其他原因?
是的,内存占用率很高
第二,是否可以验证一个进程占用了多少内存?
大多数方法都表明一个进程占用了多少内存。没有准确的方法来测量它,因为有很多因素会影响它,例如 1. 共享内存 2. 物理内存或交换内存等...获取想法的一些方法是
pmap -x <pid>
或者
pmap -d <pid>
粗略地来看
/proc/<pid>/smaps
答案3
我的第一个问题是:
交换内存增加的原因是什么?是因为 RAM 使用率高还是其他原因?
您的内存使用率不高。读这个
您可以通过输入free -h
或free -m
查看以下行来检查
-/+ 缓冲区/缓存:
增加交换使用量的原因是因为您只有 2GB 的 RAM,如果我没有记错的话,您的交换量是 60:阅读此文了解 swappiness
如果您想交换较少的内存,请降低该值,但我不建议这样做!