其他大公司,包括 Twitter 和 Honeycomb,也分享了使用 zstd 获得的收益。 最近,Dan Luu 分析了推特存储节省的情况,并在推特上发起了一场对话: 我想知道 Yann Collect 创建 zstd 到底消除了多少浪费。 Cockcroft 回复说: 亚马逊从 gzip 切换到 zstd,压缩 S3 存储量减少了大约 30%,达艾字节的规模。 Honeycomb 首席开发者大使 Liz Fong-Jones 赞同切换到 zstd: 我们不把它用于列文件,因为那太慢了,但我们把它用于 Kafka(…),在生产环境中从 snappy 切换到 zstd 问题在于找到最佳契合点,在不产生 CPU 瓶颈的情况下减少当前的瓶颈,不过在这方面,zstd 也提供了最大的灵活性。
工具介绍 主要介绍 zstd 工具的作用和性能测试 我们称 Zstandard 或 Zstd 是一种快速的无损压缩算法,是针对 zlib 级别的实时压缩方案,以及更好的压缩比。 /facebook/zstd.git $ cd zstd; make; sudo make install 参数命令 $ zstd --help 使用方式 : zstd [args] [FILE $ zstd -dc file.zst # 查看zst压缩包 $ zstd -l file.zst $ zstdcat file.zst 高级用法 # 输出详细信息 $ zstd -v file $ zstd -v -d file.zst # 压缩一个文件同时指定压缩级别(19最高,0最低,3为默认) $ zstd -level file $ zstd -9 file # 使用更多的内存(压缩和解压时 )以达到更高的压缩比 $ zstd --ultra -level file # 解压缩为单进程 # 多个进程并发执行压缩过程(0表示自动使用所有CPU核心) $ zstd -T0 file $ zstd
,Arch Linux 维护人员比较了不同的压缩算法,最终计划使用 zstd 取代 devtools 中的默认压缩算法。 新的想法是使用 Facebook 的 zstd 算法,zstd 又叫 Zstandard,它是一种快速无损压缩算法,主要应用于 zlib 级别的实时压缩场景,并且具有更好的压缩比。 zstd 还可以以压缩速度为代价提供更强的压缩比,速度与压缩权衡可通过小增量进行配置。 经过一系列测试后 Arch 团队得出结论,理想的 zstd 级别将是“-18”,`zstd -c -T0 -18 -`相比`xz -c -z -`的优势是: 压缩时速度大幅提高 解压速度大幅提高 稳定、 目前 zstd 已经处在项目主干上,等待发布。
此外,ZSTD算法还具有更好的可扩展性和鲁棒性,可满足大规模分布式系统的需求。因此,京东ES支持ZSTD压缩算法上线,将为用户带来更高的性能、更低的成本和更好的体验。 在2022年10月份《ElasticSearch降本增效常见的方法》一文中曾提到过zstd压缩算法[1],一步一个脚印,我们终于在京东ES上线支持了zstd;我觉得促使目标完成主要以下几点原因: 1.Elastic A2: 我们在ES中支持两种zstd压缩等级,用户可以根据自己的业务和数据特性选择合适的压缩等级;ES创建索引时指定index.codec:jd_zstd(压缩等级为3)或者jd_zstd_6(压缩等级为 zstd[1]算法是基于C++实现,而ES是基于java编写,因此借助开源的力量,引入zstd-jni来实现zstd压缩能力。 # zstd_jni版本 1.5.5-1 api "com.github.luben:zstd-jni:${versions.zstd_jni}" 在ES代码中编写自定义的index.codec;扩展CompressionMode
安装 Zstd 解压软件包: cd /sources tar xf zstd-1.5.0.tar.gz cd zstd-1.5.0 编译 Zstd: make 运行以下命令,以测试编译结果: make check 安装该软件包: make prefix=/usr install 删除静态库: rm -v /usr/lib/libzstd.a 安装完成后清理工作: cd .. rm -rf zstd-1.5.0
问题背景 1、开发反馈 trs 的 stg 环境开启 zstd 解压缩后,内存有明显持续上涨趋势,最终导致 OOM 如图,内存频繁申请释放,当时分析导致 OOM 的原因是因为 stg 的 并未怀疑程序本身的性能问题 2、infra 同学发现 adx 的服务存在 zstd 压缩导致 CPU 资源消耗异常的问题,发现是压缩对象的 init 操作非常重导致。 本文同步首发于 OSC:https://my.oschina.net/klblog/blog/10946525 问题分析 结合上面两次问题,想到 Redis 压缩降本时提交的 go 的 zstd 可将 zstd.NewWriter 、zstd.NewReader 等重对象使用 sync.Pool 缓存起来,每次使用时从池中取,用完在放回去,避免频繁 New 对象造成内存申请多从而造成 GC 压力大 { New: func() interface{} { enc, err := zstd.NewWriter(nil) if err !
PostgreSQL16中pg_dump的LZ4和ZSTD压缩 pg_dump压缩lz4和zstd LZ4和ZSTD压缩算法合入了PG16。LZ4补丁的作者是Georgios Kokolatos。 Zstd:这是一种比较新的压缩算法,压缩比高,压缩速度也不错。Zstd压缩转储的文件大小在8-8.5MB范围内,是三种压缩方法中最小的。 令人吃惊的是zstd压缩时间最少,其次是lz4和gzip。 默认压缩级别,zstd生成最小的转储文件大小,其次是lz4和gzip。在最大压缩级别,zstd仍然生成最小的转储文件大小,其次是gzip和lz4。 基于这些观察,如果首要任务是减少磁盘使用空间,zstd是推荐的压缩方法。但如果首要任务是减少压缩时间,则zstd和lz4都表现不错。如果担心与其他实用程序的兼容性,gzip仍然是一个可行的选择。 但是块上的新方法lz4和zstd已经在这里了! https://git.postgresql.org/gitweb/?
4、原生支持 Zstandard (PEP 784):Python 3.14 拥抱更高效的 Zstd 压缩算法 Python 3.14在标准库中集成了对Zstandard (zstd)压缩算法的原生支持
Zstandard (Zstd) 压缩速度:Zstd 提供了非常快的压缩和解压缩速度,尤其是在较高的压缩级别下,其性能远超 gzip。 压缩率:Zstd 在大多数情况下能够提供比 gzip 更好的压缩率。这意味着对于相同的数据,使用 Zstd 压缩后通常能得到更小的文件。 Gzip 压缩速度:gzip 使用的是 Deflate 算法,其压缩速度一般,尤其是与现代压缩算法如 Zstd 相比,在处理大数据集时显得较慢。 = zstd.ZstdCompressor() compressed_data = compressor.compress(data) # 解压 decompressor = zstd.ZstdDecompressor 结论 Zstandard (zstd) 和 Gzip 都是常见的压缩算法,但它们在不同的场景下各有优劣。
十年磨一剑,Zstd凭什么能打破僵局?统一命名空间又将如何改写Python压缩生态?Zstd凭什么成为Python标准库新宠? Zstd的出现,彻底改变了这一格局。作为Meta开发的开源压缩算法,Zstd的核心优势堪称“全能型选手”:压缩率远超zlib和bzip2,接近lzma但解压速度快3-5倍。 Anaconda的实测数据显示,采用Zstd后包下载大小减少30-40%,安装速度直接提升2.5倍——这意味着原本10分钟的依赖安装,现在只需4分钟就能完成。更关键的是,Zstd早已不是实验室产品。 新方案将所有压缩模块统一收纳: 新Zstd模块命名为compression.zstd 现有模块通过compression.gzip、compression.lzma等方式重新导出 原模块入口(如import 框架维护者则迎来新机遇:tarfile、zipfile模块已在参考实现中集成Zstd支持,未来处理大型日志、备份文件时,开发者可直接调用compression.zstd接口,无需额外安装第三方库。
(iris,'iris.arrow', compression = "zstd",compression_level=1) # read iris.arrow as DataFrame iris=arrow iris.arrow as DataFrame iris=pd.read_feather('iris.arrow') # write iris to iris.arrow and compressed by zstd iris.to_feather('iris.arrow',compression='zstd', compression_level=1) Julia using Pkg Pkg.add(["Arrow Arrow.Table("iris.arrow") |> DataFrame # write iris to iris.arrow, using 8 threads and compressed by zstd Arrow.write("iris.arrow",iris,compress=:zstd,ntasks=8)
别再一把梭哈了:聊聊文件格式里的压缩取舍——Snappy和Zstd到底怎么选? 三、Zstd:更“聪明”的新一代选手如果说Snappy是“老实人”,那Zstd就是那种:会动脑子、但吃点CPU的狠角色1️⃣Zstd到底强在哪? ~22)解压速度依然很快非常适合云对象存储2️⃣Zstd的“隐藏价值”:省钱我在云上项目里,最直观的感受是:Zstd是为“账单敏感型系统”而生的举个很现实的例子:数据规模:100TBSnappy压缩后: cctx=zstd.ZstdCompressor(level=3)start=time.time()compressed=cctx.compress(data)print("Zstd压缩耗时:",time.time Snappy没有过时,Zstd也不是银弹。
(iris,'iris.arrow', compression = "zstd",compression_level=1) # read iris.arrow as DataFrame iris=arrow iris.arrow as DataFrame iris=pd.read_feather('iris.arrow') # write iris to iris.arrow and compressed by zstd iris.to_feather('iris.arrow',compression='zstd', compression_level=1) Julia using Pkg Pkg.add(["Arrow Arrow.Table("iris.arrow") |> DataFrame # write iris to iris.arrow, using 8 threads and compressed by zstd Arrow.write("iris.arrow",iris,compress=:zstd,ntasks=8)
2021 年 5 月 4 日,Containerd 1.5 正式发布[1],该版本默认启用了 OCIcrypt 解密功能,并引入了对 NRI、zstd 和 FreeBSD jails 的支持,同时还简化了对 zstd 压缩算法 除了 gzip 之外,Containerd 现在还支持 zstd[6] 镜像压缩算法,压缩速度比 gzip 快好几倍,具体通过 github.com/klauspost/compress /zstd[7] 来实现。 关于 zstd 的性能测试结果请参考zstd 官方文档[8]。 github.com/klauspost/compress/tree/master/zstd [8] zstd 官方文档: https://github.com/klauspost/compress/blob
/spc download --for-extensions=pcntl,zstd --with-php=8.2 环境检查 如果你可以正常运行bin/spc但无法正常编译静态的 PHP 或依赖库,可以先运行 /spc build pcntl,zstd --build-cli 构建结果 _ _ _ _ ___| |_ __ ] pkgconfig [14:54:39] [INFO] lib [zstd] setup success, took 107.47 s [14:54:39] [INFO] Entering dir: buildroot/bin$ tree -L 1 . ├── php ├── pkg-config ├── unzstd -> zstd ├── zstd ├── zstdcat -> zstd ├── zstdgrep ├── zstdless └── zstdmt -> zstd 查看PHP版本 /buildroot/bin$ .
lzma -cvf tar --lzma -xvf .lzo lzop tar --lzop -cvf tar --lzop -xvf .xz xz tar -cJvf tar -xJvf .zst zstd tar --zstd -cvf tar --zstd -xvf .tzst zstd tar --zstd -cvf tar --zstd -xvf .zip zip zip -r unzip .7z
2021 年 5 月 4 日,Containerd 1.5 正式发布[1],该版本默认启用了 OCIcrypt 解密功能,并引入了对 NRI、zstd 和 FreeBSD jails 的支持,同时还简化了对 zstd 压缩算法 除了 gzip 之外,Containerd 现在还支持 zstd[6] 镜像压缩算法,压缩速度比 gzip 快好几倍,具体通过 github.com/klauspost/compress /zstd[7] 来实现。 关于 zstd 的性能测试结果请参考zstd 官方文档[8]。 github.com/klauspost/compress/tree/master/zstd [8] zstd 官方文档: https://github.com/klauspost/compress/blob
compression功能测试 1.启动compression 功能描述: 1.目前从k版本开始支持compression,目前支持zlib、snappy、zstd,注意从ceph version 12.0.0 开始才加入了zstd插件。 radosgw-admin zone placement modify --rgw-zone=default --placement-id=default-placement --compression=zstd "max_size": -1, "max_size_kb": 0, "max_objects": -1 } } 插件名称 未压缩 snappy zstd 附 zstd介绍 https://github.com/facebook/zstd snappy介绍 https://github.com/google/snappy
1. zstd,lz4编译安装 zstd 和 lz4,参阅:https://github.com/OpenTenBase/OpenTenBase/issues/166[root@oc8 ~]# git clone https://github.com/facebook/zstd.git --depth=1Cloning into 'zstd'...remote: Enumerating objects [root@oc8 ~]# cd zstd[root@oc8 zstd]# make -j$(nproc)make[1]: Entering directory '/root/zstd/lib'make /lib'[root@oc8 zstd]# make installmake[1]: Entering directory '/root/zstd/lib'creating pkgconfigInstalling completedmake[1]: Leaving directory '/root/zstd/programs'[root@oc8 zstd]# [root@oc8 ~]# git clone https
2 压缩的模式支持 GZIP, LZ4,ZSTD 或者不压缩, 举例我们通过GZIP 在服务器端进行压缩方式的备份 pg_basebackup -h 192.168.198.100 -p 5432 - U admin -Xnone --target=server:/home/postgres/backup -Z gzip:9 但如果此时我们选择 LZ4 或者 ZSTD的方式进行数据压缩备份,则你的 这里为了掩饰,我们重新安装 POSTGRESQL 15 并在编译的环节加入 lz4 和 zstd pg_basebackup -h 192.168.198.100 -p 5432 -U admin :9 相比较,三种备份和数据压缩的方式,那种压缩的比率更高,这里ZSTD 在通用比率的压缩下,文件最小在 2.4mb , gzip 紧随其后 2.9mb , 而LZ4 则在 3.5mb . . 为进行数据处理时的限速 数据库恢复,则需要根据选择的压缩模式,在数据库主机上安装 LZ4 或者 ZSTD 命令对数据备份文件解压后,在拷贝到原数据库目录就可以解决问题了。