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

kby*_*yrd 10 performance compression hard-drive

似乎 CPU 的增长已经超过了磁盘速度一段时间。假设台式机或笔记本电脑配备现代双核 Intel/AMD CPU 和单个普通 SATA 磁盘,对大多数磁盘进行压缩是否会提供更好的整体性能?基本上减少的磁盘带宽是否足以弥补增加的 CPU 负载?我确信真正的答案是“这取决于你在做什么”。通过提出这个问题,我希望有人做过这个管道并给出一些例子或陷阱。

Phi*_*ler 9

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

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

ZFS 和 Btrfs(两者都是最近的全新设计)都包含压缩规定是有原因的。

在 HPC 空间中,当应用程序从内存到磁盘检查点时,CPU 经常根本不做任何有用的事情。这一次基本上是纯粹的开销。任何使用 CPU 来减少这个时间都是一个胜利。

  • 媒体流*不是*一个引人注目的存储系统级压缩应用程序。数据应该已经以更好的特定于应用程序的格式进行了压缩。 (5认同)

Mas*_*imo 6

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

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

您认为不必从磁盘传输较少的数据可以提高性能;但大数据传输几乎从来都不是 I/O 瓶颈:真正的瓶颈是寻道时间和延迟。现代硬盘对大文件的持续数据传输速度非常快,而降低它们速度的是来自整个磁盘的少量传输。

一些场景:

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

  • 从不是一个非常狭隘的词。来自磁盘和通过 pci 总线的原始带宽通常是我所做的一些工作的瓶颈。压缩对性能有很大帮助,特别是如果您已经采取措施消除您提到的其他一些瓶颈 (3认同)
  • 磁盘 I/O 几乎总是数据库的瓶颈 (2认同)