当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

我想知道使用preload有什么缺点?如果不存在任何缺陷,preload将默认启用,所以我猜这里有一些。

好的,你需要更多的RAM,但是大多数人拥有更多的内存,然后Ubuntu需要 – 那么使用preload有什么缺点?

最佳解决方案

简而言之,Preload不适合每个人。如果您打开很多应用程序或库,这是非常棒的。如果偶尔加载应用程序或库,这是有害的。我将用我实际使用的两个例子(是的,我使用预加载)。

首先,Google Chrome。现在浏览器每次启动只能打开一次,也许两次(对我而言,我是一名Web开发人员)。 Chrome及其相关的库保留在内存中,因为我一直在使用它。即使当我关闭所有的 chrome 窗户,它仍然在后台做它的事情。因此,所有专门持有Chrome预载副本的内存都是完全浪费。它从来没有(或很少)卸载。对于普通用户来说,这对于大量的应用程序来说是正确的。 Office用户几乎总是会打开他们的电子邮件应用程序。因此,启动时间节省的小部分完全被浪费掉了,因为他们每天只能打开一次电子邮件应用程序,并且保持打开状态。

第二个例子是耙子。作为相信测试的红 gems 开发人员,我运行了一个TON。耙运行,执行几秒钟 – 分钟然后退出。预加载有助于加快我的日常工作速度,因为它会提前加载耙和其所需的库(可能非常广泛)。所以有很多启动和停止耙运行。用于加速在几个小时的时间内进行400或500次耙机的额外内存是完全值得的。

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

最后,即使你没有使用它,也要预加载消耗内存。所以如果你不经常启动应用程序,那么实际上可能会让你的整个系统慢一点,因为没有这个ram可用于其他类型的缓存。请记住,即使你拥有32G的ram,Linux也会尝试尽可能地使用它,因为它可以缓存数据以加快你的交互。通过使用预加载,您可以减少一些空闲内存。即使它只有一点点,在保持运行的一个月中,您保存启动镶边1次所需的2秒钟时间可能需要60秒。

次佳解决方案

Question asked by bountier Saeed Zarinfam on September 5, 2012:

Hi all, I want to know, Is it a myth? Does [preload] really improve my performance? What are drawbacks of using it? I have a laptop with this specification (Core i5 CPU, 4GB RAM, 128GB SSD Hard). Thank you so much.

  • 如果您拥有SSD,则无需预加载

    • 这是因为SSD提供的随机访问时间比硬盘快得多,所以”pre-loading”二进制文件/内存中的依赖项是浪费,IMO

    • 那么基本的缺点是预加载是”using”额外的内存而没有提供实际的好处。

第三种解决方案

Preload is an “adaptive readahead daemon” that runs in the background of your system, and observes what programs you use most often, caching them in order to speed up application load time. By using Preload, you can put unused RAM to good work, and improve the overall performance of your desktop system.

Don’t expect to see a drastic change in performance right away. Also, if you’re just opening/closing applications repetitively, your computer will store those files in cache anyway (this is called a “warm” load), so you won’t see any difference in speed there. You will, however, see a speed improvement if, for example, you use a program intermittently; these programs will start up faster than without Preload.

Preload can provide a great improvement in application start up time; since most modern machines have a good deal of memory to spare, Preload puts this RAM to good use.1

现在有人说,预压力似乎是一个很好的用途,它可能是。

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

在更技术性的方面,预加载通过将数据从硬盘移动到RAM来实现,这使得大多数硬盘在不使用时进入睡眠模式,然后在需要时旋转备份。因此,加/减驱动器会导致加载/卸载循环计数以及Power-On时间计数增加,这将缩短驱动器的使用寿命。

We designed and implemented preload, a Markov-based adaptive prefetching scheme that works on application-level predictions. Moreover, preload is implemented in the userspace and does not change the application run-time environment in any sense. This is the first work experimenting with file-system prefetching at this level as far as we know.

Our experimental results show promising improvements on application start-up time compared to cold caches, and a decent hit rate compared to a na¨ıve prediction algorithm.

However, being in user-space introduces major obstacles into making preload a competitive solution to the startup-time problem. In particular, not having full information about applications’ I/O requests, and lack of strong communication channels with the page-cache subsystem degrades preload’s effectiveness drastically, especially under tight memory conditions.

Another inherent problem with the preload design is high variance and low prediction confidence caused by the relatively loose correlation of application start-ups. While we successfully build a model to track application correlations, the fact that application launches are very rare events compared to the timescale that computers work on, an application-level prefetching scheme is condemned to consume huge prefetching memory over practically infinite periods of time. This memory can be used to improve short-term cache behavior.

Finally, we come up with a set of recommendations for system developers on how to improve boot-time, login-time, and application startup-time without falling back to a prefetcher integrated with the cache subsystem in the kernel. Of course, a file-based prefetcher in the kernel can improve on top of that.2

1来源:techthrob

来源:Preload – An Adaptive Prefetching Daemon by Behdad Esfahbod – A thesis submitted in conformity with the requirements for the degree of Master of Science – Graduate Department of Computer Science – University of Toronto Copyright (c) 2006 by Behdad Esfahbod.

第四种方案

缺点?没有了!

用户打开应用程序的性能提高。我在我的系统以及”read-ahead”上使用了多年,并且没有问题。用于预加载的bug page也没有暗示任何缺点。

预加载监视用户运行的应用程序,并通过分析这些数据预测用户可能运行的应用程序,并将这些二进制文件及其依赖关系提取到内存中,以缩短启动时间。

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

参见article

如果您经常使用Firefox或Gimp等常用应用程序,您会发现一些重大改进的加载时间。预加载是一个在后台独立运行的守护进程,无论如何不会中断您的桌面。 Ubuntu用户可以用以下方式安装预加载:

sudo apt-get install preload

结果:

ram,cache,preload,ubuntu

ref

第五种方案

看看这个document by Lorenzo Colitti about analyzing and improving GNOME startup time

Coletti不是preload的作者。在他的文件中他提到了the preload project page on Sourceforge.net

基本上有两个原因。

  1. 这是一个GNOME开发。 GNOME不受欢迎,正如Coletti在本文中指出的那样,其他环境的开发人员认为这是错误的方法。

  2. preload针对单用户性能,而不是多用户。因此,该项目的范围与所有发行版的范围不匹配。

阅读第9和第9页。科利蒂的文件10。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/734.html,未经允许,请勿转载。