在现代系统上,使用磁盘压缩会给我更好的整体性能吗?

看起来,CPU的增长已经超过了一段时间的磁盘速度。 假设使用现代双核Intel / AMD CPU和单个普通SATA磁盘的台式机或笔记本电脑,将在大多数磁盘上进行压缩,从而获得更好的整体性能? 减less的磁盘带宽基本上是弥补了增加的CPU负载? 我相信真正的答案是“这取决于你在做什么”。 通过问这个问题,我希望有一个人已经完成了这个问题,并给出一些例子或陷阱。

是的,在特定情况下,磁盘压缩可以提供更好的性能:

  • 您的应用程序受到磁盘吞吐量的限制:现代CPU和(de)压缩algorithm的运行带宽要比现代磁盘长得多。 在磁盘盘片数据量的任何减less是在这种情况下的胜利
  • 对磁盘盘片上的数据进行(去)压缩的时间比传输时间的差异花费的时间要less,并且您有CPU周期以备用

ZFS和Btrfs在最近的绿地devise都包含了压缩规定,这是有原因的。

在HPC领域,当一个应用程序从内存到磁盘检查点时,CPU通常根本没有任何用处。 这一次基本上是纯粹的开销。 任何使用CPU来减less这个时间是一个胜利。

磁盘压缩永远不会给你更好的性能。

它可能会给你几乎没有罚款,由于现代CPU的快速,但这是一个完全不同的事情。

您认为必须从磁盘传输更less的数据可以提高性能; 但大数据传输几乎不是I / O瓶颈:真正的瓶颈是寻找时间和延迟。 现代硬盘在大文件持续数据传输方面速度非常快,减慢速度的是从整个磁盘传输的很less的数据。

一些场景:

  • 媒体文件。 这些通常已经被自己压缩(JPEG,MPEG,MP3),所以在文件系统级压缩它根本不会有帮助; 它会恶化的东西,因为CPU资源已经需要编码/解码它们。
  • 数据库。 这些通常是随机读取/写入的,所以压缩它们不仅没有任何好处,而且还会降低性能,因为DBMS无法正确识别磁盘上需要访问的物理数据的位置存储。
  • 页面文件。 这通常是相当大的,但操作系统需要解决非常小的数据块,并需要做到非常精确(“在物理地址X读取4K”); 压缩它通常是不可能的,但即使是这样,这也是完全浪费时间和资源:由于这个文件的“完全随机数据”性质,它将提供几乎为零的压缩。

在每个应用程序级别上已经有一些具体的情况,例如video压缩 – 一个无法从dsk读取原始高清质量video的系统,而不是读取压缩信息,并使用内存和CPU功率进行扩展。 没有理由也不可能是其他具体情况的情况,但是这可以在应用程序级别上得到最好的处理,所以使用的压缩方法根据其目的进行了优化。

请记住,如果整个吞吐量增加,解压缩的性能开销是值得的,所以这个想法不应该被忽略 – 我认为我们还没有准备好通用性能提升压缩,但它在理论上是可能的交换一个资源你有多余的(CPU和内存)在其他地方提升(从硬盘读取的总数据)

你回答了你自己的问题! 这取决于的确是答案。

我能做的最好的概括是:

如果你有一个数据库应用程序是磁盘读取受限 ,那么是的! 性能更好。

我不认为这是大多数在桌面/笔记本电脑上进行的活动。

在我的域(SQL Server)中,我知道如果使用压缩,那么在严重读取负载下报告数据库可以获得更好的性能。 我知道对于MySQL也是如此。

微软在SQL Server 2008中有一个关于它们压缩function的白皮书 。除非你是一个DBA,否则不是很清楚,但是这里有一个图表支持我的概括:

替代文字

CPU速度一直比磁盘速度快。 恕我直言,压缩将增加开销,从而降低性能。

我昨天正在读这个类似于OSX的东西,它是对文件系统的压缩 – 基本上答案是围绕你要压缩的东西 – 在这个例子中,他是在谈论“FAT”数据; 文件结构,属性,元数据等,当存储在一起时,可以压缩以节省空间,更快地读入到CPU比寻找头到处find每个文件的数据… …

