查看Linux服务器下的内存使用情况
查看Linux服务器下的内存使用情况 ,可以使用命令free -m。注意此命令只在Linux下有效,在FreeBSD中没有此命令。命令如下所示:
used:已经使用的内存数
free:空闲的内存数
shared:多个进程共享的内存总额
-buffers/cache:(已用)的内存数,即used-buffers-cached
+buffers/cache:(可用)的内存数,即free+buffers+cached
得出结论:
可用内存的计算公式为:
可用内存=free+buffers+cached,即2551MB+268MB+917MB=3737MB
很久以前在笔记本上用Ubuntu8.04时就觉得Linux管理内存的机制非常优秀,简而言之:Linux的内存是拿来用的,而不是拿来看的。我与一个朋友探讨Linux的使用情况时,他问我为什么Linux使用的内存这么高。他机器上1GB的内存free才232MB,而Windows XP才用了200MB不到的样子。这其实是被Linux的free命令之表象迷惑了,Linux的内存使用是很有讲究的。还是举例说明,如下的free命令所显示的是当前内存的使用情况,-m的意思是用M个字节来显示内容,我们来一起看看。
在第一部分Mem行中有如下参数。
total:内存总数,即1002MB
used:已经使用的内存数,即769MB
free:空闲的内存数,即232MB
shared:当前已经废弃不用,总是0
buffers Buffer:缓存内存数,即62MB
cached Page:缓存内存数,即421MB
其中,内存总数与已使用内存数和空闲内存数的关系是:
total(1002M)=used(769M)+free(232M)
在第二部分内容(-/+buffers/cache)中各参数如下所示。
(-buffers/cache):used内存数,即286MB(指的是第一部分Mem行中的used-buffers-cached)。
(+buffers/cache):free内存数,即715MB(指的是第一部分Mem行中的free+buffers+cached)。
可见-buffers/cache反映的是被程序实实在在用掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第三部分是指交换(swap)分区,大家应该都明白,这里就不再讲了。
有可能大家看了上面的解释还是不太明白。比如:第一部分(Mem)与第二部分(-/+buffers/cache)的结果有关,used和free为什么这么奇怪?其实我们可以从两个方面来分析。对操作系统来讲这两项是Mem的参数,buffers/cached都属于被使用,所以它认为free只有232MB;对应用程序来讲+buffers/cached等同于可用的内存,因为buffer/cached可提高程序执行的性能,当程序使用内存时,buffer/cached很快就会被使用。所以从应用的角度来看,应以(-/+buffers/cache)的free和used为主,即我们主要看与它相关的free和used就可以了。另外告诉大家一些常识,为了提高磁盘和内存的存取效率,对Linux做了很多精心的设计,除了对dentry进行缓存(用于VFS、加速文件路径名到inode的转换)外,还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者用于针对磁盘块的读写,后者用于针对文件inode的读写。这些Cache能有效地缩短I/O系统调用(比如read、write、getdents)的时间。
在Linux中,内存是拿来用的,不是拿来看的。而在Windows中,无论你的真实物理内存有多少,它都会用硬盘交换文件来读,即使是内存还有一大部分。这也就是Windows常常提示虚拟空间不足的原因。可以想见,硬盘怎么会快过内存,所以我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不用担心自己的内存太少。如果常常看到swap用了很多,那么你就要考虑加物理内存了。这也是在Linux服务器上看内存是否够用的标准。
本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
- linux 下载 命令 wget 和 curl
- 把握linux内核设计思想(十二):内存管理之slab分配器
- (转)linux下查看主板内存槽与内存信息
- Linux Command pmap 测试进程内存映射工具
- Linux&Tina&Melis内存布局分析以及linux reserved memory机制
- 桌面PC/服务器 ubuntu18.04 Linux内核编译升级与机制分析
- 在u盘上安装linux 打造你的portable linux system.
- 使用 smem 可视化显示Linux内存使用情况
- 检测 Linux 内存使用情况的 free 命令的10个例子
- 云服务器 ECS Linux 系统下使用 dig 命令查询域名解析
- Linux iftop
- Linux 文件转码
- Linux操作系统,用户和组管理概括与常用命令
- 利用Linux文件系统内存cache来提高性能
- 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一1.4 内存编址和寻址、内存对齐
- Linux常用配置选项
- linux 内存区
- 《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——3.4 数据恢复软件extundelete介绍
- Linux应用开发(十八)——U-Boot的启动过程源码分析
- setlocale同mbstowcs函数的关系(VS2008下setlocale(LC_ALL, "chs")可以执行成功,BCB使用setlocale(LC_ALL, "Chinese (Simplified)_People's Republic of China"),linux上locale别名表大概在 /usr/lib/X11/locale/locale.alias)
- Linux目录结构
- Linux系统查看内存使用率
- 【正点原子FPGA连载】第二章 安装Ubuntu操作系统 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南
- Linux下常用的shell命令记录
- Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析(1-4)
- Linux进程内存分析pmap命令(转)
- linux 常见名词及命令(四)