「Linux」- 检查内存使用情况

问题描述

在服务器中,我们并没有运行太多程序,但是服务器的内存占用很高。

# 03/06/2017 我们还没干什么呢…………有时间再管他吧

# 03/09/2017 后来我们联系机房,技术人员为我们解释出缘由。其实这个问题的答案还是因为我们无知,如果我们在知道的多一点的话就应该知道虚拟化里有个“动态内存”。

这篇文章剩下的内容,主要是介绍在Linux中分析内存使用的方法

方法一、free

查看服务器的内存使用(有关free命令介绍,点击查看):

#!/bin/sh
free -h -w
#               total        used        free      shared     buffers       cache   available
# Mem:           3.9G        2.8G        414M         17M        160M        454M        805M
# Swap:          1.0G        9.8M        1.0G

# used = total - free - buffers - cache.: 有点高,我们就是不知道被哪些进程用了。
# shared: 由tmpfs使用的,不高(我们比对了其他三台机器)。
# buffers: 内核缓冲使用的,160M 不高。
# cache:page cache和slabs使用的,454M 也是正常的。
#

先drop_caches看下,(实际并不推荐这么做,因为这么做不是在解决问题,buffer 和 cache 本来都是为了减少IO):

#!/bin/sh
echo 3 > /proc/sys/vm/drop_caches

free -h -w
#               total        used        free      shared     buffers       cache   available
# Mem:           3.9G        2.8G        928M         17M        1.5M        103M        879M
# Swap:          1.0G        9.8M        1.0G
# 并没有什么用,只是刷掉 buffer 和 cache 了。这么做也不好,因为buffer 和 cache 本来都是为了减少IO的。

方法二、top

我们用top命令吧(关于top命令的介绍,点击查看)

至于我们的top为什么是这样的,而不是常见的那种,是因为我们的 Procps-ng 软件包是自己编译的,并使用了 Ncurses 库。

关于top命令的输出,查看博文《关于top命令的介绍》,这里不再解释了,top的输出已经很详细了,你只需要知道各个输出的含义。

参考文献

Linux Check Memory Usage
Operating System Cache