使用预加载有什么缺点?为什么它默认不包含在内?

使用预加载有什么缺点?为什么它默认不包含在内?

我想知道使用 有什么缺点preload?如果没有缺点,preload默认情况下会启用,所以我想有一些缺点。

好吧,你需要多一点的 RAM,但大多数人拥有的 RAM 远远超过 Ubuntu 的需求 - 那么使用有什么缺点呢preload

答案1

简而言之,Preload 并不适合所有人。如果你经常打开应用程序或库,那么 Preload 就很好了。如果你只是偶尔加载应用程序或库,那么 Preload 就有害了。我将使用两个来自我实际使用的示例(是的,我使用 Preload)。

首先是 Google Chrome。现在浏览器每次启动只会打开一次,也许两次(对我来说,我是一名 Web 开发人员)。Chrome 及其相关库保留在内存中,因为我一直在使用它。即使我关闭了所有 Chrome 窗口,它仍然在后台运行。因此,用于保存预加载的 Chrome 副本的所有内存都是完全浪费的。它从不(或很少)卸载。对于普通用户来说,很多应用程序都是如此。Office 用户几乎总是会打开他们的电子邮件应用程序。因此,启动时间节省的一点时间完全浪费了,因为他们每天只打开一次电子邮件应用程序,并且一直打开。

第二个例子是 rake。作为一名相信测试的 ruby​​ 开发人员,我运行了大量 rake。rake 运行,执行几秒钟 - 几分钟后退出。Preload 帮助我加快日常工作速度,因为它会提前加载 rake 及其所需的库(可能非常广泛)。因此,rake 的运行有很多启动和停止。在几个小时内,用于加速 400 或 500 次 rake 启动的额外内存是完全值得的。

因此,它没有默认启用的原因是,它实际上提高性能的能力很大程度上取决于如何你使用你的系统。对某些人来说,这可能是负面的,而对其他人来说,这可能是正面的。

最后,即使您不使用预加载,它也会消耗内存。因此,如果您不经常启动应用程序,那么由于没有内存用于其他类型的缓存,整个系统实际上可能会稍微变慢。请记住,即使您有 32 GB 的内存,Linux 也会尝试尽可能多地使用内存来缓存数据,以加快您的交互速度。通过使用预加载,您可以减少一些可用内存。即使只是一点点,您启动 chrome 一次节省的 2 秒可能会在它运行的一个月内花费您 60 秒。

答案2

bountier 提出的问题赛义德·扎林法姆2012年9月5日:

大家好,我想知道,这是一个神话吗?[预加载]真的能提高我的表现吗?使用它有什么缺点?我有一台具有此规格的笔记本电脑(Core i5 CPU,4GB RAM,128GB SSD 硬盘)。非常感谢。

  • 没有必要预加载如果你有 SSD
    • 这是因为 SSD 提供很多随机访问时间比硬盘更快,因此在我看来,在内存中“预加载”二进制文件/依赖项是一种浪费
    • 那么基本的缺点就是预加载正在“使用”额外的内存但没有提供任何实际的好处。

答案3

Preload 是一个“自适应预读守护进程”,它在系统后台运行,并观察您最常使用的程序,并缓存它们以加快应用程序加载时间。通过使用 Preload,您可以充分利用未使用的 RAM,并提高桌面系统的整体性能。

不要指望立即看到性能的显著变化。另外,如果您只是反复打开/关闭应用程序,您的计算机无论如何都会将这些文件存储在缓存中(这称为“热”加载),因此您不会看到速度有任何差异。但是,如果您间歇性地使用某个程序,您将看到速度的提高;这些程序的启动速度将比没有预加载时更快。

预加载可以大大缩短应用程序的启动时间;由于大多数现代机器都拥有大量空闲内存,因此预加载可以充分利用这些内存。1

现在说了这么多,看起来预加载是一个很好的实用程序,而且它可能确实是。

我认为它没有预装操作系统的原因是,用户必须确切地知道它在做什么,并且有足够的经验才能使用它,而且系统必须有足够的内存。

从技术角度来看,预加载的工作原理是将数据从硬盘移到 RAM,这使得大多数硬盘在不使用时进入休眠模式,然后在需要时重新旋转。因此,驱动器的旋转速度加快/减慢会导致加载/卸载循环次数和开机时间增加,从而缩短驱动器的使用寿命。

我们设计并实现了 preload,这是一种基于马尔可夫的自适应预取方案,适用于应用程序级预测。此外,preload 是在用户空间中实现的,不会以任何方式改变应用程序运行时环境。据我们所知,这是首次在此级别上试验文件系统预取。

我们的实验结果表明,与冷缓存相比,应用程序启动时间有了显著的改善,与简单的预测算法相比,命中率也不错。

然而,在用户空间中,预加载成为启动时间问题的一个有竞争力的解决方案会面临重大障碍。特别是,没有关于应用程序 I/O 请求的完整信息,以及缺乏与页面缓存子系统的强大通信渠道,会大大降低预加载的有效性,尤其是在内存紧张的情况下。

预加载设计的另一个固有问题是应用程序启动相关性相对较松散,导致方差较大和预测置信度较低。虽然我们成功地建立了一个模型来跟踪应用程序相关性,但与计算机工作的时间尺度相比,应用程序启动是非常罕见的事件,应用程序级预取方案注定会在几乎无限的时间内消耗大量的预取内存。这些内存可用于改善短期缓存行为。

最后,我们为系统开发人员提出了一系列建议,说明如何改进引导时间、登录时间和应用程序启动时间,而无需使用与内核中的缓存子系统集成的预取器。当然,内核中基于文件的预取器可以在此基础上进行改进。2

1来源:科技狂人

2来源:预加载 - 由 Behdad Esfahbod 编写的自适应预取守护进程 - 符合理学硕士学位要求的论文 - 多伦多大学计算机科学研究生院版权所有 (c) 2006 Behdad Esfahbod。

答案4

以下是 Preload 的一些缺点以及为什么它并不对每个人都那么有效 我有一个规格不错的系统,配备 8GB RAM。所以我的系统通常很快。此外,我每天会打开一两次占用大量内存的应用程序,如 Firefox、Chrome、VirtualBox、Gimp 等。它们一直处于打开状态,因此它们的二进制文件和库会预加载到内存中并全天占用 RAM。我很少关闭和打开这些应用程序,因此 RAM 使用量根本就是浪费。如果您使用的是带有 SSD 的现代系统,那么 Preload 显然是没用的。因为 SSD 的访问时间比普通硬盘快得多,所以使用 Preload 毫无意义。Preload 会显著影响启动时间。因为预加载到 RAM 中的应用程序越多,系统启动和运行所需的时间就越长。

只有每天多次重新加载应用程序时,您才会看到真正的差异。因此,对于每天多次打开和关闭应用程序的开发人员和测试人员来说,Preload 是理想的选择。

相关内容