Performance 给定磁盘速度慢且有多个内核,动态解压缩对性能有意义吗?

Performance 给定磁盘速度慢且有多个内核,动态解压缩对性能有意义吗?,performance,architecture,compression,multicore,disk,Performance,Architecture,Compression,Multicore,Disk,过去,磁盘压缩是以牺牲效率为代价来增加存储空间的,但那时我们都使用单处理器系统 现在有了额外的内核,可以在处理数据的同时进行解压缩工作 对于I/O绑定的应用程序(尤其是读取量大的顺序数据处理),可能仅通过将压缩数据读取和写入磁盘来提高吞吐量 有没有人有任何经验来支持或拒绝这个猜想?是的!事实上,现在处理器的速度快得离谱,甚至对内存来说都是有意义的。(我相信IBM是这样做的。)我相信,目前的一些大型计算机甚至在CPU缓存上进行压缩。是的,这非常有意义。在基于NT的Windows操作系统上,人们普遍

过去,磁盘压缩是以牺牲效率为代价来增加存储空间的,但那时我们都使用单处理器系统

现在有了额外的内核,可以在处理数据的同时进行解压缩工作

对于I/O绑定的应用程序(尤其是读取量大的顺序数据处理),可能仅通过将压缩数据读取和写入磁盘来提高吞吐量


有没有人有任何经验来支持或拒绝这个猜想?

是的!事实上,现在处理器的速度快得离谱,甚至对内存来说都是有意义的。(我相信IBM是这样做的。)我相信,目前的一些大型计算机甚至在CPU缓存上进行压缩。

是的,这非常有意义。在基于NT的Windows操作系统上,人们普遍认为,正是由于这个原因,有时启用NTFS压缩比禁用NTFS压缩要快。多年来一直如此,多核应该只会让它更真实。

注意不要混淆磁盘寻道时间和磁盘读取速率。在硬盘(HDD)上寻找正确的磁道需要数百万个CPU周期(5-10毫秒或5-1000万纳秒)。一旦你到了那里,你可以每秒读取数十兆字节的数据,假设碎片率很低。对于固态驱动器(SSD),寻道时间比HDD低(35000–10000ns)

无论数据是否压缩在磁盘上,您仍然需要查找。问题是(压缩数据的磁盘读取时间+解压缩时间)<(未压缩数据的磁盘读取时间)。解压缩相对较快,因为它相当于用较长的令牌替换较短的令牌。最后,它可能归结为数据被压缩得有多好以及它最初有多大。如果你正在读一个2KB的压缩文件而不是一个5KB的原始文件,这可能不值得。如果您正在读取2MB压缩文件,而不是25MB原始文件,则很可能是这样


用一个合理的工作量来衡量。

我认为这还取决于你的压缩有多积极,而不是你的IO限制有多大

例如,DB2的行压缩功能针对IO绑定的应用程序:数据仓库、报告系统等。它使用基于字典的算法,不太激进——导致数据(存储中的表、索引以及内存中的索引)压缩50-80%。然而,它也倾向于将查询速度提高10%左右


它们本可以进行更为激进的压缩,但随后会受到性能的打击

我最近买了一张1TB的磁盘,价格不到15年前我花在500MB磁盘上的1/4。磁盘空间很便宜,而且越来越便宜。为什么要浪费处理器周期来压缩数据?因为等待磁盘旋转并读取数据要多花几个数量级的时间。通过最小化磁盘上存储的数据量,您可以减少从磁盘上传输数据所花费的时间;问题是,传输的数据比解压数据所花费的时间少,这能节省更多的时间吗?这是一个有趣的想法——参考基准会非常有帮助,我需要在思考这个问题时澄清寻找和阅读之间的区别。因此,我们的期望是,如果有大量的小数据文件,磁盘性能将由查找控制,压缩不会有帮助,但对于读取大文件可能会有帮助?这是我的期望,但需要测量才能确定。