可以安全地禁用预读服务吗?

可以安全地禁用预读服务吗?

我正在浏览一个服务列表服务器(CentOS 5) - 这个问题可能也适用于其他 RedHat、Fedora 等版本。

请注意,我的服务器通常在运行级别 3 下运行(没有启动 GUI 服务器进程)。

我偶然发现了两项服务:

  • 提前预读
  • 稍后阅读

这两个服务的配置来自/etc/sysconfig/readahead.d

这些服务的目的似乎是将某些文件预加载到缓存中。

浏览配置文件(保留默认内容),我看到的主要是与 X11 相关的文件和一些库。

这些过程的深层意义是什么?据我所知,每个文件在第一次读取访问后都会进入缓存。为什么我应该预加载 - 为什么我应该预加载所有这些不需要的文件?

恕我直言,这是在操作系统启动期间对读取带宽的无用浪费。

更新

我发现这些预读只会缓存列出的文件的第一个索引节点条目(通过fstat系统调用)。所以它只是加快查找这些文件的速度......

更新2012-10-02

问题归结为:我可以安全地在服务器上禁用这些服务,还是我在这里遗漏了一些重要的东西?

我相应地更新了问题的标题,因为给出的答案还没有达到目标。

答案1

这个想法是将这些文件加载​​到缓存中它们是必需的,因此当 X 尝试启动时无需等待它们。

显然,对于系统日常操作中实际上不需要的文件执行此操作没有多大意义,因此例如缓存 X 服务器本身在您的情况下会适得其反,是的;然而,您可能会对有时会拉入的内容感到惊讶:您的服务器运行的某些程序很可能实际上确实拉入了 X11 库,也许是通过 Cairo,所以不要仓促地认为这是无用的!

如果系统在启动时定期跟踪自身以找出预缓存什么(以及何时),可能会更好; Windows 就做了类似的事情。 (它还在进程启动的每个 exe 基础上执行此操作;实际上我已经见过内核在查阅有关新进程可执行文件的记录后,尽早将内容拉入缓存!)

同样,这都是为了减少等待东西从存储中进入所花费的时间。

编辑:

当然,这不是必需的。如果不发生的话,什么都不会破坏(除了愚蠢的错误);只是启动时间会有所不同。

答案2

其背后的思考过程是,最终用户更有可能遭受更长的启动时间,而有利于更快的应用程序启动时间。

启动时间为数十秒到几分钟,因此延长几秒几乎不会被注意到。无论如何,额外的预加载时间都不到启动时间的 1 倍。另一方面,firefox(仅举一个示例应用程序和虚拟数字)可能会在未缓存的情况下在 15 秒内启动,但如果缓存则只需 1.5 秒。在这个(纯粹是假的)示例中,速度提高了 10 倍,用户肯定会注意到这一点。

总而言之,总时间可能没有显着差异。但这是人类的心理伎俩,而不是真的关于减少等待时间。人类对时间的感知具有极强的可塑性。这就是为什么去商店比回家要花更长的时间,也是为什么有人看管的锅永远不会沸腾。

相关内容