在现代系统上,使用磁盘压缩是否可以使我获得更好的整体性能?


10

看起来CPU的增加已经超过了磁盘速度一段时间。假设台式机或笔记本电脑具有现代双核Intel / AMD CPU和单个平均SATA磁盘,那么对大多数磁盘进行压缩是否会带来更好的整体性能?基本上,减少的磁盘带宽是否足以弥补增加的CPU负载?我确定真正的答案是“这取决于您在做什么”。通过问这个问题,我希望有一个完成此工作的人,并提供一些示例或陷阱。


定义性能?随着速度的增加或空间的增加?您可能不会注意到任何速度提高,但肯定会发现备用字节有用!:-p
Christopher Lightfoot

Answers:


9

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

  • 您的应用程序受磁盘吞吐量限制:长距离传输中,现代CPU和(解压缩)算法可以以比现代磁盘更高的带宽运行。在这种情况下,从磁盘磁盘移入或移出磁盘的数据量的任何减少都是一个胜利。
  • 与传输时间之差相比,(去)压缩要进入磁盘盘的数据所需的时间更少,并且您有很多CPU周期可以节省

ZFS和Btrfs(这都是最近的绿色设计)都有压缩的规定是有原因的。

在HPC空间中,当应用程序从内存到磁盘进行检查点时,CPU通常根本没有做任何有用的事情。这段时间基本上是纯开销。任何使用CPU来减少时间的方法都是成功的。


流媒体磁盘可能是唯一受益的地方,因为块大小足够大。*标准操作系统磁盘将始终受到打击。
Ryaner

5
媒体流不是用于存储系统级压缩的引人注目的应用程序。数据应该已经以一种更好的特定于应用程序的格式进行了压缩。
·米勒

5

磁盘压缩永远不会为您提供更好的性能。

由于使用了快速的现代CPU,它可能几乎不会给您带来任何损失,但这是完全不同的事情。

您假设必须从磁盘/向磁盘传输较少的数据可以提高性能;但是大数据传输几乎从来都不是I / O瓶颈:真正的瓶颈是寻道时间和延迟。现代硬盘在以大文件持续进行数据传输时确实非常快,但减慢速度的却是来自整个磁盘的少量传输。

一些方案:

  • 媒体文件。这些文件通常已经被单独压缩(JPEG,MPEG,MP3),因此在文件系统级别进行压缩完全无济于事。相反,这会使情况变得更糟,因为已经需要CPU资源对其进行编码/解码。
  • 数据库。通常,这些数据是在很少的随机突发中读取/写入的,因此压缩它们不仅根本没有好处,而且还会降低性能,因为DBMS无法正确识别需要访问的物理数据在磁盘上的哪个位置。存储。
  • 页面文件。这通常很大,但是OS需要在其上寻址非常小的数据块,并且需要非常精确地执行此操作(“在物理地址X处读取4K”);压缩通常是不可能的,但是即使这样,也将完全浪费时间和资源:由于该文件的“完全随机数据”性质,它将提供几乎为零的压缩。

1
那么从磁盘传输较少的数据没有好处吗?
2009年

编辑回答:-)
Massimo,

3
从来都不是一个狭narrow的词。从磁盘到通过pci总线的原始带宽通常是我所做工作的瓶颈。压缩可以极大地提高性能,特别是如果您已采取措施消除您提到的其他一些瓶颈,那么
詹姆斯·瑞安(JamesRyan)2009年

1
我也会犹豫地说“从不”。可能存在磁盘带宽成为瓶颈的情况。但是您可能是正确的,这不是典型的情况。
sleske

2
磁盘I / O几乎始终是数据库的瓶颈
Nick Kavadias 09年

3

在某些情况下,已经在每个应用程序级别执行了此操作,例如视频压缩-无法从dsk足够快地读取原始HD品质的视频的系统可以读取压缩的信息,并使用内存和CPU功能对其进行扩展。没有理由在其他特定情况下也不会出现这种情况,但这可以在应用程序级别得到最佳处理,因此可以根据目的优化使用的压缩方法。

请记住,如果整个吞吐量都增加,解压缩的性能开销是值得的,所以这个主意不应该被抛弃-我不认为我们已经准备好进行通用性能提升压缩,但是从理论上讲这是可能的交易您拥有(CPU和内存)过多的资源来提升其他资源(从硬盘读取的总数据)


3

你是在自问自答!这确实是答案。

我能做出的最好的概括是:

如果您的数据库应用程序的磁盘读取受到限制,那么可以!性能更好。

我认为您在台式机/笔记本电脑上进行的大多数活动都不是这种情况。

在我的域(SQL Server)中,我知道如果使用压缩,则在读取负荷较重的情况下报告数据库可以获得更好的性能。我知道mysql也是如此。

