Page cache(页面缓存) 页缓存或文件缓存,是由好几个磁盘块构成,大小通常为4k,在64位系统上为8k,构成的几个磁盘块在物理磁盘上不一定连续,文件的组织单位为一页, 也就是一个page cache...大小,文件读取是由外存上不连续的几个磁盘块,到buffer cache,然后组成page cache,然后供给应用程序。...Page cache在linux读写文件时,它用于缓存文件的逻辑内容,从而加快对磁盘上映像和数据的访问。...Buffer cache是由物理内存分配,Linux系统为提高内存使用率,会将空闲内存全分给buffer cache ,当其他程序需要更多内存时,系统会减少cache大小。...当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。
这个命令几乎是每一个使用过Linux的人必会的命令,但越是这样的命令,似乎真正明白的人越少(我是说比例越少)。一般情况下,对此命令输出的理解可以分这几个层次: 不了解。...这样的人的第一反应是:天啊,内存用了好多,70个多G,可是我几乎没有运行什么大程序啊?为什么会这样?Linux好占内存! 自以为很了解。...这样的人一般评估过会说:嗯,根据我专业的眼光看的出来,内存才用了17G左右,还有很多剩余内存可用。...buffer和cache是两个在计算机技术中被用滥的名词,放在不通语境下会有不同的意义。在Linux的内存管理中,这里的buffer指Linux内存的:Buffer cache。...这里的cache指Linux内存中的:Page cache。翻译成中文可以叫做缓冲区缓存和页面缓存。
Page cache和buffer cache一直以来是两个比较容易混淆的概念,在网上也有很多人在争辩和猜想这两个cache到底有什么区别,讨论到最后也一直没有一个统一和正确的结论,在我工作的这一段时间...如果能够了解到这两个cache的本质,那么我们在分析io问题的时候可能会更加得心应手。 Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。...当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。...Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。...从上面的分析可以看出,2.6内核中的buffer cache和page cache在处理上是保持一致的,但是存在概念上的差别,page cache针对文件的cache,buffer是针对磁盘块数据的cache
file ps -e -o pid,rss|sort -nk2 -r|head -10 |awk '{print $1}'>/tmp/cache.pids #find all the processs...' cache file #ps -e -o pid>/tmp/cache.pids if [ -f /tmp/cache.files ] then echo "the cache.files...|awk '{print $9}' >>/tmp/cache.files donecache.pids if [ -f /tmp/cache.pcstat ] then echo..."the cache.pcstat is exist, removing now" rm -f /tmp/cache.pcstat fi for i in `cat /tmp/cache.files...cat /tmp/cache.pcstat` #rm -f /tmp/cache.
手工释放Linux Cache Memory 为了加速操作和减少磁盘I/O,内核通常会尽可能多地缓存内存,这部分内存就是Cache Memory(缓存内存)。...注意:一般情况下,是不推荐主动释放缓存内存的,除非你有非常明确的需求,比如测试程序缓存内存的使用情况,因为对同一应用程序来说,缓存内存是可用的。...如果要增加此操作释放的对象数量,可以在写入/proc/sys/vm/drop_cache之前运行sync。这将最大限度地减少系统上脏对象的数量,并创建更多待删除的候选对象。...当系统其它地方需要内存时,Linux内核会自动回收这些对象。 使用该文件可能引发性能问题。...因为它会删除缓存对象,可能需要消耗大量的I/O和CPU才能重新创建被删除的对象,尤其是这些对象被大量使用的情况下。因此,不建议在测试或调试环境之外使用。
Page Cache 1.1 Page Cache 是什么? 为了理解 Page Cache,我们不妨先看一下 Linux 的文件 I/O 系统,如下图所示: Figure1....Linux 文件 I/O 系统 上图中,红色部分为 Page Cache。可见 Page Cache 的本质是由 Linux 内核管理的内存区域。...当然,这个问题也有 Linux 历史设计的原因,毕竟这只是一个称呼,含义随着 Linux 系统的演进也逐渐不同。...在 Linux 2.4 版本的内核之前,Page Cache 与 buffer cache 是完全分离的。...Page Cache 与文件持久化的一致性&可靠性 现代 Linux 的 Page Cache 正如其名,是对磁盘上 page(页)的内存缓存,同时可以用于读/写操作。
在Linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快...在Linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快...有关linux内存机制参考: (adsbygoogle = window.adsbygoogle || []).push({}); Linux 内存机制 Mem:表示物理内存统计。...在Free命令中显示的buffer和cache,它们都是占用内存: buffer : 作为buffer cache的内存,是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk的缓冲区。...cache: 作为page cache的内存, 文件系统的cache,是memory的缓冲区 如果 cache 的值很大,说明cache住的文件数很多。
---- 探究 free的用法 [root@entel2 rh]# free -help free: invalid option -- 'h' usage: free [-b|-k|-m|-g] [-...我们先来探究一下参数含义 total 内存总数 used 已经使用的内存数 free 空闲的内存数 shared 多个进程共享的内存总额 buffers Buffer Cache和cached Page...Cache 磁盘缓存的大小 -buffers/cache (已用)的内存数:used - buffers - cached +buffers/cache(可用)的内存数:free + buffers...但实际上,我们都知道这是因为Linux对内存的管理与Windows不同,free小并不是说内存不够用了,应该看的是free的第二行最后一个值:-/+ buffers/cache: 58 191,这才是系统可用的内存大小...我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少。如果常常swap用很多,可能你就要考虑加物理内存了,这也是linux看内存是否够用的标准.
这两天整理了调用流程,也找到了dma-coherent的用法。Linux的文档里没有详细说明dma-coherent的用法。...根据代码,如果dma的设备树里有dma-coherent,Linux则认为硬件会维护cache一致性,不会在dma运行过程中执行cache操作。...Linux会根据direction的值invalidate或者clean cache。...以前也处理一个问题,arm的预测执行会导致软件完全没有使用的ddr被读取,必须在mmu table里设置对应地址的表项完全无效,才能杜绝这种情况。也许Linux之前遇到一些问题,才改成这样的操作。...如果是,则不进行cache操作。 dev_is_dma_coherent的定义在文件include\linux\dma-noncoherent.h中。
认识Page Cache最简单的方式,就是用数据说话,通过具体的数据你会更加深入地理解Page Cache的本质。 为什么需要Page Cache,Page Cache的产生和回收是什么样的。...最好具备一些Linux编程的基础,比如,如何打开一个文件;如何读写一个文件;如何关闭一个文件等等。 什么是Page Cache? Page Cache到底是属于内核还是属于用户?...怎么观察Page Cache 在Linux上直接查看Page Cache的方式: /proc/meminfo free /proc/vmstat 命令 内容其实是一致的。...首先,我们来生成一个1G大小的新文件,然后把Page Cache清空,确保文件内容不在内存中,以此来比较第一次读文件和第二次读文件耗时的差异。具体的流程如下。...先生成一个1G的文件: dd if=/dev/zero of=/home/yafang/test/dd.out bs=4096 count=((1024*256)) 其次,清空Page Cache,需要先执行一下
可用的memory=free memory+buffers+cached 这里可以看到我们使用了89G,其中cache占用了78G。...2、什么是cache 为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache...Free中的buffer和cache:(它们都是占用内存): buffer : 作为buffer cache的内存,是块设备的读写缓冲区 cache: 作为page cache的内存, 文件系统的cache...如果 cache 的值很大,说明cache住的文件数很多。...7.5G 1.8G 5.6G cache已经释放,free=122G。
常见的LINUX系统命令 下面几个命令可能用得上。...以CentOS 6为例: 查看硬盘使用情况: df -h 进入根目录:(进入其它目录同理,在斜杠后加对应路径即可) cd / 查看当前目录下每个文件夹的大小: du -sh * 查看内存使用情况: free...cat /proc/version 查看系统是64位还是32位:(X64/X86) getconf LONG_BIT 查看服务器时间: date 查看系统到目前运行了多长时间: w 查看最后一次系统启动的时间...: who -b 查看当前正在运行的服务: chkconfig --list 查看开放端口: iptables -L -n 重启防火墙:(一般在修改开放端口后) service iptables restart
参考文档 https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/ 有关Cache...Linux内核将写磁盘的操作分解成了,先写缓存,每隔一段时间再异步地将缓存写入磁盘。这提升了IO读写的速度,但存在一定风险。数据没有及时写入磁盘,所以存在数据丢失的风险。...举一个例子,我有32G内存,那么有3.2G的内存可以待着内存里,超过3.2G的话就会有后来进程来清理它。 vm.dirty_ratio 是绝对的脏数据限制,内存里的脏数据百分比不能超过这个值。...情景1:减少Cache 你可以针对要做的事情,来制定一个合适的值。...不建议将它设置成0,毕竟有点后台IO可以提升一些程序的性能。 情景2:增加Cache 在一些场景中增加Cache是有好处的。例如,数据不重要丢了也没关系,而且有程序重复地读写一个文件。
本文主要参考若干kernel资料,对应的kernel源码版本主要包括:linux-0.11, linux-2.2.16, linux-2.4.0, linux-2.4.19, linux-2.6.18。...两类缓存的逻辑关系 从linux-2.6.18的内核源码来看, Page Cache和Buffer Cache是一个事物的两种表现:对于一个Page而言,对上,他是某个File的一个Page Cache...address_space)对page的映射关系: 两类缓存的演进历史 虽然,目前Linux Kernel代码中,Page Cache和Buffer Cache实际上是统一的,无论是文件的Page Cache...在Linux-2.2版本中, Page Cache 此时用来干什么的? (1)....Linux内核的文件Cache管理机制介绍 [9]. Linux内核文件Cache机制 [10].
这是一个需要解决的问题。 第一时间,我就想到使用静态缓存此页面的方法来解决加载过慢的问题。于是就安装了 WP-Super-Cache 这个插件,并根据实际情况设置了下,发现效果还不错!...于是,立马明白了问题所在: WP-Super-cache 的预缓存功能会和某些后置加载的动态内容造成冲突!...> 简单说明:原理就是去掉了第一步的判断,让 wp-super-cache 插件在预缓存时强制执行 recently.php,这样预缓存得到的静态页面也就有了跟随模块了!...而在 Wp-Super-Cache 插件缓存某页面之后,这个前台登陆功能将失效,登陆后返回的页面还是未登录状态,原因也非常简单,因为是静态页面,所以登陆成功后返回的依然是未登录状态的静态页面!...好了,以上就是玛思阁启用 wp-super-cache 插件后发现的问题以及解决办法,希望可以帮到你!
可最近,有很多iPhone用户反馈称,iOS 15.5的后台会偷跑流量。 背后的罪魁祸首就是【时间与地点】功能。...很多用户被“偷吃”掉几百MB到十几个GB的流量不等,一不小心就会造成流量超额,导致扣费。 大家可以在,设置-【蜂窝网络】-【系统服务】-【时间与地点】服务中,看有没有类似流量异常情况。...第二个关闭设置的联网权限。有网友建议关闭隐私-定位服务,还有 iCloud 相关功能,涉及到系统后台上传数据的功能都关闭,这样会缓解蜂窝网络被偷跑流量。 该问题可能比较普遍,只能等待苹果修复。
本文主要参考若干kernel资料,对应的kernel源码版本主要包括:linux-0.11, linux-2.2.16, linux-2.4.0, linux-2.4.19, linux-2.6.18。...两类缓存的逻辑关系 从linux-2.6.18的内核源码来看, Page Cache和Buffer Cache是一个事物的两种表现:对于一个Page而言,对上,他是某个File的一个Page Cache...两类缓存的演进历史 虽然,目前Linux Kernel代码中,Page Cache和Buffer Cache实际上是统一的,无论是文件的Page Cache还是Block的Buffer Cache最终都统一到...在Linux-2.2版本中,Page Cache此时用来干什么的? (1)....Linux内核的文件Cache管理机制介绍 [9]. Linux内核文件Cache机制 [10].
服务器接口从10G升级为25G接口带来很多好处,比如: 以太网性能是10G接口的2.5倍; 能为服务器的提供更高的端口密度; 更低的每GB数据传输功耗(更省电费); …… 虽然这些好处很诱人,但是仍然有几个方面需要注意...: 一、确保理解 25G/100G的含义 以太网接口的传输速率在过去几十年来大体呈线性增长(每10年增长10倍)。...而在当前的许多数据中心中,服务器的接口是10Gbps(万兆), 交换机间的接口是40Gbps(四万兆),它们中的大多数都在考虑(或者正在)将网络升级到下一代的25G/100G网络(服务器的接口是25Gbps...过去几年,国内25G/100G的应用晚于美国几大OTT的脚步,而且国内25G/100G大多用在新建的数据中心。...将带2个25G的端口的网卡插到56Gbps PCIe插槽,可以使网络到服务器性能获得更高的效率(相对于插一个40G端口的网卡)。
领取专属 10元无门槛券
手把手带您无忧上云