使用预加载的缺点?为什么默认情况下不包含它?

Par*_*aub 129 cache ram preload

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

好的,您需要更多的 RAM,但是大多数人拥有的 RAM 远比 Ubuntu 需要的多得多 - 那么使用 的缺点是preload什么?

cot*_*eyr 84

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

首先,谷歌浏览器。现在浏览器每次启动只打开一次,也许两次(对我来说,我是一名网络开发人员)。Chrome 及其相关库会留在内存中,因为我一直在使用它。即使我关闭了所有 chrome 窗口,它仍然在后台做它的事情。因此,所有专用于保存 Chrome 预加载副本的内存完全是一种浪费。它从不(或很少)卸载。对于普通用户来说,这适用于大量应用程序。Office 用户几乎总是打开他们的电子邮件应用程序。因此,在启动时间上节省的少量资金完全浪费了,因为他们每天只打开一次电子邮件应用程序,然后将其保持打开状态。

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

所以默认情况下它没有启用的原因是因为它实际提高性能的能力很大程度上取决于你如何使用你的系统。对于某些人来说,这将是负面的,而对其他人来说,这将是积极的。

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

  • 预加载实际上并不是那样工作的......它给内核提示,比如“嘿,当你在那里的时候把它加载到你的缓存中,我很快就会需要它”,内核会这样做。所以它实际上并没有像你描述的那样使用 RAM。可能会发生两件事: 加载到缓存中会推出您即将使用的应用程序 - 这会导致您返回应用程序时出现短暂的冻结和硬盘活动。 (2认同)
  • 第二:如果 preload 预测您的使用模式错误(如果您不断加载应用程序,情况很可能就是这种情况),它会缓存一些内容,这些内容稍后将再次从 RAM 中推出,反过来又将缓存从您可能拥有的 RAM 中推出更好地用于。但最终它只像 vfs 缓存一样“消耗”RAM - 所以它实际上是可丢弃的 RAM,因此在某种程度上是“空闲 RAM”。然而,它会在您编写时与“普通缓存”竞争。 (2认同)
  • @lliseil 如果那 800 MB 确实是未分配的 RAM,则预加载可能会有所帮助...但使用更多 RAM 可能会更好。反过来,这意味着:预加载将与您可能稍后启动的内存饥渴应用程序发生冲突。在这里可能需要降低swappiness,然后一旦您要使用过多的RAM,这可能会使预加载无用。 (2认同)

ish*_*ish 23

赏金者Saeed Zarinfam在 2012 年 9 月 5 日提出的问题:

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

  • 如果您有 SSD,则 不需要预加载
    • 这是因为固态硬盘提供多少比硬盘快随机存取时间,因此“预加载”二进制文件/内存的依赖是一种浪费,IMO
    • 基本的缺点是预加载是“使用”额外的内存而没有提供切实的好处。

  • 这不包括 OP 的问题,因为使用预加载有什么缺点吗?其次,你已经形成了一个观点,做了一个关于“预加载”的陈述,然后在等式中引入了“SSD”。你真正要在什么时候回答这个问题? (26认同)
  • 更别说这是错误的。我有一个 SSD,并且正在寻找加速 atom 编辑器启动的方法,因为我将它用于所有事情。预加载将 Atom 加载时间缩短为之前的四分之一。这是有道理的 - 从 RAM 中获取总是比从 SSD(或实际上是 RAM 之外的任何东西)获取更快,因为即使使用 SSD,您也必须在处理器可用之前将所有内容加载到 RAM 中。它不能直接从磁盘、SSD 使用。 (2认同)

Mit*_*tch 13

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

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

预加载可以极大地改善应用程序启动时间;由于大多数现代机器都有大量可用内存,因此 Preload 可以充分利用这些 RAM。1

话虽如此,似乎 preload 是一个很好的实用程序,它可能是。

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

从技术层面来说,预加载的工作原理是将数据从硬盘移动到 RAM,这使得大多数硬盘在不使用时进入睡眠模式,然后在需要时必须旋转备份。因此,使驱动器向上/向下旋转,会导致加载/卸载循环计数和通电时间计数上升,从而缩短驱动器的使用寿命。

我们设计并实现了预加载,这是一种基于马尔可夫的自适应预取方案,适用于应用程序级预测。此外,预加载是在用户空间中实现的,并且不会在任何意义上改变应用程序运行时环境。据我们所知,这是在这个级别尝试文件系统预取的第一项工作。

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

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

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

最后,我们为系统开发人员提出了一组关于如何改善启动时间、登录时间和应用程序启动时间的建议,而不会退回到与内核中的缓存子系统集成的预取器。当然,内核中基于文件的预取器可以在此基础上进行改进。2

1来源: techthrob

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

  • 谢谢你的回答,米奇。这些也是我的想法。特别是在笔记本电脑上预加载可能是一个问题。但是,我仍然很想找到一个官方来源/讨论,说明为什么 Ubuntu 团队决定不发布预加载。 (2认同)

Rin*_*ail 9

缺点?没有了!

提高用户打开应用程序的性能。我已经在我的系统上使用它多年并且“预读”并且没有问题。预加载的错误页面也没有暗示任何缺点。

Preload 监控用户运行的应用程序,并通过分析此数据来预测用户可能运行的应用程序,并将这些二进制文件及其依赖项提取到内存中以加快启动时间。

它确实会略微增加启动时间,但速度降低的应用程序获取时间远远超过这个小问题。

文章

如果您经常使用FirefoxGimp等常见应用程序,您会注意到加载时间有一些显着改善。Preload 是一个在后台独立运行的守护进程,无论如何都不会破坏您的桌面。Ubuntu 用户可以使用以下命令安装预加载:

sudo apt-get install preload
Run Code Online (Sandbox Code Playgroud)

结果:

图表显示了正常启动和预加载启动之间的差异

参考

  • 您的图表看起来不错,但缺少重要信息。它 100% 适合销售人员的 PowerPoint 演示文稿,但它是“糟糕的统计数据”的一个例子。这些数字从何而来?使用什么协议来记录它们?什么是单个快照?样本中涉及多少台机器?硬件是什么?预加载程序是如何配置的? (5认同)
  • 我知道它的剂量,并且我阅读了几个“预加载 HowTos”,但我无处可阅读有关缺点的信息。如果没有缺点,默认情况下它将随许多 Linux 发行版一起提供 - 但据我所知 - 事实并非如此。 (4认同)
  • 如果 gnome 终端启动时间超过 2 秒,则应升级硬件... (3认同)
  • 性能没有“降低”,而是“提高”。这就是使用预加载的全部意义。也许这只是一个错字。 (2认同)