Microsoft拥有有关 SQL Server 2008中其压缩功能的白皮书。除非您是DBA,否则阅读不浅,但这是一个支持我的概括的图表:

替代文字


0

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


但这取决于您在做什么:-)
乔什(Josh)2009年

为何如此?开销增加就是开销增加。您不能通过花钱来购买钱(除非是假币,但这是另一回事)。
Mark Henderson

无论文件是否由于压缩而变小,压缩和解压缩文件的功能都会带来性能开销。从磁盘将文件读取到内存时,必须对其进行解压缩。从内存写入磁盘时,必须对其进行压缩。
joeqwerty

3
但是,如果您的cpu无所事事,而磁盘带宽成为瓶颈,那么cpu最终将承担更多的工作,但总体性能会提高。这实际上取决于您要检索的数据类型以及如何处理它。
JamesRyan

0

关于OSX,我读过类似昨天的内容,它是对文件系统的压缩-基本上,答案围绕您要压缩的内容-在本例中,他谈论的是“ FAT”数据。文件结构,属性,元数据等在存储在一起时可以进行压缩以节省空间,并且比在各处查找头部来查找每个文件的数据要快,因此可以将其读入cpu ...

无论如何,如果您正在考虑这样的事情,那么值得一读:-p

但是压缩不只是节省磁盘空间。这也是交易CPU周期以降低I / O延迟和带宽的经典示例。在过去的几十年中,CPU性能以比磁盘性能提高快得多的速度获得了更好的性能(并且计算资源更加丰富,稍后再介绍)。现代硬盘的查找时间和旋转延迟仍以毫秒为单位。一毫秒内,一个2 GHz CPU经历了200万个周期。然后,当然,仍然需要考虑实际的数据传输时间。

当然,整个操作系统和硬件的多个缓存级别可能会掩盖这些延迟。但是这些位必须在某个时候从磁盘上移出以填充这些缓存。压缩意味着必须传输的比特更少。考虑到现代多核Mac在正常使用情况下CPU资源的可笑程度过高,从磁盘上传输压缩的有效负载并使用CPU将其内容解压缩到内存所需的总时间通常仍将远远少于该时间。需要以未压缩的形式传输数据。

这说明了传输较少数据可能带来的性能优势,但是使用扩展属性存储文件内容实际上也可以使事情变得更快。这都与数据局部性有关。

如果有一件事使硬盘减速的速度大于传输大量数据的速度,那么它的头就从磁盘的一部分移到了另一部分。每次移动意味着磁头开始移动,停止,然后确保将其正确定位在所需位置上,然后等待旋转磁盘将所需钻头放在其下方的时间。这些都是真实的,物理的,运动的部分,令人惊奇的是它们像他们一样快速有效地进行舞蹈,但是物理有其局限性。这些运动是硬盘等旋转存储的真正性能杀手。

HFS +卷格式将有关文件(元数据)的所有信息存储在磁盘上的两个主要位置:目录文件(存储文件日期,权限,所有权和其他内容)以及属性文件(存储“命名叉”) 。”

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

可以想象,构成目录和属性文件的磁盘块经常被访问,因此比大多数磁盘块更可能位于某个地方的高速缓存中。所有这些都有助于使文件的完整存储(包括其数据中的元数据)在B树结构的Catalog和Attributes文件中成为整体性能的胜利。只要它仍然小于常规数据存储的分配块大小,并且只要它全部适合于属性文件中的B树节点,那么即使是膨胀到25个字节的8字节有效载荷也不必担心。无论如何,操作系统必须完整阅读。

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

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


我之前曾考虑过,但是那篇精确的文章促使我发表了这个问题。
kbyrd

大声笑。有趣的是:-p
Christopher Lightfoot

0

Microsoft磁盘压缩太旧了。它的比率几乎无法与80年代的ARJ方法相提并论。但是,即使Microsoft的压缩功能也可以在非常慢的(便携式)硬盘驱动器上提供更好的性能。尤其是如果有足够的RAM用于写缓存并防止过多的写操作。

写过程是任何启用随机访问的压缩方法的弱点。

因此,如果您需要压缩驱动器,则最好改用某种Linux。

磁盘压缩也非常适用于RAM驱动器,无需告诉您原因。


1
您能否添加一些支持数据,或者在基于Windows和Linux的解决方案之间进行性能比较?
psarossy 2013年

是的,如果您打算使用3.5年的旧线程,则最好带一些新的困难事实。
MDMarra 2013年


-1

简而言之,不,您可能不会获得性能。

压缩虽然可以提高存储性能,但会大大降低处理器速度。这可能取决于您要解压缩的文件类型。如果您只处理word,excel和其他基本文件类型,请继续进行压缩。如果单个文件比较大,那么您将浪费更多时间。

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.