首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【图解Linux内核】Page Cache

最好具备一些Linux编程的基础,比如,如何打开一个文件;如何读写一个文件;如何关闭一个文件等等。 什么是Page Cache? Page Cache到底是属于内核还是属于用户?...怎么观察Page Cache 在Linux上直接查看Page Cache的方式: /proc/meminfo free /proc/vmstat 命令 内容其实是一致的。...echo 3 > /proc/sys/vm/drop_caches 第一次读取文件的耗时如下: $ time cat /home/yafang/test/dd.out &> /dev/null real 0m5.733s...user 0m0.003s sys 0m0.213s 再次读取文件的耗时如下: $ time cat /home/yafang/test/dd.out &> /dev/null real 0m0.132s...user 0m0.001s sys 0m0.130s 通过这样详细的过程你可以看到,第二次读取文件的耗时远小于第一次的耗时,这是因为第一次是从磁盘来读取的内容,磁盘I/O是比较耗时的,而第二次读取的时候由于文件内容已经在第一次读取时被读到内存了

5.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【图解Linux内核】Page Cache

    最好具备一些Linux编程的基础,比如,如何打开一个文件;如何读写一个文件;如何关闭一个文件等等。 什么是Page Cache? Page Cache到底是属于内核还是属于用户?...怎么观察Page Cache 在Linux上直接查看Page Cache的方式: /proc/meminfo free /proc/vmstat 命令 内容其实是一致的。...echo 3 > /proc/sys/vm/drop_caches 第一次读取文件的耗时如下: $ time cat /home/yafang/test/dd.out &> /dev/null real 0m5.733s...user 0m0.003s sys 0m0.213s 再次读取文件的耗时如下: $ time cat /home/yafang/test/dd.out &> /dev/null real 0m0.132s...user 0m0.001s sys 0m0.130s 通过这样详细的过程你可以看到,第二次读取文件的耗时远小于第一次的耗时,这是因为第一次是从磁盘来读取的内容,磁盘I/O是比较耗时的,而第二次读取的时候由于文件内容已经在第一次读取时被读到内存了

    5.1K20

    linux Page cache和buffer cache正解

    Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。...当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。...简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。...这个page的数量将会在top程序的buffer一栏中显示。...从上面的分析可以看出,2.6内核中的buffer cache和page cache在处理上是保持一致的,但是存在概念上的差别,page cache针对文件的cache,buffer是针对磁盘块数据的cache

    3K20

    深入理解Linux VFS和Page Cache

    编者注:在分析完 Linux inode 基础概念 之后,让我们看下inode在内存中对应的文件系统抽象VFS,然后分析下关于 磁盘操作 中Page Cache的回写策略。...其目的是屏蔽下层具体文件系统操作的差异,为上层的操作提供一个统一接口,正是由于VFS的存在,Linux中允许多个不同的文件系统共存。...Linux中VFS依靠四个主要的数据结构来描述其结构信息,分别为超级块、索引结点、目录项和文件对象,这些数据结构大都会与磁盘上的对应上。 超级块(Super Block):超级块对象表示一个文件系统。...一个Inode只对应一个实际文件,一个文件也会只有一个Inode(Unix/Linux系统中目录也是一种文件,打开目录实际上就是打开目录文件。...Linux使用的策略是基于LRU改进的Two-List策略: Two-List策略维护了两个list,active list 和 inactive list。

    3.1K21

    Page Cache与Page回写

    理想的做法是释放距离下次访问时间最久的page,但是很明显,这是不现实的。下面先介绍LRU算法,然后介绍基于LRU改进的Two-List策略,后者是Linux使用的策略。...Page Cache在Linux中的具体实现 address_space结构 内核使用address_space结构来表示一个page cache,address_space这个名字起得很糟糕,叫page_ache_entity...associated buffers */ }; 其中 host域指向对应的inode对象,host有可能为NULL,这意味着这个address_space不是和一个文件关联,而是和swap area相关,swap是Linux...(对从用户空间拷贝到内核空间不是很理解,后期会重点学习Linux读、写文件的详细过程然后写一篇详细的blog介绍) Buffer Cache 在Block I/O的文章中提到用于表示内存到磁盘映射的buffer_head...在Linux2.4中,buffer cache和 page cache之间是独立的,前者使用老版本的buffer_head进行存储,这导致了一个磁盘block可能在两个cache中同时存在,造成了内存的浪费

    1.5K20

    Linux内存描述之内存页面page--Linux内存管理(四)

    1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个...等等. 2.1 struct page结构 内核用struct page(include/linux/mm_types.h?v=4.7, line 45)结构表示系统中的每个物理页....在映射的虚拟空间(vma_area)内的偏移; 一个文件可能只映射一部分,假设映射了1M的空间, index指的是在1M空间内的偏移,而不是在整个文件内的偏移...index 在映射的虚拟空间(vma_area)内的偏移;一个文件可能只映射一部分,假设映射了1M的空间,index指的是在1M空间内的偏移,而不是在整个文件内的偏移 private 私有数据指针,由应用场景确定其具体的含义.../linux/mmzone.h?

    8.4K11

    Linux Page Cache调优在 Kafka 中的应用

    本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/MaeXn-kmgLUah78brglFkg 作者:Yang Yijun 本文主要描述Linux...Page Cache优化的背景、Page Cache的基本概念、列举之前针对Kafka的 IO 性能瓶颈采取的一些解决方案、如何进行Page Cache相关参数调整以及性能优化前后效果对比。...对此,我们做出了一些针对性的优化方案: 对Linux操作系统的Page Cache参数进行优化;【本文主要讲解内容】 对kafka集群用户的出入流量进行限制,避免出入流量突增给磁盘IO带来的压力;【本文对此方案不做讲解...本文我们主要来讲解一下 Linux操作系统的Page Cache参数调优。 二、基本概念 1、什么是Page Cache?...内核会将被写入的page标记为dirty,并将其加入dirty list中。内核会周期性地将dirty list中的page写回到磁盘上,从而使磁盘上的数据和内存中缓存的数据一致。

    2.7K30

    page compaction原理

    为了解决内存碎片问题,linux内核引入了page compaction技术,俗称页块整理。...可以清晰的看见,所属的空闲区域连续的最大是2个page。如果从该zone中分配四个连续的内存区域,就会出现必然失败的。有可能分配两个连续的页面也有可能失败,如果考虑对齐的话。...当迁移扫描器和空闲扫描器相遇之后,就意味着page compaction结束了。剩下的工作就是将迁移扫描器的page copy到空闲扫描器,然后接触迁移扫描器的页面对应关系。...当然page compation有两种触发方式: 当分配page的时候,在LOW水位出现分配失败的时候,会尝试slowth分配的,在当中就会出现page compaction的流程 工程师可以通过echo...这就说明了page compation还是有效的。

    1.7K20

    宋宝华:论Linux的页迁移(Page Migration)上集

    我认为有2种场景下,你会关注这个Page迁移的问题:一个是在Linux里面写实时程序,尤其是Linux的RT补丁打上后的情况,你希望你的应用有一个确定的时延,不希望跑着跑着你的Page正在换位置而导致的延迟...sudo /x86_64-softmmu/qemu-system-x86_64 \ -enable-kvm -m 1G \ -machine mem-merge=on 不过这本身也引起了虚拟机的一些安全漏洞...2.2 alloc_pages 当内核使能了COMPACTION,则Linux的底层buddy分配器会在alloc_pages()中尝试进行内存迁移以得到连续的大内存。...所以Linux的NUMA自动均衡机制,会尝试将内存迁移到正在访问它的CPU节点所在的NODE,如下图中绿色的memory经常被CPU24访问,但是它位于NODE0的memory: ?...则Linux内核可能会将绿色内存迁移到CPU24所在的本地memory: ? 这样CPU24访问它的时候就会快很多。 显然NUMA_BALANCING也是依赖MIGRATION机制的: ?

    1.6K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    领券