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


110

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

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


6
感谢您提出的有用问题。我想知道,这是神话吗?
赛义德Zarinfam 2012年

1
cpu的使用和电池对于某些情况可能是一个缺点。bugs.launchpad.net/ubuntu/+source/preload/+bug/481861
Mateo

1
好问题。某些发行版确实预加载了一些内容,例如基本操作系统(这是我在笔记本电脑上运行的操作系统,因为晚会比Ubuntu的统一速度要快得多)。

1
只是一个猜测:默认情况下不包括它的原因之一是它并非在所有系统上都可用(其硬件要求可能与标准要求不同)。
don.joey

2
brainstorm.ubuntu.com/idea/1122此处的帖子表明它“作为具有root特权的守护程序运行”。这可能是一个安全问题,也有头脑风暴想要将其默认包含为brainstorm.ubuntu.com/idea/14092
Mateo,

Answers:


65

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

首先,谷歌浏览器。现在,每次引导仅打开一次浏览器,也许打开两次(对我来说,我是一名Web开发人员)。Chrome及其相关库保留在内存中,因为我一直在使用它。即使关闭所有Chrome浏览器窗口,它仍然在后台运行。因此,所有专用于保存Chrome的预加载副本的内存都是完全浪费的。从来没有(或者很少)卸载过。对于普通用户而言,这对于许多应用程序都是正确的。Office用户几乎总是会打开其电子邮件应用程序。因此,由于他们仅每天打开一次电子邮件应用程序并将其保持打开状态,因此完全浪费了启动时间上的少量节省。

第二个例子是耙。作为一个相信测试的红宝石开发人员,我会努力完成。耙子运行,执行几秒钟-几分钟,然后退出。预加载可以帮助我加快日常工作,因为它可以提前加载rake及其所需的库(可能非常广泛)。因此,耙的运行有很多起止点。在几个小时的时间内用来加速400或500次耙子发射的额外夯是完全值得的。

所以它不是默认启用的原因是因为它的实际提高业绩的能力在很大程度上是基于如何使用您的系统。对于某些人来说,这将是负面的,而对于另一些人来说,则是积极的。

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


1
另外,使用预加载会减慢启动速度。预加载的内容越多,启动和运行系统所需的时间就越长。现在,想象一下您要做的就是启动,在备忘录上写一个句子,然后立即关闭。您甚至在等待甚至能够写备忘录,因为您的系统正在预加载最有可能与该任务无关的内容。因此,从某种意义上说,预加载(通常)是一把双刃剑。
F-3000

1
预加载实际上不是这样工作的……它给内核提示,例如“嘿,当您在缓存中时,将其加载到缓存中,我很快就会需要它”,而内核则这样做了。因此,它实际上并没有像您描述的那样使用RAM。例如,可能会发生两件事:加载到缓存中会推出您即将使用的应用程序-当您回到应用程序时,这会导致短暂的冻结和硬盘活动。
hurikhan77 '16

1
第二:如果预加载预测您的使用模式错误(如果您不断加载应用程序,这很可能是这种情况),它将缓存内容,这些内容稍后将再次从RAM中推出,而本身又将缓存从您可能具有的RAM中推出更好地使用。但是最后,它仅像vfs缓存一样“消耗” RAM-因此它实际上是可丢弃的RAM,因此在某种程度上可以“释放RAM”。但是,在编写时,它确实会与“常规缓存”竞争。
hurikhan77 '16

1
鉴于上面提到的coteyr和@ hurikhan77,您是否同意Preload是一种反作用有效的方法,可以帮助提高旧的低RAM(启动时免费提供约800 MB)台式机的速度。仅供参考,在这些翻新的盒子上激活Preload会给内核虚拟内存管理器带来很多工作而几乎没有改进?
tuk0z

2
@lliseil如果那800 MB确实是未分配的RAM,则预加载可能会有所帮助...但是,如果有更多的RAM,它可能会更好。这又意味着:预加载将与需要大量内存的应用程序冲突,您可能稍后再启动它们。此处可能需要降低交换性,这可能会使一旦要使用过多的RAM时就无法使用预加载。
hurikhan77

21

Bountier Saeed Zarinfam在2012年9月5日提出的问题:

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

  • 如果您有SSD,则 没有真正的预加载需求
    • 这是因为SSD提供随机访问时间比硬盘快得多,因此IMO中的“预加载”二进制文件/依赖关系是一种浪费。
    • 这样的基本缺点是预加载 “使用”了额外的内存,却没有提供明显的好处。

20
这不涉及OP的问题,因为使用预加载有任何缺点吗?其次,您已经形成了意见,对“预加载”进行了说明,然后将“ SSD”引入了方程式。您实际上要在什么时候回答问题?
Ringtail 2012年

12

Preload是一个“自适应预读后台驻留程序”,它在系统后台运行,并观察您最常使用的程序,并对其进行缓存以加快应用程序的加载时间。通过使用Preload,可以使未使用的RAM发挥良好的作用,并提高台式机系统的整体性能。

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

预加载可以大大缩短应用程序启动时间;由于大多数现代计算机都有大量可用内存,因此Preload可充分利用此RAM。1个

话虽如此,预加载似乎是一个伟大的实用工具,也许是。

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

从技术角度来看,预加载是通过将数据从硬盘移动到RAM来进行的,这使大多数硬盘在不使用时进入睡眠模式,然后在需要时重新启动。因此,向上/向下旋转驱动器将导致“加载/卸载周期”计数和“开机时间”计数增加,这将缩短驱动器的寿命。

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

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

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

预加载设计的另一个固有问题是,由于应用程序启动的相对松散的相关性,导致高方差和低预测一致性。尽管我们成功地建立了一个模型来跟踪应用程序相关性,但是与计算机工作的时间尺度相比,应用程序启动是非常罕见的事件,但应用程序级预取方案却被认为在实际上无限的时间内会消耗大量的预取内存。该内存可用于改善短期缓存行为。

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

1资料来源: techthrob

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


1
谢谢您的回答,米奇。这些也是我的想法。特别是在笔记本电脑上,预加载可能是个问题。但是,我仍然很想找到有关Ubuntu团队为何决定拒绝预载的官方消息/讨论。
Glutanimate

9

缺点?没有了!

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

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

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

文章

如果您经常使用FirefoxGimp等常见应用,则会发现加载时间大大缩短。Preload是一个后台运行的后台驻留程序,无论如何不会破坏您的桌面。Ubuntu用户可以使用以下命令安装预加载:

sudo apt-get install preload

结果:

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

参考


3
我知道它的用处,并且阅读了一些“预加载方法”,但是我看不到任何关于缺点的信息。如果没有退缩,则默认情况下它将与许多Linux发行版一起提供-但据我所知-事实并非如此。
Paradiesstaub'3

1
性能不是降低,而是提高。这就是使用预加载的重点。也许只是错字。
马可(Marco)2012年

2
您的图表看起来不错,但缺少重要信息。这将100%适合销售人员的简报演示,但这是“不良统计数据”的一个示例。这些数字从何而来?用什么协议记录它们?是单个快照吗?样本中涉及多少台机器?什么是硬件?预加载程序是如何配置的?

1
@Ringtail:你是对的。您不是该图的作者。但是,如果您单击文章中的所有链接,则会出现在Techthrob.com页面上,该页面上应该已经托管了由程序作者撰写的文章。但是该页面不见了。因此,只有来源:作者的论文。

2
如果gnome终端启动需要2秒钟以上的时间,则应该升级硬件...
Peter and the wolf
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.