zoukankan      html  css  js  c++  java
  • free解释

    转自CU

    这也是让我们更深入的理解此FREE命令,及linux内核处理内存的机制了:

    我的linux执行free命令显示如下:

    [root@Linux /tmp]# free
                 total       used       free     shared    buffers     cached
    Mem:       4149156    4130412      18744          0      13220    2720160
    -/+ buffers/cache:    1397032    2752124
    Swap:      6289408        144    6289264第1行
    total 内存总数: 4149156
    used 已经使用的内存数: 4130412
    free 空闲的内存数: 18744
    shared 当前已经废弃不用,总是0
    buffers Buffer Cache内存数: 13220
    cached Page Cache内存数: 2720160

    关系:total = used + free

    第2行:
    -/+ buffers/cache的意思相当于:
    -buffers/cache 的内存数:1397032 (等于第1行的 used - buffers - cached)
    +buffers/cache 的内存数: 2752124 (等于第1行的 free + buffers + cached)

    可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

    第三行单独针对交换分区, 就不用再说了.

    为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

    如果感兴趣可以进一步参考文件/proc/meminfo,free命令就是根据它的信息生成的。free命令的源码可从procps-xxx-.src.rpm获取,xxx为版本号,比如procps-3.2.3-5.3.src.rpm。

    参考内核代码:

    arch/i386/mm/init.c
    fs/proc/proc_misc.c
    include/linux/swap.h
    mm/filemap.c
    fs/buffer.c

    另外还可以参考O'REILLY的书《Understanding the LINUX KERNEL》。

  • 相关阅读:
    html+css学习笔记 5[表格、表单]
    html+css学习笔记 4[定位]
    WebService基于SoapHeader实现安全认证
    jquery获取url参数
    邮件群发
    .NET指定程序集的位置
    C# 只启动一个实例完全解决方案
    利用Google API生成二维码
    redis 面试题
    python 操作 redis 集群
  • 原文地址:https://www.cnblogs.com/moonflow/p/2372361.html
Copyright © 2011-2022 走看看