zoukankan      html  css  js  c++  java
  • linux free命令详解

    linux中的free命令大家都很常用,可大家都清楚free输出的各行的意思及它们之间的关系吗?

    [root@localhost ~]# free              total       used       free     shared    buffers     cached Mem:       4038116    4010292      27824          0     205228    1343276 -/+ buffers/cache:    2461788    1576328 Swap:      8289500     254076    8035424

    第一行: total 物理内存总数: 4038116 used 已经使用的内存数: 4010292 free 空闲的内存数: 27824 shared 当前已经废弃不用,总是0 buffers 即Buffer Cache内存数: 205228 cached 即Page Cache内存数: 1343276

    关系:total = used + free

    第二行: -/+ buffers/cache的意思相当于: -buffers/cache 的内存数:2461788 (等于第1行的 used – buffers – cached),实际上是应用程序所使用的内存。 +buffers/cache 的内存数: 1576328 (等于第1行的 free + buffers + cached),是对应用程序来说还剩余的内存。

    可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。 对操作系统来讲buffers/cached 都是属于被使用,所以它认为free只有27824. 对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

    第三行是交换分区swap, 列出已使用、空闲的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的内存太少了,也是该考虑优化程序或加内存了。

  • 相关阅读:
    POJ 1953 World Cup Noise
    POJ 1995 Raising Modulo Numbers (快速幂取余)
    poj 1256 Anagram
    POJ 1218 THE DRUNK JAILER
    POJ 1316 Self Numbers
    POJ 1663 Number Steps
    POJ 1664 放苹果
    如何查看DIV被设置什么CSS样式
    独行DIV自适应宽度布局CSS实例与扩大应用范围
    python 从入门到精通教程一:[1]Hello,world!
  • 原文地址:https://www.cnblogs.com/google4y/p/2369610.html
Copyright © 2011-2022 走看看