解压缩的速度和什么有关? 您所在的位置:网站首页 steam解压速度和什么有关 解压缩的速度和什么有关?

解压缩的速度和什么有关?

2023-10-19 18:28| 来源: 网络整理| 查看: 265

这是一个复杂的问题,先简单回答一下,都有关系,具体和整个系统有关。

通常来说压缩和解压缩都是计算密集型。但是系统的瓶颈具体在哪里根据具体的系统和具体应用进行分析。解压的过程如下图:

硬盘----------(1)----------> (2)内存+CPU-----------(3)----------->内存

CPU 先从硬盘中读取文件,然后在内存中进行解压,然后将解压的文件写到内存中,这里主要关注3个部分的性能。

(1). 硬盘取数据以及硬盘数据传输到内存的性能

(2). CPU解压的性能

(3). 解压数据传输到内存的性能

先说(3) 对于现在的计算机系统,一般服务器都会有几百G的容量和几百GB/s的内存带宽,这种情况下内存容量和内存带宽是足以支持解压而不成为瓶颈的。

再说(2), 关于解压的性能我们可以通过把文件预存到内存中进行测试,以排除硬盘成为瓶颈的影响,解压性能和具体的算法和数据有关。通常来说压缩率高的解压慢,压缩率低的解压快(压缩率=未压缩大小/压缩后大小)。比如说google的snappy算法(google/snappy),在core i7上,单核性能能够达到500MB/s。本人做的测试多个测试大部分也能达到百MB/s的级别甚至GB/s级别。对于压缩率更大的压缩算法像GZIP,解压速度会较低,但也能达到100MB/s。到用到CPU的多核多线程时,性能会有所提高。具体的解压速度可以随便参考找篇论文参考一下(比如说:Sitaridi E, Mueller R, Kaldewey T, et al. Massively-parallel lossless data decompression[C]//Parallel Processing (ICPP), 2016 45th

International Conference on. IEEE, 2016: 242-247.),我找个图贴一下

最后说说(3),一般情况下硬盘(机械磁盘)会成为系统的瓶颈。通常SATA接口的磁盘传输速率只有几十M/s,即使是做成RAID,也是很难达到GB/s的级别。对比于多核CPU解压性能,磁盘取数和传输往往会成为瓶颈。但对于固态盘来说,PCIe接口的可以达到GB/s的级别。再经过数据切分和高速接口(PCIe GEN4或者OpenCAPI)连接,速度甚至能达到25GB/s,在这种情况下,CPU也就成为瓶颈了。

现在有很多用FPGA/GPU 加速解压算法的,都是为了解决CPU计算瓶颈的问题,当然这是基于数据库转向内存和NVMe的背景下的。至于为什么CPU会慢,这是和算法有关。有些算法需要很复杂的哈希算法,有些算法查找的上下文具有强依赖关系,有些算法会引起频繁的cache miss和TLB miss。有空再更。。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有