无论如何,值得一读,如果你正在考虑这样的事情: – P

但压缩不仅仅是节省磁盘空间。 这也是交易CPU周期以减lessI / O延迟和带宽的典型例子。 在过去的几十年中,CPU性能变得更好(计算资源更丰富 – 稍后更多),速度比磁盘性能提高得多。 现代硬盘寻道时间和旋转延迟仍以毫秒为单位进行测量。 在一毫秒内,2GHz的CPU会经历200万个周期。 当然,还有实际的数据传输时间需要考虑。

当然,在整个操作系统和硬件上的几个级别的caching大大地隐藏了这些延迟。 但是这些位必须在某个时刻从磁盘上移除以填充这些caching。 压缩意味着必须传输更less的位。 在正常使用情况下,由于现代多核Mac上的CPU资源几乎可笑,所以从磁盘传输压缩有效负载并使用CPU将其内容解压缩到内存所需的总时间通常远远小于时间它将需要以未压缩的forms传输数据。

这就解释了传输更less数据的潜在性能优势,但使用扩展属性来存储文件内容实际上可以使事情变得更快。 这一切都与数据局部性有关。

如果说有一件事情比传输大量数据的速度慢得多,那么它将把磁盘从磁盘的一部分移到另一部分。 每一个动作都意味着磁头开始移动的时间,然后停下来,然后确保它正确地放置在所需的位置,然后等待旋转的磁盘将所需的位放在下面。 这些都是真实的,物理的,dynamic的部分,而且他们跳舞的速度和效率都非常棒,但是物理学有其局限性。 这些运动是真正的性能杀手,如硬盘旋转存储。

HFS +卷格式将所有关于文件元数据的信息存储在磁盘上的两个主要位置:存储文件date,权限,所有权和其他东西的目录文件,以及存储“命名分支“。

HFS +中的扩展属性在属性文件中被实现为命名的分支。 但是,与资源分支不同,资源分支可能非常大(达到文件系统支持的最大文件大小),HFS +中的扩展属性“inline”存储在“属性文件”中。 实际上,这意味着每个属性约有128个字节的限制。 但是这也意味着磁盘头不需要去另一部分磁盘来获取实际的数据。

正如您可以想象的那样,组成Catalog和Attributes文件的磁盘块经常被访问,因此比大多数情况下更有可能在caching中。 所有这些共同完成一个文件的完整存储,包括其数据中的元数据,在B树结构化的目录和属性文件中,整体性能的胜利。 即使是一个八字节的有效载荷,只要它仍然小于正常数据存储的分配块大小,并且只要它们都属于“属性文件”中的B树节点无论如何,操作系统必须全部阅读。

Snow Leopard减less了磁盘空间(例如去除不必要的本地化和“designable.nib”文件)还有其他重要的贡献,但HFS +压缩是迄今为止技术上最有趣的。

来自: http : //arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/3

微软磁盘压缩是丑陋的旧的。 与80年代的ARJ方法的比率相差无几。 但是,即使是微软的压缩能够在非常慢的(笔记本电脑)硬盘上提供更好的性能。 特别是如果有足够的RAM用于写入caching并防止过多的写入。

写入过程是任何随机访问使能的压缩方法的弱点。

所以,如果你想压缩驱动器,你最好转向某种Linux。

磁盘压缩也非常适合RAM驱动器,不需要告诉你为什么。

疑惑。 压缩和解压缩不仅涉及磁盘和CPU, 特别是会有大量的内存数据传输(除了没有压缩的标准传输开销之外),这将在页面错误方面真的受到伤害。

总之,不,你可能不会获得performance。

虽然压缩会提高存储的性能,但会显着降低处理器速度。 这可能归结为你要解压的文件types。 如果你只是处理word,excel和其他基本的文件types,然后继续前进,压缩它们。 如果个人档案较大,你将会牺牲更多的时间。