每天一个linux命令(35)--free命令
free命令可以显示Linux系统中空闲的、易用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free 命令是最经常使用的命令之一。
1.命令格式:
free [参数]
2.命令功能:
free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存,共享内存将被忽略
3.命令参数:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-g 以GB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
4.使用实例:
实例1:显示内存使用情况
命令:free
free -g
free -m
说明: total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
shared:多个进程共享的内存总额。
buffers/cached:磁盘缓存的大小。
第二行(mem),这是从OS的角度来看,对于OS而言,buffers/cached 都是属于被使用的,所以OS可用的内存是不包括这些的。内核(OS)+application(X, ORACLE)使用的+buffers/cached=内存大小。
第三行(-/+ buffers/cached),这个是从应用程序角度来看的,对于应用程序而言,buffers/cached 是等于可用的,因为buffers/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffers/cached会很快的被回收。
所以从应用程序的角度来说,可用内存=系统 free memory+buffers+cached.
第四行是交换内存swap。---为什么会交换,按什么方式交换?
当内存少于额定值的时候,就会开始进行交换,如何看额定值?
命令: cat /proc/meminfo
交换将通过三个途径来减少系统中使用的物理页面的个数:
1.减少缓冲与页面cache 的大小
2.将系统V类型的内存页面交换出去
3.换出或者丢弃页面,(application 占用的内存页,也就是物理内存不足)。
事实上,少量地使用swap 是不会影响到系统性能的。
那 buffers 和 cached 都是缓存,两者有什么区别呢?
为了提高磁盘存取效率,Linux 做了一些精心的设计,除了对dentry 进行缓存(用于VFS,加速文件路径名到inode 的转换),还采取了两种主要cache 方式:
buffer cache 和 page cache 。前者针对磁盘块的读写,后者针对文件inode 的读写。这cache有效缩短了 I/O 系统调用(比如 read ,write,getdents)的时间。
磁盘的操作由逻辑级(文件系统)和物理级(磁盘块),这两种cache 就是分别缓存逻辑和物理级数据的。
page cache 实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到 page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当 page cache的数据需要刷新时,page cache 中的数据交给 buffer cache ,因为buffer cache 就是缓存磁盘块的。但是这种处理在 2.6版本的内核之后就变得很简单了,没有真正意义撒花姑娘的cache 操作。
buffer cache 是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache 中,例如,文件系统的元数据都会缓存到buffer cache中。
简单来说,page cache 用来缓存文件数据,buffer cache 用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到 page cache ,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。
所以我们看Linux ,只要不用swap 的交换空间,就不用担心自己的内存太少,如果常常swap 用很多,可能你就要考虑加物理内存了。这也是Linux 看内存是否够用的标准。
如果是应用服务器的话,一般只看第二行,+buffers/cache ,即对应用程序来说free 的内存太少了,也是该考虑优化程序或加内存了。
实例2:以总和的形式显示内存的使用信息
命令: free -t
实例3:周期性的查询内存使用信息
命令: free -s 10 没10秒执行一次。
每天一个linux命令(35)--free命令的更多相关文章
- 每天一个linux命令(46):vmstat命令
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深 ...
- 每天一个linux命令目录
出处:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每 ...
- 每天一个linux命令(44):top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...
- 每天一个linux命令(42):kill命令
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须 ...
- 每天一个linux命令(36):top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是 一个动态显示过程,即可以通过用户按键来不断刷 ...
- 每天一个linux命令(34):kill命令
Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以 使用Ctrl+C键,但是,对于一个后台进程 ...
- 每天一个linux命令-转载
每天一个linux命令目录 转载自: http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令 ...
- [转]每天一个linux命令目录
[转]每天一个linux命令目录 http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每 ...
- 每天一个linux命令(56)--crontab命令
上一节学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,Linux 系统则是由 cron(crond)这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...
随机推荐
- mui中文在线手册及教程文档
http://dev.dcloud.net.cn/mui/ui/index.html#mask http://ask.dcloud.net.cn/question/2403 http://ask.dc ...
- AngularJS 讲解五, Factory ,Service , Provider
一. 首先说一下,为什么要引入Factory,Service和Provider这三个Service层. 1.因为我们不应该在controller层写入大量的业务逻辑和持久化数据,controller层 ...
- [QT]简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件
转自:http://blog.csdn.net/dbzhang800/article/details/6348432 简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的, ...
- 第一个shell脚本 结合计划任务下载远程文件
思路: 进入/usr/local/apache2/htdocs/ipa/ 循环读取 /root/shell/wget/down.txt 每次一行,每一行直接就是一条命令,直接 $line 就可以执 ...
- js原生之scrollTop、offsetHeight和offsetTop等属性用法详解
scrollTop.offsetHeight和offsetTop等属性用法详解:标题中的几个相关相关属性在网页中有这大量的应用,尤其是在运动框架中,但是由于有些属性相互之间的概念比较混杂或者浏览器兼容 ...
- datatable 使用详细说明
要注意的是,要被dataTable处理的table对象,必须有thead与tbody,而且,结构要规整(数据不一定要完整),这样才能正确处理.以下是在进行dataTable绑定处理时候可以附加的参数: ...
- EasyUI datagrid 删除的时候无法正确找到重复记录row index的问题
EasyUI datagrid 删除的时候无法正确找到重复记录row index的问题: 如果无法正确找到重复记录的row index,就需要进行注意添加的时候所进行的 操作:如果添加的时候就是添加的 ...
- spring mvc 资源包的映射
在springmvc.xml中进行设置: <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...
- Flex移动皮肤开发(二)
范例文件 mobile-skinning-part2.zip 在这个讨论创建 Flex 移动 skin 的系列的 第 1 部分 中,我讨论了 Flex 团队在 Mobile 主题中所做的性能优化的原理 ...
- easyUI linkbutton组件
easyUI linkbutton组件: <!DOCTYPE html> <html lang="en"> <head> <meta ch ...