如何查看linux内存使用:
1.free -g 命令 或 free -h
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
[root@server~]# yum install atop
[root@server~]# atop
Gnome System Monitor
Gnome 系统的图形化界面监控程序,展示cpu、内存、交换区和网络在内的系统资源使用率
前提是需要安装gnome图形化界面。
[root@server~]# gnome-system-monitor
User:该进程所属用户
PID: 该进程ID号
%CPU:该进程所占CPU资源百分比;
%MEM:该进程所占物理内存百分比;
VSZ:该进程所占虚拟内存量(Kbytes)
RSS:该进程所占固定的内存量(Kbytes)
TTY:该进程在哪个终端上面运行(?表示与终端无关、 tty1-tty6:本机上面的登陆者的进程、 pts/0 等表示通过网络登入主机的程序)
STAT:该进程状态(D 不可中断、R正在运行、 S 睡眠状态、 T停止状态、 Z 僵尸状态)
START:该进程被触发启动的时间;
TIME:该进程实际使用CPU运行的时间;
Command:该进程的世纪指令。
user 用户名
uid 用户号
pid 进程号
ppid 父进程号
size 内存大小, Kbytes字节.
vsize 总虚拟内存大小, bytes字节(包含code+data+stack)
share 总共享页数
nice 进程优先级(缺省为0, 最大为-20)
priority(pri) 内核调度优先级
pmem 进程分享的物理内存数的百分比
trs 程序执行代码驻留大小
rss 进程使用的总物理内存数, Kbytes字节
time 进程执行起到现在总的CPU暂用时间
stat 进程状态
cmd(args) 执行命令的简单格式
Memstat
通过memstat查看给定进程相关的可执行文件、数据、共享库等。
[root@server~]# memstat -p PID
内存释放
Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率。
所以乍一看内存剩余的非常少,但是在程序真正需要内存空间时,linux会将缓存让出给程序使用,这样达到对内存的最充分利用。
所以真正剩余的内存是free+buff/cache .
但是有些时候大量的缓存占据空间,这时候应用程序回去使用swap交换空间,从而使系统变慢,这时候需要手动去释放内存
在正式生产环境下,我们不要频繁的去释放内存,只在必要时候清理内存就可。更重要的是我们应该从应用程序层面去优化内存的利用和释放。
Linux下/proc目录下的数据和文件,都是内中中的实时数据,相应的关于内存的管理方式是在/proc/sys/vm/drop_caches文件中:
该文件存放的不是具体的文件内容,而是0 – 3 这几个数字:
0: 系统默认值,默认情况下表示不释放内存,由操作系统自动管理;
1: 释放页缓存;
2: 释放dentries和inodes;
3: 释放所有缓存
因此,分别将1 – 3 这3个数字重定向到drop_caches中就可以实现内存的释放,
一般释放内存都是重定向3到文件中,释放所有的缓存;
释放内存步骤:
[root@server~]# sync #将所有正在内存中的缓冲区写到磁盘中;
[root@server~]# echo 3 > /proc/sys/vm/drop_caches #释放所有缓存
释放完后,可再通过 free -g 进行查看。
释放完后,再设置drop_caches值为0,重新让操作系统重新分配内存。
原文:https://blog.51cto.com/2221384/2659802