如何查看linux内存使用:
1.free -g 命令 或 free -h
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
- 使用 cat /proc/meminfo 查看内存详细使用
- atop查看
通过atop动态显示系统资源(cpu、内存、网络、输入/输出、内核),并且高亮标准高负载的部分,内存统计报告包括了总计/闲置内存、缓存的/缓冲的内存和已提交的虚拟内存。
[root@server~]# yum install atop
[root@server~]# atop
- htop查看
Htop命令是一个机遇ncurses的交互式进程视图,实时显示了每个进程的内存使用情况。可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享页面大小,也可以横向或纵向滚动进程列表进行查看。
[root@server~]# yum install htop
[root@server~]# htop
-
Gnome System Monitor
Gnome 系统的图形化界面监控程序,展示cpu、内存、交换区和网络在内的系统资源使用率
前提是需要安装gnome图形化界面。
[root@server~]# gnome-system-monitor - ps aux –sort -rss 查看用户进程所占内存、CPU百分比
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:该进程的世纪指令。
- ps -eo user,uid,pid,ppid,size,vsize,share,nice,priority,pmem,trs,rss,time,stat,cmd
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,重新让操作系统重新分配内存。