美文网首页
the free command 2022-09-01

the free command 2022-09-01

作者: 9_SooHyun | 来源:发表于2022-08-31 15:07 被阅读0次

free

[root@VM-165-116-centos bin]# free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       5.8Gi       807Mi       289Mi       8.8Gi       9.1Gi
Swap:            0B          0B          0B
[root@VM-165-116-centos bin]# 
  • used 应用程序占用的private memory以及进程间共享内存,也就是说used包括shared。 used = total - free - buffers - cache = total - available
  • free 未使用的闲置内存
  • shared 进程间共享内存, which is the same as grep Shmem /proc/meminfo
  • buff/cache 内核使用的缓存(以内存为载体)

3个公式
total = used + available
used includes shared
available = free + buffer + cache

free col vs available col

free 是真正尚未被使用的物理内存数量
至于 available ,它是从应用程序的角度看到的可用内存数量。Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是上面介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache。但请注意,这只是一个理想的计算方式

buffer(buffer cache) VS cache(page cache)

buffer 缓冲。一般是write-buffer
cache 快取。一般是read-cache
虽然现在buffer和cache已经越来越混为一谈,但知道它们的本来意义能过让我们有更清晰的认识

  • Disk -> page cache -> mem


    read from page cache

    Page Cache本质上是memory
    当进程调用read去发起读取文件请求的时候,最后都是从Page Cache中读。如果在Page Cache中没有match,系统会从磁盘中读取然后再加载到Page Cache中。当然,由局部性原理,当系统从磁盘中读取数据时,将会多读取一些页到Page Cache中(预读取)


    write to page cache
    当进程调用write写文件时,实际的直接写入对象是Page Cache。写Page Cache后将对应的页标记为dirty,就直接返回。Page Cache真正被写入到磁盘是由单独的线程触发:a. 空闲内存低于阈值 b. 脏页在内存中处理时间超过阈值 c. 主动调用sync
  • Mem -> buffer cache -> disk

    buffer cache
    Buffers: Relatively temporary storage for raw disk blocks
    磁盘的最小数据单位为sector,每次读写磁盘都是以sector为单位对磁盘进行操作。sector有的为512Byte, 有的为4K Bytes。无论用户是希望读取1个byte,还是10个byte,最终访问磁盘时,都以sector为单位读取,如果裸读磁盘,那意味着数据读取的效率会非常低。
    同样,如果用户希望向磁盘某个位置写入(更新)1个byte的数据,他也必须整个刷新一个sector,言下之意,则是在写入这1个byte之前,我们需要先将该1byte所在的磁盘sector数据全部读出来,在内存中,修改对应的这1个byte数据,然后再将整个修改后的sector数据,一口气写入磁盘。
    为了降低这类低效访问,尽可能的提升磁盘访问性能,内核在磁盘sector上构建一层缓存,他以sector的整数倍单位(block),缓存部分sector数据在内存中,当有数据读取请求时,他能够直接从内存中将对应数据读出。当有数据写入时,他可以直接再内存中直接更新指定部分的数据,然后再通过异步方式,把更新后的数据写回到对应磁盘的sector中。这层缓存则是块缓存Buffer Cache

The page cache behave exactly like [files], and caches pages of files to optimize file I/O.
The buffer cache behave exactly like a [disk], and caches disk blocks to optimize block I/O.

相关文章

  • the free command 2022-09-01

    free used 应用程序占用的private memory以及进程间共享内存,也就是说used包括shared...

  • Day-2 噜噜

    Day-2 LINUX 基本命令 命令结构 command -option 参数 系统操作 free 查看内存...

  • yum使用记录

    目录 #为什么用#包的管理#源的管理 为什么用 a free and open-source command-li...

  • Free, Free, Free!

    你去商场买东西,好像都没有直接FREE的(免费了怎么挣钱呀,哈哈),不过他们会有打折和促销!有时候倒是有FREE ...

  • Free Free Free

    刚刚看了一个博文,看到“所谓自由,不是随心所欲,而是自我主宰。” 勾起之前的一个想法。 中国互联网的发展,从起步的...

  • Github Desktop汉化

    2022-09-01 周四 首先下载汉化插件[https://github.com/lkyero/GitHubDe...

  • 服务器负载和资源查看和诊断相关命令使用

    free 内存使用 free -m total used free shared ...

  • linux命令(持续更新...)

    free free命令用来显示当前机器内存显示情况用法:free [option]常用参数:-h结果示例:free...

  • Linux 常用命令--free

    1、free 输入命令:free -m 输出内容: total used free shared b...

  • 失望至极

    This is not a free place for free write. Goodbye.

网友评论

      本文标题:the free command 2022-09-01

      本文链接:https://www.haomeiwen.com/subject/iiksnrtx.html