每天一个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 系统上面原本就有非常多的计划性工作,因此这个 ...
随机推荐
- hdu 1005解题报告
这道题目n的取值范围很大,1 <= n <= 100,000,000.因此肯定是需要优化才能AC. 首先我考虑到时是有没有通项公式,研究了一下,没发现什么东西,突然看到两个1时就想到会不会 ...
- cocharan-Armitage trend test
Cochran-Armitage trend test是我们常说的趋势卡方检验,一般是针对基因型的2*3列联表的.譬如说三种基因型,如果按照某一个allele来看,可以有0.1.2个拷贝,是有序的,我 ...
- 专注手机端前端界面开发的ui组件和js组合
frozenui一款腾讯开发的简化版Bootstrap,只用于手机端 http://frozenui.github.io/ https://github.com/frozenui/frozenui z ...
- .NET DLL 保护措施详解(非混淆加密加壳)核心思路的实现
最近有很多朋友通过BLOG找到我询问我的相关细节,其实相关的实现细节我早已把源码上传到51aspx上面了,地址是http://www.51aspx.com/code/codename/56949 也有 ...
- SVG的基础使用
SVG的基础使用: <%@ page language="java" contentType="text/html; charset=UTF-8" pag ...
- 基于Flex的HTTPService(GET和POST)
一.基于GET的HTTPService: <?xml version="1.0" encoding="utf-8"?><mx:Applicat ...
- 如何在windows xp下实现声音内录
问题描述: 用屏幕录制软件录制一个视频,能够成功录制视频,但无法录制视频里面的声音. 问题原因: 因为现在的多数声卡,均无法直接通过声卡自身的功能实现内录和立体声混音. 这是由于声卡芯片厂商迫于RIA ...
- C++ 头文件系列(map)
简介 该头文件包含两个概念相似的容器----map.multimap. 而这两个容器反映的概念就是 映射. 这两个容器 相同 的属性有: 关联性 映射 动态增长 键(Key)唯一性 这两个不相同的属性 ...
- 华为oj---合并数组
题目标题: 将两个整型数组按照升序合并,并且过滤掉重复数组元素 详细描述: 接口说明 原型: voidCombineBySort(int* pArray1,intiArray1Num,int* pAr ...
- 一个想法(续三):一份IT技术联盟创业计划书,开启众筹创业征程
写在创业计划书之前的话: 昨天在闪存里我@了dudu,说:我要借钱,不久dudu回了我:傍个富婆. 当然,dudu以为我是玩笑,其实,我的确是开玩笑的,哈. 不过我正在执行一个创业计划,如果启动,我会 ...