`
cocos
  • 浏览: 404346 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Linux页缓存简介

阅读更多

为了提高读写文件速度,linux系统采用一种页缓存机制。当应用程序调用read,write等函数读写文件时,系统并不立即与硬盘

进行操作,而是查看需要读取的数据是否已在页缓存中,如不在,则从硬盘读取。当写入时,只是将数据写入至页缓存,然后

使用系统进程pdflush根据一定算法写入至硬盘,算法细节文章后部分会进行一个简单介绍。

系统当前页缓存大小等数据可以查看/proc/meminfo文件,下面是一个简单例子


[root@unimas_ses ]# cat /proc/meminfo
Cached:        1094972 kB
Dirty:           20484 kB
Writeback:           0 kB

 为了阅读方便,很多与本文章内容不相关信息去除了。

Cached:当前页缓存大小

Dirty:页缓存中等待被写入硬盘数据大小

Writeback:正在写入硬盘数据大小,这个值一般为0,没办法,硬盘写入速度太快了。。。。

页缓存简单介绍完毕,下面就介绍刷新页缓存的pdflush进程了。系统里只能有2~8个pdflush进程,当前pdflush进程个数可以通过/proc/sys/vm/nr_pdflush_threads 查看。当系统内全部pdflush进程繁忙超过1秒后,系统会启动一新pdflush进程。当超过一秒后,系统当前全部pdflush进程空闲时,系统会杀死一个pdflush进程。

系统有一些可控参数影响pdflush进程行为:

/proc/sys/vm/dirty_writeback_centisecs :默认为500(单位百分之一秒),间隔多长时间唤醒pdflush进程进行工作。

但修改该配置文件一般不会对具体唤醒时间有影响,内核算法本身在根据系统实际情况进行控制。

/proc/sys/vm/dirty_expire_centiseconds :默认为3000(单位百分之一秒),数据在页缓存最长多久才会超时,刷入硬盘中。值得注意的是,默认时间为30秒,这说明一般情况下,数据会在页缓存30秒后,才会真正写入硬盘。

/proc/sys/vm/dirty_background_ratio :默认为10或者5(单位百分比),多少比例的Dirty数据在系统空闲内存中,才会刷入至硬盘。系统空闲内存计算方法=Cached+Memfree-Mapped.(这三个数据都是/proc/meminfo内)。

总结下来:系统刷新页缓存正常下只有2种情况,1:数据放入页缓存超过时限。2:页缓存中待写入数据大小已到达上线。

还有一种极端情况,当系统dirty数据大小大于等于/proc/sys/vm/dirty_ratio(默认为40%)时,write操作会堵塞,直至所有dirt写入至文件。可以通过dd if=/dev/zero of=hog模拟这种情况。

分享到:
评论

相关推荐

    linux下查看被缓存的文件工具

    在Linux操作系统中,管理和查看被缓存的文件是系统管理员和开发者日常工作中不可或缺的一部分。缓存文件通常是系统为了提高性能而存储在内存中的数据,它们可以是文件系统缓存、程序运行时的数据缓存或是网络请求的...

    linux实现缓存安装

    在Linux系统管理中,缓存安装是一种有效提升安装软件包速度和效率的方法,尤其在网络环境不稳定或带宽有限的情况下。对于CentOS和RedHat这类基于RPM的Linux发行版,我们可以利用YUM(Yellowdog Updater, Modified)...

    Linux系统缓存清理脚本

    ### Linux系统缓存清理脚本知识点详解 #### 一、概述 在Linux系统运维工作中,定期清理系统缓存是一项非常重要的任务。缓存虽然能够提高数据读取速度,但随着时间的推移,缓存文件会逐渐积累占用大量磁盘空间,并...

    常用Linux命令 防火墙 数据库 页面缓存

    常用Linux命令 Linux释放内存 磁盘空间使用情况 内存使用情况 配置MySQL 远程登录 修改密码 服务是否开机启动:# systemctl enable/disable 服务名字 查看服务是否开机启动:systemctl is-enabled postfix.service;...

    Linux页面缓存机制分析及其对磁盘I_O性能影响.pdf

    "Linux页面缓存机制分析及其对磁盘I_O性能影响" Linux页面缓存机制是操作系统中磁盘缓存的主要形式,它与文件读写执行流程有紧密的联系,直接影响着磁盘I/O性能。页面缓存管理是操作系统虚拟内存管理子系统的重要...

    Linux帧缓存资料

    1. **帧缓存简介** - 帧缓存是计算机图形硬件中的一个重要组成部分,用于存储待显示图像的像素数据。 - 在Linux系统中,帧缓存被抽象成一个设备驱动,可以通过字符设备文件(通常是/dev/fbX)进行访问。 - 它提供...

    清除maven缓存(windows/mac/linux)

    清除maven缓存 绝对可用.里面有(windows/mac/linux)版本

    memcached linux windows 安装 使用 缓存 集群

    总结来说,Memcached是跨平台的缓存解决方案,适用于Windows和Linux环境。通过正确配置和使用,它可以显著提升Web应用的性能,减少对数据库的依赖,并提供高可用性的数据缓存服务。在部署和使用过程中,注意端口设置...

    linux查看缓存情况_pcstat

    安装方法:cp pcstat /bin

    Linux 多线程 短消息缓存

    在这个场景中,我们讨论的是一个名为“Linux多线程短消息缓存”的项目,它利用了单链表数据结构来实现一种高效的短消息存储和管理机制。 首先,多线程在Linux中的实现主要依赖于pthread库,这是POSIX线程(Portable...

    修改Linux开发板上TCP、UDP发送接收缓存

    一般Linux下,开发板上,有一个默认的TCP、UDP发送和接收的缓存,有时候我们如果需要修改,就可以参照此文档。

    Linux-定期清内存缓存-shell脚本

    - `sync && echo 1 > /proc/sys/vm/drop_caches`: 同步所有缓冲区并清除页缓存。 - `sync && echo 2 > /proc/sys/vm/drop_caches`: 清除dentries和inodes缓存。 - `sync && echo 3 > /proc/sys/vm/drop_caches`: ...

    Linux内核分析与应用课件第8章(四)页高速缓存机制及读写.pdf

    Linux内核分析与应用课件第8章高速缓存机制及读写 本章节主要介绍了Linux内核中的高速缓存机制和读写机制。高速缓存是Linux内核中的一种重要机制,它可以提高文件系统的读写性能。高速缓存机制可以分为两种:Buffer...

    深入理解LINUX内核(中文第三版)第十五章 页高速缓存

    俺花了N个大洋买来的,现在免费提供给大家

    自动清理LINUX缓存工具

    LINUX定时任务,检查LINUX缓存剩余空间,如果小于指定剩余空间,清理缓存防止服务因缓存资源不足导致进程退出。

    Linux系统清除缓存的方法总结

    【Linux系统清除缓存的方法总结】 在Linux操作系统中,缓存机制扮演着至...总之,理解和掌握Linux缓存管理对于优化系统性能和资源利用率至关重要。适时清理缓存可以释放内存,但需谨慎操作,防止影响正在运行的服务。

    详解Linux手动释放缓存的方法

    1:释放页缓存 2:释放dentries和inodes 3:释放所有缓存 释放完内存后改回去让系统重新自动分配内存。 echo 0 >/proc/sys/vm/drop_caches free -m #看内存是否已经释放掉了。 如果我们需要释放所有缓存,就输入...

    Linux下使用C++编写的并发服务器,redis缓存和MySQL数据库,GoogleTest单元测试和webbench压力测试

    spark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存和MySQL作为数据库,并利用GoogleTest编写单元测试和webbench进行压力测试。.zipspark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存...

    Linux下的磁盘缓存.docx

    总结来说,Linux的磁盘缓存机制是通过VFS和高速缓存来优化文件系统的性能,尤其是页高速缓存,它对数据读写的效率有着决定性的影响。延迟写策略和pdflush内核线程的使用确保了缓存的有效性和数据的安全性。在处理...

    geoserver gwc缓存的生成与失效

    Geoserver GWC 缓存的生成与失效 Geoserver 是一个基于开源的 GIS 服务器,可以提供强大的地图服务功能。其中,GWC(GeoWebCache)是 Geoserver 中的一个重要组件,负责生成和管理地图缓存。缓存的生成和失效是 GWC...

Global site tag (gtag.js) - Google Analytics