当前位置: 首页 > 面试题库 >

Linux文件系统是否有效地缓存文件?

祝俊
2023-03-14
问题内容

我正在创建在Linux服务器上运行的Web应用程序。该应用程序一直在访问一个250K的文件-
将其加载到内存中,读取并向用户发送一些信息。由于此文件一直被读取,因此我的客户建议使用诸如memcache之类的东西将其缓存到内存中,大概是因为它可以使读取操作更快。

但是,我认为Linux文件系统可能已经在缓存文件,因为它经常被访问。那正确吗?您认为memcache会带来真正的改善吗?还是要做Linux已经做过的事情?

我对Linux和Memcache都不是很熟悉,所以如果有人可以澄清这一点,我将不胜感激。


问题答案:

是的,如果您每次打开文件时都没有修改文件。

Linux将文件的信息保存在内存中的“写时复制”页面中,并且将文件“加载”到内存中的速度应该非常快(最坏的情况是页面表交换)。

编辑:尽管,如cdhowie所指出的,没有“
Linux文件系统”。但是,我相信相关代码在linux的内存管理中,因此独立于所讨论的文件系统。如果您好奇,则可以在linux源代码中阅读有关在linux
/ mm / mmap.c中主要处理vm_area_struct对象的信息。



 类似资料:
  • 问题内容: 似乎Linux VFS缓存在默认情况下无法与FUSE文件系统一起使用。例如,“读取”调用似乎被系统地转发到FUSE文件系统。 我在FUSE专用的远程文件系统上工作。我需要一个非常激进的缓存。 我需要实现自己的页面缓存吗?还是可以为此特定的FUSE文件系统激活Linux VFS缓存?还是有人知道一个好的代理/缓存FUSE文件系统(或者某种C库可以做到这一点,而无需重新发明轮子)? 奖励问

  • 问题内容: 在ExpressJS for NodeJS中,我们可以执行以下操作: 提供所有静态CSS,JS和图像文件。我的问题是: 1)当我们这样做时,Express是否会在每次提供一种资源时自动在服务器内存中缓存文件,还是从硬盘上读取文件? 2)执行此操作时,Express是否默认使用ETag将资源保存在客户端的硬盘上或仅在客户端的内存上? 问题答案: 静态中间件不进行服务器端缓存。它使您可以执

  • 问题内容: 我正在用C ++写一个基准测试工具,我想在两次实验之间清除文件系统内存缓存。我知道以下控制台命令: 我的问题是如何直接在C ++中以编程方式执行此操作? 任何帮助表示赞赏! 问题答案: 只需写:

  • 主要内容:得到NTFS文件系统模块后,手工安装,利用 NTFS-3G 插件安装 NTFS 文件系统模块在 CentOS 6.x 中,默认 NTFS 文件系统是没有安装的,也就是说在 CentOS 6.x 中是不能直接挂载 NTFS 分区的。但是目前 Windows 的分区绝大多数是 NTFS 分区,这就需要在 CentOS 6.x 中安装 NTFS 文件系统的模块之后,才能使用 NTFS 分区。 安装 NTFS 文件系统模块的方法有三种: 第一种方法是完整地重新编译内核,然后在内核中选择 NTF

  • 7.1 认识 Linux 文件系统 Linux 最传统的磁盘文件系统 (filesystem) 使用的是 EXT2 这个啦!所以要了解 Linux 的文件系统就得要由认识 EXT2 开始! 而文件系统是创建在磁盘上面的,因此我们得了解磁盘的物理组成才行。磁盘物理组成的部分我们在第零章谈过了,至于磁盘分区则在第二章谈过了,所以下面只会很快的复习这两部份。 重点在于 inode, block 还有 s

  • Linux文件管理从用户的层面介绍了Linux管理文件的方式。Linux有一个树状结构来组织文件。树的顶端为根目录(/),节点为目录,而末端的叶子为包含数据的文件。当我们给出一个文件的完整路径时,我们从根目录出发,经过沿途各个目录,最终到达文件。 我们可以对文件进行许多操作,比如打开和读写。在Linux文件管理相关命令中,我们看到许多对文件进行操作的命令。它们大都基于对文件的打开和读写操作。比如c