CPU自适应压缩

lio*_*ori 10 compression performance

假设我需要通过相当快的网络将一些数据从一台计算机发送到另一台计算机……例如标准的 100Mbit 连接(~10MB/s)。我的磁盘驱动器是标准 HDD,因此它们的速度介于 30MB/s 和 100MB/s 之间。所以我想动态压缩数据可能会有所帮助。

但是...我不想被CPU限制。如果我选择 CPU 密集型算法,则传输实际上会比不压缩时慢。

这对于像 GZIP 和 BZIP2 这样的压缩器来说很困难,因为你通常为整个传输设置一次压缩强度,而我的数据流有时很容易,有时很难压缩——这使得过程不是最理想的,因为有时我没有使用完整的 CPU,有时带宽未得到充分利用。

是否有一个压缩程序可以适应当前的 CPU/带宽并达到最佳状态,以便传输最佳?非常适合 Linux,但我仍然对所有解决方案感到好奇。我很想看到与 GZIP/BZIP2 解压缩器兼容的东西,但这不是必需的。

所以我想优化总传输时间,而不仅仅是要发送的字节数。

另外我不需要实时解压...实时压缩就足够了。目标主机可以稍后在其空闲时间处理数据。我知道这不会有太大变化(压缩通常比解压缩更占用 CPU),但是如果有一个解决方案可以使用这个事实,那就更好了。

每次我传输不同的数据时,我真的希望尽可能快地进行这些一次性传输。因此,由于更强的压缩,我不会从更快地进行多次传输中受益。

谢谢,

sml*_*sml 3

这是当前的研究主题 - 主要是在传感器网络领域,其目标是最小化功耗,而不是最大化吞吐量。然而,自适应压缩的原理是相同的。

这是南加州大学一位教授最近发表的一篇论文。

也许你可以尝试实现他的算法?我确信会有很多人对良好的实施感兴趣。