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

图解|Linux文件预读原理

概述 本文主要阐述内核(linux-3.12)的文件系统预读设计和实现。...所谓预读,是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在page cache中,这样下一次读请求到来时部分页面直接从page cache读取即可。...,共进行三次读(且是顺序读),那让我们看看操作系统是如何对文件进行预读的。...由于上面的两次顺序读,截至目前,该文件在操作系统中的page cache状态如下: Read 3 接下来应用程序进行第三次读,顺序读,范围是[page3, page6],上面的预读其实已经将这些页面读入...,根据特定算法计算本次预读大小,更新预读窗口为 (12,16,16) ,新的预读窗口如下: 对该情境简单总结下,由于三次的顺序读加上内核的预读行为,文件的page cache中的状态当前如下图所示:

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

    fileinput 读文件

    批量打开多个文件 从上面的例子也可以看到,我在 fileinput.input 函数中传入了 files 参数,它接收一个包含多个文件名的列表或元组,传入一个就是读取一个文件,传入多件就是读取多个文件。...Linux的文件 if line[-2:] == "\r\n": line = line + "\n" sys.stdout.write(line) 附:如何实现 DOS...在最后一个文件的最后一行被读取之后,返回此文件中该行的行号。...fileinput.nextfile() 关闭当前文件以使下次迭代将从下一个文件(如果存在)读取第一行;不是从该文件读取的行将不会被计入累计行数。 直到下一个文件的第一行被读取之后文件名才会改变。...Linux的文件 if line[-2:] == "\r\n": line = line + "\n" sys.stdout.write(line) 案例四:配合 re

    3.2K10

    效率翻倍!Linux 文件压缩与解压技术详解

    在 Linux 中,文件压缩和解压是常见操作。本文将全面介绍常见压缩工具及其用法,配以详细示例。...常见压缩工具简介 Linux 系统中,常用的压缩工具及其格式包括: - gzip:生成 .gz 文件,适合单文件压缩。 - bzip2:生成 .bz2 文件,压缩率更高但速度较慢。...- xz:生成 .xz 文件,压缩率最高。 - zip/unzip:生成 .zip 文件,支持多文件压缩。 - tar:不是压缩工具,但常与上述工具结合使用(如 .tar.gz)。...单文件压缩与解压 gzip 压缩 gzip file.txt 压缩后生成 file.txt.gz,原文件会被替换。...- 多文件压缩更推荐使用 tar 配合压缩工具。 - zip 是兼容性较好的选择,尤其在跨平台传输时。 下期内容 下一节学习本系列“文件查找和别名”的相关内容

    17310

    Linux大文件重定向和管道的效率对比

    huge_dump.sql | mysql -uroot; # 命令2,重定向导入 shell> mysql -uroot < huge_dump.sql; 大家先看一下上面二个命令,假如huge_dump.sql文件很大...,然后猜测一下哪种导入方式效率会更高一些?...以下来自@阿里褚霸的分享: 这个问题挺有意思的,我的第一反应是: 没比较过,应该是一样的,一个是cat负责打开文件,一个是bash 这种场景在MySQL运维操作里面应该比较多,所以就花了点时间做了个比较和原理上的分析...然后把文件句柄搞到0句柄上,这个进程execve运行b.out。 然后b.out直接读取数据。...现在就非常清楚为什么二种场景速度有3倍的差别: 命令1,管道方式: 读二次,写一次,外加一个进程上下文切换。 命令2,重定向方式:只读一次。 结论:Linux下大文件重定向效率更高。

    1.6K10

    文件系统预读

    是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在page cache中,这样下一次读请求到来时部分页面直接从page cache读取即可。...,共进行三次读(且是顺序读),那让我们看看操作系统是如何对文件进行预读的。...2 这里我们来看另外一种情境:单进程文件顺序读,读大小为256KB,看看预读逻辑如何处理这种情况,照例首先给出事例代码: { ......所谓的交织读指的是多线程(进程)读同一个打开的文件描述符,单个线程的顺序读在操作系统看来可能会变成随机读。...线程1 Read 1 线程1读文件的前两个页面,由于尚未缓存命中,因此会触发文件系统的一次同步预读,确定预读窗口为(ra->start, ra->size, ra->async_size) = (0,

    87120
    领券