读取文件而不从操作系统页面缓存中逐出

2024-05-26

(这主要适用于 Linux,或者理想情况下适用于任何 POSIX 系统。)

当我阅读以下页面时,我正在寻找一种读取大量文件(其中任何一个文件本身可能高达 1GB)的方法,具有以下特征:

  • 如果相关磁盘页面已在文件系统缓存中,则使用该页面。
  • 如果相关页面不在磁盘缓存中,则会从磁盘中获取该页面,但不会驱逐任何现有的缓存磁盘页面。

这个想法是能够读取所有这些文件,而不会污染磁盘缓存或逐出当前工作集。

有什么指导吗?


在 Linux 上你可以尝试一下O_DIRECT open() flag. man open(2):

   O_DIRECT (Since Linux 2.4.10)
          Try  to minimize cache effects of the I/O to and from this file.
          In general this will degrade performance, but it  is  useful  in
          special  situations,  such  as  when  applications  do their own
          caching.  File I/O is done directly to/from user space  buffers.
          The O_DIRECT flag on its own makes at an effort to transfer data
          synchronously, but does not give the guarantees  of  the  O_SYNC
          that  data and necessary metadata are transferred.  To guarantee
          synchronous I/O the O_SYNC must be used in addition to O_DIRECT.
          See NOTES below for further discussion.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取文件而不从操作系统页面缓存中逐出 的相关文章

  • 如何设置打开文件时默认展开?

    In my vimrc我已经把set foldmethod syntax启用方法折叠等 但是 我不喜欢每次打开文件时都会折叠整个文件的默认设置 有没有办法启用foldmethod 但是当我打开文件时文件是否展开了 set foldlevel
  • 在用户程序中使用 或在驱动程序模块代码中使用 ...这有关系吗?

    我正在开发一个设备驱动程序模块和关联的用户库来处理ioctl 来电 该库获取相关信息并将其放入一个结构中 该结构被传递到驱动程序模块中并在那里解压 然后进行处理 我省略了很多步骤 但这就是总体思路 一些数据通过结构体传递ioctl is u
  • dlsym() + RTLD_NEXT 在 Ubuntu 20.04 上无法按预期工作

    使用时 我在 Ubuntu 20 04 gcc v 9 3 0 上遇到了奇怪的运行时行为dlsym call 请看下面一个简单的例子 文件测试 cpp include
  • 如何使用通配符在C中删除多个文件?

    C 有什么方法可以删除 使用remove 使用多个文件 通配符 我有一组文件 全部以 Index 开头 例如 Index1 txt Index 39 txtETC 它们都以 Index 开头 但我不知道后面是什么文本 同一目录中还有其他文件
  • 在 Java 中使用 Zip 和 GZip 文件

    我已经有一段时间没有完成 Java I O 了 而且我不知道使用 Zip 和 GZip 文件的最新 正确 方法 我不一定需要完整的工作演示 我主要是寻找要使用的正确接口和方法 是的 我可以查找任何关于此的随机教程 但性能是一个问题 这些文件
  • Boost:如何从 Epoch 打印/转换 posix_time::ptime(以毫秒为单位)?

    我在转换时遇到问题posix time ptime到由 表示的时间戳time t or posix time milliseconds 或任何其他可以轻松打印的适当类型 来自 Epoch 我实际上只需要打印由posix time ptime
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • 对于大文件,在标记 inputStream 并重置它时出现异常“重置为无效标记”。?

    我正在使用 InputStream 对象来计算某个文件的 Md5 我标记流 后来我重置了流 然而 对于大文件 会出现以下异常 inStreamLatestFile mark 0 checkSumCalculated MD5CheckSumC
  • 使用 execv 和输入重定向的 C++ 管道命令

    尝试编写一个处理内部和外部命令的 shell 我一次可以获得内部命令和一个外部命令 我的问题是如何运行这样的命令 ls l grep lib wc l 我正在使用 fork 并通过 char 中的 execv 传递外部命令 关于如何工作有什
  • C++ 从文件中读取字符串

    我试图将字符串直接存储到一个文件中 以便稍后在 C 中读取 基本上 对于整个范围 我试图将带有字符串变量的对象数组存储在文件中 并且这些字符串变量将通过类似 object 的内容读取 0 字符串 然而 每次我尝试读取字符串变量时 系统都会给
  • fscanf 和 EOF 中的否定扫描集

    我的文件中有一个以逗号分隔的字符串列表 姓名 1 姓名 2 姓名 3 我想跳过所有逗号来阅读这些名字 我写了以下循环 while true if fscanf file my string 1 break 然而 它总是比预期多执行一次 给定
  • ftrace 是否允许捕获 Linux 内核的系统调用参数,或者仅捕获函数名称?

    目标是检查任何进程传递给特定系统调用 例如 exec open 等 的参数 来自官方文档 https www kernel org doc Documentation trace ftrace txt 没有描述记录函数参数的功能 主要查看
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • Java读取文件的不同方法

    看来Java中有很多很多读取文本文件的方法 BufferedReader DataInputStream等 我个人最喜欢的是Scanner with a File在构造函数中 它更简单 可以更好地处理数学数据 并且具有熟悉的语法 蜘蛛鲍里斯
  • VTK IO 的 C/C++ 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 C 模拟 它会生成大量数据 现在我正在使用 MATLAB 库将结果保存为 mat 文件 但最终
  • 编译Linux内核模块时出现错误:“CONFIG_X86_X32已启用,但没有binutils支持”和不需要的“n”字符

    我想得到Rasta Ring0 调试器 http rr0d droids corp org 在我的 x86 64 Linux 中编译的 0 3 版本 它是一个 Linux 内核模块 我已将 32 位内联汇编替换为 64 位汇编 如我的问题中
  • linux新手关于嵌入式linux设备驱动的问题

    最近在研究linux驱动 正如我读过的那些文章所说 设备驱动程序模块很可能会根据内核的需要自动加载 因此我想知道内核如何确定为特定设备 声卡 I2C spi 设备 等 我也无法彻底想象内核如何在启动时检测每个硬件设备 与嵌入式linux相关
  • 如何使用 Nodejs 创建 Excel 文件?

    我是一名 Nodejs 程序员 现在我有一个数据表 我想将其保存为 Excel 文件格式 我该怎么做呢 我找到了一些 Node 库 但其中大多数是 Excel 解析器而不是 Excel 编写器 我使用的是 Linux 服务器 因此需要一些可
  • 如何在Python中增加文件名

    我正在尝试保存大量需要分成不同文件的数据 如下所示 数据 1 dat 数据 2 dat 数据 3 dat 数据 4 dat 我如何在Python中实现这个 from itertools import count filename data
  • teracopy 如何替换默认的 Windows 副本

    我问了这个问题Windows 文件复制内部结构 动态加密 https stackoverflow com questions 24220382 windows file copy internals on the fly encryptio

随机推荐